def test_resize_revert_workflow_start_late(self): launched_str = '2012-12-21 06:34:50.123' launched = utils.str_time_to_unix(launched_str) values = { 'instance': INSTANCE_ID_1, 'request_id': REQUEST_ID_1, 'instance_type_id': '1', 'launched_at': launched, } InstanceUsage(**values).save() resize_launched_str = '2012-12-22 06:34:50.123' resize_launched = utils.str_time_to_unix(resize_launched_str) values = { 'instance': INSTANCE_ID_1, 'request_id': REQUEST_ID_2, 'instance_type_id': '2', 'launched_at': resize_launched, } InstanceUsage(**values).save() started_str = '2012-12-22 06:34:50.123' started_time = utils.str_time_to_unix(started_str) end_str = '2012-12-22 06:36:50.123' end_time = utils.str_time_to_unix(end_str) start_json = test_utils\ .make_resize_revert_start_json(request_id=REQUEST_ID_3) end_json = test_utils\ .make_resize_revert_end_json(launched_at=end_str, request_id=REQUEST_ID_3) start_raw = create_raw(self.deployment, started_time, views.INSTANCE_EVENT['resize_revert_start'], request_id=REQUEST_ID_3, json=start_json) end_raw = create_raw(self.deployment, started_time, views.INSTANCE_EVENT['resize_revert_end'], request_id=REQUEST_ID_3, json=end_json) views.aggregate_usage(end_raw) views.aggregate_usage(start_raw) usages = InstanceUsage.objects.all().order_by('id') self.assertEqual(len(usages), 3) usage_before_resize = usages[0] usage_after_resize = usages[1] usage_after_revert = usages[2] self.assertOnUsage(usage_before_resize, INSTANCE_ID_1, '1', launched, REQUEST_ID_1) self.assertOnUsage(usage_after_resize, INSTANCE_ID_1, '2', resize_launched, REQUEST_ID_2) self.assertOnUsage(usage_after_revert, INSTANCE_ID_1, '1', end_time, REQUEST_ID_3)
def test_create_workflow_start_late(self): created_str = '2012-12-21 06:30:50.123' created = utils.str_time_to_unix(created_str) launched_str = '2012-12-21 06:34:50.123' launched = utils.str_time_to_unix(launched_str) create_start_json = test_utils.make_create_start_json() create_end_json = test_utils.make_create_end_json(launched_str) create_start_raw = create_raw(self.deployment, created, views.INSTANCE_EVENT['create_start'], json=create_start_json) create_end_raw = create_raw(self.deployment, launched, views.INSTANCE_EVENT['create_end'], json=create_end_json) views.aggregate_usage(create_end_raw) views.aggregate_usage(create_start_raw) usages = InstanceUsage.objects.all() self.assertEqual(len(usages), 1) usage = usages[0] self.assertOnUsage(usage, INSTANCE_ID_1, '1', launched, REQUEST_ID_1)
def test_resize_workflow_out_of_order(self): launched_str = '2012-12-21 06:34:50.123' launched = utils.str_time_to_unix(launched_str) values = { 'instance': INSTANCE_ID_1, 'request_id': REQUEST_ID_1, 'instance_type_id': '1', 'launched_at': launched, } InstanceUsage(**values).save() started_str = '2012-12-22 06:34:50.123' started_time = utils.str_time_to_unix(started_str) pre_end_str = '2012-12-22 06:36:50.123' prep_end_time = utils.str_time_to_unix(pre_end_str) finish_str = '2012-12-22 06:38:50.123' finish_time = utils.str_time_to_unix(finish_str) prep_start_json = test_utils\ .make_resize_prep_start_json(request_id=REQUEST_ID_2) prep_end_json = test_utils\ .make_resize_prep_end_json(new_instance_type_id='2', request_id=REQUEST_ID_2) finish_json = test_utils\ .make_resize_finish_json(launched_at=finish_str, request_id=REQUEST_ID_2) prep_start_raw = create_raw(self.deployment, started_time, views.INSTANCE_EVENT['resize_prep_start'], request_id=REQUEST_ID_2, json=prep_start_json) prep_end_raw = create_raw(self.deployment, prep_end_time, views.INSTANCE_EVENT['resize_prep_end'], request_id=REQUEST_ID_2, json=prep_end_json) finish_raw = create_raw(self.deployment, finish_time, views.INSTANCE_EVENT['resize_finish_end'], request_id=REQUEST_ID_2, json=finish_json) # Resize Started, notification on time views.aggregate_usage(prep_start_raw) # Received finish_end, prep_end late views.aggregate_usage(finish_raw) # Finally receive the late prep_end views.aggregate_usage(prep_end_raw) usages = InstanceUsage.objects.all().order_by('id') self.assertEqual(len(usages), 2) usage_before = usages[0] usage_after = usages[1] self.assertOnUsage(usage_before, INSTANCE_ID_1, '1', launched, REQUEST_ID_1) self.assertOnUsage(usage_after, INSTANCE_ID_1, '2', finish_time, REQUEST_ID_2)