From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 46CBF456F9; Wed, 31 Jul 2024 06:24:02 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 18F7A40A72; Wed, 31 Jul 2024 06:23:43 +0200 (CEST) Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by mails.dpdk.org (Postfix) with ESMTP id 997794042E for ; Wed, 31 Jul 2024 06:21:54 +0200 (CEST) Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-1fc49c0aaffso37241175ad.3 for ; Tue, 30 Jul 2024 21:21:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1722399714; x=1723004514; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=45xW6nosypcKio0IPaEQ+r2Rqt+v+UGcRhilHgt6lcs=; b=LNiESJDh0fvD68mP0n3ImL0r/dQTpcXyfrRZvRBZOIvowwExaW+gw2TVHcMHzlyWia ZV03Tf3xxR2/Qj+cSUa6MLtLTy0pl3Jt72I8FHMI04cfa1rZk7Cv/vOHnXn7auZ5tGKV /IaArE1DZWxla+7p+JhEINwAeibQtWqtkOY3aRNOX/EUvu601z/T1NCUyQIYoMghdEg+ g6Tcpwg3tqsvjm9ixFnIwVQ8S8x6ERcaIriwMuw6Twcnaqmb/NsYvs76H36XBZX+shHh 98S7BM/RDbjZPM7shNjNKKSodLBVnuZHAzdhIZoY7PTJ8+5IJgDICOE3hSsmjjG2C1G3 FYLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722399714; x=1723004514; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=45xW6nosypcKio0IPaEQ+r2Rqt+v+UGcRhilHgt6lcs=; b=H700uWYEKPDVj1XiX1DpYdsdFYhpilrI9eD1pBYc4yUiS17KNsCqnVnmLBjtEJFD9o vy6JQLFQCyEXHM9S53tmLx/4uTxMF238WxYt6nBcVx4T+ormYO0jy4lsUQtY+zWU720W Bf6zcYZ0DOl/j/TrxZsEV6PBVJ91qCDAoPcedVq33E41yZtbZ5TwE2CYCOY0JFuJGo2G Q852Ynyp73lWv5+stGfKBM5oBK4Hx9J2J2LwEvZJ7wzXsvoxJpKEdZLGxuAMH3dsJtoy cDX7DSPO22pDAlGxcXnugOP5fw+6UgvyE47Fpa/adjWSZz36ddt9KIDE+p3XBRT1aaWe 9Zdw== X-Gm-Message-State: AOJu0YwSm3dlG6FdTTxguQcvPqjhfpPkSU/D2bb9eJeETfY28l6uAxPn b6A3SyTole4zXl2Kp17xqXNfAm11rgZXuMQ/rK2PVreCkTGckvWnzr9QZwO2rmiDcuuvQ7nOmX/ a X-Google-Smtp-Source: AGHT+IEGdFQ72kzF5QGeIh8sZKLiLTPk+rJzFnbai3nDmajsJI9EQNW3gJyaNwgXyQX4GKKCdvwueg== X-Received: by 2002:a17:902:ec8c:b0:1f9:c508:acd5 with SMTP id d9443c01a7336-1ff047e4864mr112610335ad.5.1722399713542; Tue, 30 Jul 2024 21:21:53 -0700 (PDT) Received: from hermes.local (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fed7c80044sm110093375ad.14.2024.07.30.21.21.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jul 2024 21:21:53 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Subject: [PATCH v2 3/3] test: remove unused resource API Date: Tue, 30 Jul 2024 21:20:31 -0700 Message-ID: <20240731042141.76985-4-stephen@networkplumber.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240731042141.76985-1-stephen@networkplumber.org> References: <20240730225520.83314-1-stephen@networkplumber.org> <20240731042141.76985-1-stephen@networkplumber.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This API was used only for cfgfile tests and was never built after the conversion to meson. Will be replaced by simpler method of doing cfgfile tests. Signed-off-by: Stephen Hemminger --- app/test/meson.build | 2 - app/test/resource.c | 276 --------------------------------------- app/test/resource.h | 106 --------------- app/test/test_cfgfile.c | 46 +++---- app/test/test_resource.c | 104 --------------- 5 files changed, 23 insertions(+), 511 deletions(-) delete mode 100644 app/test/resource.c delete mode 100644 app/test/resource.h delete mode 100644 app/test/test_resource.c diff --git a/app/test/meson.build b/app/test/meson.build index c99d768ead..b2bb7c36f6 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -20,7 +20,6 @@ test_cryptodev_deps = ['bus_vdev', 'net', 'cryptodev', 'security'] source_file_deps = { # The C files providing functionality to other test cases 'packet_burst_generator.c': packet_burst_generator_deps, -# 'resource.c': [], # unused currently. 'sample_packet_forward.c': sample_packet_forward_deps, 'virtual_pmd.c': virtual_pmd_deps, @@ -154,7 +153,6 @@ source_file_deps = { 'test_reciprocal_division_perf.c': [], 'test_red.c': ['sched'], 'test_reorder.c': ['reorder'], -# 'test_resource.c': [], 'test_rib.c': ['net', 'rib'], 'test_rib6.c': ['net', 'rib'], 'test_ring.c': ['ptr_compress'], diff --git a/app/test/resource.c b/app/test/resource.c deleted file mode 100644 index 34465f1668..0000000000 --- a/app/test/resource.c +++ /dev/null @@ -1,276 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2016 RehiveTech. All rights reserved. - */ - -#include -#include -#include -#include - -#include - -#include "resource.h" - -struct resource_list resource_list = TAILQ_HEAD_INITIALIZER(resource_list); - -size_t resource_size(const struct resource *r) -{ - return r->end - r->begin; -} - -const struct resource *resource_find(const char *name) -{ - struct resource *r; - - TAILQ_FOREACH(r, &resource_list, next) { - RTE_VERIFY(r->name); - - if (!strcmp(r->name, name)) - return r; - } - - return NULL; -} - -int resource_fwrite(const struct resource *r, FILE *f) -{ - const size_t goal = resource_size(r); - size_t total = 0; - - while (total < goal) { - size_t wlen = fwrite(r->begin + total, 1, goal - total, f); - if (wlen == 0) { - perror(__func__); - return -1; - } - - total += wlen; - } - - return 0; -} - -int resource_fwrite_file(const struct resource *r, const char *fname) -{ - FILE *f; - int ret; - - f = fopen(fname, "w"); - if (f == NULL) { - perror(__func__); - return -1; - } - - ret = resource_fwrite(r, f); - fclose(f); - return ret; -} - -#ifdef RTE_APP_TEST_RESOURCE_TAR -#include -#include - -static int do_copy(struct archive *r, struct archive *w) -{ - const void *buf; - size_t len; -#if ARCHIVE_VERSION_NUMBER >= 3000000 - int64_t off; -#else - off_t off; -#endif - int ret; - - while (1) { - ret = archive_read_data_block(r, &buf, &len, &off); - if (ret == ARCHIVE_RETRY) - continue; - - if (ret == ARCHIVE_EOF) - return 0; - - if (ret != ARCHIVE_OK) - return ret; - - do { - ret = archive_write_data_block(w, buf, len, off); - if (ret != ARCHIVE_OK && ret != ARCHIVE_RETRY) - return ret; - } while (ret != ARCHIVE_OK); - } -} - -int resource_untar(const struct resource *res) -{ - struct archive *r; - struct archive *w; - struct archive_entry *e; - void *p; - int flags = 0; - int ret; - - p = malloc(resource_size(res)); - if (p == NULL) - rte_panic("Failed to malloc %zu B\n", resource_size(res)); - - memcpy(p, res->begin, resource_size(res)); - - r = archive_read_new(); - if (r == NULL) { - free(p); - return -1; - } - - archive_read_support_format_all(r); - archive_read_support_filter_all(r); - - w = archive_write_disk_new(); - if (w == NULL) { - archive_read_free(r); - free(p); - return -1; - } - - flags |= ARCHIVE_EXTRACT_PERM; - flags |= ARCHIVE_EXTRACT_FFLAGS; - archive_write_disk_set_options(w, flags); - archive_write_disk_set_standard_lookup(w); - - ret = archive_read_open_memory(r, p, resource_size(res)); - if (ret != ARCHIVE_OK) - goto fail; - - while (1) { - ret = archive_read_next_header(r, &e); - if (ret == ARCHIVE_EOF) - break; - if (ret != ARCHIVE_OK) - goto fail; - - ret = archive_write_header(w, e); - if (ret == ARCHIVE_EOF) - break; - if (ret != ARCHIVE_OK) - goto fail; - - if (archive_entry_size(e) == 0) - continue; - - ret = do_copy(r, w); - if (ret != ARCHIVE_OK) - goto fail; - - ret = archive_write_finish_entry(w); - if (ret != ARCHIVE_OK) - goto fail; - } - - archive_write_free(w); - archive_read_free(r); - free(p); - return 0; - -fail: - archive_write_free(w); - archive_read_free(r); - free(p); - rte_panic("Failed: %s\n", archive_error_string(r)); - return -1; -} - -int resource_rm_by_tar(const struct resource *res) -{ - struct archive *r; - struct archive_entry *e; - void *p; - int try_again = 1; - int attempts = 0; - int ret; - - p = malloc(resource_size(res)); - if (p == NULL) - rte_panic("Failed to malloc %zu B\n", resource_size(res)); - - memcpy(p, res->begin, resource_size(res)); - - /* - * If somebody creates a file somewhere inside the extracted TAR - * hierarchy during a test the resource_rm_by_tar might loop - * infinitely. We prevent this by adding the attempts counter there. - * In normal case, max N iteration is done where N is the depth of - * the file-hierarchy. - */ - while (try_again && attempts < 10000) { - r = archive_read_new(); - if (r == NULL) { - free(p); - return -1; - } - - archive_read_support_format_all(r); - archive_read_support_filter_all(r); - - ret = archive_read_open_memory(r, p, resource_size(res)); - if (ret != ARCHIVE_OK) { - fprintf(stderr, "Failed: %s\n", - archive_error_string(r)); - goto fail; - } - - try_again = 0; - - while (1) { - ret = archive_read_next_header(r, &e); - if (ret == ARCHIVE_EOF) - break; - if (ret != ARCHIVE_OK) - goto fail; - - ret = remove(archive_entry_pathname(e)); - if (ret < 0) { - switch (errno) { - case ENOTEMPTY: - case EEXIST: - try_again = 1; - break; - - /* should not usually happen: */ - case ENOENT: - case ENOTDIR: - case EROFS: - attempts += 1; - continue; - default: - perror("Failed to remove file"); - goto fail; - } - } - } - - archive_read_free(r); - attempts += 1; - } - - if (attempts >= 10000) { - fprintf(stderr, "Failed to remove archive\n"); - free(p); - return -1; - } - - free(p); - return 0; - -fail: - archive_read_free(r); - free(p); - - rte_panic("Failed: %s\n", archive_error_string(r)); - return -1; -} - -#endif /* RTE_APP_TEST_RESOURCE_TAR */ - -void resource_register(struct resource *r) -{ - TAILQ_INSERT_TAIL(&resource_list, r, next); -} diff --git a/app/test/resource.h b/app/test/resource.h deleted file mode 100644 index c75ebd4b5d..0000000000 --- a/app/test/resource.h +++ /dev/null @@ -1,106 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2016 RehiveTech. All rights reserved. - */ - -#ifndef _RESOURCE_H_ -#define _RESOURCE_H_ - -/** - * @file - * - * Test Resource API - * - * Each test can require and use some external resources. Usually, an external - * resource is a file or a filesystem sub-hierarchy. A resource is included - * inside the test executable. - */ - -#include -#include -#include - -#include -#include - -TAILQ_HEAD(resource_list, resource); -extern struct resource_list resource_list; - -/** - * Representation of a resource. It points to the resource's binary data. - * The semantics of the binary data are defined by the target test. - */ -struct resource { - const char *name; /**< Unique name of the resource */ - const char *begin; /**< Start of resource data */ - const char *end; /**< End of resource data */ - TAILQ_ENTRY(resource) next; -}; - -/** - * @return size of the given resource - */ -size_t resource_size(const struct resource *r); - -/** - * Find a resource by name in the global list of resources. - */ -const struct resource *resource_find(const char *name); - -/** - * Write the raw data of the resource to the given file. - * @return 0 on success - */ -int resource_fwrite(const struct resource *r, FILE *f); - -/** - * Write the raw data of the resource to the given file given by name. - * The name is relative to the current working directory. - * @return 0 on success - */ -int resource_fwrite_file(const struct resource *r, const char *fname); - -/** - * Treat the given resource as a tar archive. Extract - * the archive to the current directory. - */ -int resource_untar(const struct resource *res); - -/** - * Treat the given resource as a tar archive. Remove - * all files (related to the current directory) listed - * in the tar archive. - */ -int resource_rm_by_tar(const struct resource *res); - -/** - * Register a resource in the global list of resources. - * Not intended for direct use, please check the REGISTER_RESOURCE - * macro. - */ -void resource_register(struct resource *r); - -/** - * Definition of a resource linked externally (by means of the used toolchain). - * Only the base name of the resource is expected. The name refers to the - * linked pointers beg_ and end_ provided externally. - */ -#define REGISTER_LINKED_RESOURCE(n) \ -extern const char beg_ ##n; \ -extern const char end_ ##n; \ -REGISTER_RESOURCE(n, &beg_ ##n, &end_ ##n) \ - -/** - * Definition of a resource described by its name, and pointers begin, end. - */ -#define REGISTER_RESOURCE(n, b, e) \ -static struct resource linkres_ ##n = { \ - .name = RTE_STR(n), \ - .begin = b, \ - .end = e, \ -}; \ -RTE_INIT(resinitfn_ ##n) \ -{ \ - resource_register(&linkres_ ##n); \ -} - -#endif diff --git a/app/test/test_cfgfile.c b/app/test/test_cfgfile.c index f34838dd85..8db9f721ce 100644 --- a/app/test/test_cfgfile.c +++ b/app/test/test_cfgfile.c @@ -19,7 +19,7 @@ test_cfgfile_init(char *filename, const char *data) size_t len = strlen(data); int fd; - fd = mkstemps(filename, strlen(".ini")); + fd = mkstemp(filename); if (fd < 0) return fd; @@ -71,7 +71,7 @@ static int test_cfgfile_sample1(void) { struct rte_cfgfile *cfgfile; - char filename[] = "/tmp/cfg_sample1_XXXXXX.ini"; + char filename[] = "/tmp/cfg_sample1_XXXXXX"; int fd, ret; fd = test_cfgfile_init(filename, sample1_ini); @@ -87,7 +87,7 @@ test_cfgfile_sample1(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); - unlink(filename); + remove(filename); return 0; } @@ -97,7 +97,7 @@ test_cfgfile_sample2(void) { struct rte_cfgfile_parameters params; struct rte_cfgfile *cfgfile; - char filename[] = "/tmp/cfgile_sample2_XXXXXX.ini"; + char filename[] = "/tmp/cfgile_sample2_XXXXXX"; int fd, ret; fd = test_cfgfile_init(filename, sample2_ini); @@ -109,7 +109,7 @@ test_cfgfile_sample2(void) cfgfile = rte_cfgfile_load_with_params(filename, 0, ¶ms); close(fd); - TEST_ASSERT_NOT_NULL(cfgfile, "Failed to parse sample2.ini"); + TEST_ASSERT_NOT_NULL(cfgfile, "Failed to parse sample2"); ret = _test_cfgfile_sample(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to validate sample file: %d", ret); @@ -117,7 +117,7 @@ test_cfgfile_sample2(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); - unlink(filename); + remove(filename); return 0; } @@ -126,7 +126,7 @@ static int test_cfgfile_realloc_sections(void) { struct rte_cfgfile *cfgfile; - char filename[] = "/tmp/cfg_realloc_XXXXXX.ini"; + char filename[] = "/tmp/cfg_realloc_XXXXXX"; int fd, ret; const char *value; @@ -161,7 +161,7 @@ test_cfgfile_realloc_sections(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); - unlink(filename); + remove(filename); return 0; } @@ -170,7 +170,7 @@ static int test_cfgfile_invalid_section_header(void) { struct rte_cfgfile *cfgfile; - char filename[] = "/tmp/cfg_invalid_section_XXXXXX.ini"; + char filename[] = "/tmp/cfg_invalid_section_XXXXXX"; int fd; fd = test_cfgfile_init(filename, invalid_section_ini); @@ -180,7 +180,7 @@ test_cfgfile_invalid_section_header(void) TEST_ASSERT_NULL(cfgfile, "Expected failure did not occur"); close(fd); - unlink(filename); + remove(filename); return 0; } @@ -189,7 +189,7 @@ test_cfgfile_invalid_comment(void) { struct rte_cfgfile_parameters params; struct rte_cfgfile *cfgfile; - char filename[] = "/tmp/cfg_sample2_XXXXXX.ini"; + char filename[] = "/tmp/cfg_sample2_XXXXXX"; int fd; /* override comment character with an invalid one */ @@ -203,7 +203,7 @@ test_cfgfile_invalid_comment(void) TEST_ASSERT_NULL(cfgfile, "Expected failure did not occur"); close(fd); - unlink(filename); + remove(filename); return 0; } @@ -211,7 +211,7 @@ static int test_cfgfile_invalid_key_value_pair(void) { struct rte_cfgfile *cfgfile; - char filename[] = "/tmp/cfg_empty_key_XXXXXX.ini"; + char filename[] = "/tmp/cfg_empty_key_XXXXXX"; int fd; fd = test_cfgfile_init(filename, empty_key_value_ini); @@ -221,7 +221,7 @@ test_cfgfile_invalid_key_value_pair(void) close(fd); TEST_ASSERT_NULL(cfgfile, "Expected failure did not occur"); - unlink(filename); + remove(filename); return 0; } @@ -230,7 +230,7 @@ test_cfgfile_empty_key_value_pair(void) { struct rte_cfgfile *cfgfile; const char *value; - char filename[] = "/tmp/cfg_empty_key_XXXXXX.ini"; + char filename[] = "/tmp/cfg_empty_key_XXXXXX"; int fd, ret; fd = test_cfgfile_init(filename, empty_key_value_ini); @@ -239,7 +239,7 @@ test_cfgfile_empty_key_value_pair(void) cfgfile = rte_cfgfile_load(filename, CFG_FLAG_EMPTY_VALUES); close(fd); - TEST_ASSERT_NOT_NULL(cfgfile, "Failed to parse empty_key_value.ini"); + TEST_ASSERT_NOT_NULL(cfgfile, "Failed to parse empty_key_value"); ret = rte_cfgfile_num_sections(cfgfile, NULL, 0); TEST_ASSERT(ret == 1, "Unexpected number of sections: %d", ret); @@ -256,7 +256,7 @@ test_cfgfile_empty_key_value_pair(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); - unlink(filename); + remove(filename); return 0; } @@ -264,7 +264,7 @@ static int test_cfgfile_missing_section(void) { struct rte_cfgfile *cfgfile; - char filename[] = "/tmp/cfg_missing_section_XXXXXX.ini"; + char filename[] = "/tmp/cfg_missing_section_XXXXXX"; int fd; fd = test_cfgfile_init(filename, missing_section_ini); @@ -274,7 +274,7 @@ test_cfgfile_missing_section(void) close(fd); TEST_ASSERT_NULL(cfgfile, "Expected failure did not occur"); - unlink(filename); + remove(filename); return 0; } @@ -283,7 +283,7 @@ test_cfgfile_global_properties(void) { struct rte_cfgfile *cfgfile; const char *value; - char filename[] = "/tmp/cfg_missing_section_XXXXXX.ini"; + char filename[] = "/tmp/cfg_missing_section_XXXXXX"; int fd, ret; fd = test_cfgfile_init(filename, missing_section_ini); @@ -309,7 +309,7 @@ test_cfgfile_global_properties(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); - unlink(filename); + remove(filename); return 0; } @@ -317,7 +317,7 @@ static int test_cfgfile_empty_file(void) { struct rte_cfgfile *cfgfile; - char filename[] = "/tmp/cfg_empty_XXXXXX.ini"; + char filename[] = "/tmp/cfg_empty_XXXXXX"; int fd, ret; fd = test_cfgfile_init(filename, empty_ini); @@ -333,7 +333,7 @@ test_cfgfile_empty_file(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); - unlink(filename); + remove(filename); return 0; } diff --git a/app/test/test_resource.c b/app/test/test_resource.c deleted file mode 100644 index 05c27db203..0000000000 --- a/app/test/test_resource.c +++ /dev/null @@ -1,104 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2016 RehiveTech. All rights reserved. - */ - -#include -#include - -#include "test.h" -#include "resource.h" - -const char test_resource_dpdk_blob[] = { - '\x44', '\x50', '\x44', '\x4b', '\x00' -}; - -REGISTER_RESOURCE(test_resource_dpdk, - test_resource_dpdk_blob, test_resource_dpdk_blob + 4); - -static int test_resource_dpdk(void) -{ - const struct resource *r; - - r = resource_find("test_resource_dpdk"); - TEST_ASSERT_NOT_NULL(r, "Could not find test_resource_dpdk"); - TEST_ASSERT(!strcmp(r->name, "test_resource_dpdk"), - "Found resource %s, expected test_resource_dpdk", - r->name); - - TEST_ASSERT(!strncmp("DPDK", r->begin, 4), - "Unexpected payload: %.4s...", r->begin); - - return 0; -} - -REGISTER_LINKED_RESOURCE(test_resource_c); - -static int test_resource_c(void) -{ - const struct resource *r; - FILE *f; - - r = resource_find("test_resource_c"); - TEST_ASSERT_NOT_NULL(r, "No test_resource_c found"); - TEST_ASSERT(!strcmp(r->name, "test_resource_c"), - "Found resource %s, expected test_resource_c", - r->name); - - TEST_ASSERT_SUCCESS(resource_fwrite_file(r, "test_resource.c"), - "Failed to write file %s", r->name); - - f = fopen("test_resource.c", "r"); - TEST_ASSERT_NOT_NULL(f, - "Missing extracted file resource.c"); - fclose(f); - remove("test_resource.c"); - - return 0; -} - -#ifdef RTE_APP_TEST_RESOURCE_TAR -REGISTER_LINKED_RESOURCE(test_resource_tar); - -static int test_resource_tar(void) -{ - const struct resource *r; - FILE *f; - - r = resource_find("test_resource_tar"); - TEST_ASSERT_NOT_NULL(r, "No test_resource_tar found"); - TEST_ASSERT(!strcmp(r->name, "test_resource_tar"), - "Found resource %s, expected test_resource_tar", - r->name); - - TEST_ASSERT_SUCCESS(resource_untar(r), - "Failed to to untar %s", r->name); - - f = fopen("test_resource.c", "r"); - TEST_ASSERT_NOT_NULL(f, - "Missing extracted file test_resource.c"); - fclose(f); - - TEST_ASSERT_SUCCESS(resource_rm_by_tar(r), - "Failed to remove extracted contents of %s", r->name); - return 0; -} - -#endif /* RTE_APP_TEST_RESOURCE_TAR */ - -static int test_resource(void) -{ - if (test_resource_dpdk()) - return -1; - - if (test_resource_c()) - return -1; - -#ifdef RTE_APP_TEST_RESOURCE_TAR - if (test_resource_tar()) - return -1; -#endif /* RTE_APP_TEST_RESOURCE_TAR */ - - return 0; -} - -REGISTER_TEST_COMMAND(resource_autotest, test_resource); -- 2.43.0