def test_value_with_hidden_platform_and_tesst(self): webkit_trunk = Branch.create_if_possible('webkit-trunk', 'WebKit trunk') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') hidden_platform = Platform.create_if_possible('hidden-platform', 'Hidden Platform') hidden_platform.hidden = True hidden_platform.put() Test.update_or_insert('some-test', webkit_trunk, some_platform) Test.update_or_insert('some-test', webkit_trunk, hidden_platform) Test.update_or_insert('other-test', webkit_trunk, some_platform) Test.update_or_insert('other-test', webkit_trunk, hidden_platform) Test.update_or_insert('hidden-test', webkit_trunk, some_platform) Test.update_or_insert('hidden-test', webkit_trunk, hidden_platform) hidden_test = Test.get_by_key_name('hidden-test') hidden_test.hidden = True hidden_test.put() self.assertEqual(DashboardJSONGenerator().value()['platformToId'], {'Some Platform': some_platform.id}) self.assertEqual( DashboardJSONGenerator().value()['testToId'], { 'some-test': Test.get_by_key_name('some-test').id, 'other-test': Test.get_by_key_name('other-test').id })
def test_create_if_possible(self): self.assertThereIsNoInstanceOf(Platform) platform = Platform.create_if_possible('some-platform', 'some platform') self.assertTrue(platform) self.assertTrue(platform.key().name(), 'some-platform') self.assertTrue(platform.name, 'some platform') self.assertOnlyInstance(platform) self.assertFalse(Platform.create_if_possible('some-platform', 'some other platform')) self.assertTrue(platform.name, 'some platform') self.assertOnlyInstance(platform)
def test_value_two_platforms(self): webkit_trunk = Branch.create_if_possible('webkit-trunk', 'WebKit trunk') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') other_platform = Platform.create_if_possible('other-platform', 'Other Platform') Test.update_or_insert('some-test', webkit_trunk, some_platform) Test.update_or_insert('some-test', webkit_trunk, other_platform) self.assertEqual(DashboardJSONGenerator().value(), { 'defaultBranch': 'WebKit trunk', 'branchToId': {'WebKit trunk': webkit_trunk.id}, 'platformToId': {'Some Platform': some_platform.id, 'Other Platform': other_platform.id}, 'testToId': {'some-test': Test.get_by_key_name('some-test').id}, })
def test_update_or_insert_to_update(self): branch = Branch.create_if_possible('some-branch', 'Some Branch') platform = Platform.create_if_possible('some-platform', 'Some Platform') test = Test.update_or_insert('some-test', branch, platform) self.assertOnlyInstance(test) other_branch = Branch.create_if_possible('other-branch', 'Other Branch') other_platform = Platform.create_if_possible('other-platform', 'Other Platform') test = Test.update_or_insert('some-test', other_branch, other_platform, 'ms') self.assertOnlyInstance(test) self.assertEqualUnorderedList(test.branches, [branch.key(), other_branch.key()]) self.assertEqualUnorderedList(test.platforms, [platform.key(), other_platform.key()]) self.assertEqualUnorderedList(test.unit, 'ms')
def test_value_two_platforms(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') other_platform = Platform.create_if_possible('other-platform', 'Other Platform') some_test = Test.update_or_insert('some-test', some_branch, some_platform) self._assert_single_test(ManifestJSONGenerator().value(), some_branch, some_platform, some_test) some_test = Test.update_or_insert('some-test', some_branch, other_platform) self.assertEqualUnorderedList( some_test.platforms, [some_platform.key(), other_platform.key()]) value = ManifestJSONGenerator().value() expected_platform_ids = [some_platform.id, other_platform.id] self.assertEqualUnorderedList(value.keys(), ['branchMap', 'platformMap', 'testMap']) self.assertEqualUnorderedList( value['branchMap'], { some_branch.id: { 'name': some_branch.name, 'testIds': [some_test.id], 'platformIds': expected_platform_ids } }) self.assertEqual( value['platformMap'], { some_platform.id: { 'name': some_platform.name, 'branchIds': [some_branch.id], 'testIds': [some_test.id] }, other_platform.id: { 'name': other_platform.name, 'branchIds': [some_branch.id], 'testIds': [some_test.id] } }) self.assertEqual( value['testMap'], { some_test.id: { 'name': some_test.name, 'branchIds': [some_branch.id], 'platformIds': expected_platform_ids } })
def test_update_or_insert(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_builder = Builder.get(Builder.create('some-builder', 'Some Builder')) some_test = Test.update_or_insert('some-test', some_branch, some_platform) self.assertThereIsNoInstanceOf(Runs) runs = Runs.update_or_insert(some_branch, some_platform, some_test) self.assertOnlyInstance(runs) self.assertEqual(runs.json_runs, '') self.assertEqual(runs.json_averages, '') self.assertEqual(runs.json_min, None) self.assertEqual(runs.json_max, None) old_memcache_value = memcache.get(Runs._key_name(some_branch.id, some_platform.id, some_test.id)) self.assertTrue(old_memcache_value) runs.delete() self.assertThereIsNoInstanceOf(Runs) builds, results = self._create_results(some_branch, some_platform, some_builder, 'some-test', [50.0]) runs = Runs.update_or_insert(some_branch, some_platform, some_test) self.assertOnlyInstance(runs) self.assertTrue(runs.json_runs.startswith('[5, [4, 0, 100, null],')) self.assertEqual(json.loads('{' + runs.json_averages + '}'), {"100": 50.0}) self.assertEqual(runs.json_min, 50.0) self.assertEqual(runs.json_max, 50.0) self.assertNotEqual(memcache.get(Runs._key_name(some_branch.id, some_platform.id, some_test.id)), old_memcache_value)
def test_update_incrementally(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_builder = Builder.get(Builder.create('some-builder', 'Some Builder')) some_test = Test.update_or_insert('some-test', some_branch, some_platform) self.assertThereIsNoInstanceOf(Runs) timestamps = [datetime.now(), datetime.now()] builds, results = self._create_results(some_branch, some_platform, some_builder, 'some-test', [50.0, 52.0], timestamps) runs = Runs.update_or_insert(some_branch, some_platform, some_test) self.assertOnlyInstance(runs) self.assertEqual(json.loads('[' + runs.json_runs + ']'), [[5, [4, 0, 100, None], mktime(timestamps[0].timetuple()), 50.0, 0, [], None, None], [7, [6, 1, 101, None], mktime(timestamps[1].timetuple()), 52.0, 0, [], None, None]]) self.assertEqual(json.loads('{' + runs.json_averages + '}'), {"100": 50.0, "101": 52.0}) self.assertEqual(runs.json_min, 50.0) self.assertEqual(runs.json_max, 52.0) timestamps.append(datetime.now()) builds, results = self._create_results(some_branch, some_platform, some_builder, 'some-test', [48.0], timestamps[2:], starting_revision=102) runs.update_incrementally(builds[0], results[0]) self.assertOnlyInstance(runs) self.assertEqual(json.loads('[' + runs.json_runs + ']'), [[5, [4, 0, 100, None], mktime(timestamps[0].timetuple()), 50.0, 0, [], None, None], [7, [6, 1, 101, None], mktime(timestamps[1].timetuple()), 52.0, 0, [], None, None], [9, [8, 0, 102, None], mktime(timestamps[2].timetuple()), 48.0, 0, [], None, None]]) self.assertEqual(json.loads('{' + runs.json_averages + '}'), {"100": 50.0, "101": 52.0, "102": 48.0}) self.assertEqual(runs.json_min, 48.0) self.assertEqual(runs.json_max, 52.0)
def test_value_single_platform(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') self.assertEqual(ManifestJSONGenerator().value(), {'branchMap': {}, 'platformMap': {}, 'testMap': {}}) some_test = Test.update_or_insert('some-test', some_branch, some_platform) self._assert_single_test(ManifestJSONGenerator().value(), some_branch, some_platform, some_test)
def test_to_json_with_results(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_builder = Builder.get(Builder.create('some-builder', 'Some Builder')) some_test = Test.update_or_insert('some-test', some_branch, some_platform) builds, results = self._create_results(some_branch, some_platform, some_builder, 'some-test', [50.0, 51.0, 52.0, 49.0, 48.0]) value = json.loads(Runs.update_or_insert(some_branch, some_platform, some_test).to_json()) self.assertEqualUnorderedList(value.keys(), ['test_runs', 'averages', 'min', 'max', 'unit', 'date_range', 'stat']) self.assertEqual(value['stat'], 'ok') self.assertEqual(value['min'], 48.0) self.assertEqual(value['max'], 52.0) self.assertEqual(value['unit'], None) self.assertEqual(value['date_range'], None) # date_range is never given self.assertEqual(len(value['test_runs']), len(results)) for i, run in enumerate(value['test_runs']): result = results[i] self.assertEqual(run[0], result.key().id()) self.assertEqual(run[1][1], i) # Build number self.assertEqual(run[1][2], 100 + i) # Revision self.assertEqual(run[1][3], None) # Supplementary revision self.assertEqual(run[3], result.value) self.assertEqual(run[6], some_builder.key().id()) self.assertEqual(run[7], None) # Statistics
def test_chart_params_with_value(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_builder = Builder.get(Builder.create('some-builder', 'Some Builder')) some_test = Test.update_or_insert('some-test', some_branch, some_platform) start_time = datetime(2011, 2, 21, 12, 0, 0) end_time = datetime(2011, 2, 28, 12, 0, 0) results = self._create_results(some_branch, some_platform, some_builder, 'some-test', [50.0, 51.0, 52.0, 49.0, 48.0, 51.9, 50.7, 51.1], [start_time + timedelta(day) for day in range(0, 8)]) # Use int despite of its impreciseness since tests may fail due to rounding errors otherwise. def split_as_int(string): return [int(float(value)) for value in string.split(',')] params = Runs.update_or_insert(some_branch, some_platform, some_test).chart_params(7) self.assertEqual(params['chxl'], '0:|Feb 21|Feb 22|Feb 23|Feb 24|Feb 25|Feb 26|Feb 27|Feb 28') self.assertEqual(split_as_int(params['chxr']), [1, 0, 57, int(52 * 1.1 / 5 + 0.5)]) x_min, x_max, y_min, y_max = split_as_int(params['chds']) self.assertEqual(datetime.fromtimestamp(x_min), start_time) self.assertEqual(datetime.fromtimestamp(x_max), end_time) self.assertEqual(y_min, 0) self.assertEqual(y_max, int(52 * 1.1)) self.assertEqual(split_as_int(params['chg']), [int(100 / 7), 20, 0, 0]) params = Runs.update_or_insert(some_branch, some_platform, some_test).chart_params(14) self.assertEqual(params['chxl'], '0:|Feb 14|Feb 16|Feb 18|Feb 20|Feb 22|Feb 24|Feb 26|Feb 28') self.assertEqual(split_as_int(params['chxr']), [1, 0, 57, int(52 * 1.1 / 5 + 0.5)]) x_min, x_max, y_min, y_max = split_as_int(params['chds']) self.assertEqual(datetime.fromtimestamp(x_min), datetime(2011, 2, 14, 12, 0, 0)) self.assertEqual(datetime.fromtimestamp(x_max), end_time) self.assertEqual(y_min, 0) self.assertEqual(y_max, int(52 * 1.1)) self.assertEqual(split_as_int(params['chg']), [int(100 / 7), 20, 0, 0])
def test_json_by_ids(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_builder = Builder.get( Builder.create('some-builder', 'Some Builder')) some_test = Test.update_or_insert('some-test', some_branch, some_platform) self._create_results(some_branch, some_platform, some_builder, 'some-test', [50.0]) runs = Runs.update_or_insert(some_branch, some_platform, some_test) runs_json = runs.to_json() key_name = Runs._key_name(some_branch.id, some_platform.id, some_test.id) self.assertEqual( Runs.json_by_ids(some_branch.id, some_platform.id, some_test.id), runs_json) self.assertEqual(memcache.get(key_name), runs_json) memcache.set(key_name, 'blah') self.assertEqual( Runs.json_by_ids(some_branch.id, some_platform.id, some_test.id), 'blah') memcache.delete(key_name) self.assertEqual( Runs.json_by_ids(some_branch.id, some_platform.id, some_test.id), runs_json) self.assertEqual(memcache.get(key_name), runs_json)
def test_update_or_insert_with_unit(self): branch = Branch.create_if_possible('some-branch', 'Some Branch') platform = Platform.create_if_possible('some-platform', 'Some Platform') test = Test.update_or_insert('some-test', branch, platform, 'runs/s') self.assertOnlyInstance(test) self.assertEqualUnorderedList(test.unit, 'runs/s')
def test_update_or_insert(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_builder = Builder.get(Builder.create('some-builder', 'Some Builder')) some_test = Test.update_or_insert('some-test', some_branch, some_platform) self.assertThereIsNoInstanceOf(Runs) runs = Runs.update_or_insert(some_branch, some_platform, some_test) self.assertOnlyInstance(runs) self.assertEqual(runs.json_runs, '') self.assertEqual(runs.json_averages, '') self.assertEqual(runs.json_min, None) self.assertEqual(runs.json_max, None) old_memcache_value = memcache.get(Runs._key_name(some_branch.id, some_platform.id, some_test.id)) self.assertTrue(old_memcache_value) runs.delete() self.assertThereIsNoInstanceOf(Runs) builds, results = self._create_results(some_branch, some_platform, some_builder, 'some-test', [50.0]) runs = Runs.update_or_insert(some_branch, some_platform, some_test) self.assertOnlyInstance(runs) self.assertTrue(runs.json_runs.startswith('[5,[4,0,100,null],')) self.assertEqual(json.loads('{' + runs.json_averages + '}'), {"100": 50.0}) self.assertEqual(runs.json_min, 50.0) self.assertEqual(runs.json_max, 50.0) self.assertNotEqual(memcache.get(Runs._key_name(some_branch.id, some_platform.id, some_test.id)), old_memcache_value)
def test_value_single_platform(self): webkit_trunk = Branch.create_if_possible('webkit-trunk', 'WebKit trunk') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') self.assertEqual( DashboardJSONGenerator().value(), { 'defaultBranch': 'WebKit trunk', 'branchToId': { 'WebKit trunk': webkit_trunk.id }, 'platformToId': { 'Some Platform': some_platform.id }, 'testToId': {}, }) Test.update_or_insert('some-test', webkit_trunk, some_platform) self.assertEqual( DashboardJSONGenerator().value(), { 'defaultBranch': 'WebKit trunk', 'branchToId': { 'WebKit trunk': webkit_trunk.id }, 'platformToId': { 'Some Platform': some_platform.id }, 'testToId': { 'some-test': Test.get_by_key_name('some-test').id }, })
def test_value_with_hidden_platform_and_test(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') hidden_platform = Platform.create_if_possible('hidden-platform', 'Hidden Platform') hidden_platform.hidden = True hidden_platform.put() Test.update_or_insert('some-test', some_branch, some_platform) some_test = Test.update_or_insert('some-test', some_branch, hidden_platform) Test.update_or_insert('hidden-test', some_branch, some_platform) hidden_test = Test.update_or_insert('hidden-test', some_branch, hidden_platform) hidden_test.hidden = True hidden_test.put() value = ManifestJSONGenerator().value() expected_test_ids = [] self.assertEqualUnorderedList(value.keys(), ['branchMap', 'platformMap', 'testMap']) self.assertEqual( value['branchMap'], { some_branch.id: { 'name': some_branch.name, 'testIds': [some_test.id], 'platformIds': [some_platform.id] } }) self.assertEqual( value['platformMap'], { some_platform.id: { 'name': some_platform.name, 'branchIds': [some_branch.id], 'testIds': [some_test.id] } }) self.assertEqual( value['testMap'], { some_test.id: { 'name': some_test.name, 'branchIds': [some_branch.id], 'platformIds': [some_platform.id] } })
def test_to_json_with_unit(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_builder = Builder.get(Builder.create('some-builder', 'Some Builder')) some_test = Test.update_or_insert('some-test', some_branch, some_platform, 'runs/s') builds, results = self._create_results(some_branch, some_platform, some_builder, 'some-test', [50.0, 51.0, 52.0, 49.0, 48.0]) value = json.loads(Runs.update_or_insert(some_branch, some_platform, some_test).to_json()) self.assertEqual(value['unit'], 'runs/s')
def test_value_with_hidden_platform_and_tesst(self): webkit_trunk = Branch.create_if_possible('webkit-trunk', 'WebKit trunk') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') hidden_platform = Platform.create_if_possible('hidden-platform', 'Hidden Platform') hidden_platform.hidden = True hidden_platform.put() Test.update_or_insert('some-test', webkit_trunk, some_platform) Test.update_or_insert('some-test', webkit_trunk, hidden_platform) Test.update_or_insert('other-test', webkit_trunk, some_platform) Test.update_or_insert('other-test', webkit_trunk, hidden_platform) Test.update_or_insert('hidden-test', webkit_trunk, some_platform) Test.update_or_insert('hidden-test', webkit_trunk, hidden_platform) hidden_test = Test.get_by_key_name('hidden-test') hidden_test.hidden = True hidden_test.put() self.assertEqual(DashboardJSONGenerator().value()['platformToId'], {'Some Platform': some_platform.id}) self.assertEqual(DashboardJSONGenerator().value()['testToId'], {'some-test': Test.get_by_key_name('some-test').id, 'other-test': Test.get_by_key_name('other-test').id})
def test_platform(self): log = self._create_log_with_payload('{"key": "value"}') self.assertEqual(log.platform(), None) log = self._create_log_with_payload('{"platform": "some-platform"}') self.assertEqual(log.platform(), None) platform = Platform.create_if_possible("some-platform", "Some Platform") log = self._create_log_with_payload('{"platform": "some-platform"}') self.assertEqual(log.platform().key(), platform.key())
def test_update_or_insert(self): branch = Branch.create_if_possible('some-branch', 'Some Branch') platform = Platform.create_if_possible('some-platform', 'Some Platform') self.assertThereIsNoInstanceOf(Test) test = Test.update_or_insert('some-test', branch, platform) self.assertTrue(test) self.assertEqual(test.branches, [branch.key()]) self.assertEqual(test.platforms, [platform.key()]) self.assertOnlyInstance(test)
def test_update_or_insert(self): branch = Branch.create_if_possible('some-branch', 'Some Branch') platform = Platform.create_if_possible('some-platform', 'Some Platform') self.assertThereIsNoInstanceOf(Test) test = Test.update_or_insert('some-test', branch, platform) self.assertTrue(test) self.assertEqual(test.branches, [branch.key()]) self.assertEqual(test.platforms, [platform.key()]) self.assertEqual(test.unit, None) self.assertOnlyInstance(test)
def test_value_without_results(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') self.assertThereIsNoInstanceOf(Test) self.assertThereIsNoInstanceOf(TestResult) self.assertEqual(Runs(some_branch, some_platform, 'some-test').value(), { 'test_runs': [], 'averages': {}, 'min': None, 'max': None, 'date_range': None, 'stat': 'ok'})
def test_value_two_platforms(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') other_platform = Platform.create_if_possible('other-platform', 'Other Platform') some_test = Test.update_or_insert('some-test', some_branch, some_platform) self._assert_single_test(ManifestJSONGenerator().value(), some_branch, some_platform, some_test) some_test = Test.update_or_insert('some-test', some_branch, other_platform) self.assertEqualUnorderedList(some_test.platforms, [some_platform.key(), other_platform.key()]) value = ManifestJSONGenerator().value() expected_platform_ids = [some_platform.id, other_platform.id] self.assertEqualUnorderedList(value.keys(), ['branchMap', 'platformMap', 'testMap']) self.assertEqualUnorderedList(value['branchMap'], {some_branch.id: {'name': some_branch.name, 'testIds': [some_test.id], 'platformIds': expected_platform_ids}}) self.assertEqual(value['platformMap'], {some_platform.id: {'name': some_platform.name, 'branchIds': [some_branch.id], 'testIds': [some_test.id]}, other_platform.id: {'name': other_platform.name, 'branchIds': [some_branch.id], 'testIds': [some_test.id]}}) self.assertEqual(value['testMap'], {some_test.id: {'name': some_test.name, 'branchIds': [some_branch.id], 'platformIds': expected_platform_ids}})
def test_to_json_without_results(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_test = Test.update_or_insert('some-test', some_branch, some_platform) self.assertOnlyInstance(some_test) self.assertThereIsNoInstanceOf(TestResult) self.assertEqual(json.loads(Runs.update_or_insert(some_branch, some_platform, some_test).to_json()), { 'test_runs': [], 'averages': {}, 'min': None, 'max': None, 'date_range': None, 'stat': 'ok'})
def test_value_single_platform(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') self.assertEqual(ManifestJSONGenerator().value(), { 'branchMap': {}, 'platformMap': {}, 'testMap': {} }) some_test = Test.update_or_insert('some-test', some_branch, some_platform) self._assert_single_test(ManifestJSONGenerator().value(), some_branch, some_platform, some_test)
def test_to_json_without_results(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_test = Test.update_or_insert('some-test', some_branch, some_platform) self.assertOnlyInstance(some_test) self.assertThereIsNoInstanceOf(TestResult) self.assertEqual(json.loads(Runs.update_or_insert(some_branch, some_platform, some_test).to_json()), { 'test_runs': [], 'averages': {}, 'min': None, 'max': None, 'unit': None, 'date_range': None, 'stat': 'ok'})
def test_generate_runs(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_builder = Builder.get(Builder.create('some-builder', 'Some Builder')) results = self._create_results(some_branch, some_platform, some_builder, 'some-test', [50.0, 51.0, 52.0, 49.0, 48.0]) last_i = 0 for i, (build, result) in enumerate(Runs._generate_runs(some_branch, some_platform, "some-test")): self.assertEqual(build.buildNumber, i) self.assertEqual(build.revision, 100 + i) self.assertEqual(result.name, 'some-test') self.assertEqual(result.value, results[i].value) last_i = i self.assertTrue(last_i + 1, len(results))
def test_generate_runs(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_builder = Builder.get(Builder.create('some-builder', 'Some Builder')) some_test = Test.update_or_insert('some-test', some_branch, some_platform) builds, results = self._create_results(some_branch, some_platform, some_builder, 'some-test', [50.0, 51.0, 52.0, 49.0, 48.0]) last_i = 0 for i, (build, result) in enumerate(Runs._generate_runs(some_branch, some_platform, some_test)): self.assertEqual(build.buildNumber, i) self.assertEqual(build.revision, 100 + i) self.assertEqual(result.name, 'some-test') self.assertEqual(result.value, results[i].value) last_i = i self.assertTrue(last_i + 1, len(results))
def test_value_with_hidden_platform_and_test(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') hidden_platform = Platform.create_if_possible('hidden-platform', 'Hidden Platform') hidden_platform.hidden = True hidden_platform.put() Test.update_or_insert('some-test', some_branch, some_platform) some_test = Test.update_or_insert('some-test', some_branch, hidden_platform) Test.update_or_insert('hidden-test', some_branch, some_platform) hidden_test = Test.update_or_insert('hidden-test', some_branch, hidden_platform) hidden_test.hidden = True hidden_test.put() value = ManifestJSONGenerator().value() expected_test_ids = [] self.assertEqualUnorderedList(value.keys(), ['branchMap', 'platformMap', 'testMap']) self.assertEqual(value['branchMap'], {some_branch.id: {'name': some_branch.name, 'testIds': [some_test.id], 'platformIds': [some_platform.id]}}) self.assertEqual(value['platformMap'], {some_platform.id: {'name': some_platform.name, 'branchIds': [some_branch.id], 'testIds': [some_test.id]}}) self.assertEqual(value['testMap'], {some_test.id: {'name': some_test.name, 'branchIds': [some_branch.id], 'platformIds': [some_platform.id]}})
def test_run_from_build_and_result(self): branch = Branch.create_if_possible('some-branch', 'Some Branch') platform = Platform.create_if_possible('some-platform', 'Some Platform') builder = Builder.get(Builder.create('some-builder', 'Some Builder')) test_name = ' some-test' def create_build(build_number, revision): timestamp = datetime.now().replace(microsecond=0) build = Build(branch=branch, platform=platform, builder=builder, buildNumber=build_number, revision=revision, timestamp=timestamp) build.put() return build build = create_build(1, 101) result = TestResult(name=test_name, value=123.0, build=build) result.put() self._assert_entry(Runs._entry_from_build_and_result(build, result), build, result, 123.0) build = create_build(2, 102) result = TestResult(name=test_name, value=456.0, valueMedian=789.0, build=build) result.put() self._assert_entry(Runs._entry_from_build_and_result(build, result), build, result, 456.0) result.valueStdev = 7.0 result.put() self._assert_entry(Runs._entry_from_build_and_result(build, result), build, result, 456.0) result.valueStdev = None result.valueMin = 123.0 result.valueMax = 789.0 result.put() self._assert_entry(Runs._entry_from_build_and_result(build, result), build, result, 456.0) result.valueStdev = 8.0 result.valueMin = 123.0 result.valueMax = 789.0 result.put() self._assert_entry(Runs._entry_from_build_and_result(build, result), build, result, 456.0, statistics={'stdev': 8.0, 'min': 123.0, 'max': 789.0}) result.valueMedian = 345.0 # Median is never used by the frontend. result.valueStdev = 8.0 result.valueMin = 123.0 result.valueMax = 789.0 result.put() self._assert_entry(Runs._entry_from_build_and_result(build, result), build, result, 456.0, statistics={'stdev': 8.0, 'min': 123.0, 'max': 789.0})
def test_json_by_ids(self): some_branch = Branch.create_if_possible('some-branch', 'Some Branch') some_platform = Platform.create_if_possible('some-platform', 'Some Platform') some_builder = Builder.get(Builder.create('some-builder', 'Some Builder')) some_test = Test.update_or_insert('some-test', some_branch, some_platform) self._create_results(some_branch, some_platform, some_builder, 'some-test', [50.0]) runs = Runs.update_or_insert(some_branch, some_platform, some_test) runs_json = runs.to_json() key_name = Runs._key_name(some_branch.id, some_platform.id, some_test.id) self.assertEqual(Runs.json_by_ids(some_branch.id, some_platform.id, some_test.id), runs_json) self.assertEqual(memcache.get(key_name), runs_json) memcache.set(key_name, 'blah') self.assertEqual(Runs.json_by_ids(some_branch.id, some_platform.id, some_test.id), 'blah') memcache.delete(key_name) self.assertEqual(Runs.json_by_ids(some_branch.id, some_platform.id, some_test.id), runs_json) self.assertEqual(memcache.get(key_name), runs_json)
def _create_some_builder(): branch = Branch.create_if_possible('some-branch', 'Some Branch') platform = Platform.create_if_possible('some-platform', 'Some Platform') builder_key = Builder.create('some-builder', 'Some Builder') return branch, platform, Builder.get(builder_key)
def test_results_in_array(self): platform = Platform.create_if_possible("some-platform", "Some Platform") log = self._create_log_with_payload('[{"platform": "some-platform", "build-number": 123, "webkit-revision": 456}]') self.assertEqual(log.platform().key(), platform.key()) self.assertEqual(log.build_number(), 123) self.assertEqual(log.webkit_revision(), 456)
def _create_platform(self, key, name): if not key or not name: return 'Invalid key name' return None if Platform.create_if_possible( key, name) else 'Platform "%s" already exists' % key
def _create_platform(self, key, name): if not key or not name: return 'Invalid key name' return None if Platform.create_if_possible(key, name) else 'Platform "%s" already exists' % key