From patchwork Fri Aug 2 16:45:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 142868 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3AF284571D; Fri, 2 Aug 2024 18:46:46 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8B06440E22; Fri, 2 Aug 2024 18:46:40 +0200 (CEST) Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by mails.dpdk.org (Postfix) with ESMTP id 66909406B8 for ; Fri, 2 Aug 2024 18:46:38 +0200 (CEST) Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-7104f939aaaso2768184b3a.1 for ; Fri, 02 Aug 2024 09:46:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1722617197; x=1723221997; 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=tQxNv6lj4Rb2InV7FsuUQ9V4I3NFyCxd2hOtlNTsRJ4=; b=dthSmfaOp8dHt3FlBYRbiqFTl5JMMMQHjTiawnXPi/xi2qmLIDjcbZMwFEurNalv/O VZU8F73aLJ3E89/Uvd1yIA1/5XoDV8uHLxF0pu/wtpw67VnTSwYA8+N86dBohnM3+qZx cxpun6dtCCteun4WhOXvtVxhw0NQmOJ3gyOdiiDun5jSybX1jVm7DzJ8/O3zHIWhTQEx 2+p9/1YdijWNTvGAkh/RVWyNvvnKZ3tTv9OSMU3kOKkX9Q3VfJ+ABHvSNbqmqX/RcAYq cj42sp8EVgvhVHM5/wfPJuHYtSWg25oM5z2PEj32tnZjzSKih7WTQL9Z+RBuZfC+chpW g8SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722617197; x=1723221997; 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=tQxNv6lj4Rb2InV7FsuUQ9V4I3NFyCxd2hOtlNTsRJ4=; b=VyZ9nK5EOZgDBFl2/46EYSGmcXKhRzbKgL+rQtFOutsl4isjd2NQKCLIS4QlxO2JyA yOUcfEfZB9TnNxVI4Xfi5xWUB4WUlXOBhcI9ff0VvrC4Tevjab8j6H9z8HTVDSEfGOfF Fgn4O0dBxt+4eybptcCSY2TNpBRo+RUBwN0neghMReS3awQTGR5YGIUrqVMSRnSNWo6W 0P7bFjjXmZ/OZ5LnlBAG7dz448txDu2QNMFZBXW/fFUmPBs5eQeU+ztTicF1ufWmNJ9B t7TVInPrTKJIEzRDco/dls9EjbBVOqL9COfYYXdKuoWyqZ2n1NLlYZpSIavuGMAEiL+b xFwA== X-Gm-Message-State: AOJu0Yy3L9epQ7VhEyz4Sj9fsKsWOWO9R2qsY61iwYgSMNnkdOKiIG92 +ue5CwTSCC9mjOLthKPXoxo2AQoJuIp1hlXuA0mPn3hupL+LL2LmW+XdnPjCS3r9aYS9UqYkKLc A X-Google-Smtp-Source: AGHT+IGFM3fdJ5nVHgq2DsrBDFR5MwXnXARetgrH7cqfz9qaw+xe3fKHH2+CVLNzJmDKkRuSfUCkqQ== X-Received: by 2002:a05:6a00:3e19:b0:706:5dab:83c4 with SMTP id d2e1a72fcca58-7106cfd77e7mr5559027b3a.14.1722617197443; Fri, 02 Aug 2024 09:46:37 -0700 (PDT) Received: from hermes.local (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7106ecdfec9sm1591011b3a.97.2024.08.02.09.46.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 09:46:37 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Bruce Richardson Subject: [PATCH v5 1/4] buildtools: add helper to convert text file to header Date: Fri, 2 Aug 2024 09:45:00 -0700 Message-ID: <20240802164626.389286-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240802164626.389286-1-stephen@networkplumber.org> References: <20240730225520.83314-1-stephen@networkplumber.org> <20240802164626.389286-1-stephen@networkplumber.org> MIME-Version: 1.0 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 Simple script to read a file and make it into a initialized C string in a header file. Signed-off-by: Stephen Hemminger Acked-by: Bruce Richardson --- buildtools/gen-header.py | 36 ++++++++++++++++++++++++++++++++++++ buildtools/meson.build | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 buildtools/gen-header.py diff --git a/buildtools/gen-header.py b/buildtools/gen-header.py new file mode 100644 index 0000000000..06e645863c --- /dev/null +++ b/buildtools/gen-header.py @@ -0,0 +1,36 @@ +#! /usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Stephen Hemminger + +""" +Script to read a text file and convert it into a header file. +""" +import sys +import os + + +def main(): + '''program main function''' + print(f'/* File autogenerated by {sys.argv[0]} */') + for path in sys.argv[1:]: + name = os.path.basename(path) + print() + print(f'/* generated from {name} */') + with open(path, "r") as f: + array = name.replace(".", "_") + print(f'static const char {array}[] = ' + '{') + line = f.readline() + + # make sure empty string is null terminated + if not line: + print(' ""') + + while line: + s = repr(line) + print(' {}'.format(s.replace("'", '"'))) + line = f.readline() + print('};') + + +if __name__ == "__main__": + main() diff --git a/buildtools/meson.build b/buildtools/meson.build index 3adf34e1a8..bc818a71d5 100644 --- a/buildtools/meson.build +++ b/buildtools/meson.build @@ -24,6 +24,7 @@ get_numa_count_cmd = py3 + files('get-numa-count.py') get_test_suites_cmd = py3 + files('get-test-suites.py') has_hugepages_cmd = py3 + files('has-hugepages.py') cmdline_gen_cmd = py3 + files('dpdk-cmdline-gen.py') +header_gen_cmd = py3 + files('gen-header.py') # install any build tools that end-users might want also install_data([ @@ -48,4 +49,3 @@ else pmdinfo += 'ar' pmdinfogen += 'elf' endif - From patchwork Fri Aug 2 16:45:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 142869 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1ED3D4571D; Fri, 2 Aug 2024 18:46:54 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C99DF40E2C; Fri, 2 Aug 2024 18:46:41 +0200 (CEST) Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) by mails.dpdk.org (Postfix) with ESMTP id 2CFAB406B8 for ; Fri, 2 Aug 2024 18:46:39 +0200 (CEST) Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-70d399da0b5so7180725b3a.3 for ; Fri, 02 Aug 2024 09:46:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1722617198; x=1723221998; 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=nnc/wU5O7LB9VHFiHu3VjkjZTqiXfO43xz4g+/xJsOI=; b=bmBAOAE5f8vDgADYVtIXKzPVzNLBGlqjMI74edf3cY/BnbCpSUk/3iOOgy6JcB27K5 oB+ywU46QjXf+zI0vfIRdYCBDgmFoU/uLws58rvKNtdjhhmPu0oq9uHCPAkN0EhQSeI4 mpyLQUU+0Ut7lltzTySHpcy6eZOKuBS2XG8cAFJFjOYdsyc0Kt4vTe8cWQpstyxviF4K A3rFJj7/L7A5qCjRhOgPIsCOyCP+5OUerQDTaAwg6dwb84TMxZ463xDKB11+ZqTUSv5i R6opjm1ERc+QLn/+l/JopKYGVW5BzJdCg9NXfb3o9aIvYmpdS9odGDlBX9O0oZdsCm1n MgyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722617198; x=1723221998; 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=nnc/wU5O7LB9VHFiHu3VjkjZTqiXfO43xz4g+/xJsOI=; b=vzsFCnlyMGWQtoQwN2kJAzqkrtPUoThq/NgicX/usvDSae4Dow2aJU9uWVyPmd700o a676cWMDN0OFt/1e+jHA5Tm35GOxh0Z91/vOgrDLATFrsnrWUBvUxvmff5geDcdSDPS1 yF/QyaE87fovBpSQv3uVpcnWvfYgb49QUlFgqkAl1WPOd3cxEB6N4QPZ874f7PqsDtLj ms8Wk6ndYv56bcHkECUGeHG+f0n1esWa5cGAIC1ddgq4cKsADngW2Zc1yRSmYCoBM1dS +Yy24JuYIBezKhnog2Pm/+rIaZIhACCj37LppcWyMKfxrM9EMbvfOehQz3jRFzyF9WR2 GfYw== X-Gm-Message-State: AOJu0Yxk59WYm6mAtSHVX4aRymyb42ybSNCZrMWBbpcukTG2oCnewl8d 1byM9jMGTrF0h4Bsx2iJJ5jBcpTheH3GfWRul9L/Yqdz7x9JxlIlRZ++KmJboM9hB0GrXxUUkQC l X-Google-Smtp-Source: AGHT+IGKdvB+0IEJZ+tuyzXIh20mu29cAhhnDsyPqqP8v64z9a2gDYblmHxCXT8zLSWD9/BhfL1Y6Q== X-Received: by 2002:a05:6a21:9988:b0:1c3:b296:972f with SMTP id adf61e73a8af0-1c699581d34mr5375826637.15.1722617198172; Fri, 02 Aug 2024 09:46:38 -0700 (PDT) Received: from hermes.local (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7106ecdfec9sm1591011b3a.97.2024.08.02.09.46.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 09:46:37 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Bruce Richardson Subject: [PATCH v5 2/4] test: remove unused resource API Date: Fri, 2 Aug 2024 09:45:01 -0700 Message-ID: <20240802164626.389286-3-stephen@networkplumber.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240802164626.389286-1-stephen@networkplumber.org> References: <20240730225520.83314-1-stephen@networkplumber.org> <20240802164626.389286-1-stephen@networkplumber.org> MIME-Version: 1.0 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 Acked-by: Bruce Richardson --- app/test/meson.build | 2 - app/test/resource.c | 276 --------------------------------------- app/test/resource.h | 106 --------------- app/test/test_resource.c | 104 --------------- 4 files changed, 488 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 e29258e6ec..62478c0bb6 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_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); From patchwork Fri Aug 2 16:45:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 142870 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 682864571D; Fri, 2 Aug 2024 18:47:01 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0D23640E3F; Fri, 2 Aug 2024 18:46:43 +0200 (CEST) Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by mails.dpdk.org (Postfix) with ESMTP id DA3F8406B8 for ; Fri, 2 Aug 2024 18:46:39 +0200 (CEST) Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-70d1cbbeeaeso6048863b3a.0 for ; Fri, 02 Aug 2024 09:46:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1722617199; x=1723221999; 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=lO0i6Uqne15CX47IYUrXTgIzfMG796+icYamc+bj5ms=; b=YmLLQRTYwhRYB2/UofalrQ7SIl/gRYeUeV6BVypukZfzOC52xKcE5K8pzOZJqCOGZp 6NfF+XqPXpFclyEo5lOjO3r0ufuv1VOi6sw06yUa2zCx9YX80OfMvYn8mS0jOXja+cH9 F24gUf5ajGsbiJ0va1Wax3d6DiYIYXYJqLipK5vHMGBcLh9xcty1/qRj3/VOZswM9RPR rxSIlNDJHukOMIs7+69wwuLuZPE06ytMUolLBeiiBgLkIyBPqS0X6tN9oPWfLwWLQntu Egn8sMBI1qFnCcjTo3OhzAuVrloTkjWiwBPIlK4kXyYllRMjqtT5QVnOMHE8uJLu3LfM Fr6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722617199; x=1723221999; 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=lO0i6Uqne15CX47IYUrXTgIzfMG796+icYamc+bj5ms=; b=FSMn7CCtuX9bNKl+IkAlbp8SpXNeQ5dZgPIPIio5xnUUuz4oWrXNxEjI5MwsIyjUUm EGUe8NtEwsRYPsieD8xJuHTmgiHcs8i2l8ZSaTrkZzOp4Twg4A8lZG8z120D73EOLhNT enwsRLJ1lnwnVMRKrRrwioiUMKf0mkKisbMdDlwjHqPpbk7GvzloJFzk7bsy5fo2J57A MQTcU6SU5BAOgIJgsHIVUVHt8YSD/PzE36VabvGpTOcakit3IuwU73UEXgQM4maYJQ7M Dr/1e83riy7oHWSN6aUe4JEMLfJjHN28AwyKngt9moFWxb12Txtm4eJFAZO5Tunp9GEz qcaQ== X-Gm-Message-State: AOJu0YxHmZOb5hjlFIZZZh8uxytirR2xKPFq2YXpNzWHyKxL9H/kamb7 Gt/P3Etvxv7eHw3Ln2DCMYAZ1fYkF/i3Rdq56cmrwIg3E04hAp8wg9AU4iZjSCGxzZdAy9wSC31 X X-Google-Smtp-Source: AGHT+IE8de/QCKhano2Nq/vXEyGnjGOKu240P+txLuDNDTuOpA+tBxBUHyMcf5A0SZFC4KMiWnkSrQ== X-Received: by 2002:a05:6a00:1306:b0:70d:2a88:a483 with SMTP id d2e1a72fcca58-7106cdae11fmr5036389b3a.0.1722617198858; Fri, 02 Aug 2024 09:46:38 -0700 (PDT) Received: from hermes.local (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7106ecdfec9sm1591011b3a.97.2024.08.02.09.46.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 09:46:38 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Subject: [PATCH v5 3/4] test: restore cfgfile tests Date: Fri, 2 Aug 2024 09:45:02 -0700 Message-ID: <20240802164626.389286-4-stephen@networkplumber.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240802164626.389286-1-stephen@networkplumber.org> References: <20240730225520.83314-1-stephen@networkplumber.org> <20240802164626.389286-1-stephen@networkplumber.org> MIME-Version: 1.0 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 These tests were not built since the conversion to meson. Instead of using embedded resource functions, put data in include file and generate temporary file before the test. The changes to app/test/meson.build are to handle auto-generated files (resources) differently. Don't scan these files to look for test input. Using common unit test macro allows for simpler management of more tests. Signed-off-by: Stephen Hemminger Acked-by: Bruce Richardson --- app/meson.build | 3 +- app/test/meson.build | 6 +- app/test/test_cfgfile.c | 213 ++++++++++++++++++----------- app/test/test_cfgfiles/meson.build | 19 +++ 4 files changed, 157 insertions(+), 84 deletions(-) create mode 100644 app/test/test_cfgfiles/meson.build diff --git a/app/meson.build b/app/meson.build index 5b2c80c7a1..e2db888ae1 100644 --- a/app/meson.build +++ b/app/meson.build @@ -55,6 +55,7 @@ foreach app:apps build = true reason = '' # set if build == false to explain sources = [] + resources = [] includes = [] cflags = default_cflags ldflags = default_ldflags @@ -115,7 +116,7 @@ foreach app:apps endif exec = executable('dpdk-' + name, - sources, + [ sources, resources ], c_args: cflags, link_args: ldflags, link_whole: link_libs, diff --git a/app/test/meson.build b/app/test/meson.build index 62478c0bb6..b2bb7c36f6 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -35,7 +35,7 @@ source_file_deps = { 'test_bitratestats.c': ['metrics', 'bitratestats', 'ethdev'] + sample_packet_forward_deps, 'test_bpf.c': ['bpf', 'net'], 'test_byteorder.c': [], -# 'test_cfgfile.c': ['cfgfile'], + 'test_cfgfile.c': ['cfgfile'], 'test_cksum.c': ['net'], 'test_cksum_perf.c': ['net'], 'test_cmdline.c': [], @@ -261,3 +261,7 @@ if not is_windows build_by_default: true, install: false) endif + +subdir('test_cfgfiles') + +resources += test_cfgfile_h diff --git a/app/test/test_cfgfile.c b/app/test/test_cfgfile.c index a5e3d8699c..8146435033 100644 --- a/app/test/test_cfgfile.c +++ b/app/test/test_cfgfile.c @@ -5,48 +5,54 @@ #include #include #include -#include +#include + +#ifdef RTE_EXEC_ENV_WINDOWS +#include +#endif #include #include "test.h" -#include "resource.h" - -#define CFG_FILES_ETC "test_cfgfiles/etc" - -REGISTER_LINKED_RESOURCE(test_cfgfiles); +#include "test_cfgfiles.h" static int -test_cfgfile_setup(void) +make_tmp_file(char *filename, const char *prefix, const char *data) { - const struct resource *r; - int ret; + size_t len = strlen(data); + size_t count; + FILE *f; - r = resource_find("test_cfgfiles"); - TEST_ASSERT_NOT_NULL(r, "missing resource test_cfgfiles"); +#ifdef RTE_EXEC_ENV_WINDOWS + char tempDirName[MAX_PATH - 14]; - ret = resource_untar(r); - TEST_ASSERT_SUCCESS(ret, "failed to untar %s", r->name); + if (GetTempPathA(sizeof(tempDirName), tempDirName) == 0) + return -1; - return 0; -} + if (GetTempFileNameA(tempDirName, prefix, 0, filename) == 0) + return -1; -static int -test_cfgfile_cleanup(void) -{ - const struct resource *r; - int ret; + f = fopen(filename, "wt"); +#else + snprintf(filename, PATH_MAX, "/tmp/%s_XXXXXXX", prefix); - r = resource_find("test_cfgfiles"); - TEST_ASSERT_NOT_NULL(r, "missing resource test_cfgfiles"); + int fd = mkstemp(filename); + if (fd < 0) + return -1; - ret = resource_rm_by_tar(r); - TEST_ASSERT_SUCCESS(ret, "Failed to delete resource %s", r->name); + f = fdopen(fd, "w"); +#endif + if (f == NULL) + return -1; - return 0; + count = fwrite(data, sizeof(char), len, f); + fclose(f); + + return (count == len) ? 0 : -1; } + static int _test_cfgfile_sample(struct rte_cfgfile *cfgfile) { @@ -87,9 +93,13 @@ static int test_cfgfile_sample1(void) { struct rte_cfgfile *cfgfile; + char filename[PATH_MAX]; int ret; - cfgfile = rte_cfgfile_load(CFG_FILES_ETC "/sample1.ini", 0); + ret = make_tmp_file(filename, "sample1", sample1_ini); + TEST_ASSERT_SUCCESS(ret, "Failed to setup temp file"); + + cfgfile = rte_cfgfile_load(filename, 0); TEST_ASSERT_NOT_NULL(cfgfile, "Failed to load config file"); ret = _test_cfgfile_sample(cfgfile); @@ -98,6 +108,8 @@ test_cfgfile_sample1(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); + remove(filename); + return 0; } @@ -106,15 +118,18 @@ test_cfgfile_sample2(void) { struct rte_cfgfile_parameters params; struct rte_cfgfile *cfgfile; + char filename[PATH_MAX]; int ret; + ret = make_tmp_file(filename, "sample2", sample2_ini); + TEST_ASSERT_SUCCESS(ret, "Failed to setup temp file"); + /* override comment character */ memset(¶ms, 0, sizeof(params)); params.comment_character = '#'; - cfgfile = rte_cfgfile_load_with_params(CFG_FILES_ETC "/sample2.ini", 0, - ¶ms); - TEST_ASSERT_NOT_NULL(cfgfile, "Failed to parse sample2.ini"); + cfgfile = rte_cfgfile_load_with_params(filename, 0, ¶ms); + 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); @@ -122,6 +137,8 @@ test_cfgfile_sample2(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); + remove(filename); + return 0; } @@ -129,10 +146,14 @@ static int test_cfgfile_realloc_sections(void) { struct rte_cfgfile *cfgfile; + char filename[PATH_MAX]; int ret; const char *value; - cfgfile = rte_cfgfile_load(CFG_FILES_ETC "/realloc_sections.ini", 0); + ret = make_tmp_file(filename, "realloc", realloc_sections_ini); + TEST_ASSERT_SUCCESS(ret, "Failed to setup temp file"); + + cfgfile = rte_cfgfile_load(filename, 0); TEST_ASSERT_NOT_NULL(cfgfile, "Failed to load config file"); ret = rte_cfgfile_num_sections(cfgfile, NULL, 0); @@ -152,9 +173,18 @@ test_cfgfile_realloc_sections(void) TEST_ASSERT(strcmp("value8_section9", value) == 0, "key unexpected value: %s", value); - ret = rte_cfgfile_save(cfgfile, "/tmp/cfgfile_save.ini"); - TEST_ASSERT_SUCCESS(ret, "Failed to save *.ini file"); - remove("/tmp/cfgfile_save.ini"); + remove(filename); + + char tmp[PATH_MAX] = "/tmp/"; +#ifdef RTE_EXEC_ENV_WINDOWS + ret = GetTempPathA(sizeof(tmp), tmp); + TEST_ASSERT(ret > 0, "Failed to get tmp directory"); +#endif + snprintf(filename, sizeof(filename), "%s%s", tmp, "cfg_save.ini"); + + ret = rte_cfgfile_save(cfgfile, filename); + TEST_ASSERT_SUCCESS(ret, "Failed to save to %s", filename); + remove(filename); ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); @@ -166,10 +196,16 @@ static int test_cfgfile_invalid_section_header(void) { struct rte_cfgfile *cfgfile; + char filename[PATH_MAX]; + int ret; + + ret = make_tmp_file(filename, "invalid", invalid_section_ini); + TEST_ASSERT_SUCCESS(ret, "Failed to setup temp file"); - cfgfile = rte_cfgfile_load(CFG_FILES_ETC "/invalid_section.ini", 0); + cfgfile = rte_cfgfile_load(filename, 0); TEST_ASSERT_NULL(cfgfile, "Expected failure did not occur"); + remove(filename); return 0; } @@ -178,15 +214,20 @@ test_cfgfile_invalid_comment(void) { struct rte_cfgfile_parameters params; struct rte_cfgfile *cfgfile; + char filename[PATH_MAX]; + int ret; /* override comment character with an invalid one */ memset(¶ms, 0, sizeof(params)); params.comment_character = '$'; - cfgfile = rte_cfgfile_load_with_params(CFG_FILES_ETC "/sample2.ini", 0, - ¶ms); + ret = make_tmp_file(filename, "sample2", sample2_ini); + TEST_ASSERT_SUCCESS(ret, "Failed to setup temp file"); + + cfgfile = rte_cfgfile_load_with_params(filename, 0, ¶ms); TEST_ASSERT_NULL(cfgfile, "Expected failure did not occur"); + remove(filename); return 0; } @@ -194,10 +235,16 @@ static int test_cfgfile_invalid_key_value_pair(void) { struct rte_cfgfile *cfgfile; + char filename[PATH_MAX]; + int ret; + + ret = make_tmp_file(filename, "empty_key", empty_key_value_ini); + TEST_ASSERT_SUCCESS(ret, "Failed to setup temp file"); - cfgfile = rte_cfgfile_load(CFG_FILES_ETC "/empty_key_value.ini", 0); + cfgfile = rte_cfgfile_load(filename, 0); TEST_ASSERT_NULL(cfgfile, "Expected failure did not occur"); + remove(filename); return 0; } @@ -206,11 +253,14 @@ test_cfgfile_empty_key_value_pair(void) { struct rte_cfgfile *cfgfile; const char *value; + char filename[PATH_MAX]; int ret; - cfgfile = rte_cfgfile_load(CFG_FILES_ETC "/empty_key_value.ini", - CFG_FLAG_EMPTY_VALUES); - TEST_ASSERT_NOT_NULL(cfgfile, "Failed to parse empty_key_value.ini"); + ret = make_tmp_file(filename, "empty_key_value", empty_key_value_ini); + TEST_ASSERT_SUCCESS(ret, "Failed to setup temp file"); + + cfgfile = rte_cfgfile_load(filename, CFG_FLAG_EMPTY_VALUES); + 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); @@ -227,6 +277,7 @@ test_cfgfile_empty_key_value_pair(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); + remove(filename); return 0; } @@ -234,10 +285,16 @@ static int test_cfgfile_missing_section(void) { struct rte_cfgfile *cfgfile; + char filename[PATH_MAX]; + int ret; + + ret = make_tmp_file(filename, "missing_section", missing_section_ini); + TEST_ASSERT_SUCCESS(ret, "Failed to setup temp file"); - cfgfile = rte_cfgfile_load(CFG_FILES_ETC "/missing_section.ini", 0); + cfgfile = rte_cfgfile_load(filename, 0); TEST_ASSERT_NULL(cfgfile, "Expected failure did not occur"); + remove(filename); return 0; } @@ -246,10 +303,13 @@ test_cfgfile_global_properties(void) { struct rte_cfgfile *cfgfile; const char *value; + char filename[PATH_MAX]; int ret; - cfgfile = rte_cfgfile_load(CFG_FILES_ETC "/missing_section.ini", - CFG_FLAG_GLOBAL_SECTION); + ret = make_tmp_file(filename, "missing_section", missing_section_ini); + TEST_ASSERT_SUCCESS(ret, "Failed to setup temp file"); + + cfgfile = rte_cfgfile_load(filename, CFG_FLAG_GLOBAL_SECTION); TEST_ASSERT_NOT_NULL(cfgfile, "Failed to load config file"); ret = rte_cfgfile_num_sections(cfgfile, NULL, 0); @@ -268,6 +328,7 @@ test_cfgfile_global_properties(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); + remove(filename); return 0; } @@ -275,9 +336,13 @@ static int test_cfgfile_empty_file(void) { struct rte_cfgfile *cfgfile; + char filename[PATH_MAX]; int ret; - cfgfile = rte_cfgfile_load(CFG_FILES_ETC "/empty.ini", 0); + ret = make_tmp_file(filename, "empty", empty_ini); + TEST_ASSERT_SUCCESS(ret, "Failed to setup temp file"); + + cfgfile = rte_cfgfile_load(filename, 0); TEST_ASSERT_NOT_NULL(cfgfile, "Failed to load config file"); ret = rte_cfgfile_num_sections(cfgfile, NULL, 0); @@ -286,49 +351,33 @@ test_cfgfile_empty_file(void) ret = rte_cfgfile_close(cfgfile); TEST_ASSERT_SUCCESS(ret, "Failed to close cfgfile"); + remove(filename); return 0; } +static struct +unit_test_suite test_cfgfile_suite = { + .suite_name = "Test Cfgfile Unit Test Suite", + .unit_test_cases = { + TEST_CASE(test_cfgfile_sample1), + TEST_CASE(test_cfgfile_sample2), + TEST_CASE(test_cfgfile_realloc_sections), + TEST_CASE(test_cfgfile_invalid_section_header), + TEST_CASE(test_cfgfile_invalid_comment), + TEST_CASE(test_cfgfile_invalid_key_value_pair), + TEST_CASE(test_cfgfile_empty_key_value_pair), + TEST_CASE(test_cfgfile_missing_section), + TEST_CASE(test_cfgfile_global_properties), + TEST_CASE(test_cfgfile_empty_file), + + TEST_CASES_END() + } +}; + static int test_cfgfile(void) { - if (test_cfgfile_setup()) - return -1; - - if (test_cfgfile_sample1()) - return -1; - - if (test_cfgfile_sample2()) - return -1; - - if (test_cfgfile_realloc_sections()) - return -1; - - if (test_cfgfile_invalid_section_header()) - return -1; - - if (test_cfgfile_invalid_comment()) - return -1; - - if (test_cfgfile_invalid_key_value_pair()) - return -1; - - if (test_cfgfile_empty_key_value_pair()) - return -1; - - if (test_cfgfile_missing_section()) - return -1; - - if (test_cfgfile_global_properties()) - return -1; - - if (test_cfgfile_empty_file()) - return -1; - - if (test_cfgfile_cleanup()) - return -1; - - return 0; + return unit_test_suite_runner(&test_cfgfile_suite); } -REGISTER_TEST_COMMAND(cfgfile_autotest, test_cfgfile); +REGISTER_FAST_TEST(cfgfile_autotest, true, true, test_cfgfile); diff --git a/app/test/test_cfgfiles/meson.build b/app/test/test_cfgfiles/meson.build new file mode 100644 index 0000000000..068b61044a --- /dev/null +++ b/app/test/test_cfgfiles/meson.build @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: BSD-3-Clause + +test_cfgfiles = files( + 'etc/empty.ini', + 'etc/empty_key_value.ini', + 'etc/invalid_section.ini', + 'etc/line_too_long.ini', + 'etc/missing_section.ini', + 'etc/realloc_sections.ini', + 'etc/sample1.ini', + 'etc/sample2.ini', +) + +# generate the header file used in cfgfile test +test_cfgfile_h = custom_target('test_cfgfile', + output: 'test_cfgfiles.h', + input: test_cfgfiles, + capture: true, + command: [ header_gen_cmd, '@INPUT@']) From patchwork Fri Aug 2 16:45:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 142871 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8CF3D4571D; Fri, 2 Aug 2024 18:47:10 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 49B0540E72; Fri, 2 Aug 2024 18:46:44 +0200 (CEST) Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by mails.dpdk.org (Postfix) with ESMTP id A556140E25 for ; Fri, 2 Aug 2024 18:46:40 +0200 (CEST) Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-70d2b921cdfso7307250b3a.0 for ; Fri, 02 Aug 2024 09:46:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1722617200; x=1723222000; 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=t02lAfs34Pni/2ZXmpQgghP+jryqcTMWMgqfyt2gBr8=; b=jE1TyScdqKmWiMawPNoct1GR0GQMVPmnK5U4qDc3XUWuKt9DFBohxGq0GC8SmhMeDr op0a7iJgoJA1wboZrPtGfvTG2E7HnMeEpqP/s6GdIZh7DrZqmI9wFIOq3nz0KEAqIWv8 HZgls66Kez5NRt3FP8LZzLWqE1LlKLSt812iXq2ut/U+FCH5uch5PBRBp+lgw7pF+qLT uSerpTz7odm9aqYglIxRfczqt47H/Mjp+NWHOB13+qSkLLOg8JVd7LpTSgn2ktPMCGMF CFkfQ46Nf7FRQizYgbd5tI6ouCbAsxdzORK/K3OCVDHYyVJptW2uaQHxybPTCW8qhXbG 416A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722617200; x=1723222000; 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=t02lAfs34Pni/2ZXmpQgghP+jryqcTMWMgqfyt2gBr8=; b=e+VEIOhfNVEWFxDN+JT3ENOcLSnoKG6EXsYu479u+ohgNkLRU0+nzyIhCcECX9IVeI WM98lgqBqCirL/zwcMvXFx6OOGjfmTAGRdocTiN950zqp0U3f+amRPmDcx6BA1N/ACNa d7Hwt0wRjQYOjv6Gbiw3GDseT5KcU3fKJdOcAh6DGDHW3w62t2pfaAXdC8Dj3GxraXoT vMgar6oR8WC/3LOZuRKVyMnfssHvjJvUjZkotr2fjWPCi2jpFNw0OkjWL7vrLCWO3EDj B7eZkpd4M+zCI9gVCbiXZGyMsHyC3U5GtGJSpca89ZBsLGdZjJr8DJF9i34m2C+OIIcQ ogaQ== X-Gm-Message-State: AOJu0YzWagC8ba/3MEZ/W8jlz1bg47dj0NRkNPUbVu/DBfgmhIsgjakd v//AyV+x6cv7bJVRah5PDYq4TDSUff+IuisE/lDhellB/Qp+JBaDoIx2QywKW2o4F2X6oy74uT+ l X-Google-Smtp-Source: AGHT+IHkJsOlFtrTQBCiZpnD/i7CFweoUQJd1hAThjcVf5jku9MhWiVztjRJQ0LtXXRqCVIGiVHkew== X-Received: by 2002:aa7:8884:0:b0:705:be21:f2be with SMTP id d2e1a72fcca58-7106cfd2649mr5197924b3a.18.1722617199656; Fri, 02 Aug 2024 09:46:39 -0700 (PDT) Received: from hermes.local (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7106ecdfec9sm1591011b3a.97.2024.08.02.09.46.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 09:46:39 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Subject: [PATCH v5 4/4] test: rearrange test_cfgfiles cases Date: Fri, 2 Aug 2024 09:45:03 -0700 Message-ID: <20240802164626.389286-5-stephen@networkplumber.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240802164626.389286-1-stephen@networkplumber.org> References: <20240730225520.83314-1-stephen@networkplumber.org> <20240802164626.389286-1-stephen@networkplumber.org> MIME-Version: 1.0 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 The input files don't need to be in a separate subdirectory. Signed-off-by: Stephen Hemminger Acked-by: Bruce Richardson --- app/test/test_cfgfiles/{etc => }/empty.ini | 0 .../test_cfgfiles/{etc => }/empty_key_value.ini | 0 .../test_cfgfiles/{etc => }/invalid_section.ini | 0 .../test_cfgfiles/{etc => }/line_too_long.ini | 0 app/test/test_cfgfiles/meson.build | 16 ++++++++-------- .../test_cfgfiles/{etc => }/missing_section.ini | 0 .../test_cfgfiles/{etc => }/realloc_sections.ini | 0 app/test/test_cfgfiles/{etc => }/sample1.ini | 0 app/test/test_cfgfiles/{etc => }/sample2.ini | 0 9 files changed, 8 insertions(+), 8 deletions(-) rename app/test/test_cfgfiles/{etc => }/empty.ini (100%) rename app/test/test_cfgfiles/{etc => }/empty_key_value.ini (100%) rename app/test/test_cfgfiles/{etc => }/invalid_section.ini (100%) rename app/test/test_cfgfiles/{etc => }/line_too_long.ini (100%) rename app/test/test_cfgfiles/{etc => }/missing_section.ini (100%) rename app/test/test_cfgfiles/{etc => }/realloc_sections.ini (100%) rename app/test/test_cfgfiles/{etc => }/sample1.ini (100%) rename app/test/test_cfgfiles/{etc => }/sample2.ini (100%) diff --git a/app/test/test_cfgfiles/etc/empty.ini b/app/test/test_cfgfiles/empty.ini similarity index 100% rename from app/test/test_cfgfiles/etc/empty.ini rename to app/test/test_cfgfiles/empty.ini diff --git a/app/test/test_cfgfiles/etc/empty_key_value.ini b/app/test/test_cfgfiles/empty_key_value.ini similarity index 100% rename from app/test/test_cfgfiles/etc/empty_key_value.ini rename to app/test/test_cfgfiles/empty_key_value.ini diff --git a/app/test/test_cfgfiles/etc/invalid_section.ini b/app/test/test_cfgfiles/invalid_section.ini similarity index 100% rename from app/test/test_cfgfiles/etc/invalid_section.ini rename to app/test/test_cfgfiles/invalid_section.ini diff --git a/app/test/test_cfgfiles/etc/line_too_long.ini b/app/test/test_cfgfiles/line_too_long.ini similarity index 100% rename from app/test/test_cfgfiles/etc/line_too_long.ini rename to app/test/test_cfgfiles/line_too_long.ini diff --git a/app/test/test_cfgfiles/meson.build b/app/test/test_cfgfiles/meson.build index 068b61044a..348c78c7d9 100644 --- a/app/test/test_cfgfiles/meson.build +++ b/app/test/test_cfgfiles/meson.build @@ -1,14 +1,14 @@ # SPDX-License-Identifier: BSD-3-Clause test_cfgfiles = files( - 'etc/empty.ini', - 'etc/empty_key_value.ini', - 'etc/invalid_section.ini', - 'etc/line_too_long.ini', - 'etc/missing_section.ini', - 'etc/realloc_sections.ini', - 'etc/sample1.ini', - 'etc/sample2.ini', + 'empty.ini', + 'empty_key_value.ini', + 'invalid_section.ini', + 'line_too_long.ini', + 'missing_section.ini', + 'realloc_sections.ini', + 'sample1.ini', + 'sample2.ini', ) # generate the header file used in cfgfile test diff --git a/app/test/test_cfgfiles/etc/missing_section.ini b/app/test/test_cfgfiles/missing_section.ini similarity index 100% rename from app/test/test_cfgfiles/etc/missing_section.ini rename to app/test/test_cfgfiles/missing_section.ini diff --git a/app/test/test_cfgfiles/etc/realloc_sections.ini b/app/test/test_cfgfiles/realloc_sections.ini similarity index 100% rename from app/test/test_cfgfiles/etc/realloc_sections.ini rename to app/test/test_cfgfiles/realloc_sections.ini diff --git a/app/test/test_cfgfiles/etc/sample1.ini b/app/test/test_cfgfiles/sample1.ini similarity index 100% rename from app/test/test_cfgfiles/etc/sample1.ini rename to app/test/test_cfgfiles/sample1.ini diff --git a/app/test/test_cfgfiles/etc/sample2.ini b/app/test/test_cfgfiles/sample2.ini similarity index 100% rename from app/test/test_cfgfiles/etc/sample2.ini rename to app/test/test_cfgfiles/sample2.ini