The addition of a new test suite fails to upload test results with 400 error. |
||||
Issue descriptionI created a CL to add a test suite "ios_web_view_inttests" to the bots. The Dry Run passes, but the test results fail the first 2 times consistently with a 400 error. CL: https://chromium-review.googlesource.com/c/556394/ Run: https://build.chromium.org/p/tryserver.chromium.mac/builders/ios-simulator/builds/251346 Search for "Upload to test-results [ios_web_view_inttests]" and notice the first 2 are orange. (This is true for all ios_simulator runs on this CL) Upload failure stdout: https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Ftryserver.chromium.mac%2Fios-simulator%2F251346%2F%2B%2Frecipes%2Fsteps%2FUpload_to_test-results__ios_web_view_inttests_%2F0%2Fstdout Set Pri-0 iff it requires immediate attention, Pri-1 if resolution within a few hours is acceptable, and Pri-2 if it just needs to be handled today.
,
Jul 5 2017
Thanks dpranke@! I'll go ahead and submit that CL.
,
Jul 5 2017
#1 shouldn't be the case because we are not duplicating data sent to the dashboard. We adjust the --builder-name to ensure data isn't duplicated. And the first ios_web_view_inttests upload shouldn't fail regardless because the first one for a build couldn't possible be a dupe, and yet it failed. Here's the specific error: test_results_uploader.PermanentError: Received HTTP status 400 loading "https://test-results.appspot.com/testfile/upload": model: nil FixableCounts I believe we would be getting a different error if it was a dupe.
,
Jul 5 2017
okay, sergiyb@, can you take a look?
,
Jul 6 2017
The error message is not very descriptive. I'll fix that. Essentially the uploaded JSON is missing required "num_failures_by_type" field. Please add that field and error should be gone. The reason for "FixableCounts" error is that we still accept deprecated field "fixable", which is automatically converted to "num_failures_by_type", but I wouldn't rely on this logic since it's deprecated and can be removed at any point.
,
Jul 6 2017
FYI: JSON format is documented here: https://www.chromium.org/developers/the-json-test-results-format.
,
Jul 6 2017
CL to improve error message: https://chromium-review.googlesource.com/c/561139/
,
Jul 6 2017
The full_results.json for that run is at https://isolateserver.appspot.com/browse?namespace=default-gzip&digest=2a2f8222c4748f6ee8756d8f847066b8b8e5f532&as=full_results.json It looks like it has the necessary field already? "num_failures_by_type": {"FAIL": 0, "PASS": 5}, Interestingly enough, the upload failures did not happen on the main waterfall, even though the json file was identical (except for the timestamp): https://build.chromium.org/p/chromium.mac/builders/ios-simulator/builds/19306 I see similar failures on the main waterfall for ios_chrome_integration_egtests, which also uploads data that has the required field: https://isolateserver.appspot.com/browse?namespace=default-gzip&digest=ac8d0ba8ace8cc18bf38bc69a98b2fa2459c14d9&as=full_results.json
,
Jul 6 2017
Hm, according to [1], Test Result Server expects this field to be a dict mapping strings to lists of integers. This is not consistent with documented field type in https://www.chromium.org/developers/the-json-test-results-format. Even the comment next to field seems to suggest that it should be map[string]int. I'll fix that. [1]: https://cs.chromium.org/chromium/infra/go/src/infra/appengine/test-results/model/aggregate_result.go?l=82&rcl=987c685563e5f9976233d696aae7c71e4daf9442
,
Jul 6 2017
Scratch that. The [1] from previous comment was linking a model for AggregatedResult, not the FullResult type that is used to parse uploaded full_results.json files.
,
Jul 6 2017
After looking more through the code, I think the reason this fails is that results fail to be aggregated with older results, which are already in the app and are missing the required field.
,
Jul 6 2017
Found it: https://test-results.appspot.com/testfile?builder=ios-simulator-iPhone%206s-10.0&name=results.json&master=tryserver.chromium.mac&testtype=ios_web_view_inttests. To fix this, you'll need to either manually go through the datastore and delete corrupted files (not sure how they got there) or write code in the app to fix them automatically. I guess it depends on the number of different builders/steps that are failing with this error...
,
Jul 6 2017
The following revision refers to this bug: https://chromium.googlesource.com/infra/infra/+/c8205894a77af1b8da38e7954dbd3d75bd10052e commit c8205894a77af1b8da38e7954dbd3d75bd10052e Author: Sergiy Byelozyorov <sergiyb@chromium.org> Date: Thu Jul 06 21:35:53 2017 Improve error message to make it actionable by clients R=smut@chromium.org Bug: 739387 Change-Id: I827c8c774d4c24b992b563d92da5c8f8ed3a3f34 Reviewed-on: https://chromium-review.googlesource.com/561139 Commit-Queue: smut <smut@google.com> Reviewed-by: smut <smut@google.com> [modify] https://crrev.com/c8205894a77af1b8da38e7954dbd3d75bd10052e/go/src/infra/appengine/test-results/model/aggregate_result.go |
||||
►
Sign in to add a comment |
||||
Comment 1 by dpranke@chromium.org
, Jul 5 2017Owner: sergeybe...@chromium.org
Status: Assigned (was: Untriaged)