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

Issue 912199 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Dec 11
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug

Blocking:
issue 881991



Sign in to add a comment

INVALID_TEST_RESULTS for chrome_public_test_apk caused by UnmatchedFilterException

Project Member Reported by erikc...@chromium.org, Dec 5

Issue description

Swarming task: https://chromium-swarm.appspot.com/task?id=41963a7f73f72210&refresh=10&show_raw=1
Build: https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android-kitkat-arm-rel/140525
Unrelated CL: https://chromium-review.googlesource.com/c/1360495/4

"""
E   96.459s Main  Unrecognized error occurred.
Traceback (most recent call last):
  File "/b/swarming/w/ir/build/android/test_runner.py", line 1032, in main
    return RunTestsCommand(args)
  File "/b/swarming/w/ir/build/android/test_runner.py", line 718, in RunTestsCommand
    return RunTestsInPlatformMode(args)
  File "/b/swarming/w/ir/build/android/test_runner.py", line 864, in RunTestsInPlatformMode
    test_run.RunTests(raw_results)
  File "/b/swarming/w/ir/build/android/pylib/local/device/local_device_test_run.py", line 58, in RunTests
    tests = self._GetTests()
  File "/b/swarming/w/ir/build/android/pylib/local/device/local_device_instrumentation_test_run.py", line 357, in _GetTests
    tests = self._test_instance.ProcessRawTests(raw_tests)
  File "/b/swarming/w/ir/build/android/pylib/instrumentation/instrumentation_test_instance.py", line 849, in ProcessRawTests
    raise UnmatchedFilterException(self._test_filter)
UnmatchedFilterException: Test filter "org.chromium.chrome.browser.omnibox.OmniboxTest.testSuggestionDirectionSwitching with --disable-features=SpannableInlineAutocomplete" matched no tests.
[W2018-12-05T08:09:58.866587Z 386 0 butler.go:240] Butler Context was cancelled. Initiating shutdown. {"error":"context canceled"}
INFO:devil.utils.timeout_retry:condition 'logdog_stopped' not met
[E2018-12-05T08:09:58.866805Z 386 0 main.go:205] Butler terminated with error.               {"error":"context canceled"}
[E2018-12-05T08:09:58.866832Z 386 0 main.go:233] Failed to serve.
original error: context canceled

[I2018-12-05T08:09:58.866881Z 386 0 main.go:349] Terminating.                                {"returnCode":250}
INFO:devil.utils.timeout_retry:condition 'logdog_stopped' met
"""


 
This is the problematic line in the input:
"""
--gtest_filter=org.chromium.chrome.browser.omnibox.OmniboxTest#testSuggestionDirectionSwitching with --disable-features=SpannableInlineAutocomplete
"""
Blocking: 881991
This is a bug in the test suite itself, which is emitting "org.chromium.chrome.browser.omnibox.OmniboxTest#testSuggestionDirectionSwitching with --disable-features=SpannableInlineAutocomplete" as the name of the failing test.

Isolated output:
https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=969aa08454c069c65d4a342ba2daddc106e9fc16
There are several problems. All are related to test names conflicting with restricted gtest characters.

There are several characters that gtest names should never include: ':', '-', ' ', '*". 

':' is used as a delimiter for --gtest_filter
'-' is used to indicate a negative 
' ' is the shell argument delimiter
'*' is used as wildcard for --gtest_filter test matching

This usually isn't a problem for C++ Gtests because the test names are based on class names, which cannot include any of those characters. However, the code that maps from Java tests to unique names does not obey these same restrictions:
https://cs.chromium.org/chromium/src/build/android/pylib/instrumentation/instrumentation_test_instance.py?l=443

The test name indicated in c#3 uses both ' ' and '-'. This causes several pieces of logic to run into problems.

The solution is to never use these restricted characters in test names.
Project Member

Comment 5 by bugdroid1@chromium.org, Dec 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/89aeefbcb3958ac0d70290a2d8b2ad4f5227cca6

commit 89aeefbcb3958ac0d70290a2d8b2ad4f5227cca6
Author: erikchen <erikchen@chromium.org>
Date: Fri Dec 07 22:10:04 2018

Fix test name sanitization for instrumentation tests on Android.

The characters ' ', '-', '*', and ':' are reserved by gtest_filter or the shell
to have special semantics. They should not be used in test names.

Bug:  912199 
Change-Id: I0805d5e74024d648794568154247bb9e0eb4b236
Reviewed-on: https://chromium-review.googlesource.com/c/1363798
Reviewed-by: John Budorick <jbudorick@chromium.org>
Commit-Queue: Erik Chen <erikchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#614840}
[modify] https://crrev.com/89aeefbcb3958ac0d70290a2d8b2ad4f5227cca6/build/android/pylib/instrumentation/instrumentation_test_instance.py
[modify] https://crrev.com/89aeefbcb3958ac0d70290a2d8b2ad4f5227cca6/build/android/pylib/instrumentation/instrumentation_test_instance_test.py

Cc: wnwen@chromium.org agrieve@chromium.org pasko@chromium.org estevenson@chromium.org perezju@chromium.org
 Issue 911360  has been merged into this issue.
Owner: erikc...@chromium.org
Status: Fixed (was: Untriaged)

Sign in to add a comment