+ 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)
+