def test_tryjobverifier_first_run_durations(self): self.analyze_records( (1, {"issue": 1, "patchset": 1, "action": "patch_start"}), (2, {"issue": 1, "patchset": 1, "action": "verifier_start"}), (3, {"issue": 1, "patchset": 1, "action": "verifier_retry"}), (4, {"issue": 1, "patchset": 1, "action": "verifier_pass"}), (5, {"issue": 1, "patchset": 1, "action": "patch_stop"}), (6, {"issue": 2, "patchset": 1, "action": "patch_start"}), (7, {"issue": 2, "patchset": 1, "action": "verifier_start"}), (8, {"issue": 2, "patchset": 1, "action": "verifier_timeout"}), (9, {"issue": 2, "patchset": 1, "action": "patch_stop"}), (10, {"issue": 2, "patchset": 1, "action": "patch_start"}), (11, {"issue": 2, "patchset": 1, "action": "verifier_start"}), (15, {"issue": 2, "patchset": 1, "action": "verifier_fail"}), (16, {"issue": 2, "patchset": 1, "action": "patch_stop"}), (17, {"issue": 3, "patchset": 1, "action": "patch_start"}), (18, {"issue": 3, "patchset": 1, "action": "verifier_start"}), (21, {"issue": 3, "patchset": 1, "action": "verifier_pass"}), (22, {"issue": 3, "patchset": 1, "action": "patch_stop"}), ) self.assertEquals( self.create_list( name="tryjobverifier-first-run-durations", description="Time spent on each tryjob verifier first run.", unit="seconds", points=( (hours(1), PatchsetReference(1, 1)), (hours(1), PatchsetReference(2, 1)), (hours(4), PatchsetReference(2, 1)), (hours(3), PatchsetReference(3, 1)), ), ), self.get_stats("tryjobverifier-first-run-durations"), )
def test_blocked_on_throttled_tree_durations(self): self.analyze_records( (1, {"issue": 1, "patchset": 1, "action": "patch_start"}), (2, {"issue": 1, "patchset": 1, "action": "patch_throttled"}), (3, {"issue": 1, "patchset": 1, "action": "patch_ready_to_commit"}), (4, {"issue": 1, "patchset": 1, "action": "patch_stop"}), (5, {"issue": 2, "patchset": 1, "action": "patch_start"}), (6, {"issue": 2, "patchset": 1, "action": "patch_throttled"}), (9, {"issue": 2, "patchset": 1, "action": "patch_ready_to_commit"}), (10, {"issue": 2, "patchset": 1, "action": "patch_stop"}), (11, {"issue": 3, "patchset": 2, "action": "patch_start"}), (12, {"issue": 3, "patchset": 2, "action": "patch_throttled"}), (14, {"issue": 3, "patchset": 2, "action": "patch_stop"}), (15, {"issue": 4, "patchset": 2, "action": "patch_start"}), (19, {"issue": 4, "patchset": 2, "action": "patch_ready_to_commit"}), (20, {"issue": 4, "patchset": 2, "action": "patch_stop"}), ) self.assertEquals( self.create_list( name="blocked-on-throttled-tree-durations", description=("Time spent per committed patchset " "blocked on a throttled tree."), unit="seconds", points=( (hours(1), PatchsetReference(1, 1)), (hours(3), PatchsetReference(2, 1)), (hours(0), PatchsetReference(4, 2)), ), ), self.get_stats("blocked-on-throttled-tree-durations"), )
def test_tryjobverifier_total_durations(self): self.analyze_records( (1, {"issue": 1, "patchset": 1, "action": "patch_start"}), (2, {"issue": 1, "patchset": 1, "action": "verifier_start"}), (3, {"issue": 1, "patchset": 1, "action": "verifier_pass"}), (4, {"issue": 1, "patchset": 1, "action": "patch_stop"}), (5, {"issue": 1, "patchset": 1, "action": "patch_start"}), (6, {"issue": 1, "patchset": 1, "action": "verifier_start"}), (10, {"issue": 1, "patchset": 1, "action": "verifier_fail"}), (11, {"issue": 1, "patchset": 1, "action": "patch_stop"}), (12, {"issue": 1, "patchset": 2, "action": "patch_start"}), (13, {"issue": 1, "patchset": 2, "action": "verifier_start"}), (14, {"issue": 1, "patchset": 2, "action": "verifier_retry"}), (20, {"issue": 1, "patchset": 2, "action": "verifier_timeout"}), (21, {"issue": 1, "patchset": 2, "action": "patch_stop"}), ) self.assertEquals( self.create_list( name="tryjobverifier-total-durations", description="Total time spent per CQ attempt on tryjob verifier runs.", unit="seconds", points=( (hours(1), PatchsetReference(1, 1)), (hours(4), PatchsetReference(1, 1)), (hours(7), PatchsetReference(1, 2)), ), ), self.get_stats("tryjobverifier-total-durations"), )
def test_patchset_durations(self): self.analyze_records( (1, {"issue": 1, "patchset": 1, "action": "patch_start"}), (2, {"issue": 1, "patchset": 1, "action": "patch_stop"}), (3, {"issue": 1, "patchset": 2, "action": "patch_start"}), (5, {"issue": 1, "patchset": 2, "action": "patch_stop"}), (6, {"issue": 2, "patchset": 1, "action": "patch_start"}), (7, {"issue": 2, "patchset": 1, "action": "patch_stop"}), (8, {"issue": 2, "patchset": 1, "action": "patch_start"}), (10, {"issue": 2, "patchset": 1, "action": "patch_stop"}), (10, {"issue": 2, "patchset": 2, "action": "patch_start"}), (20, {"issue": 2, "patchset": 2, "action": "patch_stop"}), ) self.assertEquals( self.create_list( name="patchset-durations", description=("Total time spent in the CQ per patchset, " "counts multiple CQ attempts as one."), unit="seconds", points=( (hours(1), PatchsetReference(1, 1)), (hours(2), PatchsetReference(1, 2)), (hours(3), PatchsetReference(2, 1)), (hours(10), PatchsetReference(2, 2)), ), ), self.get_stats("patchset-durations"), )
def test_patchset_total_wall_time_durations(self): self.analyze_records(*self.historical_records) self.assertEquals( self.create_list( name="patchset-total-wall-time-durations", description="Total time per patch since their commit box was checked.", unit="seconds", points=((hours(36), PatchsetReference(1, 2)), (hours(5), PatchsetReference(1, 3))), ), self.get_stats("patchset-total-wall-time-durations"), )
def test_patchset_total_commit_queue_durations(self): self.analyze_records(*self.historical_records) self.assertEquals( self.create_list( name="patchset-total-commit-queue-durations", description="Total time spent in the CQ per patch.", unit="seconds", points=((hours(11), PatchsetReference(1, 2)), (hours(5), PatchsetReference(1, 3))), ), self.get_stats("patchset-total-commit-queue-durations"), )
def test_patchset_commit_durations(self): self.analyze_records(*self.patchset_commit_records) self.assertEquals( self.create_list( name="patchset-commit-durations", description=("Time taken by the CQ to land a patch " "after passing all checks."), unit="seconds", points=((hours(1), PatchsetReference(2, 1)), (hours(4), PatchsetReference(3, 2))), ), self.get_stats("patchset-commit-durations"), )
def test_patchset_total_commit_queue_durations(self): self.analyze_records(*self.historical_records) self.assertEquals( self.create_list( name='patchset-total-commit-queue-durations', description='Total time spent in the CQ per patch.', unit='seconds', points=( (hours(11), PatchsetReference(1, 2)), (hours(5), PatchsetReference(1, 3)), ), ), self.get_stats('patchset-total-commit-queue-durations'))
def test_patchset_commit_durations(self): self.analyze_records(*self.patchset_commit_records) self.assertEquals( self.create_list( name='patchset-commit-durations', description=('Time taken by the CQ to land a patch ' 'after passing all checks.'), unit='seconds', points=( (hours(1), PatchsetReference(2, 1)), (hours(4), PatchsetReference(3, 2)), ), ), self.get_stats('patchset-commit-durations'))
def test_attempt_durations(self): self.analyze_records(*self.attempt_records) self.assertEquals( self.create_list( name='attempt-durations', description='Total time spent per CQ attempt.', unit='seconds', points=( (hours(2), PatchsetReference(1, 1)), (hours(11), PatchsetReference(1, 1)), (hours(12), PatchsetReference(2, 1)), ), ), self.get_stats('attempt-durations'))
def test_patchset_total_wall_time_durations(self): self.analyze_records(*self.historical_records) self.assertEquals( self.create_list( name='patchset-total-wall-time-durations', description= 'Total time per patch since their commit box was checked.', unit='seconds', points=( (hours(36), PatchsetReference(1, 2)), (hours(5), PatchsetReference(1, 3)), ), ), self.get_stats('patchset-total-wall-time-durations'))
def test_attempt_durations(self): self.analyze_records(*self.attempt_records) self.assertEquals( self.create_list( name="attempt-durations", description="Total time spent per CQ attempt.", unit="seconds", points=( (hours(2), PatchsetReference(1, 1)), (hours(11), PatchsetReference(1, 1)), (hours(12), PatchsetReference(2, 1)), ), ), self.get_stats("attempt-durations"), )
def test_tryjobverifier_first_run_durations(self): self.analyze_records( (1, { 'issue': 1, 'patchset': 1, 'action': 'patch_start' }), (2, { 'issue': 1, 'patchset': 1, 'action': 'verifier_start' }), (3, { 'issue': 1, 'patchset': 1, 'action': 'verifier_retry' }), (4, { 'issue': 1, 'patchset': 1, 'action': 'verifier_pass' }), (5, { 'issue': 1, 'patchset': 1, 'action': 'patch_stop' }), (6, { 'issue': 2, 'patchset': 1, 'action': 'patch_start' }), (7, { 'issue': 2, 'patchset': 1, 'action': 'verifier_start' }), (8, { 'issue': 2, 'patchset': 1, 'action': 'verifier_timeout' }), (9, { 'issue': 2, 'patchset': 1, 'action': 'patch_stop' }), (10, { 'issue': 2, 'patchset': 1, 'action': 'patch_start' }), (11, { 'issue': 2, 'patchset': 1, 'action': 'verifier_start' }), (15, { 'issue': 2, 'patchset': 1, 'action': 'verifier_fail' }), (16, { 'issue': 2, 'patchset': 1, 'action': 'patch_stop' }), (17, { 'issue': 3, 'patchset': 1, 'action': 'patch_start' }), (18, { 'issue': 3, 'patchset': 1, 'action': 'verifier_start' }), (21, { 'issue': 3, 'patchset': 1, 'action': 'verifier_pass' }), (22, { 'issue': 3, 'patchset': 1, 'action': 'patch_stop' }), ) self.assertEquals( self.create_list( name='tryjobverifier-first-run-durations', description='Time spent on each tryjob verifier first run.', unit='seconds', points=( (hours(1), PatchsetReference(1, 1)), (hours(1), PatchsetReference(2, 1)), (hours(4), PatchsetReference(2, 1)), (hours(3), PatchsetReference(3, 1)), ), ), self.get_stats('tryjobverifier-first-run-durations'))
def test_tryjobverifier_total_durations(self): self.analyze_records( (1, { 'issue': 1, 'patchset': 1, 'action': 'patch_start' }), (2, { 'issue': 1, 'patchset': 1, 'action': 'verifier_start' }), (3, { 'issue': 1, 'patchset': 1, 'action': 'verifier_pass' }), (4, { 'issue': 1, 'patchset': 1, 'action': 'patch_stop' }), (5, { 'issue': 1, 'patchset': 1, 'action': 'patch_start' }), (6, { 'issue': 1, 'patchset': 1, 'action': 'verifier_start' }), (10, { 'issue': 1, 'patchset': 1, 'action': 'verifier_fail' }), (11, { 'issue': 1, 'patchset': 1, 'action': 'patch_stop' }), (12, { 'issue': 1, 'patchset': 2, 'action': 'patch_start' }), (13, { 'issue': 1, 'patchset': 2, 'action': 'verifier_start' }), (14, { 'issue': 1, 'patchset': 2, 'action': 'verifier_retry' }), (20, { 'issue': 1, 'patchset': 2, 'action': 'verifier_timeout' }), (21, { 'issue': 1, 'patchset': 2, 'action': 'patch_stop' }), ) self.assertEquals( self.create_list( name='tryjobverifier-total-durations', description= 'Total time spent per CQ attempt on tryjob verifier runs.', unit='seconds', points=( (hours(1), PatchsetReference(1, 1)), (hours(4), PatchsetReference(1, 1)), (hours(7), PatchsetReference(1, 2)), ), ), self.get_stats('tryjobverifier-total-durations'))
def test_patchset_durations(self): self.analyze_records( (1, { 'issue': 1, 'patchset': 1, 'action': 'patch_start' }), (2, { 'issue': 1, 'patchset': 1, 'action': 'patch_stop' }), (3, { 'issue': 1, 'patchset': 2, 'action': 'patch_start' }), (5, { 'issue': 1, 'patchset': 2, 'action': 'patch_stop' }), (6, { 'issue': 2, 'patchset': 1, 'action': 'patch_start' }), (7, { 'issue': 2, 'patchset': 1, 'action': 'patch_stop' }), (8, { 'issue': 2, 'patchset': 1, 'action': 'patch_start' }), (10, { 'issue': 2, 'patchset': 1, 'action': 'patch_stop' }), (10, { 'issue': 2, 'patchset': 2, 'action': 'patch_start' }), (20, { 'issue': 2, 'patchset': 2, 'action': 'patch_stop' }), ) self.assertEquals( self.create_list( name='patchset-durations', description=('Total time spent in the CQ per patchset, ' 'counts multiple CQ attempts as one.'), unit='seconds', points=( (hours(1), PatchsetReference(1, 1)), (hours(2), PatchsetReference(1, 2)), (hours(3), PatchsetReference(2, 1)), (hours(10), PatchsetReference(2, 2)), ), ), self.get_stats('patchset-durations'))
def test_blocked_on_throttled_tree_durations(self): self.analyze_records( (1, { 'issue': 1, 'patchset': 1, 'action': 'patch_start' }), (2, { 'issue': 1, 'patchset': 1, 'action': 'patch_throttled' }), (3, { 'issue': 1, 'patchset': 1, 'action': 'patch_ready_to_commit' }), (4, { 'issue': 1, 'patchset': 1, 'action': 'patch_stop' }), (5, { 'issue': 2, 'patchset': 1, 'action': 'patch_start' }), (6, { 'issue': 2, 'patchset': 1, 'action': 'patch_throttled' }), (9, { 'issue': 2, 'patchset': 1, 'action': 'patch_ready_to_commit' }), (10, { 'issue': 2, 'patchset': 1, 'action': 'patch_stop' }), (11, { 'issue': 3, 'patchset': 2, 'action': 'patch_start' }), (12, { 'issue': 3, 'patchset': 2, 'action': 'patch_throttled' }), (14, { 'issue': 3, 'patchset': 2, 'action': 'patch_stop' }), (15, { 'issue': 4, 'patchset': 2, 'action': 'patch_start' }), (19, { 'issue': 4, 'patchset': 2, 'action': 'patch_ready_to_commit' }), (20, { 'issue': 4, 'patchset': 2, 'action': 'patch_stop' }), ) self.assertEquals( self.create_list( name='blocked-on-throttled-tree-durations', description=('Time spent per committed patchset ' 'blocked on a throttled tree.'), unit='seconds', points=( (hours(1), PatchsetReference(1, 1)), (hours(3), PatchsetReference(2, 1)), (hours(0), PatchsetReference(4, 2)), ), ), self.get_stats('blocked-on-throttled-tree-durations'))