Ejemplo n.º 1
0
    def setUp(self):
        config = get_collector_config('DiskUsageCollector', {
            'interval': 10,
            'byte_unit': 'kilobyte'
        })

        self.collector = DiskUsageCollector(config, None)
Ejemplo n.º 2
0
 def __init__(self, config=None, handlers=[], name=None, configfile=None):
     super(BaseCollector, self).__init__(config, handlers, name, configfile)
     self.cpu_collector = CPUCollector(config=self.config,
                                       configfile=self.configfile,
                                       handlers=self.handlers)
     self.memory_collector = MemoryCollector(config=self.config,
                                             configfile=self.configfile,
                                             handlers=self.handlers)
     self.loadavg_collector = LoadAverageCollector(
         config=self.config,
         configfile=self.configfile,
         handlers=self.handlers)
     self.network_collector = NetworkCollector(config=self.config,
                                               configfile=self.configfile,
                                               handlers=self.handlers)
     self.diskusage_collector = DiskUsageCollector(
         config=self.config,
         configfile=self.configfile,
         handlers=self.handlers)
     self.diskspace_collector = DiskSpaceCollector(
         config=self.config,
         configfile=self.configfile,
         handlers=self.handlers)
     self.vmstat_collector = VMStatCollector(config=self.config,
                                             configfile=self.configfile,
                                             handlers=self.handlers)
Ejemplo n.º 3
0
class BaseCollector(diamond.collector.Collector):

    def __init__(self, config=None, handlers=[], name=None, configfile=None):
        super(BaseCollector, self).__init__(config, handlers, name, configfile)
        self.cpu_collector = CPUCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
        self.memory_collector = MemoryCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
        self.loadavg_collector = LoadAverageCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
        self.network_collector = NetworkCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
        self.diskusage_collector = DiskUsageCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
        self.diskspace_collector = DiskSpaceCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
        self.vmstat_collector = VMStatCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)


    def get_default_config_help(self):
        config_help = super(BaseCollector, self).get_default_config_help()
        config_help.update({
            'simple': 'run simple mode on of its sub collectors',
        })
        return config_help

    def get_default_config(self):
        config = super(BaseCollector, self).get_default_config()
        return config

    def collect(self):
        self.cpu_collector.collect()
        self.memory_collector.collect()
        self.loadavg_collector.collect()
        self.network_collector.collect()
        self.diskusage_collector.collect()
        self.diskspace_collector.collect()
        self.vmstat_collector.collect()
        return True
Ejemplo n.º 4
0
class BaseCollector(diamond.collector.Collector):
    def __init__(self, config=None, handlers=[], name=None, configfile=None):
        super(BaseCollector, self).__init__(config, handlers, name, configfile)
        self.cpu_collector = CPUCollector(config=self.config,
                                          configfile=self.configfile,
                                          handlers=self.handlers)
        self.memory_collector = MemoryCollector(config=self.config,
                                                configfile=self.configfile,
                                                handlers=self.handlers)
        self.loadavg_collector = LoadAverageCollector(
            config=self.config,
            configfile=self.configfile,
            handlers=self.handlers)
        self.network_collector = NetworkCollector(config=self.config,
                                                  configfile=self.configfile,
                                                  handlers=self.handlers)
        self.diskusage_collector = DiskUsageCollector(
            config=self.config,
            configfile=self.configfile,
            handlers=self.handlers)
        self.diskspace_collector = DiskSpaceCollector(
            config=self.config,
            configfile=self.configfile,
            handlers=self.handlers)
        self.vmstat_collector = VMStatCollector(config=self.config,
                                                configfile=self.configfile,
                                                handlers=self.handlers)

    def get_default_config_help(self):
        config_help = super(BaseCollector, self).get_default_config_help()
        config_help.update({
            'simple':
            'run simple mode on of its sub collectors',
        })
        return config_help

    def get_default_config(self):
        config = super(BaseCollector, self).get_default_config()
        return config

    def collect(self):
        self.cpu_collector.collect()
        self.memory_collector.collect()
        self.loadavg_collector.collect()
        self.network_collector.collect()
        self.diskusage_collector.collect()
        self.diskspace_collector.collect()
        self.vmstat_collector.collect()
        return True
Ejemplo n.º 5
0
    def setUp(self):
        config = get_collector_config('DiskUsageCollector', {
            'interval'  : 10,
            'byte_unit' : 'kilobyte'
        })

        self.collector = DiskUsageCollector(config, None)
Ejemplo n.º 6
0
 def __init__(self, config=None, handlers=[], name=None, configfile=None):
     super(BaseCollector, self).__init__(config, handlers, name, configfile)
     self.cpu_collector = CPUCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
     self.memory_collector = MemoryCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
     self.loadavg_collector = LoadAverageCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
     self.network_collector = NetworkCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
     self.diskusage_collector = DiskUsageCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
     self.diskspace_collector = DiskSpaceCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
     self.vmstat_collector = VMStatCollector(config=self.config, configfile=self.configfile, handlers=self.handlers)
Ejemplo n.º 7
0
class TestDiskUsageCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('DiskUsageCollector', {
            'interval': 10,
            'sector_size': '512',
            'byte_unit': 'kilobyte'
        })

        self.collector = DiskUsageCollector(config, None)

    def test_config(self):
        self.assertFalse(self.collector.config['send_zero'])

    def test_import(self):
        self.assertTrue(DiskUsageCollector)

    @patch('os.access', Mock(return_value=True))
    def test_get_disk_statistics(self):

        patch_open = patch('__builtin__.open',
                           Mock(return_value=self.getFixture('diskstats')))

        open_mock = patch_open.start()
        result = self.collector.get_disk_statistics()
        patch_open.stop()

        open_mock.assert_called_once_with('/proc/diskstats')

        self.assertEqual(sorted(result.keys()), [(8, 0), (8, 1), (8, 16),
                                                 (8, 17), (8, 32), (8, 33),
                                                 (8, 48), (8, 49), (9, 0)])

        return result

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):

        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('proc_diskstats_1')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('proc_diskstats_2')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_should_work_with_real_data.pkl')

        self.setDocExample(collector=self.collector.__class__.__name__,
                           metrics=metrics,
                           defaultpath=self.collector.config['path'])
        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_verify_supporting_vda_and_xvdb(self, publish_mock):
        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('proc_diskstats_1_vda_xvdb')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('proc_diskstats_2_vda_xvdb')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults(
            'test_verify_supporting_vda_and_xvdb.pkl')

        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_verify_supporting_md_dm(self, publish_mock):
        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('proc_diskstats_1_md_dm')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('proc_diskstats_2_md_dm')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_verify_supporting_md_dm.pkl')

        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_verify_supporting_disk(self, publish_mock):
        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('proc_diskstats_1_disk')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('proc_diskstats_2_disk')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_verify_supporting_disk.pkl')
        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_service_Time(self, publish_mock):
        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture('proc_diskstats_1_service_time')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture('proc_diskstats_2_service_time')))
        patch_time = patch('time.time', Mock(return_value=70))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_service_Time.pkl')

        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_verify_supporting_cciss(self, publish_mock):
        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('proc_diskstats_1_cciss')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('proc_diskstats_2_cciss')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_verify_supporting_cciss.pkl')

        self.assertPublishedMany(publish_mock, metrics)
Ejemplo n.º 8
0
class TestDiskUsageCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('DiskUsageCollector', {
            'interval': 10,
            'byte_unit': 'kilobyte'
        })

        self.collector = DiskUsageCollector(config, None)

    @patch('__builtin__.open')
    @patch('os.access', Mock(return_value=True))
    def test_get_disk_statistics(self, open_mock):
        result = None
        open_mock.return_value = StringIO("""
   1       0 ram0 0 0 0 0 0 0 0 0 0 0 0
   1       1 ram1 0 0 0 0 0 0 0 0 0 0 0
   1       2 ram2 0 0 0 0 0 0 0 0 0 0 0
   1       3 ram3 0 0 0 0 0 0 0 0 0 0 0
   1       4 ram4 0 0 0 0 0 0 0 0 0 0 0
   1       5 ram5 0 0 0 0 0 0 0 0 0 0 0
   1       6 ram6 0 0 0 0 0 0 0 0 0 0 0
   1       7 ram7 0 0 0 0 0 0 0 0 0 0 0
   1       8 ram8 0 0 0 0 0 0 0 0 0 0 0
   1       9 ram9 0 0 0 0 0 0 0 0 0 0 0
   1      10 ram10 0 0 0 0 0 0 0 0 0 0 0
   1      11 ram11 0 0 0 0 0 0 0 0 0 0 0
   1      12 ram12 0 0 0 0 0 0 0 0 0 0 0
   1      13 ram13 0 0 0 0 0 0 0 0 0 0 0
   1      14 ram14 0 0 0 0 0 0 0 0 0 0 0
   1      15 ram15 0 0 0 0 0 0 0 0 0 0 0
   7       0 loop0 0 0 0 0 0 0 0 0 0 0 0
   7       1 loop1 0 0 0 0 0 0 0 0 0 0 0
   7       2 loop2 0 0 0 0 0 0 0 0 0 0 0
   7       3 loop3 0 0 0 0 0 0 0 0 0 0 0
   7       4 loop4 0 0 0 0 0 0 0 0 0 0 0
   7       5 loop5 0 0 0 0 0 0 0 0 0 0 0
   7       6 loop6 0 0 0 0 0 0 0 0 0 0 0
   7       7 loop7 0 0 0 0 0 0 0 0 0 0 0
   8       0 sda 11296323 127761523 1114247280 165221020 9292767 32155242 333252048 208563560 0 19035310 374755270
   8       1 sda1 11296296 127761523 1114247064 165220780 9292767 32155242 333252048 208563560 0 19035230 374755030
   8      16 sdb 11334585 127760303 1114502518 162448600 9287483 32167260 333227008 189022120 0 18792930 352418270
   8      17 sdb1 11334558 127760303 1114502302 162448420 9287483 32167260 333227008 189022120 0 18792870 352418090
   8      32 sdc 11357096 128084136 1117263302 175647900 9071409 31921768 329475344 181140140 0 19509790 357693530
   8      33 sdc1 11357069 128084136 1117263086 175647670 9071409 31921768 329475344 181140140 0 19509740 357693300
   8      48 sdd 11350168 128344871 1119269534 168467240 9130464 31774918 328709208 167823720 0 18473250 337157280
   8      49 sdd1 11350141 128344871 1119269318 168467050 9130464 31774918 328709208 167823720 0 18473200 337157090
   9       0 md0 150707 0 2818762 0 111152210 0 889217680 0 0 0 0
        """.strip())

        result = self.collector.get_disk_statistics()

        open_mock.assert_called_once_with('/proc/diskstats')

        self.assertEqual(sorted(result.keys()), [(8, 0), (8, 1), (8, 16),
                                                 (8, 17), (8, 32), (8, 33),
                                                 (8, 48), (8, 49), (9, 0)])

        return result

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):

        with nested(
                patch('__builtin__.open',
                      Mock(return_value=self.getFixture('proc_diskstats_1'))),
                patch('time.time', Mock(return_value=10))):
            self.collector.collect()

        self.assertPublishedMany(publish_mock, {})

        with nested(
                patch('__builtin__.open',
                      Mock(return_value=self.getFixture('proc_diskstats_2'))),
                patch('time.time', Mock(return_value=20))):
            self.collector.collect()

        self.assertPublishedMany(
            publish_mock, {
                'sda.average_queue_length': 0.0,
                'sda.average_request_size_kilobyte': 10.7,
                'sda.await': 0.0,
                'sda.concurrent_io': 0.0,
                'sda.io': 0.3,
                'sda.io_in_progress': 0.0,
                'sda.io_milliseconds': 0.0,
                'sda.io_milliseconds_weighted': 0.0,
                'sda.iops': 0.03,
                'sda.read_kilobyte_per_second': 0.0,
                'sda.read_requests_merged_per_second': 0.0,
                'sda.reads': 0.0,
                'sda.reads_kilobyte': 0.0,
                'sda.reads_merged': 0.0,
                'sda.reads_milliseconds': 0.0,
                'sda.reads_per_second': 0.0,
                'sda.service_time': 0.0,
                'sda.util_percentage': 0.0,
                'sda.write_kilobyte_per_second': 0.32,
                'sda.write_requests_merged_per_second': 0.05,
                'sda.writes': 0.3,
                'sda.writes_kilobyte': 3.2,
                'sda.writes_merged': 0.5,
                'sda.writes_milliseconds': 0.0,
                'sda.writes_per_second': 0.03,
                'sdb.average_queue_length': 49570.0,
                'sdb.average_request_size_kilobyte': 6.3,
                'sdb.await': 0.8,
                'sdb.concurrent_io': 0.05,
                'sdb.io': 921.4,
                'sdb.io_in_progress': 0,
                'sdb.io_milliseconds': 495.7,
                'sdb.io_milliseconds_weighted': 749.2,
                'sdb.iops': 92.14,
                'sdb.read_kilobyte_per_second': 186.24,
                'sdb.read_requests_merged_per_second': 0.0,
                'sdb.reads': 116.4,
                'sdb.reads_kilobyte': 1862.4,
                'sdb.reads_merged': 0.0,
                'sdb.reads_milliseconds': 716.3,
                'sdb.reads_per_second': 11.64,
                'sdb.service_time': 0.5,
                'sdb.util_percentage': 49.57,
                'sdb.write_kilobyte_per_second': 391.43,
                'sdb.write_requests_merged_per_second': 20.17,
                'sdb.writes': 805.0,
                'sdb.writes_kilobyte': 3914.3,
                'sdb.writes_merged': 201.7,
                'sdb.writes_milliseconds': 33.7,
                'sdb.writes_per_second': 80.5,
            })
Ejemplo n.º 9
0
class TestDiskUsageCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('DiskUsageCollector', {
            'interval': 10,
            'sector_size': '512',
            'byte_unit': 'kilobyte'
        })

        self.collector = DiskUsageCollector(config, None)

    @patch('os.access', Mock(return_value=True))
    def test_get_disk_statistics(self):
        with nested(
            patch('__builtin__.open', Mock(
                return_value=self.getFixture('diskstats')))):

            result = self.collector.get_disk_statistics()

            open.assert_called_once_with('/proc/diskstats')

        self.assertEqual(
            sorted(result.keys()),
            [(8,  0), (8,  1), (8, 16), (8, 17), (8, 32),
                (8, 33), (8, 48), (8, 49), (9,  0)])

        return result

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):

        with nested(
            patch('__builtin__.open', Mock(
                return_value=self.getFixture('proc_diskstats_1'))),
                patch('time.time', Mock(return_value=10))):
            self.collector.collect()

        self.assertPublishedMany(publish_mock, {})

        with nested(
            patch('__builtin__.open', Mock(
                return_value=self.getFixture('proc_diskstats_2'))),
                patch('time.time', Mock(return_value=20))):
            self.collector.collect()

        metrics = {
            'sda.average_queue_length':             0.0,
            'sda.average_request_size_kilobyte':    10.6,
            'sda.await':                            0.0,
            'sda.concurrent_io':                    0.0,
            'sda.io':                               3.0,
            'sda.io_in_progress':                   0.0,
            'sda.io_milliseconds':                  0.0,
            'sda.io_milliseconds_weighted':         0.0,
            'sda.iops':                             0.3,
            'sda.read_kilobyte_per_second':         0.0,
            'sda.read_requests_merged_per_second':  0.0,
            'sda.reads':                            0.0,
            'sda.reads_kilobyte':                   0.0,
            'sda.reads_merged':                     0.0,
            'sda.reads_milliseconds':               0.0,
            'sda.reads_per_second':                 0.0,
            'sda.service_time':                     0.0,
            'sda.util_percentage':                  0.0,
            'sda.write_kilobyte_per_second':        3.2,
            'sda.write_requests_merged_per_second': 0.5,
            'sda.writes':                           3.0,
            'sda.writes_kilobyte':                  32.0,
            'sda.writes_merged':                    5.0,
            'sda.writes_milliseconds':              0.0,
            'sda.writes_per_second':                0.3,

            'sdb.average_queue_length':             495700.0,
            'sdb.average_request_size_kilobyte':    6.3,
            'sdb.await':                            0.8,
            'sdb.concurrent_io':                    0.5,
            'sdb.io':                               9214.0,
            'sdb.io_in_progress':                   0.0,
            'sdb.io_milliseconds':                  4957.0,
            'sdb.io_milliseconds_weighted':         7492.0,
            'sdb.iops':                             921.4,
            'sdb.read_kilobyte_per_second':         1862.4,
            'sdb.read_requests_merged_per_second':  0.0,
            'sdb.reads':                            1164.0,
            'sdb.reads_kilobyte':                   18624.0,
            'sdb.reads_merged':                     0.0,
            'sdb.reads_milliseconds':               7163.0,
            'sdb.reads_per_second':                 116.4,
            'sdb.service_time':                     0.5,
            'sdb.util_percentage':                  495.7,
            'sdb.write_kilobyte_per_second':        3914.3,
            'sdb.write_requests_merged_per_second': 201.7,
            'sdb.writes':                           8050.0,
            'sdb.writes_kilobyte':                  39143.0,
            'sdb.writes_merged':                    2017.0,
            'sdb.writes_milliseconds':              337.0,
            'sdb.writes_per_second':                805.0,
        }

        self.setDocExample(self.collector.__class__.__name__, metrics)
        self.assertPublishedMany(publish_mock, metrics)
Ejemplo n.º 10
0
class TestDiskUsageCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('DiskUsageCollector', {
            'interval': 10,
            'sector_size': '512',
            'byte_unit': 'kilobyte'
        })

        self.collector = DiskUsageCollector(config, None)

    @patch('os.access', Mock(return_value=True))
    def test_get_disk_statistics(self):
        with nested(
                patch('__builtin__.open',
                      Mock(return_value=self.getFixture('diskstats')))):

            result = self.collector.get_disk_statistics()

            open.assert_called_once_with('/proc/diskstats')

        self.assertEqual(sorted(result.keys()), [(8, 0), (8, 1), (8, 16),
                                                 (8, 17), (8, 32), (8, 33),
                                                 (8, 48), (8, 49), (9, 0)])

        return result

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):

        with nested(
                patch('__builtin__.open',
                      Mock(return_value=self.getFixture('proc_diskstats_1'))),
                patch('time.time', Mock(return_value=10))):
            self.collector.collect()

        self.assertPublishedMany(publish_mock, {})

        with nested(
                patch('__builtin__.open',
                      Mock(return_value=self.getFixture('proc_diskstats_2'))),
                patch('time.time', Mock(return_value=20))):
            self.collector.collect()

        metrics = {
            'sda.average_queue_length': 0.0,
            'sda.average_request_size_kilobyte': 10.6,
            'sda.await': 0.0,
            'sda.concurrent_io': 0.0,
            'sda.io': 3.0,
            'sda.io_in_progress': 0.0,
            'sda.io_milliseconds': 0.0,
            'sda.io_milliseconds_weighted': 0.0,
            'sda.iops': 0.3,
            'sda.read_kilobyte_per_second': 0.0,
            'sda.read_requests_merged_per_second': 0.0,
            'sda.reads': 0.0,
            'sda.reads_kilobyte': 0.0,
            'sda.reads_merged': 0.0,
            'sda.reads_milliseconds': 0.0,
            'sda.reads_per_second': 0.0,
            'sda.service_time': 0.0,
            'sda.util_percentage': 0.0,
            'sda.write_kilobyte_per_second': 3.2,
            'sda.write_requests_merged_per_second': 0.5,
            'sda.writes': 3.0,
            'sda.writes_kilobyte': 32.0,
            'sda.writes_merged': 5.0,
            'sda.writes_milliseconds': 0.0,
            'sda.writes_per_second': 0.3,
            'sdb.average_queue_length': 495700.0,
            'sdb.average_request_size_kilobyte': 6.3,
            'sdb.await': 0.8,
            'sdb.concurrent_io': 0.5,
            'sdb.io': 9214.0,
            'sdb.io_in_progress': 0.0,
            'sdb.io_milliseconds': 4957.0,
            'sdb.io_milliseconds_weighted': 7492.0,
            'sdb.iops': 921.4,
            'sdb.read_kilobyte_per_second': 1862.4,
            'sdb.read_requests_merged_per_second': 0.0,
            'sdb.reads': 1164.0,
            'sdb.reads_kilobyte': 18624.0,
            'sdb.reads_merged': 0.0,
            'sdb.reads_milliseconds': 7163.0,
            'sdb.reads_per_second': 116.4,
            'sdb.service_time': 0.5,
            'sdb.util_percentage': 495.7,
            'sdb.write_kilobyte_per_second': 3914.3,
            'sdb.write_requests_merged_per_second': 201.7,
            'sdb.writes': 8050.0,
            'sdb.writes_kilobyte': 39143.0,
            'sdb.writes_merged': 2017.0,
            'sdb.writes_milliseconds': 337.0,
            'sdb.writes_per_second': 805.0,
        }

        self.setDocExample(self.collector.__class__.__name__, metrics)
        self.assertPublishedMany(publish_mock, metrics)
Ejemplo n.º 11
0
class TestDiskUsageCollector(CollectorTestCase):

    def setUp(self):
        config = get_collector_config('DiskUsageCollector', {
            'interval': 10,
            'sector_size': '512',
            'byte_unit': 'kilobyte'
        })

        self.collector = DiskUsageCollector(config, None)

    def test_config(self):
        self.assertFalse(self.collector.config['send_zero'])

    def test_import(self):
        self.assertTrue(DiskUsageCollector)

    @patch('os.access', Mock(return_value=True))
    def test_get_disk_statistics(self):

        patch_open = patch(
            '__builtin__.open',
            Mock(return_value=self.getFixture('diskstats')))

        open_mock = patch_open.start()
        result = self.collector.get_disk_statistics()
        patch_open.stop()

        open_mock.assert_called_once_with('/proc/diskstats')

        self.assertEqual(
            sorted(result.keys()),
            [(8,  0), (8,  1), (8, 16), (8, 17), (8, 32),
                (8, 33), (8, 48), (8, 49), (9,  0)])

        return result

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):

        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture('proc_diskstats_1')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture('proc_diskstats_2')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_should_work_with_real_data.pkl')

        self.setDocExample(collector=self.collector.__class__.__name__,
                           metrics=metrics,
                           defaultpath=self.collector.config['path'])
        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_verify_supporting_vda_and_xvdb(self, publish_mock):
        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture(
                    'proc_diskstats_1_vda_xvdb')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture(
                    'proc_diskstats_2_vda_xvdb')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults(
            'test_verify_supporting_vda_and_xvdb.pkl')

        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_verify_supporting_md_dm(self, publish_mock):
        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture(
                    'proc_diskstats_1_md_dm')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture(
                    'proc_diskstats_2_md_dm')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_verify_supporting_md_dm.pkl')

        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_verify_supporting_disk(self, publish_mock):
        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture(
                    'proc_diskstats_1_disk')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture(
                    'proc_diskstats_2_disk')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_verify_supporting_disk.pkl')
        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_service_Time(self, publish_mock):
        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture(
                    'proc_diskstats_1_service_time')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch(
            '__builtin__.open',
            Mock(
                return_value=self.getFixture(
                    'proc_diskstats_2_service_time')))
        patch_time = patch('time.time', Mock(return_value=70))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_service_Time.pkl')

        self.assertPublishedMany(publish_mock, metrics)
Ejemplo n.º 12
0
class TestDiskUsageCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('DiskUsageCollector', {
            'interval'  : 10,
            'byte_unit' : 'kilobyte'
        })

        self.collector = DiskUsageCollector(config, None)

    @patch('__builtin__.open')
    @patch('os.access', Mock(return_value=True))

    def test_get_disk_statistics(self, open_mock):
        result = None
        open_mock.return_value = StringIO("""
   1       0 ram0 0 0 0 0 0 0 0 0 0 0 0
   1       1 ram1 0 0 0 0 0 0 0 0 0 0 0
   1       2 ram2 0 0 0 0 0 0 0 0 0 0 0
   1       3 ram3 0 0 0 0 0 0 0 0 0 0 0
   1       4 ram4 0 0 0 0 0 0 0 0 0 0 0
   1       5 ram5 0 0 0 0 0 0 0 0 0 0 0
   1       6 ram6 0 0 0 0 0 0 0 0 0 0 0
   1       7 ram7 0 0 0 0 0 0 0 0 0 0 0
   1       8 ram8 0 0 0 0 0 0 0 0 0 0 0
   1       9 ram9 0 0 0 0 0 0 0 0 0 0 0
   1      10 ram10 0 0 0 0 0 0 0 0 0 0 0
   1      11 ram11 0 0 0 0 0 0 0 0 0 0 0
   1      12 ram12 0 0 0 0 0 0 0 0 0 0 0
   1      13 ram13 0 0 0 0 0 0 0 0 0 0 0
   1      14 ram14 0 0 0 0 0 0 0 0 0 0 0
   1      15 ram15 0 0 0 0 0 0 0 0 0 0 0
   7       0 loop0 0 0 0 0 0 0 0 0 0 0 0
   7       1 loop1 0 0 0 0 0 0 0 0 0 0 0
   7       2 loop2 0 0 0 0 0 0 0 0 0 0 0
   7       3 loop3 0 0 0 0 0 0 0 0 0 0 0
   7       4 loop4 0 0 0 0 0 0 0 0 0 0 0
   7       5 loop5 0 0 0 0 0 0 0 0 0 0 0
   7       6 loop6 0 0 0 0 0 0 0 0 0 0 0
   7       7 loop7 0 0 0 0 0 0 0 0 0 0 0
   8       0 sda 11296323 127761523 1114247280 165221020 9292767 32155242 333252048 208563560 0 19035310 374755270
   8       1 sda1 11296296 127761523 1114247064 165220780 9292767 32155242 333252048 208563560 0 19035230 374755030
   8      16 sdb 11334585 127760303 1114502518 162448600 9287483 32167260 333227008 189022120 0 18792930 352418270
   8      17 sdb1 11334558 127760303 1114502302 162448420 9287483 32167260 333227008 189022120 0 18792870 352418090
   8      32 sdc 11357096 128084136 1117263302 175647900 9071409 31921768 329475344 181140140 0 19509790 357693530
   8      33 sdc1 11357069 128084136 1117263086 175647670 9071409 31921768 329475344 181140140 0 19509740 357693300
   8      48 sdd 11350168 128344871 1119269534 168467240 9130464 31774918 328709208 167823720 0 18473250 337157280
   8      49 sdd1 11350141 128344871 1119269318 168467050 9130464 31774918 328709208 167823720 0 18473200 337157090
   9       0 md0 150707 0 2818762 0 111152210 0 889217680 0 0 0 0
        """.strip())

        result = self.collector.get_disk_statistics()

        open_mock.assert_called_once_with('/proc/diskstats')

        self.assertEqual(
            sorted(result.keys()),
            [ (8,  0), (8,  1), (8, 16), (8, 17), (8, 32), (8, 33), (8, 48), (8, 49), (9,  0) ]
        )

        return result

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):

        with nested(
            patch('__builtin__.open', Mock(return_value = self.getFixture('proc_diskstats_1'))),
            patch('time.time', Mock(return_value = 10))
        ):
            self.collector.collect()

        self.assertPublishedMany(publish_mock, {})

        with nested(
            patch('__builtin__.open', Mock(return_value = self.getFixture('proc_diskstats_2'))),
            patch('time.time', Mock(return_value = 20))
        ):
            self.collector.collect()

        metrics = {
            'sda.average_queue_length':             0.0,
            'sda.average_request_size_kilobyte':    10.7,
            'sda.await':                            0.0,
            'sda.concurrent_io':                    0.0,
            'sda.io':                               0.3,
            'sda.io_in_progress':                   0.0,
            'sda.io_milliseconds':                  0.0,
            'sda.io_milliseconds_weighted':         0.0,
            'sda.iops':                             0.03,
            'sda.read_kilobyte_per_second':         0.0,
            'sda.read_requests_merged_per_second':  0.0,
            'sda.reads':                            0.0,
            'sda.reads_kilobyte':                   0.0,
            'sda.reads_merged':                     0.0,
            'sda.reads_milliseconds':               0.0,
            'sda.reads_per_second':                 0.0,
            'sda.service_time':                     0.0,
            'sda.util_percentage':                  0.0,
            'sda.write_kilobyte_per_second':        0.32,
            'sda.write_requests_merged_per_second': 0.05,
            'sda.writes':                           0.3,
            'sda.writes_kilobyte':                  3.2,
            'sda.writes_merged':                    0.5,
            'sda.writes_milliseconds':              0.0,
            'sda.writes_per_second':                0.03,
            'sdb.average_queue_length':             49570.0,
            'sdb.average_request_size_kilobyte':    6.3,

            'sdb.await':                            0.8,
            'sdb.concurrent_io':                    0.05,
            'sdb.io':                               921.4,
            'sdb.io_in_progress':                   0,
            'sdb.io_milliseconds':                  495.7,
            'sdb.io_milliseconds_weighted':         749.2,
            'sdb.iops':                             92.14,
            'sdb.read_kilobyte_per_second':         186.24,
            'sdb.read_requests_merged_per_second':  0.0,
            'sdb.reads':                            116.4,
            'sdb.reads_kilobyte':                   1862.4,
            'sdb.reads_merged':                     0.0,
            'sdb.reads_milliseconds':               716.3,
            'sdb.reads_per_second':                 11.64,
            'sdb.service_time':                     0.5,
            'sdb.util_percentage':                  49.57,
            'sdb.write_kilobyte_per_second':        391.43,
            'sdb.write_requests_merged_per_second': 20.17,
            'sdb.writes':                           805.0,
            'sdb.writes_kilobyte':                  3914.3,
            'sdb.writes_merged':                    201.7,
            'sdb.writes_milliseconds':              33.7,
            'sdb.writes_per_second':                80.5,
        }
        
        self.setDocExample(self.collector.__class__.__name__, metrics)
        self.assertPublishedMany(publish_mock, metrics)
Ejemplo n.º 13
0
class TestDiskUsageCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('DiskUsageCollector', {
            'interval': 10,
            'sector_size': '512',
            'byte_unit': 'kilobyte'
        })

        self.collector = DiskUsageCollector(config, None)

    def test_import(self):
        self.assertTrue(DiskUsageCollector)

    @patch('os.access', Mock(return_value=True))
    def test_get_disk_statistics(self):

        patch_open = patch('__builtin__.open',
                           Mock(return_value=self.getFixture('diskstats')))

        open_mock = patch_open.start()
        result = self.collector.get_disk_statistics()
        patch_open.stop()

        open_mock.assert_called_once_with('/proc/diskstats')

        self.assertEqual(
            sorted(result.keys()),
            [(8,  0), (8,  1), (8, 16), (8, 17), (8, 32),
                (8, 33), (8, 48), (8, 49), (9,  0)])

        return result

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):

        patch_open = patch('__builtin__.open',
                           Mock(
                            return_value=self.getFixture('proc_diskstats_1')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch('__builtin__.open',
                           Mock(
                            return_value=self.getFixture('proc_diskstats_2')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_should_work_with_real_data.pkl')
        self.setDocExample(collector=self.collector.__class__.__name__,
                           metrics=metrics,
                           defaultpath=self.collector.config['path'])
        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_verify_supporting_vda_and_xvdb(self, publish_mock):
        patch_open = patch('__builtin__.open',
                           Mock(
                            return_value=self.getFixture(
                                'proc_diskstats_1_vda_xvdb')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch('__builtin__.open',
                           Mock(
                            return_value=self.getFixture(
                                'proc_diskstats_2_vda_xvdb')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults(
            'test_verify_supporting_vda_and_xvdb.pkl')
        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_verify_supporting_md_dm(self, publish_mock):
        patch_open = patch('__builtin__.open',
                           Mock(
                            return_value=self.getFixture(
                                'proc_diskstats_1_md_dm')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch('__builtin__.open',
                           Mock(
                            return_value=self.getFixture(
                                'proc_diskstats_2_md_dm')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_verify_supporting_md_dm.pkl')
        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_verify_supporting_disk(self, publish_mock):
        patch_open = patch('__builtin__.open',
                           Mock(
                            return_value=self.getFixture(
                                'proc_diskstats_1_disk')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch('__builtin__.open',
                           Mock(
                            return_value=self.getFixture(
                                'proc_diskstats_2_disk')))
        patch_time = patch('time.time', Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults('test_verify_supporting_disk.pkl')
        self.assertPublishedMany(publish_mock, metrics)

    @patch('os.access', Mock(return_value=True))
    @patch.object(Collector, 'publish')
    def test_service_Time(self, publish_mock):
        patch_open = patch('__builtin__.open',
                           Mock(
                            return_value=self.getFixture(
                                'proc_diskstats_1_service_time')))
        patch_time = patch('time.time', Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch('__builtin__.open',
                           Mock(
                            return_value=self.getFixture(
                                'proc_diskstats_2_service_time')))
        patch_time = patch('time.time', Mock(return_value=70))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = {
            'sda.write_requests_merged_per_second': 18.1666666667,
            'sda.read_requests_merged_per_second': 0.0,
            'sda.reads': 38.0,
            'sda.iops': 4.36666666667,
            'sda.io': 262.0,
            'sda.io_milliseconds_weighted': 396.0,
            'sda.read_await': 7.15789473684,
            'sda.writes': 224.0,
            'sda.service_time': 0.732824427481,
            'sda.average_request_size_kilobyte': 21.6030534351,
            'sda.io_milliseconds': 192.0,
            'sda.write_await': 0.553571428571,
            'sda.writes_milliseconds': 124.0,
            'sda.await': 1.51145038168,
            'sda.util_percentage': 19.2,
            'sda.reads_kilobyte': 696.0,
            'sda.read_kilobyte_per_second': 11.6,
            'sda.writes_per_second': 3.73333333333,
            'sda.io_in_progress': 0.0,
            'sda.reads_per_second': 0.633333333333,
            'sda.concurrent_io': 0.0032,
            'sda.writes_kilobyte': 4964.0,
            'sda.write_kilobyte_per_second': 82.7333333333,
            'sda.writes_merged': 1090.0,
            'sda.reads_merged': 0.0,
            'sda.average_queue_length': 3200.0,
            'sda.reads_milliseconds': 272.0,
            'sda5.write_requests_merged_per_second': 18.1666666667,
            'sda5.read_requests_merged_per_second': 0.0,
            'sda5.reads': 38.0,
            'sda5.iops': 3.15,
            'sda5.io': 189.0,
            'sda5.io_milliseconds_weighted': 396.0,
            'sda5.read_await': 7.15789473684,
            'sda5.writes': 151.0,
            'sda5.service_time': 1.01587301587,
            'sda5.average_request_size_kilobyte': 29.9470899471,
            'sda5.io_milliseconds': 192.0,
            'sda5.write_await': 0.82119205298,
            'sda5.writes_milliseconds': 124.0,
            'sda5.await': 2.09523809524,
            'sda5.util_percentage': 19.2,
            'sda5.reads_kilobyte': 696.0,
            'sda5.read_kilobyte_per_second': 11.6,
            'sda5.writes_per_second': 2.51666666667,
            'sda5.io_in_progress': 0.0,
            'sda5.reads_per_second': 0.633333333333,
            'sda5.concurrent_io': 0.0032,
            'sda5.writes_kilobyte': 4964.0,
            'sda5.write_kilobyte_per_second': 82.7333333333,
            'sda5.writes_merged': 1090.0,
            'sda5.reads_merged': 0.0,
            'sda5.average_queue_length': 3200.0,
            'sda5.reads_milliseconds': 272.0,
            'dm-0.write_requests_merged_per_second': 0.0,
            'dm-0.read_requests_merged_per_second': 0.0,
            'dm-0.reads': 38.0,
            'dm-0.iops': 22.2333333333,
            'dm-0.io': 1334.0,
            'dm-0.io_milliseconds_weighted': 1172.0,
            'dm-0.read_await': 7.15789473684,
            'dm-0.writes': 1296.0,
            'dm-0.service_time': 0.143928035982,
            'dm-0.average_request_size_kilobyte': 4.24287856072,
            'dm-0.io_milliseconds': 192.0,
            'dm-0.write_await': 0.694444444444,
            'dm-0.writes_milliseconds': 900.0,
            'dm-0.await': 0.87856071964,
            'dm-0.util_percentage': 19.2,
            'dm-0.reads_kilobyte': 696.0,
            'dm-0.read_kilobyte_per_second': 11.6,
            'dm-0.writes_per_second': 21.6,
            'dm-0.io_in_progress': 0.0,
            'dm-0.reads_per_second': 0.633333333333,
            'dm-0.concurrent_io': 0.0032,
            'dm-0.writes_kilobyte': 4964.0,
            'dm-0.write_kilobyte_per_second': 82.7333333333,
            'dm-0.writes_merged': 0.0,
            'dm-0.reads_merged': 0.0,
            'dm-0.average_queue_length': 3200.0,
            'dm-0.reads_milliseconds': 272.0
        }
        self.assertPublishedMany(publish_mock, metrics)
Ejemplo n.º 14
0
    def setUp(self):
        config = get_collector_config(
            "DiskUsageCollector", {"interval": 10, "sector_size": "512", "byte_unit": "kilobyte"}
        )

        self.collector = DiskUsageCollector(config, None)
Ejemplo n.º 15
0
class TestDiskUsageCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config(
            "DiskUsageCollector", {"interval": 10, "sector_size": "512", "byte_unit": "kilobyte"}
        )

        self.collector = DiskUsageCollector(config, None)

    def test_import(self):
        self.assertTrue(DiskUsageCollector)

    @patch("os.access", Mock(return_value=True))
    def test_get_disk_statistics(self):

        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("diskstats")))

        open_mock = patch_open.start()
        result = self.collector.get_disk_statistics()
        patch_open.stop()

        open_mock.assert_called_once_with("/proc/diskstats")

        self.assertEqual(
            sorted(result.keys()), [(8, 0), (8, 1), (8, 16), (8, 17), (8, 32), (8, 33), (8, 48), (8, 49), (9, 0)]
        )

        return result

    @patch("os.access", Mock(return_value=True))
    @patch.object(Collector, "publish")
    def test_should_work_with_real_data(self, publish_mock):

        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("proc_diskstats_1")))
        patch_time = patch("time.time", Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("proc_diskstats_2")))
        patch_time = patch("time.time", Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults("test_should_work_with_real_data.pkl")

        self.setDocExample(
            collector=self.collector.__class__.__name__, metrics=metrics, defaultpath=self.collector.config["path"]
        )
        self.assertPublishedMany(publish_mock, metrics)

    @patch("os.access", Mock(return_value=True))
    @patch.object(Collector, "publish")
    def test_verify_supporting_vda_and_xvdb(self, publish_mock):
        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("proc_diskstats_1_vda_xvdb")))
        patch_time = patch("time.time", Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("proc_diskstats_2_vda_xvdb")))
        patch_time = patch("time.time", Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults("test_verify_supporting_vda_and_xvdb.pkl")

        self.assertPublishedMany(publish_mock, metrics)

    @patch("os.access", Mock(return_value=True))
    @patch.object(Collector, "publish")
    def test_verify_supporting_md_dm(self, publish_mock):
        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("proc_diskstats_1_md_dm")))
        patch_time = patch("time.time", Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("proc_diskstats_2_md_dm")))
        patch_time = patch("time.time", Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults("test_verify_supporting_md_dm.pkl")

        self.assertPublishedMany(publish_mock, metrics)

    @patch("os.access", Mock(return_value=True))
    @patch.object(Collector, "publish")
    def test_verify_supporting_disk(self, publish_mock):
        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("proc_diskstats_1_disk")))
        patch_time = patch("time.time", Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("proc_diskstats_2_disk")))
        patch_time = patch("time.time", Mock(return_value=20))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults("test_verify_supporting_disk.pkl")
        self.assertPublishedMany(publish_mock, metrics)

    @patch("os.access", Mock(return_value=True))
    @patch.object(Collector, "publish")
    def test_service_Time(self, publish_mock):
        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("proc_diskstats_1_service_time")))
        patch_time = patch("time.time", Mock(return_value=10))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        self.assertPublishedMany(publish_mock, {})

        patch_open = patch("__builtin__.open", Mock(return_value=self.getFixture("proc_diskstats_2_service_time")))
        patch_time = patch("time.time", Mock(return_value=70))

        patch_open.start()
        patch_time.start()
        self.collector.collect()
        patch_open.stop()
        patch_time.stop()

        metrics = self.getPickledResults("test_service_Time.pkl")

        self.assertPublishedMany(publish_mock, metrics)