Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Side by Side Diff: appengine/findit/waterfall/test/buildbot_test.py

Issue 1149743002: [Findit] Use step level analysis to exclude flaky test failures. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Use cStringIO to pull the reliable test failures. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from datetime import datetime 5 from datetime import datetime
6 import os 6 import os
7 import unittest 7 import unittest
stgao 2015/05/22 01:30:37 Unused now?
8 from testing_utils import testing
stgao 2015/05/22 01:30:37 Why APIs from unittest are not enough?
chanli 2015/05/22 18:43:27 I don't quite remember, but I think back then I ne
9
10 import cloudstorage as gcs
11 import gzip
stgao 2015/05/22 01:30:37 style: order and category still not fixed.
8 12
9 from common.retry_http_client import RetryHttpClient 13 from common.retry_http_client import RetryHttpClient
10 from waterfall import buildbot 14 from waterfall import buildbot
11 15
12 16
13 class DummyHttpClient(RetryHttpClient): 17 class DummyHttpClient(RetryHttpClient):
14 18
15 def __init__(self, status_code, response_content): 19 def __init__(self, status_code, response_content):
16 self.status_code = status_code 20 self.status_code = status_code
17 self.response_content = response_content 21 self.response_content = response_content
18 self.requests = [] 22 self.requests = []
19 23
20 def WaitForNextRetry(self, *_): # pragma: no cover 24 def WaitForNextRetry(self, *_): # pragma: no cover
21 """Override to avoid sleep.""" 25 """Override to avoid sleep."""
22 pass 26 pass
23 27
24 def _Get(self, url, _): 28 def _Get(self, url, _):
25 self.requests.append(url) 29 self.requests.append(url)
26 return self.status_code, self.response_content 30 return self.status_code, self.response_content
27 31
28 32
29 class BuildBotTest(unittest.TestCase): 33 class BuildBotTest(testing.AppengineTestCase):
30 def testGetMasternameFromUrl(self): 34 def testGetMasternameFromUrl(self):
31 cases = { 35 cases = {
32 None: None, 36 None: None,
33 '': None, 37 '': None,
34 'https://unknown.host/p/chromium': None, 38 'https://unknown.host/p/chromium': None,
35 'http://build.chromium.org/p/chromium': 'chromium', 39 'http://build.chromium.org/p/chromium': 'chromium',
36 'http://build.chromium.org/p/chromium/builders/Linux': 'chromium', 40 'http://build.chromium.org/p/chromium/builders/Linux': 'chromium',
37 } 41 }
38 42
39 for url, expected_result in cases.iteritems(): 43 for url, expected_result in cases.iteritems():
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 step_name = '[trigger] abc_tests' 117 step_name = '[trigger] abc_tests'
114 expected_stdio_log_url = ('https://build.chromium.org/p/a/builders/' 118 expected_stdio_log_url = ('https://build.chromium.org/p/a/builders/'
115 'Win7%20Tests%20%281%29/builds/123/steps/' 119 'Win7%20Tests%20%281%29/builds/123/steps/'
116 '%5Btrigger%5D%20abc_tests/logs/stdio/text') 120 '%5Btrigger%5D%20abc_tests/logs/stdio/text')
117 121
118 self.assertEqual( 122 self.assertEqual(
119 expected_stdio_log_url, 123 expected_stdio_log_url,
120 buildbot.CreateStdioLogUrl( 124 buildbot.CreateStdioLogUrl(
121 master_name, builder_name, build_number, step_name)) 125 master_name, builder_name, build_number, step_name))
122 126
127 def testCreateGtestResultPath(self):
128 master_name = 'a'
129 builder_name = 'Win7 Tests (1)'
130 build_number = 123
131 step_name = '[trigger] abc_tests'
132 expected_stdio_log_url = ('/chrome-gtest-results/buildbot/a/Win7 Tests '
133 '(1)/123/[trigger] abc_tests.json.gz')
134
135 self.assertEqual(
136 expected_stdio_log_url,
137 buildbot.CreateGtestResultPath(
138 master_name, builder_name, build_number, step_name))
139
123 def testGetBuildDataFromArchiveSuccess(self): 140 def testGetBuildDataFromArchiveSuccess(self):
124 master_name = 'a' 141 master_name = 'a'
125 builder_name = 'b c' 142 builder_name = 'b c'
126 build_number = 1 143 build_number = 1
127 expected_url = ('https://chrome-build-extract.appspot.com/p/a/builders/' 144 expected_url = ('https://chrome-build-extract.appspot.com/p/a/builders/'
128 'b%20c/builds/1?json=1') 145 'b%20c/builds/1?json=1')
129 http_client = DummyHttpClient(200, 'abc') 146 http_client = DummyHttpClient(200, 'abc')
130 data = buildbot.GetBuildDataFromArchive( 147 data = buildbot.GetBuildDataFromArchive(
131 master_name, builder_name, build_number, http_client) 148 master_name, builder_name, build_number, http_client)
132 self.assertEqual(http_client.response_content, data) 149 self.assertEqual(http_client.response_content, data)
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 self.assertEqual(master_name, build_info.master_name) 346 self.assertEqual(master_name, build_info.master_name)
330 self.assertEqual(builder_name, build_info.builder_name) 347 self.assertEqual(builder_name, build_info.builder_name)
331 self.assertEqual(build_number, build_info.build_number) 348 self.assertEqual(build_number, build_info.build_number)
332 self.assertEqual(expected_build_start_time, build_info.build_start_time) 349 self.assertEqual(expected_build_start_time, build_info.build_start_time)
333 self.assertEqual(expected_chromium_revision, build_info.chromium_revision) 350 self.assertEqual(expected_chromium_revision, build_info.chromium_revision)
334 self.assertEqual(expected_completed, build_info.completed) 351 self.assertEqual(expected_completed, build_info.completed)
335 self.assertEqual(expected_result, build_info.result) 352 self.assertEqual(expected_result, build_info.result)
336 self.assertEqual(expected_blame_list, build_info.blame_list) 353 self.assertEqual(expected_blame_list, build_info.blame_list)
337 self.assertEqual(expected_failed_steps, build_info.failed_steps) 354 self.assertEqual(expected_failed_steps, build_info.failed_steps)
338 self.assertEqual(expected_passed_steps, build_info.passed_steps) 355 self.assertEqual(expected_passed_steps, build_info.passed_steps)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698