Esempio n. 1
0
    def get_by_name_test(self):
        self._cleanup()

        volumes_model.get_or_create(server_id=self.server_id, name='test')
        result = volumes_model.get_by_name(server=self.server, name='test')


        eq_(result['name'], 'test')
        eq_(result['server_id'], self.server['_id'])


        self._cleanup()
Esempio n. 2
0
    def save_disk_data_test(self):
        self._cleanup()

        data_collection = volumes_model.get_data_collection(server_id=self.server_id)


        device_id = volumes_model.get_or_create(server_id=self.server_id, name='sda1')
        volume_data = {
            'sda1': {"used" : "19060", "percent" : "41", "free" : "27527", "total": 62}
        }

        volumes_model.save_data(server=self.server, data=volume_data, time=1)



        for r in data_collection.find():
            eq_(r['device_id'], device_id['_id'])
            eq_(r['percent'], '41')
            eq_(r['used'], "19060")
            eq_(r['t'], 1)

        golang_data = [{"name":"sda1","path":"/","fstype":"ext2/ext3","total":"36236.00",
        "free":"3194.00","used":"31282.00","percent":86.33}]

        data_collection.remove()

        volumes_model.save_data(server=self.server, data=golang_data, time=1)
        for r in data_collection.find():
            eq_(r['device_id'], device_id['_id'])
            eq_(r['percent'], 86.33)
            eq_(r['used'], "31282.00")
            eq_(r['t'], 1)

    
        self._cleanup()
Esempio n. 3
0
    def get_or_create_test(self):
        self._cleanup()

        volumes_model.get_or_create(server_id=self.server_id, name='test')

        total_devices = self.collection.find().count()
        eq_(total_devices, 1)

        volume = volumes_model.get_or_create(server_id=self.server_id, name='test')

        eq_(volume['name'], 'test')
        eq_(volume['server_id'], self.server_id)


        total_devices = self.collection.find().count()
        eq_(total_devices, 1)

        self._cleanup()
Esempio n. 4
0
    def get_check_for_timestamp_test(self):
        self._cleanup()
        volumes_model.get_or_create(server_id=self.server_id, name='sda1')

        for i in range(0, 10):
            volume_data = {
                'sda1': {"used" : "19060", "percent" : "41", "free" : "27527", "total": 62}
            }

            volumes_model.save_data(server=self.server, data=volume_data, time=i)


        result = volumes_model.get_check_for_timestamp(self.server, 5)


        eq_(result['sda1']['t'], 5)

        self._cleanup()
Esempio n. 5
0
    def get_all_for_server_test(self):
        self._cleanup()


        volumes_model.get_or_create(server_id=self.server_id, name='test')
        volumes_model.get_or_create(server_id=self.server_id, name='test1')
        volumes_model.get_or_create(server_id=self.server_id, name='test2')

        result = volumes_model.get_all_for_server(server_id=self.server_id)

        eq_(result.count(), 3)

        self._cleanup()
Esempio n. 6
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
Esempio n. 7
0
    def get_disk_data_test(self):
        self._cleanup()

        volume = volumes_model.get_or_create(server_id=self.server['_id'],
                                             name='test_volume')
        collection = volumes_model.get_data_collection()

        for i in range(0, 30):
            collection.insert({
                'server_id': self.server_id,
                'device_id': volume['_id'],
                't': i,
                'total': 12,
                'used': 2,
                'percent': 60.0
            })

        result = system_model.get_device_data_after(timestamp=10,
                                                    enddate=20,
                                                    server=self.server,
                                                    check='disk',
                                                    device_id=volume['_id'])
        total = result[1]['data']

        eq_(len(total), 11)

        for entry in total:
            assert entry['x'] >= 10
            assert entry['x'] <= 20

            assert entry['y'] == 12
            assert type(entry['y']) is float

        used = result[0]['data']

        eq_(len(used), 11)

        for entry in used:
            assert entry['x'] >= 10
            assert entry['x'] <= 20

            assert entry['y'] == 2

        # Test global data  - used in the dashboards
        all_servers = server_model.get_all()
        result = system_model.get_global_device_data_after(
            timestamp=10,
            enddate=20,
            filtered_servers=all_servers,
            check='disk',
            key='percent')

        used_percent = result[0]['data']

        eq_(len(used_percent), 11)
        assert result[0]['name'] == "{0}.test_volume".format(
            self.server['name'])

        for entry in used_percent:
            assert entry['x'] >= 10
            assert entry['x'] <= 20

            assert entry['y'] == 60.0
            assert type(entry['y']) is float

        self._cleanup()