DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jan Viktorin <viktorin@rehivetech.com>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: dev@dpdk.org, Thomas Monjalon <thomas.monjalon@6wind.com>,
	David Marchand <david.marchand@6wind.com>
Subject: Re: [dpdk-dev] [RFC 0/4] Include resources in tests
Date: Fri, 29 Apr 2016 22:52:19 +0200	[thread overview]
Message-ID: <20160429225219.46d23129@jvn> (raw)
In-Reply-To: <20160429144226.GA20192@bricha3-MOBL3>

On Fri, 29 Apr 2016 15:42:27 +0100
Bruce Richardson <bruce.richardson@intel.com> wrote:

> On Fri, Apr 29, 2016 at 03:11:32PM +0200, Jan Viktorin wrote:
> > Hello,
> > 
> > this patch set introduces a mechanism to include a resource (in general a blob)
> > into the test binary. This allows to make tests less dependent on the target
> > testing environment. The first use case is testing of PCI bus scan by changing
> > the hard-coded path (/sys/bus/pci/devices) to something different and provide
> > a fake tree of devices with the test. It can help with testing of device-tree
> > parsing as I've proposed in [1] where such mechanism was missing at that time.
> > I'd like to use such framework for the SoC infra testing as well.
> > 
> > The patch set introduces a struct resource into the app/test. The resource is
> > generic to include any kind of binary data. The binary data can be created in
> > C or linked as an object file (created by objcopy). I am not sure where to
> > place the objcopy logic and how to perform guessing of the objcopy arguments
> > as they are pretty non-standard.
> > 
> > To include a complex resource (a file hierarchy), the last patch implements
> > an archive extraction logic. So, it is possible to include a tar archive and
> > unpack it before a test starts. Any ideas how to do this in a better way are
> > welcome.
> > 
> > [1] http://comments.gmane.org/gmane.comp.networking.dpdk.devel/36545
> > 
> > Regards
> > Jan Viktorin
> >   
> 
> Hi Jan,
> 
> this looks really interesting, especially since just yesterday I was looking at
> taking the million-entry lpm test routing table out of the C code and into a
> separate resource file in this case an ini file.

If it is an automatic test case which can show some regressions over
time then it is a good example of the resource usage.

> 
> In terms of a solution, I'm not convinced of the placing of the blobs inside the
> test binary. I think a better solution would be to allow the different autotests
> to take parameters from the commandline, so that the user can specify the path
> to the file to use for the test. What would be your opinion of such a scheme?

I think that we are already at this stage. You can read parameters e.g.
from the environment vars (so in fact, no changes to the DPDK testing
code are needed). The thing is that I want to say "run tests" and don't
care about any parameters to receive the result.

It might be possible to pass parameters to the tests (optionally) to
reuse the testing code base for different cases. However, initially,
the test (in my opinion) should run on any architecture on any device
without any configuration and return consistent results.

How can I test probing of PCI devices on my PC when I have different
network card then the author of the test? I cannot or I have to pass
parameters which is not what I want as it complicates every single
such test (and I have to understand those tests or understand the
parameters syntax even though the code is unrelated to my work). I just
want to check that the DPDK works as expected - without regressions.

And what about the case when I have no such card (running automatic
tests on a build server)?

I don't like including the resources in binaries but I didn't find
any better way yet. I need to easily install the tests together with
the testing data (resources) to an embedded device and perform the
tests on the target system. When you are testing x86 code on your x86
you don't have to care too much about the location of resources. But I
do. And there is no standard way (at the moment) how to install the
resources together with the testing code.

What I like on this solution is that the DPDK git repository would
contain the testing data as a real file hierarchy (e.g. the
fake /sys/bus/...). After build and install of DPDK, the file hierachy
is packed (and compressed if needed) together with the tests. So moving
to the target platform works without any other changes to the
testing/install infrastructure. I could potentially run PCI tests on my
ARM board without any PCI available and don't have to ignore the
failures of those tests (as they simply pass).

Regards
Jan

> 
> /Bruce



-- 
  Jan Viktorin                E-mail: Viktorin@RehiveTech.com
  System Architect            Web:    www.RehiveTech.com
  RehiveTech
  Brno, Czech Republic

  reply	other threads:[~2016-04-29 20:52 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-29 13:11 Jan Viktorin
2016-04-29 13:11 ` [dpdk-dev] [RFC 1/4] app/test: introduce resources for tests Jan Viktorin
2016-04-29 13:11 ` [dpdk-dev] [RFC 2/4] app/test: support resources externally linked Jan Viktorin
2016-04-29 13:11 ` [dpdk-dev] [RFC 3/4] app/test: add functions to create files from resources Jan Viktorin
2016-04-29 13:11 ` [dpdk-dev] [RFC 4/4] app/test: support resources archived by tar Jan Viktorin
2016-05-05 13:33   ` Bruce Richardson
2016-05-05 17:05     ` Jan Viktorin
2016-05-06  9:02       ` Bruce Richardson
2016-04-29 14:42 ` [dpdk-dev] [RFC 0/4] Include resources in tests Bruce Richardson
2016-04-29 20:52   ` Jan Viktorin [this message]
2016-05-05 13:29 ` Bruce Richardson
2016-05-05 17:03   ` Jan Viktorin
2016-05-06  9:03     ` Bruce Richardson
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 00/10] " Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 01/10] app/test: introduce resources for tests Jan Viktorin
2016-05-06 14:01   ` Thomas Monjalon
2016-05-06 16:20     ` Jan Viktorin
2016-05-12 14:58       ` Thomas Monjalon
2016-05-12 15:01         ` Jan Viktorin
2016-05-09 15:36     ` Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 02/10] app/test: support resources externally linked Jan Viktorin
2016-05-06 14:32   ` Thomas Monjalon
2016-05-06 16:31     ` Jan Viktorin
2016-05-09 15:19     ` Jan Viktorin
2016-05-12 15:05       ` Thomas Monjalon
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 03/10] app/test: add functions to create files from resources Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 04/10] app/test: support resources archived by tar Jan Viktorin
2016-05-12 15:26   ` Thomas Monjalon
2016-05-12 15:28     ` Thomas Monjalon
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 05/10] app/test: use linked list to store PCI drivers Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 06/10] app/test: extract test_pci_setup and test_pci_cleanup Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 07/10] app/test: convert current pci_test into a single test case Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 08/10] eal/pci: replace SYSFS_PCI_DEVICES with pci_get_sysfs_path() Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 09/10] app/test: scan PCI bus using a fake sysfs Jan Viktorin
2016-05-06 10:48 ` [dpdk-dev] [PATCH v1 10/10] app/test: do not dump PCI devices in blacklist test Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 00/11] Include resources in tests Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 01/11] app/test: introduce resources for tests Jan Viktorin
2016-05-12 15:13   ` Thomas Monjalon
2016-05-12 15:19   ` Thomas Monjalon
2016-05-12 15:26     ` Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 02/11] mk: define objcopy-specific target and arch Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 03/11] app/test: support resources externally linked Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 04/11] app/test: add functions to create files from resources Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 05/11] app/test: support resources archived by tar Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 06/11] app/test: use linked list to store PCI drivers Jan Viktorin
2016-05-12 15:31   ` Thomas Monjalon
2016-05-12 15:53     ` Jan Viktorin
2016-05-12 16:08       ` Thomas Monjalon
2016-05-12 21:00         ` Jan Viktorin
2016-05-12 21:44           ` Thomas Monjalon
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 07/11] app/test: extract test_pci_setup and test_pci_cleanup Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 08/11] app/test: convert current pci_test into a single test case Jan Viktorin
2016-05-12 15:34   ` Thomas Monjalon
2016-05-13 15:19     ` Jan Viktorin
2016-05-13 15:35       ` Thomas Monjalon
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 09/11] eal/pci: replace SYSFS_PCI_DEVICES with pci_get_sysfs_path() Jan Viktorin
2016-05-12 15:41   ` Thomas Monjalon
2016-05-12 15:46     ` Jan Viktorin
2016-05-12 16:10       ` Thomas Monjalon
2016-05-13 15:26         ` Jan Viktorin
2016-05-12 15:44   ` Thomas Monjalon
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 10/11] app/test: scan PCI bus using a fake sysfs Jan Viktorin
2016-05-10 18:13 ` [dpdk-dev] [PATCH v2 11/11] app/test: do not dump PCI devices in blacklist test Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 00/11] Include resources in tests Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 00/10] " Jan Viktorin
2016-06-13  8:20     ` Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 " Jan Viktorin
2016-06-13 18:32       ` Thomas Monjalon
2016-06-14  8:23         ` Hunt, David
2016-06-14  8:37           ` Thomas Monjalon
2016-06-14  8:59           ` [dpdk-dev] [PATCH] config: make libarchive optional Thomas Monjalon
2016-06-14  9:33             ` Jan Viktorin
2016-06-14  9:50               ` Thomas Monjalon
2016-06-14 10:01             ` [dpdk-dev] [PATCH v2] " Thomas Monjalon
2016-06-14 12:53               ` Jan Viktorin
2016-06-14 13:33                 ` Thomas Monjalon
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 01/10] app/test: introduce resources for tests Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 02/10] mk: define objcopy-specific target and arch Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 03/10] app/test: support resources externally linked Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 04/10] app/test: add functions to create files from resources Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 05/10] app/test: support resources archived by tar Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 06/10] app/test: use linked list to store PCI drivers Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 07/10] app/test: extract test_pci_setup and test_pci_cleanup Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 08/10] app/test: convert current pci_test into a single test case Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 09/10] eal/pci: allow to override sysfs Jan Viktorin
2016-06-13 15:07     ` [dpdk-dev] [PATCH v5 10/10] app/test: do not dump PCI devices in blacklist test Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 01/10] app/test: introduce resources for tests Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 02/10] mk: define objcopy-specific target and arch Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 03/10] app/test: support resources externally linked Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 04/10] app/test: add functions to create files from resources Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 05/10] app/test: support resources archived by tar Jan Viktorin
2016-06-13 14:40     ` Thomas Monjalon
2016-06-13 14:43       ` Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 06/10] app/test: use linked list to store PCI drivers Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 07/10] app/test: extract test_pci_setup and test_pci_cleanup Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 08/10] app/test: convert current pci_test into a single test case Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 09/10] eal/pci: allow to override sysfs Jan Viktorin
2016-06-13  8:12   ` [dpdk-dev] [PATCH v4 10/10] app/test: do not dump PCI devices in blacklist test Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 01/11] app/test: introduce resources for tests Jan Viktorin
2016-05-19  8:51   ` Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 02/11] mk: define objcopy-specific target and arch Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 03/11] app/test: support resources externally linked Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 04/11] app/test: add functions to create files from resources Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 05/11] app/test: support resources archived by tar Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 06/11] app/test: use linked list to store PCI drivers Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 07/11] app/test: extract test_pci_setup and test_pci_cleanup Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 08/11] app/test: convert current pci_test into a single test case Jan Viktorin
2016-05-17 18:34 ` [dpdk-dev] [PATCH v3 09/11] eal/pci: allow to override sysfs Jan Viktorin
2016-05-19  8:51   ` Jan Viktorin
2016-05-17 18:35 ` [dpdk-dev] [PATCH v3 10/11] app/test: scan PCI bus using a fake sysfs Jan Viktorin
2016-05-17 18:35 ` [dpdk-dev] [PATCH v3 11/11] app/test: do not dump PCI devices in blacklist test Jan Viktorin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160429225219.46d23129@jvn \
    --to=viktorin@rehivetech.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@6wind.com \
    --cc=dev@dpdk.org \
    --cc=thomas.monjalon@6wind.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).