Exemple #1
0
    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))
Exemple #2
0
 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))
Exemple #3
0
    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)
Exemple #4
0
 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))
Exemple #5
0
 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']))
Exemple #6
0
 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))
Exemple #7
0
    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))
Exemple #8
0
 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))
Exemple #9
0
 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
Exemple #10
0
 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))
Exemple #11
0
    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))
Exemple #12
0
 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))
Exemple #13
0
 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))
Exemple #14
0
 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))
Exemple #15
0
 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)
Exemple #16
0
 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))
Exemple #17
0
    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))
Exemple #18
0
 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))
Exemple #19
0
 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))
Exemple #20
0
 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))
Exemple #21
0
 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))
Exemple #22
0
    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)