← Back to team overview

checkbox-dev team mailing list archive

Discussion about manifests.

 

Hey

I wanted keep everyone in the loop about thunderbolt and about the
idea to use manifests:

12:52 <@zyga> spineau: let's talk about manifests
12:52 <@spineau> zyga: to handle job upgrade?
12:53 <@zyga> spineau: in my earlier drafts I was proposing to add a
manifest entry unit. each item would have an ID, a name (as listed in
the manifest), a type (bool, int, we can add more as needed) and
optional unit type
12:53 <@zyga> spineau: no, for thunderbolt
12:53 <@zyga> spineau: so for TB, we could say that there's a unit like this:
12:53 <@zyga> unit: manifest entry
12:53 <@zyga> id: number-of-thunderbolt-ports
12:53 <@zyga> type: int
12:54 <@zyga> _name: Number of thunderbolt ports
12:54 <@zyga> _description: This unit describes the number of external
thunderbolt ports as visible from the POV of the user.
12:54 <@zyga> (I would now rename the id to
number-of-external-thunderbolt-ports)
12:54 <@zyga> that's it
12:55 <@zyga> plainbox would see that, would load a manifest file and
expose it as a special resource like thing
12:55 <@zyga> spineau: in jobs we could say that a job requires:
number-of-thunderbolt-ports > 0
12:55 <@zyga> (now I would use underscore instead of dashes)
12:56 <@zyga> spineau: and this could be a special requirement on
manifes entry or a normal requirement, not sure yet
12:56 <@zyga> spineau: the actual manifest file could be rfc822 or json
12:56 <@zyga> spineau: we could pre-supply one on command line
12:56 <@zyga> spineau: we could get one from hexr or somewhere like that
12:56 <@spineau> zyga: to me this could be done dynamically, before
the test selection to allow the tester to manually specify the #ports
12:56 <@zyga> spineau: or we could ask the user before all testing is
started and cache it
12:56 <@spineau> same idea same second
12:57 <@zyga> spineau: we don't want to ask the user over and over as
this is static data
12:57 <@zyga> spineau: that's why I want to treat it differently than
resource jobs that run via dependencies
12:57 <@zyga> spineau: one more thing
12:57 <@zyga> spineau: I think we could use a "info" job/unit
12:57 <@zyga> spineau: or some other setup support
12:58 <@zyga> spineau: I see an unit that says "dear tester, this
machine has a thunderbolt port, please connect it like this (picture)"
12:58 <@zyga> spineau: and those would run before all testing as well
12:58 <@zyga> spineau: or if we go for intra-testing, those would be
just jobs we can put anywhere we want
12:58 <@zyga> spineau: those would not be a test of any kind
12:58 <@zyga> spineau: last idea
12:58 <@zyga> spineau: a support hardware unit
12:59 <@zyga> spineau: so a test that needs to do daisy chain can
indicate it needs this hardware
12:59 <@zyga> spineau: and can be skipped if the operator doesn't have
the hardware
12:59 <@zyga> spineau: this would be exclusive to stuff that's not
being tested, external hardware like a usb disk
12:59 <@zyga> spineau: and we could collect those and tell the user
before testing
12:59 <@zyga> spineau: exactly what they will need
12:59 <@zyga> spineau: adding those units is very simple
13:00 <@zyga> spineau: adding support in checkbox touch is interesting
13:00 <@zyga> spineau: what do you think?
13:00 <@spineau> zyga: I like the idea of computing hw req based on
the testplan content
13:00 <@zyga> spineau: (blank cds, monitors, cables, whatever is needed)
13:00 <@zyga> spineau: this could help a lot in making the process better
13:01 <@spineau> zyga: I'm a bit more skeptical about the manifest
unit and how to pass it to a gui for example and how to decide when we
need one without first running a cert plan of the device
13:02 <@zyga> spineau: we always need it
13:02 <@zyga> spineau: we may not use it
13:02 <@zyga> spineau: but it has to be filled in
13:03 <@zyga> spineau: it would not be passed to the gui, the system
would load one from a database (in real testing in taiwan)
13:03 <@zyga> spineau: or we'd make one once for each of our development systems
13:03 <@zyga> spineau: all we need is something that can be used as a
key (a CID perhaps)
13:03 <@spineau> zyga: but for cdts offline testing that won't scale
13:04 <@zyga> spineau: why not?
13:04 <@spineau> zyga: unless someone knows that this system MAY fail
resources detection
13:04 <@zyga> spineau: for cdts the tester will just create the
manifest first time
13:04 <@zyga> spineau: no noe
13:04 <@spineau> zyga: so someone has to run and review a first testrun
13:04 <@zyga> spineau: no
13:05 <@zyga> spineau: manifests replace resources detection for
things that we deem appropriate
13:05 <@zyga> spineau: there is no detection
13:05 <@zyga> spineau: lack of a manifest won't mean that hardware is gone
13:05 <@zyga> spineau: it will prompt the user to create the manifest
interactively
13:05 <@zyga> spineau: and cache it
13:06 <@zyga> spineau: we can create a small CLI tool for that
13:06 <@zyga> spineau: so that we won't have to touch checkbox-gui
13:06 <@zyga> spineau: but it should be a part of normal flow on
checkbox-touch and all non-frozen codebases
13:06 <@zyga> spineau: for certification in the labs we can have a
different manifest delivery mechanism (some local database from hexr)
13:07 <@spineau> zyga: one thing we could do is a tool/step/screen to
list what we automatically see and the tester can decide to add more
items (and then cache the result)
13:07 <@zyga> spineau: no, I disagree, we fundamentally need to stop
detecting flaky things
13:07 <@zyga> spineau: users will just ignore that and bad data will stay
13:07 <@zyga> spineau: and this has to be correct
13:07 <@spineau> zyga: but several resources jobs are reliable
13:07 <@zyga> spineau: so those stay as resources
13:07 <@zyga> spineau: this is for stuff like media keys
13:08 <@zyga> spineau: physical ports (do you really have that hdmi0
or is it just dead unsoldered crap on the m/b)
13:08 <@zyga> spineau: things that we can detect reliably should stay as such
13:08 <@zyga> spineau: this is for real-life observable elements of the device
13:08 <@zyga> spineau: that we cannot probe
13:09 <@zyga> spineau: leds, keyboard arrangment, connectors, form factor, etc)
13:09 <@spineau> zyga: IIRC we should also add 80211 ac as we found
one system that didn't advertise itself as compatible
13:09 <@zyga> spineau: firmware will be broken and will always lie or
not tell in general, if our testing depends on it we should not rely
on a flaky component
13:09 <@zyga> spineau: yep
13:09 <@zyga> spineau: and
13:10 <@zyga> spineau: a subset of the manifest can be used on the
certification website
13:10 <@zyga> spineau: as icons/badges etc
13:10 <@zyga> spineau: e.g. thunderbolt icon
13:10 <@zyga> spineau: usb 3.0 icon
13:10 <@zyga> spineau: whatever we want to use there
13:10 <@zyga> spineau: the point is that this is something that is unchangable
13:11 <@zyga> spineau: we need to be careful with servers and other
machines that have lots of add-on cards
13:11 <@zyga> spineau: but for phones, tables and laptops
13:11 <@zyga> spineau: this is perfect
13:11 <@zyga> spineau: screen size, amount of memory, available
connection systems (modem type)
13:11 <@zyga> spineau: all of that stuff
13:11 <@zyga> spineau: actually
13:11 <@zyga> spineau: this also nicely blends with one core addition
I wanted to do
13:11 <@zyga> spineau: static resources
13:11 <@zyga> spineau: so that we instantiate templates staitically
13:12 <@zyga> spineau: and verify that
13:12 <@spineau> zyga: let's keep this idea opened, and restart the
discussion tomorrow as I have to go
13:12 <@spineau> sorry
13:12 <@zyga> spineau: like the selftest provider that statically
tells which python libraries we have
13:12 <@zyga> spineau: ok :)
13:12 <@zyga> spineau: thanks!
13:12 <@zyga> spineau: I'll send this to the ML
13:12 <@spineau> zyga: thanks to you
13:12 <@spineau> ok
13:12 <@spineau> bye

Best regards
ZK


Follow ups