def test_get_error_messages(self): expected = { 'all': {'error dog', 'error cat', 'error salmon'}, 'mammal': {'error dog', 'error cat'}, 'fish': {'error salmon'} } test_apps = [ testdata_helper.get_task(status=1, name='dog', vertical='mammal', origin="dog"), testdata_helper.get_task(status=2, name='cat', vertical='mammal', origin="cat"), testdata_helper.get_task(status=3, name='salmon', vertical='fish', origin="salmon") ] config.rdb.set("dog-errors", "error dog") config.rdb.set("cat-errors", "error cat") config.rdb.set("salmon-errors", "error salmon") self.assertEqual(expected, views.get_error_messages(test_apps))
def test_filter_state_labels_filter(self): test_apps = [ testdata_helper.get_task(name='dog', vertical='mammal', type="pipeline"), testdata_helper.get_task(name='cat', vertical='mammal', type="tool") ] expected = [ testdata_helper.get_task(name='dog', vertical='mammal', type="pipeline") ] self.assertEqual( expected, views.filter_state(app_list=test_apps, name_filter=None, group_filter=None, type_filter=['pipeline'], active_color_only_filter=False, status_filter=0, include_jobs=True, include_age=False, env_filter=False))
def test_get_task_info_visit_staged(self, request_mock, *_): status = testdata_helper.get_status() staged_status = testdata_helper.get_status(status="ERROR") request_mock.register_uri('GET', "http://name.vertical.group.some-domain.com/service/internal/status", text=json.dumps(status), headers={'x-color': 'BLU'}) request_mock.register_uri('GET', "http://staged.name.vertical.group.some-domain.com/service/internal/status", text=json.dumps(staged_status), headers={'x-color': 'BLU'}) expected_inactive = testdata_helper.get_task(id="/group/vertical/name/GRN", app_status=3, status=3, severity=30, active_color="BLU", color="GRN", status_url='http://staged.name.vertical.group.some-domain.com/service/internal/status', marathon_link='http://some-marathon.com/ui/#/apps/%2Fgroup%2Fvertical%2Fname%2FGRN') expected_active = testdata_helper.get_task(id="/group/vertical/name/BLU", active_color="BLU", color="BLU", status_url='http://name.vertical.group.some-domain.com/service/internal/status', marathon_link='http://some-marathon.com/ui/#/apps/%2Fgroup%2Fvertical%2Fname%2FBLU') app_inactive = self.app.copy() app_inactive["id"] = "/group/vertical/name/GRN" app_active = self.app.copy() app_active["id"] = "/group/vertical/name/BLU" self.assertDictEqual(expected_inactive, update.get_task_info(app_inactive, self.marathon)) self.assertDictEqual(expected_active, update.get_task_info(app_active, self.marathon)) self.assertEquals(3, len(request_mock.request_history)) self.assertEquals("http://name.vertical.group.some-domain.com/service/internal/status", request_mock.request_history[0].url) self.assertEquals("http://staged.name.vertical.group.some-domain.com/service/internal/status", request_mock.request_history[1].url) self.assertEquals("http://name.vertical.group.some-domain.com/service/internal/status", request_mock.request_history[2].url)
def test_sum_severity_per_service(self): dog = { 'develop': { 'GRN': testdata_helper.get_task(status=1, severity=1, name='dog', vertical='mammal') } } tuna = { 'develop': { 'GRN': testdata_helper.get_task(status=3, severity=3, name='salmon', vertical='fish'), 'BLU': testdata_helper.get_task(status=1, severity=1, name='salmon', vertical='fish') } } self.assertEquals(4, views.sum_severity_per_service(tuna)) self.assertEquals(1, views.sum_severity_per_service(dog))
def test_filter_state_environment(self): test_apps = [ testdata_helper.get_task(name='dog', vertical='mammal', color="GRN", active_color="BLU", group='develop'), testdata_helper.get_task(name='cat', vertical='mammal', color="BLU", active_color="BLU", group='live') ] expected = [ testdata_helper.get_task(name='cat', vertical='mammal', color="BLU", active_color="BLU", group='live') ] self.assertCountEqual( expected, views.filter_state(app_list=test_apps, name_filter=None, group_filter=None, type_filter=None, active_color_only_filter=False, status_filter=0, include_jobs=True, include_age=False, env_filter=['live']))
def test_list_service_by_severity_keep_sorting_if_equal_severity_level( self): transformed_data = { 'mammal': { 'dog': { 'group': { 'GRN': testdata_helper.get_task(status=3, severity=3, name='dog', vertical='mammal') } }, 'cat': { 'group': { 'GRN': testdata_helper.get_task(status=3, severity=3, name='cat', vertical='mammal') } }, 'alligator': { 'group': { 'GRN': testdata_helper.get_task(status=1, severity=1, name='alligator', vertical='mammal') } } }, 'fish': { 'salmon': { 'group': { 'GRN': testdata_helper.get_task(status=3, severity=3, name='salmon', vertical='fish') } }, 'tuna': { 'group': { 'GRN': testdata_helper.get_task(status=3, severity=3, name='tuna', vertical='fish') } } } } expected = { 'mammal': ['cat', 'dog', 'alligator'], 'fish': ['salmon', 'tuna'] } self.assertEquals(expected, views.list_services_by_severity(transformed_data))
def test_overall_status(self, _): self.assertEquals(0, update.overall_status(testdata_helper.get_task())) self.assertEquals(3, update.overall_status(testdata_helper.get_task(instances=1, healthy=0))) self.assertEquals(3, update.overall_status(testdata_helper.get_task(app_status=3))) task = testdata_helper.get_task() task["app_status"] = None self.assertEquals(1, update.overall_status(task))
def test_get_tabs(self): test_apps = [ testdata_helper.get_task(status=1, name='dog', vertical='mammal'), testdata_helper.get_task(status=2, name='cat', vertical='mammal'), testdata_helper.get_task(status=3, name='salmon', vertical='fish') ] self.assertCountEqual(["all", "mammal", "fish"], views.get_tabs(test_apps))
def setUpClass(cls): config.rdb = redislite.Redis('redis.db') cls.test_apps = [ testdata_helper.get_task(name='dog', vertical='mammal'), testdata_helper.get_task(name='cat', vertical='mammal'), testdata_helper.get_task(name='salmon', vertical='fish') ] cls.maxDiff = None
def test_filter_state_group_filter(self): expected = [ testdata_helper.get_task(name='dog', vertical='mammal'), testdata_helper.get_task(name='cat', vertical='mammal') ] self.assertEqual( expected, views.filter_state(app_list=self.test_apps, name_filter=None, group_filter=['mammal'], type_filter=None, active_color_only_filter=False, status_filter=0, include_jobs=True, include_age=False, env_filter=False))
def test_get_task_info_status_page_503(self, *_): expected = testdata_helper.get_task(status=3, app_status=1, severity=30, status_page_status_code=503, version="UNKNOWN", active_color=None, jobs={}) self.assertDictEqual(expected, update.get_task_info(self.app, self.marathon))
def test_get_task_info_suspended(self, _): expected = testdata_helper.get_task(status=1, app_status=1, severity=1, status_page_status_code=None, version="UNKNOWN", active_color=None, jobs={}, instances=0) app = self.app.copy() app["instances"] = 0 self.assertDictEqual(expected, update.get_task_info(app, self.marathon))
def test_get_task_info_no_status_page(self, *_): expected = testdata_helper.get_task(status=1, app_status=1, severity=1, status_url='', status_page_status_code=None, version="UNKNOWN", active_color=None, jobs={}) app = self.app.copy() app.pop("env") self.assertDictEqual(expected, update.get_task_info(app, self.marathon))
def test_filter_state_level_filter(self): test_apps = [ testdata_helper.get_task(status=1, name='dog', vertical='mammal'), testdata_helper.get_task(status=2, name='cat', vertical='mammal'), testdata_helper.get_task(status=3, name='salmon', vertical='fish') ] expected = [test_apps[1], test_apps[2]] self.assertEqual( expected, views.filter_state(app_list=test_apps, name_filter=None, group_filter=None, type_filter=None, active_color_only_filter=False, status_filter=2, include_jobs=True, include_age=False, env_filter=False))
def test_get_task_info_with_out_color(self, request_mock, *_): status = testdata_helper.get_status() request_mock.register_uri('GET', "http://name.vertical.group.some-domain.com/service/internal/status", text=json.dumps(status), headers={'x-color': 'GRN'}) expected = testdata_helper.get_task() self.assertDictEqual(expected, update.get_task_info(self.app, self.marathon)) self.assertEquals(1, len(request_mock.request_history)) self.assertEquals("http://name.vertical.group.some-domain.com/service/internal/status", request_mock.request_history[0].url)
def test_get_task_info_status_page_503_in_live(self, *_): expected = testdata_helper.get_task(id='/live/vertical/name', group='live', status_url='http://name.vertical.live.some-domain.com/service/internal/status', marathon_link='http://some-marathon.com/ui/#/apps/%2Flive%2Fvertical%2Fname', status=3, app_status=1, severity=3000, status_page_status_code=503, version="UNKNOWN", active_color=None, jobs={}) live_app = self.app.copy() live_app["id"] = "/live/vertical/name" self.assertDictEqual(expected, update.get_task_info(live_app, self.marathon))
def test_filter_state_no_jobs(self): test_apps = [ testdata_helper.get_task(name='dog', vertical='mammal'), testdata_helper.get_task(name='cat', vertical='mammal') ] app1 = testdata_helper.get_task(name='dog', vertical='mammal') app1["jobs"] = dict() app2 = testdata_helper.get_task(name='cat', vertical='mammal') app2["jobs"] = dict() expected = [app1, app2] self.assertCountEqual( expected, views.filter_state(app_list=test_apps, name_filter=None, group_filter=None, type_filter=None, active_color_only_filter=False, status_filter=0, include_jobs=False, include_age=False, env_filter=False))
def test_transform_to_display_data(self): test_apps = [ testdata_helper.get_task(status=1, name='dog', vertical='mammal'), testdata_helper.get_task(status=3, name='salmon', vertical='fish') ] expected = { 'all': { 'mammal-dog': { 'group': { 'GRN': testdata_helper.get_task(status=1, name='dog', vertical='mammal') } }, 'fish-salmon': { 'group': { 'GRN': testdata_helper.get_task(status=3, name='salmon', vertical='fish') } } }, 'mammal': { 'dog': { 'group': { 'GRN': testdata_helper.get_task(status=1, name='dog', vertical='mammal') } } }, 'fish': { 'salmon': { 'group': { 'GRN': testdata_helper.get_task(status=3, name='salmon', vertical='fish') } } } } self.assertDictEqual(expected, views.transform_to_display_data(test_apps))
def test_get_service_info(self, *_): expected = testdata_helper.get_task(marathon=None, status_url="http://some-domain.com/service/internal/status") del expected["marathon"] self.assertDictEqual(expected, update.get_service_info(self.app_server_service))
def test_get_task_info_job_does_not_change(self, *_): expected = testdata_helper.get_task() self.assertDictEqual(expected, update.get_task_info(self.app, self.marathon))
def test_list_service_by_severity(self): transformed_data = { 'all': { 'mammal-dog': { 'group': { 'GRN': testdata_helper.get_task(status=1, severity=1, name='dog', vertical='mammal') } }, 'mammal-cat': { 'group': { 'GRN': testdata_helper.get_task(status=3, severity=3, name='cat', vertical='mammal') } }, 'fish-salmon': { 'group': { 'GRN': testdata_helper.get_task(status=1, severity=1, name='salmon', vertical='fish'), 'BLU': testdata_helper.get_task(status=1, severity=1, name='tuna', vertical='fish') } } }, 'mammal': { 'dog': { 'group': { 'GRN': testdata_helper.get_task(status=1, severity=1, name='dog', vertical='mammal') } }, 'cat': { 'group': { 'GRN': testdata_helper.get_task(status=3, severity=3, name='cat', vertical='mammal') } }, }, 'fish': { 'salmon': { 'group': { 'GRN': testdata_helper.get_task(status=1, severity=1, name='salmon', vertical='fish'), 'BLU': testdata_helper.get_task(status=1, severity=1, name='tuna', vertical='fish') } } } } expected = { 'all': ['mammal-cat', 'fish-salmon', 'mammal-dog'], 'mammal': ['cat', 'dog'], 'fish': ['salmon'] } self.assertEquals(expected, views.list_services_by_severity(transformed_data))
def test_get_resource_allocation(self): test_apps = [ testdata_helper.get_task(status=1, name='dog', vertical='mammal', instances=2), testdata_helper.get_task(status=2, name='cat', vertical='mammal'), testdata_helper.get_task(status=3, name='salmon', vertical='fish', instances=2, healthy=1) ] expected_vertical = { 'all': { 'cpu': 5, 'mem': 5120 }, 'mammal': { 'cpu': 3, 'mem': 3072 }, 'fish': { 'cpu': 2, 'mem': 2048 } } expected_apps = { 'all': { 'mammal-dog': { 'cpu': 2, 'mem': 2048 }, 'mammal-cat': { 'cpu': 1, 'mem': 1024 }, 'fish-salmon': { 'cpu': 2, 'mem': 2048 } }, 'mammal': { 'dog': { 'cpu': 2, 'mem': 2048 }, 'cat': { 'cpu': 1, 'mem': 1024 } }, 'fish': { 'salmon': { 'cpu': 2, 'mem': 2048 } } } vertical, apps = views.get_app_resource_allocation(test_apps) self.assertDictEqual(expected_vertical, vertical) self.assertDictEqual(expected_apps, apps)