Changeset 252075 in webkit


Ignore:
Timestamp:
Nov 5, 2019 1:36:43 PM (4 years ago)
Author:
aakash_jain@apple.com
Message:

EWS should report test failures from clean-tree to results.webkit.org
https://bugs.webkit.org/show_bug.cgi?id=203829

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(loadBuilderConfig):

  • BuildSlaveSupport/ews-build/steps.py:

(RunWebKitTests.init):
(RunWebKitTestsWithoutPatch.start):
(RunAPITestsWithoutPatch.start):

  • BuildSlaveSupport/ews-build/steps_unittest.py: Added and updated unit-tests.
Location:
trunk/Tools
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/BuildSlaveSupport/ews-build/loadConfig.py

    r250356 r252075  
    4747    else:
    4848        passwords = json.load(open(os.path.join(master_prefix_path, 'passwords.json')))
     49    results_server_api_key = passwords.get('results-server-api-key')
     50    if results_server_api_key:
     51        os.environ['RESULTS_SERVER_API_KEY'] = results_server_api_key
    4952
    5053    checkWorkersAndBuildersForConsistency(config, config['workers'], config['builders'])
  • trunk/Tools/BuildSlaveSupport/ews-build/steps.py

    r252037 r252075  
    3232
    3333import json
     34import os
    3435import re
    3536import requests
     
    4041WithProperties = properties.WithProperties
    4142Interpolate = properties.Interpolate
     43RESULTS_WEBKIT_URL = 'https://results.webkit.org'
     44RESULTS_SERVER_API_KEY = 'RESULTS_SERVER_API_KEY'
    4245
    4346
     
    10021005               WithProperties('--%(configuration)s')]
    10031006
     1007    def __init__(self, **kwargs):
     1008        shell.Test.__init__(self, logEnviron=False, **kwargs)
     1009
    10041010    def start(self):
    10051011        self.log_observer = logobserver.BufferLogObserver(wantStderr=True)
     
    11561162    name = 'run-layout-tests-without-patch'
    11571163
     1164    def start(self):
     1165        self.workerEnvironment[RESULTS_SERVER_API_KEY] = os.getenv(RESULTS_SERVER_API_KEY)
     1166        self.setCommand(self.command +
     1167            ['--buildbot-master', EWS_URL.replace('https://', '').strip('/'),
     1168            '--builder-name', self.getProperty('buildername'),
     1169            '--build-number', self.getProperty('buildnumber'),
     1170            '--buildbot-worker', self.getProperty('workername'),
     1171            '--report', RESULTS_WEBKIT_URL])
     1172        return super(RunWebKitTestsWithoutPatch, self).start()
     1173
    11581174    def evaluateCommand(self, cmd):
    11591175        rc = shell.Test.evaluateCommand(self, cmd)
     
    14731489    def evaluateCommand(self, cmd):
    14741490        return TestWithFailureCount.evaluateCommand(self, cmd)
     1491
     1492    def start(self):
     1493        self.workerEnvironment[RESULTS_SERVER_API_KEY] = os.getenv(RESULTS_SERVER_API_KEY)
     1494        self.setCommand(self.command +
     1495            ['--buildbot-master', EWS_URL.replace('https://', '').strip('/'),
     1496            '--builder-name', self.getProperty('buildername'),
     1497            '--build-number', self.getProperty('buildnumber'),
     1498            '--buildbot-worker', self.getProperty('workername'),
     1499            '--report', RESULTS_WEBKIT_URL])
     1500        return super(RunAPITestsWithoutPatch, self).start()
    14751501
    14761502
  • trunk/Tools/BuildSlaveSupport/ews-build/steps_unittest.py

    r251927 r252075  
    4141                   PrintConfiguration, ReRunAPITests, ReRunJavaScriptCoreTests, ReRunWebKitTests, RunAPITests, RunAPITestsWithoutPatch,
    4242                   RunBindingsTests, RunBuildWebKitOrgUnitTests, RunEWSBuildbotCheckConfig, RunEWSUnitTests, RunJavaScriptCoreTests, RunJavaScriptCoreTestsToT, RunWebKit1Tests,
    43                    RunWebKitPerlTests, RunWebKitPyTests, RunWebKitTests, TestWithFailureCount, Trigger, TransferToS3, UnApplyPatchIfRequired,
     43                   RunWebKitPerlTests, RunWebKitPyTests, RunWebKitTests, RunWebKitTestsWithoutPatch, TestWithFailureCount, Trigger, TransferToS3, UnApplyPatchIfRequired,
    4444                   UpdateWorkingDirectory, UploadBuiltProduct, UploadTestResults, ValidatePatch)
    4545
     
    11441144            ExpectShell(workdir='wkdir',
    11451145                        logfiles={'json': self.jsonFileName},
     1146                        logEnviron=False,
    11461147                        command=['python', 'Tools/Scripts/run-webkit-tests', '--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results', '--exit-after-n-failures', '30', '--skip-failing-tests', '--release', '--results-directory', 'layout-test-results', '--debug-rwt-logging'],
    11471148                        )
     
    11581159            ExpectShell(workdir='wkdir',
    11591160                        logfiles={'json': self.jsonFileName},
     1161                        logEnviron=False,
    11601162                        command=['python', 'Tools/Scripts/run-webkit-tests', '--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results', '--exit-after-n-failures', '30', '--skip-failing-tests', '--release', '--results-directory', 'layout-test-results', '--debug-rwt-logging'],
    11611163                        )
     
    11751177            ExpectShell(workdir='wkdir',
    11761178                        logfiles={'json': self.jsonFileName},
     1179                        logEnviron=False,
    11771180                        command=['python', 'Tools/Scripts/run-webkit-tests', '--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results', '--exit-after-n-failures', '30', '--skip-failing-tests', '--release', '--results-directory', 'layout-test-results', '--debug-rwt-logging'],
    11781181                        )
     
    12031206            ExpectShell(workdir='wkdir',
    12041207                        logfiles={'json': self.jsonFileName},
     1208                        logEnviron=False,
    12051209                        command=['python', 'Tools/Scripts/run-webkit-tests', '--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results', '--exit-after-n-failures', '30', '--skip-failing-tests', '--release', '--results-directory', 'layout-test-results', '--debug-rwt-logging'],
    12061210                        )
     
    12211225            ExpectShell(workdir='wkdir',
    12221226                        logfiles={'json': self.jsonFileName},
     1227                        logEnviron=False,
    12231228                        command=['python', 'Tools/Scripts/run-webkit-tests', '--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results', '--exit-after-n-failures', '30', '--skip-failing-tests', '--release', '--results-directory', 'layout-test-results', '--debug-rwt-logging'],
    12241229                        )
     
    12391244            ExpectShell(workdir='wkdir',
    12401245                        logfiles={'json': self.jsonFileName},
     1246                        logEnviron=False,
    12411247                        command=['python', 'Tools/Scripts/run-webkit-tests', '--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results', '--exit-after-n-failures', '30', '--skip-failing-tests', '--release', '--results-directory', 'layout-test-results', '--debug-rwt-logging'],
    12421248                        )
     
    12571263            ExpectShell(workdir='wkdir',
    12581264                        logfiles={'json': self.jsonFileName},
     1265                        logEnviron=False,
    12591266                        command=['python', 'Tools/Scripts/run-webkit-tests', '--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results', '--exit-after-n-failures', '30', '--skip-failing-tests', '--debug', '--results-directory', 'layout-test-results', '--debug-rwt-logging'],
    12601267                        )
     
    12721279            ExpectShell(workdir='wkdir',
    12731280                        logfiles={'json': self.jsonFileName},
     1281                        logEnviron=False,
    12741282                        command=['python', 'Tools/Scripts/run-webkit-tests', '--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results', '--exit-after-n-failures', '30', '--skip-failing-tests', '--release', '--results-directory', 'layout-test-results', '--debug-rwt-logging'],
    12751283                        )
     
    12881296
    12891297
     1298class TestRunWebKitTestsWithoutPatch(BuildStepMixinAdditions, unittest.TestCase):
     1299    def setUp(self):
     1300        self.longMessage = True
     1301        self.jsonFileName = 'layout-test-results/full_results.json'
     1302        return self.setUpBuildStep()
     1303
     1304    def tearDown(self):
     1305        return self.tearDownBuildStep()
     1306
     1307    def configureStep(self):
     1308        self.setupStep(RunWebKitTestsWithoutPatch())
     1309        self.property_exceed_failure_limit = 'clean_tree_results_exceed_failure_limit'
     1310        self.property_failures = 'clean_tree_run_failures'
     1311        self.setProperty('buildername', 'iOS-13-Simulator-WK2-Tests-EWS')
     1312        self.setProperty('buildnumber', '123')
     1313        self.setProperty('workername', 'ews126')
     1314        os.environ['RESULTS_SERVER_API_KEY'] = 'sample-key'
     1315
     1316    def test_success(self):
     1317        self.configureStep()
     1318        self.setProperty('fullPlatform', 'ios-simulator')
     1319        self.setProperty('configuration', 'release')
     1320        self.expectRemoteCommands(
     1321            ExpectShell(workdir='wkdir',
     1322                        logfiles={'json': self.jsonFileName},
     1323                        env={'RESULTS_SERVER_API_KEY': 'sample-key'},
     1324                        logEnviron=False,
     1325                        command=['python',
     1326                                 'Tools/Scripts/run-webkit-tests',
     1327                                 '--no-build',
     1328                                 '--no-show-results',
     1329                                 '--no-new-test-results',
     1330                                 '--clobber-old-results',
     1331                                 '--exit-after-n-failures', '30',
     1332                                 '--skip-failing-tests',
     1333                                 '--release',
     1334                                 '--buildbot-master', 'ews-build.webkit.org',
     1335                                 '--builder-name', 'iOS-13-Simulator-WK2-Tests-EWS',
     1336                                 '--build-number', '123',
     1337                                 '--buildbot-worker', 'ews126',
     1338                                 '--report', 'https://results.webkit.org',
     1339                                 '--results-directory', 'layout-test-results',
     1340                                 '--debug-rwt-logging'],
     1341                        )
     1342            + 0,
     1343        )
     1344        self.expectOutcome(result=SUCCESS, state_string='layout-tests')
     1345        return self.runStep()
     1346
     1347    def test_failure(self):
     1348        self.configureStep()
     1349        self.setProperty('fullPlatform', 'ios-simulator')
     1350        self.setProperty('configuration', 'release')
     1351        self.expectRemoteCommands(
     1352            ExpectShell(workdir='wkdir',
     1353                        logfiles={'json': self.jsonFileName},
     1354                        env={'RESULTS_SERVER_API_KEY': 'sample-key'},
     1355                        logEnviron=False,
     1356                        command=['python',
     1357                                 'Tools/Scripts/run-webkit-tests',
     1358                                 '--no-build',
     1359                                 '--no-show-results',
     1360                                 '--no-new-test-results',
     1361                                 '--clobber-old-results',
     1362                                 '--exit-after-n-failures', '30',
     1363                                 '--skip-failing-tests',
     1364                                 '--release',
     1365                                 '--buildbot-master', 'ews-build.webkit.org',
     1366                                 '--builder-name', 'iOS-13-Simulator-WK2-Tests-EWS',
     1367                                 '--build-number', '123',
     1368                                 '--buildbot-worker', 'ews126',
     1369                                 '--report', 'https://results.webkit.org',
     1370                                 '--results-directory', 'layout-test-results',
     1371                                 '--debug-rwt-logging'],
     1372                        )
     1373            + ExpectShell.log('stdio', stdout='9 failures found.')
     1374            + 2,
     1375        )
     1376        self.expectOutcome(result=FAILURE, state_string='layout-tests (failure)')
     1377        return self.runStep()
     1378
     1379
    12901380class TestRunWebKit1Tests(BuildStepMixinAdditions, unittest.TestCase):
    12911381    def setUp(self):
     
    13041394            ExpectShell(workdir='wkdir',
    13051395                        logfiles={'json': self.jsonFileName},
     1396                        logEnviron=False,
    13061397                        command=['python', 'Tools/Scripts/run-webkit-tests', '--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results', '--exit-after-n-failures', '30', '--skip-failing-tests', '--debug', '--dump-render-tree', '--results-directory', 'layout-test-results', '--debug-rwt-logging'],
    13071398                        )
     
    13181409            ExpectShell(workdir='wkdir',
    13191410                        logfiles={'json': self.jsonFileName},
     1411                        logEnviron=False,
    13201412                        command=['python', 'Tools/Scripts/run-webkit-tests', '--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results', '--exit-after-n-failures', '30', '--skip-failing-tests', '--release', '--dump-render-tree', '--results-directory', 'layout-test-results', '--debug-rwt-logging'],
    13211413                        )
     
    20562148        return self.runStep()
    20572149
     2150
     2151class TestRunAPITestsWithoutPatch(BuildStepMixinAdditions, unittest.TestCase):
     2152    def setUp(self):
     2153        self.longMessage = True
     2154        self.jsonFileName = 'api_test_results.json'
     2155        return self.setUpBuildStep()
     2156
     2157    def tearDown(self):
     2158        return self.tearDownBuildStep()
     2159
     2160    def test_success_mac(self):
     2161        self.setupStep(RunAPITestsWithoutPatch())
     2162        self.setProperty('fullPlatform', 'mac-mojave')
     2163        self.setProperty('platform', 'mac')
     2164        self.setProperty('configuration', 'release')
     2165        self.setProperty('buildername', 'API-Tests-macOS-EWS')
     2166        self.setProperty('buildnumber', '11525')
     2167        self.setProperty('workername', 'ews155')
     2168        os.environ['RESULTS_SERVER_API_KEY'] = 'sample-key'
     2169
     2170        self.expectRemoteCommands(
     2171            ExpectShell(workdir='wkdir',
     2172                        logEnviron=False,
     2173                        env={'RESULTS_SERVER_API_KEY': 'sample-key'},
     2174                        command=['python',
     2175                                 'Tools/Scripts/run-api-tests',
     2176                                 '--no-build',
     2177                                 '--release',
     2178                                 '--verbose',
     2179                                 '--json-output={0}'.format(self.jsonFileName),
     2180                                 '--buildbot-master', 'ews-build.webkit.org',
     2181                                 '--builder-name', 'API-Tests-macOS-EWS',
     2182                                 '--build-number', '11525',
     2183                                 '--buildbot-worker', 'ews155',
     2184                                 '--report', 'https://results.webkit.org'],
     2185                        logfiles={'json': self.jsonFileName},
     2186                        )
     2187            + ExpectShell.log('stdio', stdout='''...
     2188worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
     2189worker/0 TestWTF.WTF_Variant.Ref Passed
     2190worker/0 TestWTF.WTF_Variant.RefPtr Passed
     2191worker/0 TestWTF.WTF_Variant.RetainPtr Passed
     2192worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
     2193worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
     2194Ran 1888 tests of 1888 with 1888 successful
     2195------------------------------
     2196All tests successfully passed!
     2197''')
     2198            + 0,
     2199        )
     2200        self.expectOutcome(result=SUCCESS, state_string='run-api-tests-without-patch')
     2201        return self.runStep()
     2202
     2203    def test_one_failure(self):
     2204        self.setupStep(RunAPITestsWithoutPatch())
     2205        self.setProperty('fullPlatform', 'mac-mojave')
     2206        self.setProperty('platform', 'ios-simulator')
     2207        self.setProperty('configuration', 'debug')
     2208        self.setProperty('buildername', 'API-Tests-iOS-EWS')
     2209        self.setProperty('buildnumber', '123')
     2210        self.setProperty('workername', 'ews156')
     2211
     2212        self.expectRemoteCommands(
     2213            ExpectShell(workdir='wkdir',
     2214                        logEnviron=False,
     2215                        env={'RESULTS_SERVER_API_KEY': None},
     2216                        command=['python',
     2217                                 'Tools/Scripts/run-api-tests',
     2218                                 '--no-build',
     2219                                 '--debug',
     2220                                 '--verbose',
     2221                                 '--json-output={0}'.format(self.jsonFileName),
     2222                                 '--buildbot-master', 'ews-build.webkit.org',
     2223                                 '--builder-name', 'API-Tests-iOS-EWS',
     2224                                 '--build-number', '123',
     2225                                 '--buildbot-worker', 'ews156',
     2226                                 '--report', 'https://results.webkit.org'],
     2227                        logfiles={'json': self.jsonFileName},
     2228                        )
     2229            + ExpectShell.log('stdio', stdout='''
     2230worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
     2231worker/0 TestWTF.WTF_Variant.Ref Passed
     2232worker/0 TestWTF.WTF_Variant.RefPtr Passed
     2233worker/0 TestWTF.WTF_Variant.RetainPtr Passed
     2234worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
     2235worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
     2236worker/0 exiting
     2237Ran 1888 tests of 1888 with 1887 successful
     2238------------------------------
     2239Test suite failed
     2240
     2241Crashed
     2242
     2243    TestWTF.WTF.StringConcatenate_Unsigned
     2244        **FAIL** WTF.StringConcatenate_Unsigned
     2245
     2246        Tools\\TestWebKitAPI\\Tests\\WTF\\StringConcatenate.cpp:84
     2247        Value of: makeString('hello ', static_cast<unsigned short>(42) , ' world')
     2248          Actual: hello 42 world
     2249        Expected: 'hello * world'
     2250        Which is: 74B00C9C
     2251
     2252Testing completed, Exit status: 3
     2253''')
     2254            + 1,
     2255        )
     2256        self.expectOutcome(result=FAILURE, state_string='1 api test failed or timed out')
     2257        return self.runStep()
    20582258
    20592259class TestArchiveTestResults(BuildStepMixinAdditions, unittest.TestCase):
  • trunk/Tools/ChangeLog

    r252062 r252075  
     12019-11-05  Aakash Jain  <aakash_jain@apple.com>
     2
     3        EWS should report test failures from clean-tree to results.webkit.org
     4        https://bugs.webkit.org/show_bug.cgi?id=203829
     5
     6        Reviewed by Jonathan Bedard.
     7
     8        * BuildSlaveSupport/ews-build/loadConfig.py:
     9        (loadBuilderConfig):
     10        * BuildSlaveSupport/ews-build/steps.py:
     11        (RunWebKitTests.__init__):
     12        (RunWebKitTestsWithoutPatch.start):
     13        (RunAPITestsWithoutPatch.start):
     14        * BuildSlaveSupport/ews-build/steps_unittest.py: Added and updated unit-tests.
     15
    1162019-11-05  Wenson Hsieh  <wenson_hsieh@apple.com>
    217
Note: See TracChangeset for help on using the changeset viewer.