New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 807489 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Feb 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Need a way for AU tests to know which delta payloads were generated for the current build.

Project Member Reported by dhadd...@chromium.org, Jan 31 2018

Issue description

Each 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
 
Cc: pprabhu@chromium.org
A while back pprabhu that there is a way to pass free form arguments into a test suite. This could include json that describes which tests to run.

The challenge was getting that argument piped all the way through the various intermediaries.

Including the list of payloads to test into the actual suite request seems like the cleanest and most flexible approach, not least because it allows us to re-run the suite for a given build with a different set of tests.
+1 #1
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 
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.
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.
Summary: Need a way for AU tests to know which delta payloads were generated for the current build. (was: Need a way for AU tests to know at runtime which delta payloads were generated for the current build.)
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.
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.
Status: WontFix (was: Untriaged)
OK sounds good. 

Sign in to add a comment