Ejemplo n.º 1
0
    def get_gauge_keys_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1',
                                            server_id=self.server['_id'])

        data = {
            't': 1,
            'count.first': 2,
            'count.second': 4,
            'count.third': 5,
        }
        plugin_model.save_gauges(data=data, plugin=plugin, time=1)

        gauge = plugin_model.get_gauge_by_name(name='count', plugin=plugin)

        result = plugin_model.get_gauge_keys(gauge=gauge)

        self.assertCountEqual(result, [u'second', u'third', u'first'])

        self._cleanup()

        data = {'t': 1, 'countsecond': 2}
        plugin_model.save_gauges(data=data, plugin=plugin, time=1)

        gauge = plugin_model.get_gauge_by_name(name='countsecond',
                                               plugin=plugin)

        result = plugin_model.get_gauge_keys(gauge=gauge)

        self.assertCountEqual(result, [u'value'])
Ejemplo n.º 2
0
    def get_gauge_keys_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1', server_id=self.server['_id'])



        data = {'t': 1, 'count.first': 2, 'count.second': 4, 'count.third': 5, }
        plugin_model.save_gauges(data=data, plugin=plugin, time=1)

        gauge = plugin_model.get_gauge_by_name(name='count', plugin=plugin)

        result = plugin_model.get_gauge_keys(gauge=gauge)

        self.assertCountEqual(result, [u'second', u'third', u'first'])


        self._cleanup()



        data = {'t': 1, 'countsecond': 2}
        plugin_model.save_gauges(data=data, plugin=plugin, time=1)

        gauge = plugin_model.get_gauge_by_name(name='countsecond', plugin=plugin)


        result = plugin_model.get_gauge_keys(gauge=gauge)

        self.assertCountEqual(result, [u'value'])
Ejemplo n.º 3
0
    def ajax_get_gauge_data_after_test(self):

        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1', server_id=self.server['_id'])     

        for i in range(0, 100):
            data = {'t': i, 'count.first': 2, 'count.second': 4, 'count.third': 5}
            plugin_model.save_gauges(data=data, plugin=plugin, time=i)
        
        gauge = plugin_model.get_gauge_by_name(name='count', plugin=plugin)
            
        url = reverse('ajax_get_gauge_data_after')
        url = "{0}?gauge={1}&timestamp=30&enddate=59".format(url, gauge['_id'])

        response = self.c.get(url)

        to_json = json.loads(response.content.decode('utf-8'))

        assert to_json['last_update']
        assert to_json['now_local']

        data = to_json['data']

        eq_(len(data), 3)

        for i in data:
            assert i['name'] in ['second', 'third', 'first']
            assert len(i['data']) == 30
        
        self._cleanup()
Ejemplo n.º 4
0
    def get_all_metrics_test(self):
        self.process_collection.remove()
        plugin_model.collection.remove()

        for i in range(0, 2):
            self.process_collection.insert({
                "name": "test-{0}".format(i),
                'server': self.server_id
            })

        plugin = plugin_model.get_or_create(name='test1',
                                            server_id=self.server['_id'])

        data = {
            't': 1,
            'count.count_key': 2,
            'second.second_key': 4,
            'more.more_key': 5
        }

        plugin_model.save_gauges(plugin=plugin, data=data, time=1)

        result = dashboard_metrics_model.get_all_metrics()

        for r in result:
            params = r[0].split('.')
            final_params = dict(x.split(':') for x in params)
            assert final_params['metric_type']

            metric_type = final_params['metric_type']

            if metric_type == 'system_global':
                assert final_params['check'] in [
                    'disk', 'memory', 'network', 'loadavg', 'cpu'
                ]

                if final_params['check'] == 'network':
                    assert final_params['key'] in ['i', 'o']

                if final_params['check'] == 'disk':
                    assert final_params['key'] == 'percent'

                if final_params['check'] == 'memory':
                    assert final_params['key'] == 'used_percent'

                if final_params['check'] == 'cpu':
                    assert final_params['key'] in [
                        'idle', 'system', 'user', 'iowait', 'steal'
                    ]

            elif metric_type == 'process_global':
                assert final_params['key'] in ['test-0', 'test-1']
                assert final_params['check'] in ['cpu', 'memory']
            elif metric_type == 'plugin_global':
                assert final_params['gauge'] in ['count', 'second', 'more']
                assert final_params['key'] in [
                    'count_key', 'second_key', 'more_key'
                ]
Ejemplo n.º 5
0
    def save_gauges_test(self):
        self._cleanup()


        expires_at = datetime.utcnow()+timedelta(hours=24)


        plugin = plugin_model.get_or_create(name='test1', server_id=self.server['_id'])
        gauge_data = {
            u'performance.cpu_load': 1.08719, u'performance.busy_workers': 117.0,
            u'performance.idle_workers': 523.0, u'net.bytes': 86855934115.0,
            u'requests.per.second': 140.7, u'net.hits': 35534902.0
        }

        plugin_model.save_gauges(data=gauge_data, plugin=plugin, time=1, expires_at=expires_at)

        collection = plugin_model._get_gauges_data_collection()

        gauges = plugin_model.get_gauges_cursor(plugin=plugin)

        gauges_dict = {}
        for g in gauges:
            gauges_dict[str(g['_id'])] = g['name']


        for r in collection.find():
            gauge_id = str(r['gauge_id'])

            gauge_name = gauges_dict[gauge_id]
            assert gauge_name in ['net', 'performance', 'requests']
            self.assertTrue(r['t'], int)
            self.assertEqual(r['expires_at'].date(), expires_at.date())

            if gauge_name == 'net':
                self.assertCountEqual(r.keys(), [u't', u'hits', u'bytes', u'gauge_id', u'_id', 'expires_at'])

                self.assertEqual(r['hits'], 35534902.0)
                self.assertEqual(r['bytes'], 86855934115.0)

            elif gauge_name == 'performance':

                self.assertCountEqual(r.keys(), [u't', u'cpu_load', u'busy_workers', u'idle_workers', u'gauge_id', u'_id', 'expires_at'])

                self.assertEqual(r['cpu_load'],  1.08719)
                self.assertEqual(r['busy_workers'], 117.0)
                self.assertEqual(r['idle_workers'], 523.0)

            elif gauge_name == 'requests':

                self.assertCountEqual(r.keys(), [u't', u'per_second', u'gauge_id', u'_id', 'expires_at'])

                self.assertEqual(r['per_second'],  140.7)


        self._cleanup()
Ejemplo n.º 6
0
    def get_all_unique_gauge_keys_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1', server_id=self.server['_id'])

        data = {'t': 1, 'count.count_key': 2, 'second.second_key': 4, 'more.more_key': 5}

        plugin_model.save_gauges(plugin=plugin, data=data, time=1)


        result = plugin_model.get_all_unique_gauge_keys_list()

        assert set(result) == set(['test1.count.count_key' ,'test1.second.second_key', 'test1.more.more_key'])
Ejemplo n.º 7
0
    def get_gauge_data_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1',
                                            server_id=self.server['_id'])

        gauges_collection = plugin_model._get_gauges_data_collection()

        for i in range(0, 100):
            data = {
                't': i,
                'count.first': 11,
                'count.second': 22,
                'count.third': 33
            }
            plugin_model.save_gauges(data=data, plugin=plugin, time=i)

        gauge = plugin_model.get_gauge_by_name(name='count', plugin=plugin)

        result = plugin_model.get_gauge_data_after(timestamp=0,
                                                   enddate=29,
                                                   gauge=gauge)

        eq_(len(result), 3)  # first, second, third

        for i in result:
            assert i['name'] in ['first', 'second', 'third']
            assert len(i['data']) == 30

            for point in i['data']:
                assert point['y'] in [33, 22, 11]

        self._cleanup()

        for i in range(0, 100):
            data = {'t': i, 'count': 2}
            plugin_model.save_gauges(data=data, plugin=plugin, time=i)

        result = plugin_model.get_gauge_data_after(timestamp=0,
                                                   enddate=29,
                                                   gauge=gauge)

        eq_(len(result), 1)  # count

        count = result[0]

        eq_(count['name'], 'value')  # Single value
        eq_(len(count['data']), 30)

        self._cleanup()
Ejemplo n.º 8
0
    def get_gauges_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1',
                                            server_id=self.server['_id'])

        data = {'t': 1, 'count.test': 2, 'second.test': 4, 'more.tests': 5}

        plugin_model.save_gauges(plugin=plugin, data=data, time=1)

        result = plugin_model.get_gauges_list(plugin=plugin)

        self.assertCountEqual(result, ['count', 'second', 'more'])

        self._cleanup()
Ejemplo n.º 9
0
    def setUp(self):
        self.user = User.objects.create_user(password='******',
                                             email='*****@*****.**')

        self.account_id = 1

        self.collection = dashboard_metrics_model.collection

        self.servers_collection = dashboard_metrics_model.mongo.get_collection(
            'servers')

        self.servers_collection.insert({"name": "testserver"})
        self.server = self.servers_collection.find_one()
        self.server_id = self.server['_id']

        dashboard_model.collection.insert({"name": "testdashboard"})
        self.dashboard = dashboard_model.collection.find_one()
        self.dashboard_id = self.dashboard['_id']

        self.process_collection = dashboard_metrics_model.mongo.get_collection(
            'processes')

        self.process_collection.insert({"name": "testprocess"})
        self.process = self.process_collection.find_one()
        self.process_id = self.process['_id']

        self.plugins_collection = dashboard_metrics_model.mongo.get_collection(
            'plugins')

        self.plugins_collection.insert({"name": "testplugin"})
        self.plugin = self.plugins_collection.find_one()
        self.plugin_id = self.plugin['_id']

        # Will populate the keys
        data = {
            't': 1,
            'count.count_key': 2,
            'second.second_key': 4,
            'more.more_key': 5
        }
        plugin_model.save_gauges(plugin=self.plugin, data=data, time=1)

        self.metrics_collection = dashboard_metrics_model.mongo.get_collection(
            'metrics')

        self.metrics_collection.insert({"name": "testmetric", "type": "gauge"})
        self.metric = self.metrics_collection.find_one()
        self.metric_id = self.metric['_id']
Ejemplo n.º 10
0
    def get_gauges_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1', server_id=self.server['_id'])

        data = {'t': 1, 'count.test': 2, 'second.test': 4, 'more.tests': 5 }

        plugin_model.save_gauges(plugin=plugin, data=data, time=1)


        result = plugin_model.get_gauges_list(plugin=plugin)

        self.assertCountEqual(result, ['count', 'second', 'more'])


        self._cleanup()
Ejemplo n.º 11
0
    def get_gauge_data_test(self):
        self._cleanup()


        plugin = plugin_model.get_or_create(name='test1', server_id=self.server['_id'])


        gauges_collection = plugin_model._get_gauges_data_collection()

        for i in range(0, 100):
            data = {'t': i, 'count.first': 11, 'count.second': 22, 'count.third': 33 }
            plugin_model.save_gauges(data=data, plugin=plugin, time=i)

        gauge = plugin_model.get_gauge_by_name(name='count', plugin=plugin)


        result = plugin_model.get_gauge_data_after(timestamp=0, enddate=29, gauge=gauge)

        eq_(len(result), 3)   # first, second, third


        for i in result:
            assert i['name'] in ['first', 'second', 'third']
            assert len(i['data']) == 30

            for point in i['data']:
                assert point['y'] in [33, 22, 11]


        self._cleanup()

        for i in range(0, 100):
            data = {'t': i, 'count': 2}
            plugin_model.save_gauges(data=data, plugin=plugin, time=i)

        result = plugin_model.get_gauge_data_after(timestamp=0, enddate=29,  gauge=gauge)

        eq_(len(result),1 )  # count

        count = result[0]

        eq_(count['name'], 'value') # Single value
        eq_(len(count['data']), 30)



        self._cleanup()
Ejemplo n.º 12
0
    def get_all_metrics_test(self):
        self.process_collection.remove()
        plugin_model.collection.remove()


        for i in range(0, 2):
            self.process_collection.insert({"name" : "test-{0}".format(i), 'server': self.server_id})


        plugin = plugin_model.get_or_create(name='test1', server_id=self.server['_id'])

        data = {'t': 1, 'count.count_key': 2, 'second.second_key': 4, 'more.more_key': 5 }

        plugin_model.save_gauges(plugin=plugin, data=data, time=1)

        result = dashboard_metrics_model.get_all_metrics()

        for r in result:
            params = r[0].split('.')
            final_params =  dict(x.split(':') for x in params)
            assert final_params['metric_type']
        
            
            metric_type = final_params['metric_type']

            if metric_type == 'system_global':
                assert final_params['check'] in ['disk', 'memory', 'network', 'loadavg', 'cpu']
                
                if final_params['check'] == 'network':
                    assert final_params['key'] in ['i', 'o']
                
                if final_params['check']  == 'disk':
                    assert final_params['key'] == 'percent'

                if final_params['check']  == 'memory':
                    assert final_params['key'] == 'used_percent'

                if final_params['check']  == 'cpu':
                    assert final_params['key'] in ['idle', 'system', 'user', 'iowait', 'steal']

            elif metric_type == 'process_global':
                assert final_params['key'] in ['test-0', 'test-1']
                assert final_params['check'] in ['cpu', 'memory']
            elif metric_type == 'plugin_global':
                assert final_params['gauge'] in ['count', 'second', 'more']
                assert final_params['key'] in ['count_key', 'second_key', 'more_key']
Ejemplo n.º 13
0
    def setUp(self):
        self.user = User.objects.create_user(password='******', email='*****@*****.**')
        

        self.account_id = 1
        

        self.collection = dashboard_metrics_model.collection

        self.servers_collection = dashboard_metrics_model.mongo.get_collection('servers')

        self.servers_collection.insert({"name" : "testserver"})
        self.server = self.servers_collection.find_one()
        self.server_id = self.server['_id']


        dashboard_model.collection.insert({"name" : "testdashboard"})
        self.dashboard = dashboard_model.collection.find_one()
        self.dashboard_id = self.dashboard['_id']


        self.process_collection = dashboard_metrics_model.mongo.get_collection('processes')

        self.process_collection.insert({"name" : "testprocess"})
        self.process = self.process_collection.find_one()
        self.process_id = self.process['_id']


        self.plugins_collection = dashboard_metrics_model.mongo.get_collection('plugins')

        self.plugins_collection.insert({"name" : "testplugin"})
        self.plugin = self.plugins_collection.find_one()
        self.plugin_id = self.plugin['_id']


        # Will populate the keys
        data = {'t': 1, 'count.count_key': 2, 'second.second_key': 4, 'more.more_key': 5 }
        plugin_model.save_gauges(plugin=self.plugin, data=data, time=1)


        self.metrics_collection = dashboard_metrics_model.mongo.get_collection('metrics')

        self.metrics_collection.insert({"name" : "testmetric", "type": "gauge"})
        self.metric = self.metrics_collection.find_one()
        self.metric_id = self.metric['_id']
Ejemplo n.º 14
0
    def get_gauge_keys_for_server_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1', server_id=self.server['_id'])

        data = {'t': 1, 'count.count_key': 2, 'second.second_key': 4, 'more.more_key': 5}

        plugin_model.save_gauges(plugin=plugin, data=data, time=1)


        result = plugin_model.get_gauge_keys_for_server(server_id=self.server['_id'])


        assert len(result) == 3 # count, second, more
        for r in result:
            assert r['plugin']['_id'] == plugin['_id']
            for key in r['gauge']['keys']:
                assert key in ['count_key', 'second_key', 'more_key']
Ejemplo n.º 15
0
    def get_all_unique_gauge_keys_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1',
                                            server_id=self.server['_id'])

        data = {
            't': 1,
            'count.count_key': 2,
            'second.second_key': 4,
            'more.more_key': 5
        }

        plugin_model.save_gauges(plugin=plugin, data=data, time=1)

        result = plugin_model.get_all_unique_gauge_keys_list()

        assert set(result) == set([
            'test1.count.count_key', 'test1.second.second_key',
            'test1.more.more_key'
        ])
Ejemplo n.º 16
0
    def delete_gauges_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1', server_id=self.server['_id'])
        gauge_data = {u'performance.cpu_load': 1.08719, u'performance.busy_workers': 117.0,}

        for i in range(0, 10):
            plugin_model.save_gauges(data=gauge_data, plugin=plugin)

        collection = plugin_model._get_gauges_data_collection()

        result = collection.find().count()
        eq_(result, 10)

        plugin_model.delete_gauges(plugin=plugin)
        result = collection.find().count()


        eq_(result, 0)

        self._cleanup()
Ejemplo n.º 17
0
    def get_gauge_keys_for_server_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1',
                                            server_id=self.server['_id'])

        data = {
            't': 1,
            'count.count_key': 2,
            'second.second_key': 4,
            'more.more_key': 5
        }

        plugin_model.save_gauges(plugin=plugin, data=data, time=1)

        result = plugin_model.get_gauge_keys_for_server(
            server_id=self.server['_id'])

        assert len(result) == 3  # count, second, more
        for r in result:
            assert r['plugin']['_id'] == plugin['_id']
            for key in r['gauge']['keys']:
                assert key in ['count_key', 'second_key', 'more_key']
Ejemplo n.º 18
0
    def ajax_get_gauge_data_after_test(self):

        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1',
                                            server_id=self.server['_id'])

        for i in range(0, 100):
            data = {
                't': i,
                'count.first': 2,
                'count.second': 4,
                'count.third': 5
            }
            plugin_model.save_gauges(data=data, plugin=plugin, time=i)

        gauge = plugin_model.get_gauge_by_name(name='count', plugin=plugin)

        url = reverse('ajax_get_gauge_data_after')
        url = "{0}?gauge={1}&timestamp=30&enddate=59".format(url, gauge['_id'])

        response = self.c.get(url)

        to_json = json.loads(response.content.decode('utf-8'))

        assert to_json['last_update']
        assert to_json['now_local']

        data = to_json['data']

        eq_(len(data), 3)

        for i in data:
            assert i['name'] in ['second', 'third', 'first']
            assert len(i['data']) == 30

        self._cleanup()
Ejemplo n.º 19
0
    def get_global_metrics_test(self):
        self._cleanup()

        process_name = "alertest-process"
        plugin_name = "alertest-plugin"
        process = process_model.get_or_create(server_id=self.server_id, name=process_name)
        plugin = plugin_model.get_or_create(name=plugin_name, server_id=self.server_id)
        plugin_data = {
            'count.count_first_key': 2,
            'second.second_key': 4,
            'more.more_key': 5,
            'count.count_second_key': 4
        }
        plugin_model.save_gauges(plugin=plugin, data=plugin_data, time=1)
        plugin_gauges_keys = plugin_model.get_gauge_keys_for_server(server_id=self.server_id)

        result = self.model.get_global_metrics()

        assert len(result) == 14  # 7 system + 3 process(cpu/memory/down) + 4 plugin(for every key)
        
        system_metrics = ['CPU', 'Memory', 'Loadavg', 'Disk', 'Network/inbound', 'Network/outbound', 'Not Sending Data']
        process_metrics = ['cpu', 'memory', 'down']

        for r in result:
            value = r.get('value')
            metric_dict = dict(v.split(":") for v in value.split("."))

            assert metric_dict['rule_type']
            assert metric_dict['rule_type'] in ['global', 'process_global', 'plugin_global']
            alert_type = metric_dict.get('rule_type')
    

            if alert_type == 'system':
                assert r['metric'] in system_metrics

            if alert_type == 'process_global':
                assert r['metric'] in process_metrics
Ejemplo n.º 20
0
    def delete_gauges_test(self):
        self._cleanup()

        plugin = plugin_model.get_or_create(name='test1',
                                            server_id=self.server['_id'])
        gauge_data = {
            u'performance.cpu_load': 1.08719,
            u'performance.busy_workers': 117.0,
        }

        for i in range(0, 10):
            plugin_model.save_gauges(data=gauge_data, plugin=plugin)

        collection = plugin_model._get_gauges_data_collection()

        result = collection.find().count()
        eq_(result, 10)

        plugin_model.delete_gauges(plugin=plugin)
        result = collection.find().count()

        eq_(result, 0)

        self._cleanup()
Ejemplo n.º 21
0
    def save_gauges_test(self):
        self._cleanup()

        expires_at = datetime.utcnow() + timedelta(hours=24)

        plugin = plugin_model.get_or_create(name='test1',
                                            server_id=self.server['_id'])
        gauge_data = {
            u'performance.cpu_load': 1.08719,
            u'performance.busy_workers': 117.0,
            u'performance.idle_workers': 523.0,
            u'net.bytes': 86855934115.0,
            u'requests.per.second': 140.7,
            u'net.hits': 35534902.0
        }

        plugin_model.save_gauges(data=gauge_data,
                                 plugin=plugin,
                                 time=1,
                                 expires_at=expires_at)

        collection = plugin_model._get_gauges_data_collection()

        gauges = plugin_model.get_gauges_cursor(plugin=plugin)

        gauges_dict = {}
        for g in gauges:
            gauges_dict[str(g['_id'])] = g['name']

        for r in collection.find():
            gauge_id = str(r['gauge_id'])

            gauge_name = gauges_dict[gauge_id]
            assert gauge_name in ['net', 'performance', 'requests']
            self.assertTrue(r['t'], int)
            self.assertEqual(r['expires_at'].date(), expires_at.date())

            if gauge_name == 'net':
                self.assertCountEqual(r.keys(), [
                    u't', u'hits', u'bytes', u'gauge_id', u'_id', 'expires_at'
                ])

                self.assertEqual(r['hits'], 35534902.0)
                self.assertEqual(r['bytes'], 86855934115.0)

            elif gauge_name == 'performance':

                self.assertCountEqual(r.keys(), [
                    u't', u'cpu_load', u'busy_workers', u'idle_workers',
                    u'gauge_id', u'_id', 'expires_at'
                ])

                self.assertEqual(r['cpu_load'], 1.08719)
                self.assertEqual(r['busy_workers'], 117.0)
                self.assertEqual(r['idle_workers'], 523.0)

            elif gauge_name == 'requests':

                self.assertCountEqual(
                    r.keys(),
                    [u't', u'per_second', u'gauge_id', u'_id', 'expires_at'])

                self.assertEqual(r['per_second'], 140.7)

        self._cleanup()
Ejemplo n.º 22
0
    def get_server_metrics_test(self):
        self._cleanup()

        process_name = "alertest-process"
        plugin_name = "alertest-plugin"
        process = process_model.get_or_create(server_id=self.server_id, name=process_name)
        plugin = plugin_model.get_or_create(name=plugin_name, server_id=self.server_id)
        plugin_data = {
            'count.count_first_key': 2,
            'second.second_key': 4,
            'more.more_key': 5,
            'count.count_second_key': 4
        }
        plugin_model.save_gauges(plugin=plugin, data=plugin_data, time=1)
        plugin_gauges_keys = plugin_model.get_gauge_keys_for_server(server_id=self.server_id)

        volumes_model.get_or_create(server_id=self.server_id, name='get_server_metrics_volume')
        interfaces_model.get_or_create(server_id=self.server_id, name='get_server_metrics_interface')


        result = self.model.get_server_metrics(server_id=self.server_id)

        system_metrics = ['CPU', 'Memory', 'Loadavg', 'Disk', 'Network/inbound', 'Network/outbound', 'Not Sending Data']
        system_values = ["server:{0}.metric:{1}.rule_type:system".format(self.server_id, x.replace(" ", "")) for x in system_metrics]

        volumes = volumes_model.get_all_for_server(server_id=self.server_id)
        for v in volumes:
            value = "server:{0}.metric:Disk.rule_type:system.volume:{1}".format(self.server_id, v.get('name'))
            system_values.append(value)

        interfaces = interfaces_model.get_all_for_server(server_id=self.server_id)
        for i in interfaces:
            value = "server:{0}.metric:Network/inbound.rule_type:system.interface:{1}".format(self.server_id, i.get('name'))
            system_values.append(value)

            value = "server:{0}.metric:Network/outbound.rule_type:system.interface:{1}".format(self.server_id, i.get('name'))
            system_values.append(value)

        
        process_metrics = ['CPU', 'Memory']
        process_alerts_names = ["{0}.{1}".format(process_name, x.replace(" ", "")) for x in process_metrics]
        process_values = ["server:{0}.process:{1}.metric:{2}.rule_type:process".format(self.server_id, process['_id'],  x) for x in process_metrics]

        process_uptime = ['Down']
        process_uptime_alerts_names = ["{0}.{1}".format(process_name, x.replace(" ", "")) for x in process_uptime]
        process_uptime_values = ["server:{0}.process:{1}.metric:{2}.rule_type:uptime".format(self.server_id, process['_id'],  x) for x in process_uptime]

        plugin_alert_names = ["{0}.{1}".format(plugin_name, x) for x in plugin_data.keys()]
        plugin_values = []
        for plugin_gauge_key in plugin_gauges_keys:
            gauge = plugin_gauge_key.get('gauge')
            key = plugin_gauge_key.get('key')

            _id = "server:{0}.plugin:{1}.gauge:{2}.key:{3}.rule_type:plugin".format(
                self.server_id,  
                plugin['_id'], 
                gauge['_id'],
                key
            )
            plugin_values.append(_id)


        assert len(plugin_values) == 4  # All the keys from plugin_data

        for r in result:
            value = r.get('value')
            metric_dict = dict(v.split(":") for v in value.split("."))

            alert_type = metric_dict.get('rule_type')
                

            assert alert_type != None
            assert alert_type in ['system', 'process', 'plugin', 'uptime']

            if alert_type == 'system':
                assert r.get('metric') in system_metrics
                assert r.get('value') in system_values
            
            elif alert_type == 'process':
                assert r.get('metric') in ['CPU', 'Memory']
                assert r.get('name') in process_alerts_names
                assert r.get('value') in process_values
            elif alert_type == 'uptime':
                assert r.get('metric') in ['Down']
                assert r.get('name') in process_uptime_alerts_names
                assert r.get('value') in process_uptime_values

            elif alert_type == 'plugin':
                assert r.get('name') in plugin_alert_names
                assert r.get('value') in plugin_values
            else:
                assert False  # Should not be here