[Python-modules-commits] [plainbox] 01/10: Import plainbox_0.24.orig.tar.gz
Sylvain Pineau
spineau-guest at moszumanska.debian.org
Fri Dec 4 16:13:53 UTC 2015
This is an automated email from the git hooks/post-receive script.
spineau-guest pushed a commit to tag debian/0.24-1
in repository plainbox.
commit fffe7d6aae9e2bea94bcf7f945a9c670aa344af1
Author: Sylvain Pineau <sylvain.pineau at canonical.com>
Date: Wed Nov 18 11:46:55 2015 +0100
Import plainbox_0.24.orig.tar.gz
---
MANIFEST.in | 3 +
PKG-INFO | 2 +-
docs/author/index.rst | 1 -
docs/changelog.rst | 103 +-
docs/dev/resources.rst | 63 +-
docs/install.rst | 37 +
docs/manpages/plainbox-exporter-units.rst | 55 +-
docs/manpages/plainbox-job-units.rst | 72 +-
docs/manpages/plainbox-test-plan-units.rst | 114 +-
docs/ref/plainbox.impl.exporter.html.rst | 5 -
docs/ref/plainbox.impl.exporter.jinja2.rst | 5 +
docs/ref/plainbox.impl.exporter.xml.rst | 5 -
docs/ref/plainbox.impl.proxy.rst | 5 -
docs/ref/plainbox.impl.session.legacy.rst | 5 -
plainbox.egg-info/PKG-INFO | 2 +-
plainbox.egg-info/SOURCES.txt | 24 +-
plainbox.egg-info/entry_points.txt | 24 +-
plainbox.egg-info/requires.txt | 5 +-
plainbox/__init__.py | 2 +-
plainbox/abc.py | 4 +-
.../data/plainbox-qml-modules/Plainbox/QmlJob.qml | 27 +
plainbox/data/plainbox-qml-modules/Plainbox/qmldir | 23 +
plainbox/impl/applogic.py | 4 +-
plainbox/impl/censoREd.py | 26 +-
plainbox/impl/clitools.py | 2 +-
plainbox/impl/color.py | 90 ++
plainbox/impl/commands/inv_list.py | 2 +-
plainbox/impl/commands/inv_run.py | 20 +-
plainbox/impl/commands/inv_special.py | 13 +-
plainbox/impl/commands/inv_startprovider.py | 59 +-
plainbox/impl/ctrl.py | 104 +-
plainbox/impl/depmgr.py | 1 +
plainbox/impl/developer.py | 226 ++++
plainbox/impl/exporter/test_hexr.py | 130 ++
plainbox/impl/exporter/xlsx.py | 44 +-
plainbox/impl/highlevel.py | 153 ---
plainbox/impl/ingredients.py | 248 ++++
plainbox/impl/job.py | 224 +---
plainbox/impl/providers/categories/po/es.po | 4 +-
.../impl/providers/categories/po/{es.po => fr.po} | 105 +-
plainbox/impl/providers/categories/po/pl.po | 4 +-
.../impl/providers/categories/po/{es.po => ug.po} | 103 +-
.../providers/categories/po/{es.po => zh_TW.po} | 103 +-
.../impl/providers/exporters/data/checkbox.html | 2 +-
plainbox/impl/providers/exporters/data/hexr.xml | 22 +-
plainbox/impl/providers/manifest/manage.py | 53 +-
plainbox/impl/providers/manifest/po/pl.po | 4 +-
.../impl/providers/manifest/po/{pl.po => zh_TW.po} | 65 +-
.../impl/providers/stubbox/data/qml-simple.qml | 6 +-
plainbox/impl/providers/stubbox/po/de.po | 4 +-
plainbox/impl/providers/stubbox/po/en_GB.po | 4 +-
plainbox/impl/providers/stubbox/po/pl.po | 4 +-
plainbox/impl/providers/stubbox/po/pt.po | 4 +-
.../impl/providers/stubbox/po/{pt.po => ug.po} | 18 +-
plainbox/impl/proxy.py | 401 ------
plainbox/impl/resource.py | 111 +-
plainbox/impl/result.py | 21 +-
plainbox/impl/runner.py | 8 +-
plainbox/impl/secure/config.py | 12 +-
plainbox/impl/secure/providers/test_v1.py | 28 +-
plainbox/impl/secure/providers/v1.py | 124 +-
plainbox/impl/secure/qualifiers.py | 11 +-
plainbox/impl/secure/test_config.py | 33 +
plainbox/impl/secure/test_plugins.py | 8 +-
plainbox/impl/session/__init__.py | 40 +-
plainbox/impl/session/assistant.py | 1347 ++++++++++++++++++++
plainbox/impl/session/jobs.py | 13 +-
plainbox/impl/session/legacy.py | 275 ----
plainbox/impl/session/manager.py | 3 +-
plainbox/impl/session/resume.py | 200 ++-
plainbox/impl/session/state.py | 123 +-
plainbox/impl/session/storage.py | 5 +-
plainbox/impl/session/suspend.py | 90 +-
plainbox/impl/session/test_assistant.py | 171 +++
plainbox/impl/session/test_legacy.py | 69 -
plainbox/impl/session/test_resume.py | 346 +++--
plainbox/impl/session/test_state.py | 26 +-
plainbox/impl/session/test_suspend.py | 159 ++-
plainbox/impl/test_ctrl.py | 99 +-
plainbox/impl/test_developer.py | 88 ++
plainbox/impl/test_init.py | 17 +-
plainbox/impl/test_job.py | 69 -
plainbox/impl/test_pod.py | 4 +-
plainbox/impl/test_proxy.py | 373 ------
plainbox/impl/test_resource.py | 44 +-
plainbox/impl/transport.py | 186 ++-
plainbox/impl/unit/job.py | 108 +-
plainbox/impl/unit/packaging.py | 154 ++-
plainbox/impl/unit/test_job.py | 76 +-
plainbox/impl/unit/test_packging.py | 180 +++
plainbox/impl/unit/test_testplan.py | 78 +-
plainbox/impl/unit/testplan.py | 174 ++-
plainbox/impl/unit/validators.py | 8 +-
plainbox/impl/xparsers.py | 10 +-
plainbox/provider_manager.py | 53 +-
plainbox/qml_shell/qml_shell.py | 4 +-
plainbox/tests.py | 5 +-
plainbox/vendor/mock.py | 2 +
po/POTFILES.in | 3 -
po/de.po | 4 +-
po/en_AU.po | 4 +-
po/en_CA.po | 4 +-
po/en_GB.po | 4 +-
po/es.po | 4 +-
po/{pt.po => fr.po} | 23 +-
po/ja.po | 4 +-
po/pl.po | 4 +-
po/pt.po | 4 +-
po/ru.po | 4 +-
po/tr.po | 4 +-
po/uk.po | 4 +-
po/zh_TW.po | 4 +-
setup.py | 5 +-
113 files changed, 5464 insertions(+), 2408 deletions(-)
diff --git a/MANIFEST.in b/MANIFEST.in
index 763e748..b1252dc 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -41,6 +41,9 @@ include plainbox/vendor/argparse/py*-argparse.py
include plainbox/qml_shell/qml_shell.qml
+include plainbox/data/plainbox-qml-modules/Plainbox/qmldir
+include plainbox/data/plainbox-qml-modules/Plainbox/QmlJob.qml
+
recursive-exclude daily-package-testing *
recursive-exclude plainbox/vendor/textland-project COPYING README.md
recursive-include contrib *.policy
diff --git a/PKG-INFO b/PKG-INFO
index d95f4ca..86968b9 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: plainbox
-Version: 0.22.2
+Version: 0.24
Summary: Toolkit for software and hardware integration testing
Home-page: https://launchpad.net/plainbox/
Author: Zygmunt Krynicki
diff --git a/docs/author/index.rst b/docs/author/index.rst
index fa7f561..b6f9a29 100644
--- a/docs/author/index.rst
+++ b/docs/author/index.rst
@@ -10,7 +10,6 @@ core.
intro.rst
tutorial.rst
providers.rst
- jobs.rst
whitelists.rst
rfc822.rst
faq.rst
diff --git a/docs/changelog.rst b/docs/changelog.rst
index a70788b..304dcea 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -6,16 +6,113 @@ ChangeLog
accounting of development history please inspect the source history
directly.
-.. _version_0_18:
+.. _version_0_25:
-Plainbox 0.18 (unreleased)
+Plainbox 0.25 (unreleased)
^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. _version_0_24:
+
+Plainbox 0.24
+^^^^^^^^^^^^^
+
+* Add a dependency on guacamole.
+
+* Plainbox ignores trailing garbage after EOF while reading IOLog zip.
+ See https://bugs.python.org/issue24301.
+
+* Session assistant now preserves job ordering from test plans.
+
+* Session assistant ignores calls to finalize_session when the session has
+ already been finalized. This lets application call finalization freely
+ without having to keep that state information in them.
+
+* Plainbox expands the SessionAssistant initializer API
+
+ **app_version**: so that we can use this implicitly in some places,
+ e.g. don't resumes sessions created by future versions, etc.
+ **api_version**: so that we can change usage expectations over time
+ but let applications stay compatible by using a fixed API version.
+ This can be changed to a __new__ call that returns a versioned
+ SA class instead of doing if-then-else magic in all the places.
+ **api_flags**: so that we can allow applications to opt-into optional
+ features and so that we can adjust expectations accordingly. This
+ will also allow us to easily compare applications for feature
+ parity.
+
+ For now all new arguments have sane defaults. Once all applications are
+ patched the defaults will go away.
+
+* Plainbox now supports a new way to express the estimated duration of
+ :ref:`jobs <job_estimated_duration>` and
+ :ref:`test plans <testplan_estimated_duration>` that is much easier for
+ humans to read and write. Instead of having to mentally parse ``3725`` you
+ can just write ``1h 2m 5s`` or ``1h:2m:5s``.
+
+* Plainbox now supports an *after* job ordering constraint. This constraint is
+ very similar to the existing *depends* constraint, except that the outcome of
+ the referenced job is not important. In practical terms, even if one job runs
+ and fails, another job that runs *after* it, will run.
+
+ This constraint is immediately useful to all *attachment* jobs that want to
+ collect a log file from some other operation, regardless of the outcome of
+ that operation. In the past those would have to be carefully placed in the
+ test plan, in the right order. By using the *after* constraint, the
+ attachment jobs will automatically pull in their log-generating cousins and
+ will run at the right time no matter what happens.
+
+* Plainbox now allows more than one resource object to be used in a resource
+ expression. This can be used to construct resource expressions that combine
+ facts from multiple sources (e.g. the manifest resource with something else).
+
+ As an **important** implementation limitation please remember that the
+ complexity of such resource programs is proportional to the product of the
+ number of resource objects associated with each resource in an expression.
+ In practice it is not advised to use resource objects with more than a few
+ resource records associated with them. This is just an implementation detail
+ that can be lifted in subsequent versions.
+
+ Examples of the usage of this feature can be found in the TPM (Trusted
+ Platform Module) provider.
+
+* https://launchpad.net/plainbox/+milestone/0.24
+
+.. _version_0_23:
+
+Plainbox 0.23
+^^^^^^^^^^^^^
+
+* Mandatory jobs - jobs may be marked as mandatory - this way they are always
+ executed - useful for jobs that get information about hardware. Use
+ mandatory_include test plan field to mark the jobs you want always to be run.
+
+* Bootstrapping jobs - applications may run jobs that generate other jobs prior
+ to the execution of the 'normal' list of jobs. Use bootstrap_include field of
+ the test plan to list all jobs that generate other jobs.
+
+ Read more about mandatory and bootstrapping jobs in
+ :doc:`plainbox test plan unit <manpages/plainbox-test-plan-units>`
+
+* Plainbox now supports a new flag :ref:`has-leftovers
+ <job_flag_has_leftovers>`, that governs the behavior of leftover file
+ detection feature. When this flag is added to a job definition files left
+ over by the execution of a command are silently ignored.
+
+* Plainbox now supports a new flag on job definitions :ref:`simple
+ <job_flag_simple>` that is meant to cut the boiler-plate from fully automated
+ test cases. When this flag is added to a job definition then many otherwise
+ mandatory or recommended features are disabled.
+
+.. _version_0_18:
+
+Plainbox 0.18
+^^^^^^^^^^^^^
+
.. note::
This version is under active development. The details in the milestone page
may vary before the release is finalized.
- This is a periodic release, containing both bug fixes and some minor new
+This is a periodic release, containing both bug fixes and some minor new
features. Details are available at:
* https://launchpad.net/plainbox/+milestone/0.18
diff --git a/docs/dev/resources.rst b/docs/dev/resources.rst
index af40121..0dc5158 100644
--- a/docs/dev/resources.rst
+++ b/docs/dev/resources.rst
@@ -69,14 +69,12 @@ everything is disallowed, except as noted below:
Anything else is rejected as an invalid resource expression.
-In addition to that, each resource expression must use exactly one variable,
+In addition to that, each resource expression must use at least one variable,
which must be used like an object with attributes. The name of that variable
-must correspond to the name of the job that generates resources. Attempts to
-use more than one variable or to not use any variables are detected early and
-rejected as invalid resource expressions.
-
-The name of the variable determines which resource group to use. It must match
-the name of the job that generates such resources.
+must correspond to the name of the job that generates resources. You can use
+the ``imports`` field (at a job definition level) to rename a resource job to
+be compatible with the identifier syntax. It can also be used to refer to
+resources from another namespace.
In the examples elsewhere in this page the ``package`` resources are generated
by the ``package`` job. Plainbox uses this to know which resources to try but
@@ -112,41 +110,32 @@ The design of resource programs has the following shortcomings. The list is
non-exhaustive, it only contains issues that we came across found not to work
in practice.
-Exactly one variable per expression
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each resource expression must refer to exactly one variable. This is a side
-effect of the way the evaluator works. It basically bind one object (a
-particular resource) to that variable and evaluates the expression.
-
-The expression parser / syntax analyzer identifies expressions with this
-problem early and rejects them with an appropriate error message. Here are
-some examples of hypothetical expressions that exhibit this problem.
-
-"I want to have mplayer and an audio device so that I can play some sounds"::
-
- device.category == "AUDIO" and package.name == "mplayer"
-
-To work around this, split the expression to two separate expressions. The
-evaluator will put an implicit ``and`` between them and it will do exactly what
-you intended::
-
- device.category == "AUDIO"
- package.name == "mplayer"
-
-"I want to always run this test"::
+Joins are not optimized
+^^^^^^^^^^^^^^^^^^^^^^^
- True
+Starting with plainbox 0.24, a resource expression can use more than one
+resource object (resource job) at the same time. This allows the use of joins
+as the whole expression is evaluated over the cartesian product of all the
+resource records. This operation is not optimized, you can think of it as a
+JOIN that is performed on a database without any indices.
-To work around this, simply remove the requirement program entirely!
+Let's look at a practical example::
-"I want to never run this test"::
+ package.name == desired_package.name
- False
+Here, two resource jobs would run. The classic *package* resource (that
+produces, typically, a great number of resource records, one for each package
+installed on the system) and a hypothetical *desired_package* resource (for
+this example let's pretend that it is a simple constant resource that just
+contains one object). Here, this operation is not any worse than before because
+``size(desired_package) * size(package)`` is not any larger. If, however,
+*desired_package* was on the same order as *package* (approximately a thousand
+resource objects). Then the computational cost of evaluating that expression
+would be quadratic.
-To work around this remove this job from the selection. You may also use a
-special resource that produces one constant value, and check that it is equal
-to something different.
+In general, the cost, assuming all resources have the same order, is
+exponential with the number of distinct resource jobs referenced by the
+expression.
Exactly one resource bound to a variable at once
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/install.rst b/docs/install.rst
index cd9ef09..1734d29 100644
--- a/docs/install.rst
+++ b/docs/install.rst
@@ -31,3 +31,40 @@ mind that you will need python3 version of ``pip``:
$ pip3 install plainbox
We recommend using virtualenv or installing with the ``--user`` option.
+
+From a .snap (for Ubuntu Snappy)
+--------------------------------
+
+You can build a local version of plainbox.snap and install it on any snappy
+device (it is architecture independent for now, it doesn't bundle python
+itself). You will have to have access to the checkbox source repository for
+this.
+
+.. code-block:: bash
+
+ $ bzr branch lp:checkbox
+ $ cd checkbox/plainbox/
+ $ make
+
+This will give you a new .snap file in the ``dist/`` directory. You can install
+that snappy on a physical or virtual machine running snappy with the
+``snappy-remote`` tool. Note that you will have to have the latest version of
+the tool only available in the snappy PPA at this time. Refer to `snappy
+umentation <https://developer.ubuntu.com/en/snappy/start/>`_ for details.
+
+If you followed snappy documentation to run an amd64 image in kvm you can try
+this code snippet to get started. Note that you can pass the use ``-snapshot``
+option to kvm to make all the disk changes temporary. This will let you make
+destructive changes inside the image without having to re-create the original
+image each time.
+
+.. code-block:: bash
+
+ wget http://releases.ubuntu.com/15.04/ubuntu-15.04-snappy-amd64-generic.img.xz
+ unxz ubuntu-15.04-snappy-amd64-generic.img.xz
+ kvm -snapshot -m 512 -redir :8090::80 -redir :8022::22 ubuntu-15.04-snappy-amd64-generic.img
+ snappy-remote --url=ssh://localhost:8022 install plainbox_0.22.dev0_all.snap
+
+The password for the ``ubuntu`` user is ``ubuntu``. After installing you can
+log in (or use the KVM window) and invoke the ``plainbox.plainbox`` executable
+directly.
diff --git a/docs/manpages/plainbox-exporter-units.rst b/docs/manpages/plainbox-exporter-units.rst
index e128d84..bd73e3b 100644
--- a/docs/manpages/plainbox-exporter-units.rst
+++ b/docs/manpages/plainbox-exporter-units.rst
@@ -51,30 +51,37 @@ Following fields may be used by an exporter unit.
``options``:
(optional) - comma/space/semicolon separated list of options for this
- exporter entry point. Only the following options are currently supported:
- * text and rfc822:
- - with-io-log
- - squash-io-log
- - flatten-io-log
- - with-run-list
- - with-job-list
- - with-resource-map
- - with-job-defs
- - with-attachments
- - with-comments
- - with-job-via
- - with-job-hash
- - with-category-map
- - with-certification-status
- * json: same as text +
- - machine-json
- * xlsx:
- - with-sys-info
- - with-summary
- - with-job-description
- - with-text-attachments
- - with-unit-categories
- * jinja2: No options available
+ exporter entry point. Only the following options are currently supported.
+
+ text and rfc822:
+ - with-io-log
+ - squash-io-log
+ - flatten-io-log
+ - with-run-list
+ - with-job-list
+ - with-resource-map
+ - with-job-defs
+ - with-attachments
+ - with-comments
+ - with-job-via
+ - with-job-hash
+ - with-category-map
+ - with-certification-status
+
+ json:
+ Same as for *text* and additionally:
+
+ - machine-json
+
+ xlsx:
+ - with-sys-info
+ - with-summary
+ - with-job-description
+ - with-text-attachments
+ - with-unit-categories
+
+ jinja2:
+ No options available
``data``:
(optional) - Extra data sent to the exporter code, to allow all kind of
diff --git a/docs/manpages/plainbox-job-units.rst b/docs/manpages/plainbox-job-units.rst
index 6c216c9..3e25589 100644
--- a/docs/manpages/plainbox-job-units.rst
+++ b/docs/manpages/plainbox-job-units.rst
@@ -101,6 +101,13 @@ Following fields may be used by the job unit:
jobs have run and passed. Multiple job names, separated by spaces,
can be specified.
+``after``:
+ (optional). If specified, the job will only run if all the listed jobs have
+ run (regardless of the outcome). Multiple job names, separated by spaces,
+ can be specified.
+
+ This feature is available since plainbox 0.24.
+
``command``:
(optional). A command can be provided, to be executed under specific
circumstances. For ``manual``, ``user-interact`` and ``user-verify``
@@ -214,11 +221,28 @@ Following fields may be used by the job unit:
environment, with the downside that useful configuration specified
in environment variables may be lost in the process.
+.. _job_estimated_duration:
+
``estimated_duration``:
(optional) This field contains metadata about how long the job is
expected to run for, as a positive float value indicating
the estimated job duration in seconds.
+ Since plainbox version 0.24 this field can be expressed in two formats. The
+ old format, a floating point number of seconds is somewhat difficult to
+ read for larger values. To avoid mistakes test designers can use the second
+ format with separate sections for number of hours, minutes and seconds. The
+ format, as regular expression, is ``(\d+h)?[: ]*(\d+m?)[: ]*(\d+s)?``. The
+ regular expression expresses an optional number of hours, followed by the
+ ``h`` character, followed by any number of spaces or ``:`` characters,
+ followed by an optional number of minutes, followed by the ``m`` character,
+ again followed by any number of spaces or ``:`` characters, followed by the
+ number of seconds, ultimately followed by the ``s`` character.
+
+ The values can no longer be fractional (you cannot say ``2.5m`` you need to
+ say ``2m 30s``). We feel that sub-second granularity does is too
+ unpredictable to be useful so that will not be supported in the future.
+
``flags``:
(optional) This fields contains list of flags separated by spaces or
commas that might induce plainbox to run the job in particular way.
@@ -241,6 +265,36 @@ Following fields may be used by the job unit:
Attach this flag to jobs that cause killing of plainbox process during
their operation. E.g. run shutdown, reboot, etc.
+.. _job_flag_has_leftovers:
+
+ ``has-leftovers``:
+ This flag makes plainbox silently ignore (and not log) any files left
+ over by the execution of the command associated with a job. This flag
+ is useful for jobs that don't bother with maintenance of temporary
+ directories and just want to rely on the one already created by
+ plainbox.
+
+.. _job_flag_simple:
+
+ ``simple``:
+ This flag makes plainbox disable certain validation advice and have
+ some sesible defaults for automated test cases. This simiplification
+ is meant to cut the boiler plate on jobs that are closer to unit tests
+ than elaborate manual interactions.
+
+ In practice the following changes are in effect when this flag is set:
+
+ - the *plugin* field defaults to *shell*
+ - the *description* field is entirely optional
+ - the *estimated_duration* field is entirely optional
+ - the *preserve-locale* flag is entirely optional
+
+ A minimal job using the simple flag looks as follows::
+
+ id: foo
+ command: echo "Jobs are simple!"
+ flags: simple
+
Additional flags may be present in job definition; they are ignored.
``imports``:
@@ -249,18 +303,18 @@ Following fields may be used by the job unit:
other namespaces.
You can use the "as ..." syntax to import jobs that have dashes, slashes or
other characters that would make them invalid as identifiers and give them
- a correct identifier name. E.g.:
+ a correct identifier name. E.g.::
+
+ imports: from 2013.com.canonical.certification import cpuinfo
+ requires: 'armhf' in cpuinfo.platform
- | imports: from 2013.com.canonical.certification import cpuinfo
- | requires: 'armhf' in cpuinfo.platform
+ imports: from 2013.com.canonical.certification import cpu-01-info as cpu01
+ requires: 'avx2' in cpu01.other
- | imports: from 2013.com.canonical.certification import cpu-01-info as \
- cpu01
- | requires: 'avx2' in cpu01.other
+ The syntax of each imports line is::
- The syntax of each imports line is:
- IMPORT_STMT :: "from" <NAMESPACE> "import" <PARTIAL_ID>
- | "from" <NAMESPACE> "import" <PARTIAL_ID> AS <IDENTIFIER>
+ IMPORT_STMT :: "from" <NAMESPACE> "import" <PARTIAL_ID>
+ | "from" <NAMESPACE> "import" <PARTIAL_ID> AS <IDENTIFIER>
===========================
Extension of the job format
diff --git a/docs/manpages/plainbox-test-plan-units.rst b/docs/manpages/plainbox-test-plan-units.rst
index 0fd9ae3..a3fe477 100644
--- a/docs/manpages/plainbox-test-plan-units.rst
+++ b/docs/manpages/plainbox-test-plan-units.rst
@@ -116,6 +116,41 @@ copy such constructs when working on a new test plan from scratch
on how you can refer to jobs from other providers (you simply use their
fully qualified name for that)
+``mandatory_include``:
+ A multi-line list of job identifiers or patterns matching such identifiers
+ that should always be executed.
+
+ This optional field can be used to specify the jobs that should always run.
+ This is particularly useful for specifying jobs that gather vital
+ info about the tested system, as it renders imposible to generate a report
+ with no information about system under test.
+
+ For example, session results meant to be sent to the Ubuntu certification
+ website must include the special job: miscellanea/submission-resources
+
+ Example:
+
+ mandatory_include:
+ miscellanea/submission-resources
+
+ Note that mandatory jobs will always be run first (along with their
+ dependant jobs)
+
+``bootstrap_include``:
+ A multi-line list of job identifiers that should be run first, before the
+ main body of testing begins. The job that should be included in the
+ bootstrapping sections are the ones generating or helping to generate other
+ jobs.
+
+ Example:
+
+ bootstrap_include:
+ graphics/generator_driver_version
+
+ Note that each entry in the bootstrap_include section must be a valid job
+ identifier and cannot be a regular expression pattern.
+ Also note that only local and resource jobs are allowed in this section.
+
``exclude``:
A multi-line list of job identifiers or patterns matching such identifiers
that should be excluded from execution.
@@ -181,17 +216,34 @@ copy such constructs when working on a new test plan from scratch
The job definition with the partial identifier ``foo`` will be associated
with the ``cat-2`` category.
+.. _testplan_estimated_duration:
+
``estimated_duration``:
An approximate time to execute this test plan, in seconds.
+ Since plainbox version 0.24 this field can be expressed in two formats. The
+ old format, a floating point number of seconds is somewhat difficult to
+ read for larger values. To avoid mistakes test designers can use the second
+ format with separate sections for number of hours, minutes and seconds. The
+ format, as regular expression, is ``(\d+h)?[: ]*(\d+m?)[: ]*(\d+s)?``. The
+ regular expression expresses an optional number of hours, followed by the
+ ``h`` character, followed by any number of spaces or ``:`` characters,
+ followed by an optional number of minutes, followed by the ``m`` character,
+ again followed by any number of spaces or ``:`` characters, followed by the
+ number of seconds, ultimately followed by the ``s`` character.
+
+ The values can no longer be fractional (you cannot say ``2.5m`` you need to
+ say ``2m 30s``). We feel that sub-second granularity does is too
+ unpredictable to be useful so that will not be supported in the future.
+
This field is optional. If it is missing it is automatically computed by
the identical field that may be specified on particular job definitions.
Since sometimes it is easier to think in terms of test plans (they are
typically executed more often than a specific job definition) this estimate
may be more accurate as it doesn't include the accumulated sum of
- mis-estimates from all of the job definitions selected by a particular
- test plan.
+ mis-estimates from all of the job definitions selected by a particular test
+ plan.
Migrating From Whitelists
-------------------------
@@ -257,3 +309,61 @@ to some of its own definitions::
2013.com.canonical.certification:disk/.*
multipath-io
degrade-array-recovery
+
+A test plan that generates jobs using bootstrap_include section::
+
+ unit: test plan
+ id: test-plan-with-bootstrapping
+ _name: Tests with a bootstrapping stage
+ _description:
+ This test plan uses bootstrapping_include field to generate additional
+ jobs depending on the output of the generator job.
+ include: .*
+ bootstrap_include:
+ generator
+
+ unit: job
+ id: generator
+ plugin: resource
+ _description: Job that generates Foo and Bar resources
+ command:
+ echo "my_resource: Foo"
+ echo
+ echo "my_resource: Bar"
+
+ unit: template
+ template-unit: job
+ template-resource: generator
+ plugin: shell
+ estimated_duration: 1
+ id: generated_job_{my_resource}
+ command: echo {my_resource}
+ _description: Job instantiated from template that echoes {my_resource}
+
+
+
+A test plan that marks some jobs as mandatory::
+
+ unit: test plan
+ id: test-plan-with-mandatory-jobs
+ _name: Test plan with mandatory jobs
+ _description:
+ This test plan runs some jobs regardless of user selection.
+ include:
+ Foo
+ mandatory_include:
+ Bar
+
+ unit: job
+ id: Foo
+ _name: Foo job
+ _description: Job that might be deselected by the user
+ plugin: shell
+ command: echo Foo job
+
+ unit: job
+ id: Bar
+ _name: Bar job (mandatory)
+ _description: Job that should *always* run
+ plugin: shell
+ command: echo Bar job
diff --git a/docs/ref/plainbox.impl.exporter.html.rst b/docs/ref/plainbox.impl.exporter.html.rst
deleted file mode 100644
index c0e0454..0000000
--- a/docs/ref/plainbox.impl.exporter.html.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-.. currentmodule:: plainbox.impl.exporter.html
-
-.. automodule:: plainbox.impl.exporter.html
- :members:
- :undoc-members:
diff --git a/docs/ref/plainbox.impl.exporter.jinja2.rst b/docs/ref/plainbox.impl.exporter.jinja2.rst
new file mode 100644
index 0000000..fd2a696
--- /dev/null
+++ b/docs/ref/plainbox.impl.exporter.jinja2.rst
@@ -0,0 +1,5 @@
+.. currentmodule:: plainbox.impl.exporter.jinja2
+
+.. automodule:: plainbox.impl.exporter.jinja2
+ :members:
+ :undoc-members:
diff --git a/docs/ref/plainbox.impl.exporter.xml.rst b/docs/ref/plainbox.impl.exporter.xml.rst
deleted file mode 100644
index 1b2bfb6..0000000
--- a/docs/ref/plainbox.impl.exporter.xml.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-.. currentmodule:: plainbox.impl.exporter.xml
-
-.. automodule:: plainbox.impl.exporter.xml
- :members:
- :undoc-members:
diff --git a/docs/ref/plainbox.impl.proxy.rst b/docs/ref/plainbox.impl.proxy.rst
deleted file mode 100644
index c259b26..0000000
--- a/docs/ref/plainbox.impl.proxy.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-.. currentmodule:: plainbox.impl.proxy
-
-.. automodule:: plainbox.impl.proxy
- :members:
- :undoc-members:
diff --git a/docs/ref/plainbox.impl.session.legacy.rst b/docs/ref/plainbox.impl.session.legacy.rst
deleted file mode 100644
index b31277e..0000000
--- a/docs/ref/plainbox.impl.session.legacy.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-.. currentmodule:: plainbox.impl.session.legacy
-
-.. automodule:: plainbox.impl.session.legacy
- :members:
- :undoc-members:
diff --git a/plainbox.egg-info/PKG-INFO b/plainbox.egg-info/PKG-INFO
index d95f4ca..86968b9 100644
--- a/plainbox.egg-info/PKG-INFO
+++ b/plainbox.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: plainbox
-Version: 0.22.2
+Version: 0.24
Summary: Toolkit for software and hardware integration testing
Home-page: https://launchpad.net/plainbox/
Author: Zygmunt Krynicki
diff --git a/plainbox.egg-info/SOURCES.txt b/plainbox.egg-info/SOURCES.txt
index 4120e1c..4c72380 100644
--- a/plainbox.egg-info/SOURCES.txt
+++ b/plainbox.egg-info/SOURCES.txt
@@ -95,12 +95,11 @@ docs/ref/plainbox.impl.commands.session.rst
docs/ref/plainbox.impl.commands.special.rst
docs/ref/plainbox.impl.ctrl.rst
docs/ref/plainbox.impl.depmgr.rst
-docs/ref/plainbox.impl.exporter.html.rst
+docs/ref/plainbox.impl.exporter.jinja2.rst
docs/ref/plainbox.impl.exporter.json.rst
docs/ref/plainbox.impl.exporter.rfc822.rst
docs/ref/plainbox.impl.exporter.rst
docs/ref/plainbox.impl.exporter.text.rst
-docs/ref/plainbox.impl.exporter.xml.rst
docs/ref/plainbox.impl.highlevel.rst
docs/ref/plainbox.impl.integration_tests.rst
docs/ref/plainbox.impl.job.rst
@@ -110,7 +109,6 @@ docs/ref/plainbox.impl.pod.rst
docs/ref/plainbox.impl.providers.rst
docs/ref/plainbox.impl.providers.special.rst
docs/ref/plainbox.impl.providers.v1.rst
-docs/ref/plainbox.impl.proxy.rst
docs/ref/plainbox.impl.resource.rst
docs/ref/plainbox.impl.result.rst
docs/ref/plainbox.impl.rst
@@ -125,7 +123,6 @@ docs/ref/plainbox.impl.secure.qualifiers.rst
docs/ref/plainbox.impl.secure.rfc822.rst
docs/ref/plainbox.impl.secure.rst
docs/ref/plainbox.impl.session.jobs.rst
-docs/ref/plainbox.impl.session.legacy.rst
docs/ref/plainbox.impl.session.manager.rst
docs/ref/plainbox.impl.session.resume.rst
docs/ref/plainbox.impl.session.rst
@@ -167,6 +164,8 @@ plainbox.egg-info/dependency_links.txt
plainbox.egg-info/entry_points.txt
plainbox.egg-info/requires.txt
plainbox.egg-info/top_level.txt
+plainbox/data/plainbox-qml-modules/Plainbox/QmlJob.qml
+plainbox/data/plainbox-qml-modules/Plainbox/qmldir
plainbox/data/report/hardware-1_0.rng
plainbox/impl/__init__.py
plainbox/impl/_argparse.py
@@ -181,14 +180,15 @@ plainbox/impl/color.py
plainbox/impl/ctrl.py
plainbox/impl/decorators.py
plainbox/impl/depmgr.py
+plainbox/impl/developer.py
plainbox/impl/device.py
plainbox/impl/highlevel.py
+plainbox/impl/ingredients.py
plainbox/impl/integration_tests.py
plainbox/impl/job.py
plainbox/impl/logging.py
plainbox/impl/parsers.py
plainbox/impl/pod.py
-plainbox/impl/proxy.py
plainbox/impl/resource.py
plainbox/impl/result.py
plainbox/impl/runner.py
@@ -202,10 +202,9 @@ plainbox/impl/test_color.py
plainbox/impl/test_ctrl.py
plainbox/impl/test_decorators.py
plainbox/impl/test_depmgr.py
+plainbox/impl/test_developer.py
plainbox/impl/test_init.py
-plainbox/impl/test_job.py
plainbox/impl/test_pod.py
-plainbox/impl/test_proxy.py
plainbox/impl/test_resource.py
plainbox/impl/test_result.py
plainbox/impl/test_runner.py
@@ -286,8 +285,11 @@ plainbox/impl/providers/categories/README.md
plainbox/impl/providers/categories/manage.py
plainbox/impl/providers/categories/po/POTFILES.in
plainbox/impl/providers/categories/po/es.po
+plainbox/impl/providers/categories/po/fr.po
plainbox/impl/providers/categories/po/pl.po
plainbox/impl/providers/categories/po/plainbox-provider-categories.pot
+plainbox/impl/providers/categories/po/ug.po
+plainbox/impl/providers/categories/po/zh_TW.po
plainbox/impl/providers/categories/units/categories.pxu
plainbox/impl/providers/exporters/README.md
plainbox/impl/providers/exporters/manage.py
@@ -301,6 +303,7 @@ plainbox/impl/providers/manifest/bin/plainbox-manifest-resource
plainbox/impl/providers/manifest/po/POTFILES.in
plainbox/impl/providers/manifest/po/pl.po
plainbox/impl/providers/manifest/po/plainbox-provider-manifest.pot
+plainbox/impl/providers/manifest/po/zh_TW.po
plainbox/impl/providers/manifest/units/manifest.pxu
plainbox/impl/providers/stubbox/manage.py
plainbox/impl/providers/stubbox/bin/stub_package_list
@@ -313,6 +316,7 @@ plainbox/impl/providers/stubbox/po/en_GB.po
plainbox/impl/providers/stubbox/po/pl.po
plainbox/impl/providers/stubbox/po/plainbox-provider-stubbox.pot
plainbox/impl/providers/stubbox/po/pt.po
+plainbox/impl/providers/stubbox/po/ug.po
plainbox/impl/providers/stubbox/po/zh_TW.po
plainbox/impl/providers/stubbox/units/jobs/categories.pxu
plainbox/impl/providers/stubbox/units/jobs/local.pxu
@@ -341,15 +345,15 @@ plainbox/impl/secure/providers/__init__.py
plainbox/impl/secure/providers/test_v1.py
plainbox/impl/secure/providers/v1.py
plainbox/impl/session/__init__.py
+plainbox/impl/session/assistant.py
plainbox/impl/session/jobs.py
-plainbox/impl/session/legacy.py
plainbox/impl/session/manager.py
plainbox/impl/session/resume.py
plainbox/impl/session/state.py
plainbox/impl/session/storage.py
plainbox/impl/session/suspend.py
+plainbox/impl/session/test_assistant.py
plainbox/impl/session/test_jobs.py
-plainbox/impl/session/test_legacy.py
plainbox/impl/session/test_manager.py
plainbox/impl/session/test_resume.py
plainbox/impl/session/test_state.py
@@ -369,6 +373,7 @@ plainbox/impl/unit/test_exporter.py
plainbox/impl/unit/test_file.py
plainbox/impl/unit/test_init.py
plainbox/impl/unit/test_job.py
+plainbox/impl/unit/test_packging.py
plainbox/impl/unit/test_template.py
plainbox/impl/unit/test_testplan.py
plainbox/impl/unit/test_unit.py
@@ -449,6 +454,7 @@ po/en_AU.po
po/en_CA.po
po/en_GB.po
po/es.po
+po/fr.po
po/ja.po
po/pl.po
po/plainbox.pot
diff --git a/plainbox.egg-info/entry_points.txt b/plainbox.egg-info/entry_points.txt
index 7520f4c..d7de778 100644
--- a/plainbox.egg-info/entry_points.txt
+++ b/plainbox.egg-info/entry_points.txt
@@ -4,31 +4,31 @@ plainbox-qml-shell = plainbox.qml_shell.qml_shell:main
plainbox-trusted-launcher-1 = plainbox.impl.secure.launcher1:main
stubbox = plainbox.impl.box:stubbox_main
-[plainbox.buildsystem]
-autotools = plainbox.impl.buildsystems:AutotoolsBuildSystem
-go = plainbox.impl.buildsystems:GoBuildSystem
-make = plainbox.impl.buildsystems:MakefileBuildSystem
-
[plainbox.exporter]
+text = plainbox.impl.exporter.text:TextSessionStateExporter
jinja2 = plainbox.impl.exporter.jinja2:Jinja2SessionStateExporter
json = plainbox.impl.exporter.json:JSONSessionStateExporter
-rfc822 = plainbox.impl.exporter.rfc822:RFC822SessionStateExporter
-text = plainbox.impl.exporter.text:TextSessionStateExporter
xlsx = plainbox.impl.exporter.xlsx:XLSXSessionStateExporter [xlsx]
+rfc822 = plainbox.impl.exporter.rfc822:RFC822SessionStateExporter
+
+[plainbox.buildsystem]
+make = plainbox.impl.buildsystems:MakefileBuildSystem
+go = plainbox.impl.buildsystems:GoBuildSystem
+autotools = plainbox.impl.buildsystems:AutotoolsBuildSystem
[plainbox.parsers]
-pxu = plainbox.impl.secure.rfc822:load_rfc822_records
pxu-override = plainbox.impl.xparsers:FieldOverride.parse
-regex = plainbox.impl.xparsers:Re.parse
whitelist = plainbox.impl.xparsers:WhiteList.parse
+pxu = plainbox.impl.secure.rfc822:load_rfc822_records
+regex = plainbox.impl.xparsers:Re.parse
[plainbox.unit]
+unit = plainbox.impl.unit.unit:Unit
+job = plainbox.impl.unit.job:JobDefinition
category = plainbox.impl.unit.category:CategoryUnit
+test plan = plainbox.impl.unit.testplan:TestPlanUnit
exporter = plainbox.impl.unit.exporter:ExporterUnit
-job = plainbox.impl.unit.job:JobDefinition
manifest entry = plainbox.impl.unit.manifest:ManifestEntryUnit
packaging meta-data = plainbox.impl.unit.packaging:PackagingMetaDataUnit
template = plainbox.impl.unit.template:TemplateUnit
-test plan = plainbox.impl.unit.testplan:TestPlanUnit
-unit = plainbox.impl.unit.unit:Unit
diff --git a/plainbox.egg-info/requires.txt b/plainbox.egg-info/requires.txt
index df42444..706ddf6 100644
--- a/plainbox.egg-info/requires.txt
+++ b/plainbox.egg-info/requires.txt
@@ -1,4 +1,7 @@
Jinja2 >= 2.7
+guacamole >= 0.9
+padme >= 1.1.1
+requests >= 1.0
[XLSX]
-XlsxWriter >= 0.3
+XlsxWriter >= 0.3
\ No newline at end of file
diff --git a/plainbox/__init__.py b/plainbox/__init__.py
index c454145..54e73e1 100644
... 10988 lines suppressed ...
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/plainbox.git
More information about the Python-modules-commits
mailing list