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

Issue 894251 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocked on: View detail
issue 894254
issue 894261
issue 894258

Blocking:
issue 893267



Sign in to add a comment

Support telemetry-based tests in Findit - support Findit required cmd flags

Project Member Reported by chanli@chromium.org, Oct 10

Issue description

To support telemetry-based tests in Findit, test runners need to support the following cmd flags:
1. --isolated-script-test-filter=A::B::C
2. --isolated-script-test-repeat=30
  a. To be consistent with currently supported test types, the exec 
     order should be ABCABCABC...
3. --isolated-script-test-launcher-retry-limit=0
4. --isolated-script-test-also-run-disabled-tests
 
kbr@, to double check,  --isolated-script-test-filter=A::B::C has been supported for all telemetry-based test runners?

If so, supporting --isolated-script-test-filter=A::B::C will be no-op.
Blocking: 893267
Blockedon: 894254
Blockedon: 894258
Blockedon: 894261
Owner: nedngu...@google.com
Status: Assigned (was: Available)
Yes, these three wrappers for different kinds of Telemetry-based tests:

https://cs.chromium.org/chromium/src/testing/scripts/run_gpu_integration_test_as_googletest.py
https://cs.chromium.org/chromium/src/testing/scripts/run_telemetry_as_googletest.py
https://cs.chromium.org/chromium/src/testing/scripts/run_telemetry_benchmark_as_googletest.py

already support the --isolated-script-test-filter flag.

I think these cover telemetry_perf_unittests, Telemetry's smoke tests, and the Chrome GPU team's tests.

The other flags will have to be plumbed down and some of them (in particular --isolated-script-test-also-run-disabled-tests ) will have different handling in the different Telemetry based tests.

Cc: dpranke@chromium.org
chanli@: how should retry-limit flag be mixed with repeat flag?

e.g: if I run the test with --repeat=4, and --retry-limit=3. Assuming the test suite has two test A & B, and the run with out retry results in:

A_Pass B_Pass A_Fail B_Pass A_Pass B_Pass A_Fail B_Fail

What should the retry run strategy be? Should it be:
[rerun A until it pass (up to 3 times)] [rerun B until it pass (up to 3 times)] [rerun A until it pass (up to 3 times)]

Or should it just be:
[rerun A until it pass (up to 3 times)] [rerun B until it pass (up to 3 times)] ?

Dirk & Ken: thoughts?
Cc: -nednguyen@chromium.org nedngu...@google.com
re #9, for Findit's use case, we will always set --repeat to an integer greater than 0 and --retry-limit=0.

And IIUC, In your example, it looks the strategy will look like:
[rerun A until it pass (up to 3 times)] [rerun B until it pass (up to 3 times)] [rerun A until it pass (up to 3 times)] ...
Re #9:
To match the behavior of gtest, the logic is:

tests = [test1, test2, ...]
for (int i = 0; i < repeat; ++ i) {
  for test in tests {
    for (int j = 0; j < retry-limit; ++j) {
      passed = test.run()
      if (passed)
        break;
    }
  }
}
#12: I believe most python tests only retry at the end after running through test suite once.

Dirk: should we update either Python test/gtest to have the same retry behavior or we should let them diverge for now?
Actually I believe a major reason why tests should be retried at the end is that's the only sane way to ensure that tests are retried in non-parallel mode. 

For this reason, I think I prefer retrying the failed tests at the end of each run of the suite.

Shutao: aren't gtest run in parallel? 
re: #c13 - we should match the behavior (we should try to have the same behavior in all of our test suites).

I think there are some test suites (layout tests, possibly gtests) that retry the tests in parallel, but I'd have to check the code to confirm.
Re #c14:
gtests runs in parallel for the first-time run, but retry in serial https://cs.chromium.org/chromium/src/base/test/launcher/unit_test_launcher.cc?q=RetryTests

I had bad memory on the detail. I updated the code snippet as below:

tests = [test1, test2, ...]
for (int i = 0; i < repeat; ++ i) {
  failed_tests = ["run tests in parallel, and return failed tests"]
  for test in failed_tests {
    for (int j = 0; j < retry-limit; ++j) {
      passed = test.run()
      if (passed)
        break;
    }
  }
}
#16: so that do behave similar to typ today (except typ doesn't implement --repeat) yet :-)
Owner: crouleau@chromium.org
Status: Fixed (was: Assigned)
This super bug is fixed now that all the blockers are resolved.

Comment 20 by crouleau@chromium.org, Jan 18 (4 days ago)

Status: Assigned (was: Fixed)
The arguments are not all working correctly in Findit.

Sign in to add a comment