← Back to team overview

checkbox-dev team mailing list archive

CEP-8 Update (v4)

 

Hey

This is hopefully one of the last updates.

After some hacking this week I got to a point that we get everything
working in checkbox-gui and plainbox. There's a branch with dozens of
small patches that needs to be cleaned up (commit messages and perhaps
additional tests) but that's roughly it.

To summarize what has happened in the CEP-8 branch since the last time:
- Some small improvements to PODs and signals
- A fix for select_jobs() in a rare (non-production) case
- A fix for TestPlanUnitSupport not to parse missing data

Now for the meat and potatoes:

- We now have a new method that actually applies overrides:
JobState.apply_overrides(). It is driven by the same data that is
produced by TestPLanUnitSupport. In reality it is called automatically
by plainbox iff the SessionManager.test_plans property is set.
- This also means that we now have SessionManager.test_plans property
(a pod.Field) that stores and propagates a sequence of TestPlanUnits
that we want to execute in a given session.
- This also means that SessionDeviceContext can accept test plans, and
it does via the new set_test_plans helper (there's no POD for that
yet). This also computes a cached (and invalidated) override_map based
on all of the test plans used. There is also a new signal
SessionDeviceContext.on_job_added() that ensures that each newly-added
job definition has all of the overrides applied. There is also a bulk
change whenever test plans change so that no matter what applications
do on the outside, the data on the inside stays correct.
- The 'plainbox run' command was patched to set test_plans on the
manager instance it has
- To test everything in the core I've added a new test plan and a set
of support jobs to stubbox
- checkbox service now sets SessionManager.test_plans whenever
SelectJobs() is called. This is a hack but it works correctly.
- Checkbox GUI was also patched to hard-code the
with-certification-status option where applicable

Now for what is missing:
- checkbox-ng's launchers are based on whitelists and those cannot be
updated to use this unless we also allow them to migrate to test
plans. This was not a part of the story though I hate to leave it
hanging like that. I need to look at it to see how complicated that
might be
- checkbox-touch is not setting it although it is trivial to do so
(one line). I'll do it tomorrow.

So now for the actual good stuff: get the branch from [1] and test it
out. I've created a merge request (though don't land it yet) if you
want to provide any feedback [2].

You can also quickly check it out with stubbox:
$ stubbox -P -v run -T
2013.com.canonical.plainbox::cert-status-override/plan -f html -p
with-certification-status -o demo.html
$ stubbox -P -v run -T
2013.com.canonical.plainbox::cert-status-override/plan -f json -p
with-certification-status
$ stubbox -P -v run -T
2013.com.canonical.plainbox::cert-status-override/plan -f xlsx -p
with-unit-categories -o demo.xlsx

That's it, if you have any questions please shot. PLEASE TEST THIS if you can.

[1] https://code.launchpad.net/~zkrynicki/checkbox/bulk-override-api
[2]