Need a way for AU tests to know which delta payloads were generated for the current build. |
|||
Issue descriptionEach build has a number of delta payloads that are generated for it. These payloads are used to go FROM an earlier build to the current build. The builder generates these payloads in this class: https://cs.corp.google.com/chromeos_public/chromite/lib/paygen/paygen_build_lib.py?type=cs&sq=package:%5Echromeos_(internal%7Cpublic)$&l=288 It does it by looking at this file that lists the deltas for each board for each channel: gs://chromeos-build-release-console/paygen.json It then creates a control file for each full+delta payload and stores them in a tarball per channel on Google Storage. eg gs://chromeos-image-archive/samus-release/R65-10225.0.0/paygen_au_canary_control.tar.bz2 This lets us rerun the paygen_au_* suites at a later time. This is the way things work for autoupdate_EndToEndTest ONLY. Any other AU tests do not know what the delta payloads for the current build are. I can see three ways of doing this at runtime in the test: 1. Have the autotest call the same file that list the deltas: gs://chromeos-build-release-console/paygen.json I think this won't work because paygen.json is constantly updated so when we run the test it may have changed. 2. Have each test download the tarball from google storage, untar it, then parse the control files generated to get the delta versions. This seems overkill but it would work. 3. Have the builder produce another text file to Google storage listing the deltas for the current build Let me know if you agree/disagree or have a better way to do this
,
Jan 31 2018
+1 #1
,
Jan 31 2018
Even if a solution such as #1 was implemented (which would be cool), we still need the deltas information to be stored somewhere accessible which is why I created this bug. Eg. I am writing a new test. This test will not know anything about deltas for a build because that information is currently only stored in the control files of autoupdate_EndToEndTest
,
Feb 1 2018
I think it's fully reasonable to require you to know what you are testing to be able schedule a test. This includes the related build artifacts like source versions. I very specifically don't want any more code in the labs that knows anything about how to go find a build or the payloads for it (and would love to rip out what's there). But what new test are you building? The control files aren't the only place that data lives, and maybe there is a good place for the code scheduling the test to look.
,
Feb 1 2018
I agree that having the scheduling code know the source versions is a good approach! I don't know where else this data lives though other than in the control files of paygen_au_canary_control.tar.bz2. The test I am currently writing is an autoupdate over cellular. (There will probably be others too as I am trying to remove most/all of our manual AU) I have the test connecting via sim and doing the update. I just need to put the device on a certain source version first. And I don't know what source version is correct for the current build.
,
Feb 1 2018
,
Feb 1 2018
Ah. I wouldn't depend on the Paygen tests for that. They are intended only to sanity check the payloads we plan to ship to customers, and the payloads aren't even created until well after other HW Tests have completed. I would instead use the payloads which are generated for AU testing. There are only two. Two random examples: chromeos_R66-10362.0.0_monroe_full_dev.bin chromeos_R66-10362.0.0_R66-10362.0.0_monroe_delta_dev.bin These are used for all hwtesting, and can be used for provisioning in the lab. I would suggest that for cellular testing, you provision the DUT with the build you want to test, then update it to the same build, once with the full playload, and once with the delta. The full payload is very large, and the delta is very, very small. This is exactly how we run the standard AU tests.
,
Feb 1 2018
PS: Even when you update from same build to same build, you can verify that it worked by checking that you switch OS installs from slot A to slot B. Our standard test provision paths should know to do this.
,
Feb 3 2018
OK sounds good. |
|||
►
Sign in to add a comment |
|||
Comment 1 by dgarr...@chromium.org
, Jan 31 2018