def test_sql_server_parsing(self):
        desired_metrics_info = pull_metric_names(e(sql_server_dict[u'engine']))
        metric_entries = parse_logs(
            '1', 'arn:aws:lambda:us-west-2:845296:function:testSqlServer',
            sql_server_dict, *desired_metrics_info)

        first_entry = metric_entries[0]
        self.check_common_elements_sql_server(first_entry)

        # Grab the metrics we want
        metrics_to_check = self.grab_metrics(metric_entries,
                                             self.SQL_SERVER_METRICS_CHECK)

        # Check each for the desired specifics
        cpu_util = metrics_to_check['cpuUtilization.kern']
        self.check_common_elements_sql_server(cpu_util)
        self.assertEqual(cpu_util['value'], 11.85, 'Incorrect cpuUtil.kern')

        memory_kern_paged_kb = metrics_to_check['memory.kernPagedKb']
        self.check_common_elements_sql_server(memory_kern_paged_kb)
        self.assertEqual(memory_kern_paged_kb['value'], 136120,
                         'Incorrect memory.kernPagedKb')

        system_handles = metrics_to_check['system.handles']
        self.check_common_elements_sql_server(system_handles)
        self.assertEqual(system_handles['value'], 14874,
                         'Incorrect system.handles')

        disks_avail_pc = metrics_to_check['disks.availPc']
        self.check_common_elements_sql_server(disks_avail_pc)
        self.assertEqual(disks_avail_pc['value'], 99.22,
                         'Incorrect disks.availPc')
        self.assertEqual(disks_avail_pc['dimensions']['name'], 'rdsdbdata',
                         'Incorrectly parsed disks metrics')

        network_rd_bytes_ps = metrics_to_check['network.rdBytesPS']
        self.check_common_elements_sql_server(network_rd_bytes_ps)
        self.assertEqual(network_rd_bytes_ps['value'], 0,
                         'Incorrect network.rdBytesPS')
        self.assertEqual(network_rd_bytes_ps['dimensions']['interface'],
                         'Ethernet 2', 'Incorrectly parsed network metrics')

        rds_processes_working_set_priv_kb =\
            metrics_to_check['RDSprocesses.workingSetPrivKb']
        self.check_common_elements_sql_server(
            rds_processes_working_set_priv_kb)
        self.assertEqual(rds_processes_working_set_priv_kb['value'], 215996,
                         'Incorrect RDSprocesses.workingSetPrivKb')
    def test_standard_parsing(self):
        desired_metrics_info = pull_metric_names(e(my_sql_dict[u'engine']))
        metric_entries = parse_logs(
            '1',
            'arn:aws:lambda:us-east-1:946288580872:function:testRDSLambda',
            my_sql_dict, *desired_metrics_info)

        first_entry = metric_entries[0]
        self.check_common_elements_standard(first_entry)

        # Grab the metrics we want
        metrics_to_check = self.grab_metrics(metric_entries,
                                             self.STANDARD_METRICS_CHECK)

        # Check each for the desired specifics
        cpu_util = metrics_to_check['cpuUtilization.total']
        self.check_common_elements_standard(cpu_util)
        self.assertEqual(cpu_util['value'], 21.01, 'Incorrect cpuUtil.total')

        load_avg = metrics_to_check['loadAverageMinute.one']
        self.check_common_elements_standard(load_avg)
        self.assertEqual(load_avg['value'], 0.29,
                         'Incorrect loadAverageMinute.one')

        memory_cached = metrics_to_check['memory.cached']
        self.check_common_elements_standard(memory_cached)
        self.assertEqual(memory_cached['value'], 3288068,
                         'Incorrect memory.cached')

        tasks_total = metrics_to_check['tasks.total']
        self.check_common_elements_standard(tasks_total)
        self.assertEqual(tasks_total['value'], 262, 'Incorrect tasks.total')

        swap_free = metrics_to_check['swap.free']
        self.check_common_elements_standard(swap_free)
        self.assertEqual(swap_free['value'], 7703160, 'Incorrect swap.free')

        network_tx = metrics_to_check['network.tx']
        self.check_common_elements_standard(network_tx)
        self.assertEqual(network_tx['value'], 2856222, 'Incorrect network.tx')
        self.assertEqual(network_tx['dimensions']['interface'], 'eth0',
                         'Incorrectly parsed network metrics')

        diskio_await = metrics_to_check['diskIO.await']
        self.check_common_elements_standard(diskio_await)
        self.assertEqual(diskio_await['value'], 1.6, 'Incorrect diskIO.await')
        self.assertEqual(diskio_await['dimensions']['device'], 'rdsdev',
                         'Incorrectly parsed diskIO metrics')

        filesys_total = metrics_to_check['fileSys.total']
        self.check_common_elements_standard(filesys_total)
        self.assertEqual(filesys_total['value'], 103053476,
                         'Incorrect fileSys.total')
        self.assertEqual(filesys_total['dimensions']['name'], 'rdsfilesys',
                         'Incorrectly parsed filesys metrics')
        self.assertEqual(filesys_total['dimensions']['mountPoint'],
                         '/rdsdbdata', 'Incorrectly parsed filesys metrics')

        os_processes_cpu = metrics_to_check['OSprocesses.cpuUsedPc']
        self.check_common_elements_standard(os_processes_cpu)
        self.assertEqual(os_processes_cpu['value'], 0.5,
                         'Incorrectly parsed process metrics')
    def test_aurora_parsing(self):
        desired_metrics_info = pull_metric_names(e(aurora_dict[u'engine']))
        metric_entries = parse_logs(
            '1234',
            'arn:aws:lambda:eu-west-1:098712340987:function:testAurora',
            aurora_dict, *desired_metrics_info)

        first_entry = metric_entries[0]
        self.check_common_elements_aurora(first_entry)

        # Grab the metrics we want
        metrics_to_check = self.grab_metrics(metric_entries,
                                             self.AURORA_METRICS_CHECK)

        # Check each for the desired specifics
        cpu_util = metrics_to_check['cpuUtilization.steal']
        self.check_common_elements_aurora(cpu_util)
        self.assertEqual(cpu_util['value'], 0.36, 'Incorrect cpuUtil.steal')

        load_average_minute_fifteen =\
            metrics_to_check['loadAverageMinute.fifteen']
        self.check_common_elements_aurora(load_average_minute_fifteen)
        self.assertEqual(load_average_minute_fifteen['value'], 0.13,
                         'Incorrect loadAverageMinute.fifteen')

        memory_slab = metrics_to_check['memory.slab']
        self.check_common_elements_aurora(memory_slab)
        self.assertEqual(memory_slab['value'], 38916, 'Incorrect memory.slab')

        tasks_sleeping = metrics_to_check['tasks.sleeping']
        self.check_common_elements_aurora(tasks_sleeping)
        self.assertEqual(tasks_sleeping['value'], 233,
                         'Incorrect tasks.sleeping')

        swap_total = metrics_to_check['swap.total']
        self.check_common_elements_aurora(swap_total)
        self.assertEqual(swap_total['value'], 0, 'Incorrect swap.total')

        network_rx = metrics_to_check['network.rx']
        self.check_common_elements_aurora(network_rx)
        self.assertEqual(network_rx['value'], 58724202.3,
                         'Incorrect network.rx')
        self.assertEqual(network_rx['dimensions']['interface'], 'eth0',
                         'Incorrectly parsed network metrics')

        diskio_write_throughput = metrics_to_check['diskIO.writeThroughput']
        self.check_common_elements_aurora(diskio_write_throughput)
        self.assertEqual(diskio_write_throughput['value'], 476409.8,
                         'Incorrect diskIO.writeThroughput')
        self.assertEqual(len(diskio_write_throughput['dimensions'].keys()), 4,
                         'Incorrectly parsed diskIO metrics')

        filesys_max_files = metrics_to_check['fileSys.maxFiles']
        self.check_common_elements_aurora(filesys_max_files)
        self.assertEqual(filesys_max_files['value'], 2097152,
                         'Incorrect fileSys.maxFiles')
        self.assertEqual(filesys_max_files['dimensions']['name'], 'rdsfilesys',
                         'Incorrectly parsed fileSys metrics')
        self.assertEqual(filesys_max_files['dimensions']['mountPoint'],
                         '/rdsdbdata', 'Incorrectly parsed fileSys metrics')

        os_processes_vss = metrics_to_check['OSprocesses.vss']
        self.check_common_elements_aurora(os_processes_vss)
        self.assertEqual(os_processes_vss['value'], 691648,
                         'Incorrect OSprocesses.vss')