Show a cover letter.

GET /api/covers/129682/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 129682,
    "url": "http://patchwork.dpdk.org/api/covers/129682/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/20230721115125.55137-1-bruce.richardson@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20230721115125.55137-1-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230721115125.55137-1-bruce.richardson@intel.com",
    "date": "2023-07-21T11:51:20",
    "name": "[RFC,0/5] replace build code for unit tests",
    "submitter": {
        "id": 20,
        "url": "http://patchwork.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/cover/20230721115125.55137-1-bruce.richardson@intel.com/mbox/",
    "series": [
        {
            "id": 29000,
            "url": "http://patchwork.dpdk.org/api/series/29000/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=29000",
            "date": "2023-07-21T11:51:20",
            "name": "replace build code for unit tests",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/29000/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/129682/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id C550F42ED9;\n\tFri, 21 Jul 2023 13:51:33 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 4C17D40DDC;\n\tFri, 21 Jul 2023 13:51:33 +0200 (CEST)",
            "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n by mails.dpdk.org (Postfix) with ESMTP id F015340DD8\n for <dev@dpdk.org>; Fri, 21 Jul 2023 13:51:31 +0200 (CEST)",
            "from fmsmga006.fm.intel.com ([10.253.24.20])\n by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 21 Jul 2023 04:51:30 -0700",
            "from silpixa00401385.ir.intel.com ([10.237.214.156])\n by fmsmga006.fm.intel.com with ESMTP; 21 Jul 2023 04:51:29 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1689940292; x=1721476292;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=glc9XLtkP8ixk6qro+/7GfLLPIxxd896GzhdjECfBUY=;\n b=bP+FV9PUtQ+mdqMke18M/FGTVNridko+OX+TzANpykW+OC5EXW7lJ1Pr\n tcopmH+VQ8Jw3MxNcgCq0GidFu3fq6jk1+zAs3GHvTmgH/0LMwQ2y5U5O\n A6wNeDX8IugBcY0iSBi+jEKtHOf0/2yCnXB2s+Niv+Ny1uuTvFoejgfi7\n lvIHXduyLkzLAgkuR+d0Uc+stRH/1Z221xAGdzQ9rQ89FeynvcBZMD+Zp\n aOewfPO+/CnVjEenjF+sSciQjVp5cxcib3iMN7pP/rlOCYQYb8TkWPSVN\n cekFvBCrjdzMklZpb5EMDa9nvamLThqiWB+mkq05zWDo1qlCPdkht1pFs g==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10777\"; a=\"346599144\"",
            "E=Sophos;i=\"6.01,220,1684825200\"; d=\"scan'208\";a=\"346599144\"",
            "E=McAfee;i=\"6600,9927,10777\"; a=\"971420487\"",
            "E=Sophos;i=\"6.01,220,1684825200\"; d=\"scan'208\";a=\"971420487\""
        ],
        "X-ExtLoop1": "1",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "Bruce Richardson <bruce.richardson@intel.com>",
        "Subject": "[RFC PATCH 0/5] replace build code for unit tests",
        "Date": "Fri, 21 Jul 2023 12:51:20 +0100",
        "Message-Id": "<20230721115125.55137-1-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 2.39.2",
        "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 <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "While working on series such as [1] to make DPDK builds more\nconfigurable, the majority of the complexity involved centered on the\nunit tests, and ensuring that the individual files were added/removed\nfrom the build as the components were enabled/disabled.\n\nThis complexity was exacerbated by:\n* C files having multiple dependencies, specifically,\n* Some libraries having one set of independent tests, while other\n  library tests requiring additional components\n* Having to maintain lists of tests in various suites which also needed\n  to be updated, depending on component availability.\n* Everything having to be checked via if-else clauses, since this was\n  not data-driven\n\nThis RFC attempts to address these issues by doing the following:\n* Creating a per-file dependency list for the autotests, allowing easy\n  checks of when a file could be built\n* Tagging the various fast-tests/perf-tests/drivers-tests suites via\n  macros in the C code. Then scan the C-files we are building to\n  construct the test suites based on what is available\n\n\nThis RFC is just an early prototype, and probably needs cleanup and\nvalidation of the dependency lists. Windows support is probably also\nbroken, given the fact that our current build file maintains custom\nlists there. However, I would hope it should not be too big a job to\nenable the unit tests for the windows components that are already\navailable. (Tests for any components not being build on windows are\nalready removed via the dependency lists).\n\nAnother (hopefully less-impactful) side-effect of this change is that\nthe \"test\" binary has moved in the build folder. It is now put\nalong-side the other binaries in \"build/app\" rather than being in the\nsubdirectory \"build/app/test\".\n\nFuture work could also be done to scan the C files that are not being\nbuild for tests. Those tests could then be stubbed out in an\nauto-genereated file to always return \"SKIPPED\", meaning that all test\ncommands are always valid, irrespective of what components are present\nor not.\n\n[1] http://patches.dpdk.org/project/dpdk/list/?series=28628&state=10\n\nBruce Richardson (5):\n  app/test: add new macros for various test types\n  app/test: tag tests with the test type\n  app/test: build using per-file dependency matrix\n  app/test: define unit tests suites based on test macros\n  app/test: add fast test suite to new build infrastructure\n\n app/meson.build                               |  15 +-\n app/test/meson.build                          | 796 +++++-------------\n app/test/suites/meson.build                   |  75 ++\n app/test/test.h                               |   9 +-\n app/test/test_acl.c                           |   2 +-\n app/test/test_atomic.c                        |   2 +-\n app/test/test_barrier.c                       |   2 +-\n app/test/test_bitmap.c                        |   2 +-\n app/test/test_bitops.c                        |   2 +-\n app/test/test_bpf.c                           |   4 +-\n app/test/test_byteorder.c                     |   2 +-\n app/test/test_cksum.c                         |   2 +-\n app/test/test_cmdline.c                       |   2 +-\n app/test/test_common.c                        |   2 +-\n app/test/test_cpuflags.c                      |   2 +-\n app/test/test_crc.c                           |   2 +-\n app/test/test_cryptodev.c                     |  38 +-\n app/test/test_cryptodev_asym.c                |   2 +-\n app/test/test_cycles.c                        |   2 +-\n app/test/test_debug.c                         |   2 +-\n app/test/test_devargs.c                       |   2 +-\n app/test/test_distributor.c                   |   2 +-\n app/test/test_distributor_perf.c              |   2 +-\n app/test/test_dmadev.c                        |   2 +-\n app/test/test_eal_flags.c                     |  24 +-\n app/test/test_eal_fs.c                        |   2 +-\n app/test/test_efd.c                           |   2 +-\n app/test/test_efd_perf.c                      |   2 +-\n app/test/test_errno.c                         |   2 +-\n app/test/test_ethdev_link.c                   |   2 +-\n app/test/test_event_ring.c                    |   2 +-\n app/test/test_eventdev.c                      |   2 +-\n app/test/test_fbarray.c                       |   2 +-\n app/test/test_fib.c                           |   4 +-\n app/test/test_fib6.c                          |   4 +-\n app/test/test_fib6_perf.c                     |   2 +-\n app/test/test_fib_perf.c                      |   2 +-\n app/test/test_func_reentrancy.c               |   2 +-\n app/test/test_hash.c                          |   2 +-\n app/test/test_hash_functions.c                |   2 +-\n app/test/test_hash_multiwriter.c              |   2 +-\n app/test/test_hash_perf.c                     |   2 +-\n app/test/test_hash_readwrite.c                |   4 +-\n app/test/test_hash_readwrite_lf_perf.c        |   2 +-\n app/test/test_interrupts.c                    |   2 +-\n app/test/test_ipfrag.c                        |   2 +-\n app/test/test_ipsec.c                         |   2 +-\n app/test/test_ipsec_perf.c                    |   2 +-\n app/test/test_kni.c                           |   2 +-\n app/test/test_kvargs.c                        |   2 +-\n app/test/test_lcores.c                        |   2 +-\n app/test/test_logs.c                          |   2 +-\n app/test/test_lpm.c                           |   2 +-\n app/test/test_lpm6.c                          |   2 +-\n app/test/test_lpm6_perf.c                     |   2 +-\n app/test/test_lpm_perf.c                      |   2 +-\n app/test/test_malloc.c                        |   2 +-\n app/test/test_malloc_perf.c                   |   2 +-\n app/test/test_mbuf.c                          |   2 +-\n app/test/test_mcslock.c                       |   2 +-\n app/test/test_member.c                        |   2 +-\n app/test/test_member_perf.c                   |   2 +-\n app/test/test_memcpy.c                        |   2 +-\n app/test/test_memcpy_perf.c                   |   2 +-\n app/test/test_memory.c                        |   2 +-\n app/test/test_mempool.c                       |   2 +-\n app/test/test_mempool_perf.c                  |   2 +-\n app/test/test_memzone.c                       |   2 +-\n app/test/test_meter.c                         |   2 +-\n app/test/test_mp_secondary.c                  |   2 +-\n app/test/test_per_lcore.c                     |   2 +-\n app/test/test_pflock.c                        |   2 +-\n app/test/test_pie.c                           |   6 +-\n app/test/test_pmd_perf.c                      |   2 +-\n app/test/test_power.c                         |   2 +-\n app/test/test_power_cpufreq.c                 |   2 +-\n app/test/test_power_intel_uncore.c            |   2 +-\n app/test/test_power_kvm_vm.c                  |   2 +-\n app/test/test_prefetch.c                      |   2 +-\n app/test/test_rand_perf.c                     |   2 +-\n app/test/test_rcu_qsbr.c                      |   2 +-\n app/test/test_rcu_qsbr_perf.c                 |   2 +-\n app/test/test_reassembly_perf.c               |   2 +-\n app/test/test_reciprocal_division.c           |   2 +-\n app/test/test_reciprocal_division_perf.c      |   2 +-\n app/test/test_red.c                           |   4 +-\n app/test/test_reorder.c                       |   2 +-\n app/test/test_rib.c                           |   4 +-\n app/test/test_rib6.c                          |   4 +-\n app/test/test_ring.c                          |   2 +-\n app/test/test_ring_perf.c                     |   2 +-\n app/test/test_rwlock.c                        |   8 +-\n app/test/test_sched.c                         |   2 +-\n app/test/test_security.c                      |   2 +-\n app/test/test_seqlock.c                       |   2 +-\n app/test/test_service_cores.c                 |   4 +-\n app/test/test_spinlock.c                      |   2 +-\n app/test/test_stack.c                         |   4 +-\n app/test/test_stack_perf.c                    |   4 +-\n app/test/test_string_fns.c                    |   2 +-\n app/test/test_tailq.c                         |   2 +-\n app/test/test_thash.c                         |   2 +-\n app/test/test_thash_perf.c                    |   2 +-\n app/test/test_threads.c                       |   2 +-\n app/test/test_ticketlock.c                    |   2 +-\n app/test/test_timer.c                         |   2 +-\n app/test/test_timer_perf.c                    |   2 +-\n app/test/test_timer_racecond.c                |   2 +-\n app/test/test_trace.c                         |   2 +-\n app/test/test_trace_perf.c                    |   2 +-\n app/test/test_version.c                       |   2 +-\n buildtools/get-test-suites.py                 |  33 +\n .../has-hugepages.py                          |   0\n buildtools/meson.build                        |   2 +\n 114 files changed, 478 insertions(+), 754 deletions(-)\n create mode 100644 app/test/suites/meson.build\n create mode 100644 buildtools/get-test-suites.py\n rename app/test/has_hugepage.py => buildtools/has-hugepages.py (100%)\n\n--\n2.39.2"
}