Ejemplo n.º 1
0
 def test_sender_sends_events_even_when_it_has_sdk(self):
     events = []
     properties = {'p1': 'v1', 'p2': 'v2'}
     metrics = ['m1', 'm2', 'm3']
     containers = [{'Id': 'c1'}]
     stats = ['s1', 's2', 's3']
     host_name = 'host'
     with patch('appinsights.dockerconvertors.get_container_properties'
                ) as properties_mock:
         with patch('appinsights.dockerconvertors.convert_to_metrics'
                    ) as to_metric_mock:
             properties_mock.return_value = properties
             to_metric_mock.return_value = metrics
             wrapper_mock = Mock(spec=DockerClientWrapper)
             wrapper_mock.get_host_name.return_value = host_name
             wrapper_mock.get_containers.return_value = containers
             wrapper_mock.get_stats.return_value = stats
             wrapper_mock.run_command.return_value = 'InstrumentationKey=ikey'
             injector_mock = Mock()
             injector_mock.get_my_container_id.return_value = 'c1'
             collector = DockerCollector(wrapper_mock, injector_mock, 3,
                                         lambda x: events.append(x))
             collector.collect_stats_and_send()
             self.assertEqual(len(metrics), len(events))
             self.assertEqual(3, len(events))
 def test_collect_and_send(self):
     events = []
     properties = {'p1':'v1','p2':'v2'}
     metrics = ['m1','m2','m3']
     containers = [{'Id':'c1','ikey':'k1'}, {'Id':'c2','ikey':'k2'}, {'Id':'c3','ikey':'k3'}]
     stats = ['s1','s2','s3']
     host_name = 'host'
     with patch('appinsights.dockerconvertors.get_container_properties') as properties_mock:
         with patch('appinsights.dockerconvertors.convert_to_metrics') as to_metric_mock:
             properties_mock.return_value = properties
             to_metric_mock.return_value = metrics
             wrapper_mock = Mock()
             wrapper_mock.get_host_name.return_value = host_name
             wrapper_mock.get_containers.return_value = containers
             wrapper_mock.get_stats.return_value = stats
             wrapper_mock.run_command.return_value = ''
             injector_mock = Mock()
             injector_mock.get_my_container_id.return_value = 'c1'
             collector = DockerCollector(wrapper_mock, injector_mock, 3, lambda x: events.append(x))
             collector.collect_stats_and_send()
             expected_metrics = [{'metric':metric, 'properties': properties} for container in containers for metric in metrics]
             expectedEventsCount = len(containers)*len(metrics)
             self.assertEqual(expectedEventsCount, len(events))
             for sent_event in events:
                 self.assertIn(sent_event ,expected_metrics)
Ejemplo n.º 3
0
 def test_when_docker_wrapper_raises_on_run_commnad_it_assume_there_is_no_sdk_and_send_events(
         self):
     events = []
     properties = {'p1': 'v1', 'p2': 'v2'}
     metrics = ['m1', 'm2', 'm3']
     containers = [{'Id': 'c1'}]
     stats = ['s1', 's2', 's3']
     host_name = 'host'
     with patch('appinsights.dockerconvertors.get_container_properties'
                ) as properties_mock:
         with patch('appinsights.dockerconvertors.convert_to_metrics'
                    ) as to_metric_mock:
             properties_mock.return_value = properties
             to_metric_mock.return_value = metrics
             wrapper_mock = Mock(spec=DockerClientWrapper)
             wrapper_mock.get_host_name.return_value = host_name
             wrapper_mock.get_containers.return_value = containers
             wrapper_mock.get_stats.return_value = stats
             wrapper_mock.run_command.side_effect = DockerWrapperError(
                 'container is paused')
             injector_mock = Mock()
             injector_mock.get_my_container_id.return_value = 'c1'
             collector = DockerCollector(wrapper_mock, injector_mock, 3,
                                         lambda x: events.append(x))
             collector.collect_stats_and_send()
             self.assertEqual(len(metrics), len(events))
def run_collect_performance_counters(docker_socket, sdk_file, docker_info_file, collect_interval):
    docker_wrapper=get_production_docker_wrapper(base_url=docker_socket)
    docker_injector  = DockerInjector(docker_wrapper=docker_wrapper, docker_info_path=docker_info_file)
    collector = DockerCollector(
        docker_wrapper=docker_wrapper,
        docker_injector=docker_injector,
        samples_in_each_metric=5,
        sdk_file=sdk_file)

    while True:
        collector.collect_stats_and_send()
        time.sleep(float(collect_interval))
Ejemplo n.º 5
0
def run_collect_performance_counters(docker_socket, sdk_file, docker_info_file,
                                     collect_interval):
    docker_wrapper = get_production_docker_wrapper(base_url=docker_socket)
    docker_injector = DockerInjector(docker_wrapper=docker_wrapper,
                                     docker_info_path=docker_info_file)
    collector = DockerCollector(docker_wrapper=docker_wrapper,
                                docker_injector=docker_injector,
                                samples_in_each_metric=5,
                                sdk_file=sdk_file)

    while True:
        collector.collect_stats_and_send()
        time.sleep(float(collect_interval))
Ejemplo n.º 6
0
def run_collect_containers_events(docker_socket, docker_info_file, sdk_file):
    docker_wrapper = get_production_docker_wrapper(base_url=docker_socket)
    docker_injector = DockerInjector(docker_wrapper=docker_wrapper,
                                     docker_info_path=docker_info_file)
    collector = DockerCollector(docker_wrapper=docker_wrapper,
                                docker_injector=docker_injector,
                                samples_in_each_metric=5,
                                sdk_file=sdk_file)
    while True:
        try:
            collector.collect_container_events()
        except Exception as e:
            print(e, file=sys.stderr)
            time.sleep(10)
def run_collect_containers_events(docker_socket, docker_info_file, sdk_file):
    docker_wrapper=get_production_docker_wrapper(base_url=docker_socket)
    docker_injector  = DockerInjector(docker_wrapper=docker_wrapper, docker_info_path=docker_info_file)
    collector = DockerCollector(
        docker_wrapper=docker_wrapper,
        docker_injector=docker_injector,
        samples_in_each_metric=5,
        sdk_file=sdk_file)
    while True:
        try:
            collector.collect_container_events()
        except Exception as e:
            print(e, file=sys.stderr)
            time.sleep(10)
    def test_old_container_is_removed_after_threshold(self):
        new_containers = [{'Id':'c2','ikey':'k2', 'unregistered': None}]
        current_containers = {'c1': {'Id':'c1','ikey':'k1', 'unregistered': time.time() - 70}}

        updated_containers = DockerCollector.remove_old_containers(current_containers, new_containers)

        self.assertTrue(len(updated_containers) == 0)
    def test_old_container_is_not_removed_immediately(self):
        new_containers = [{'Id':'c2','ikey':'k2', 'unregistered': None}]
        current_containers = {'c1': {'Id':'c1','ikey':'k1', 'unregistered': time.time()}}

        updated_containers = DockerCollector.remove_old_containers(current_containers, new_containers)

        self.assertEqual(current_containers['c1']['Id'], updated_containers['c1']['Id'])
 def test_collect_and_send_dont_send_events_when_no_metrics(self):
     events = []
     properties = {'p1':'v1','p2':'v2'}
     metrics = []
     containers = [{'Id':'c1'}, {'Id':'c2'}]
     stats = ['s1','s2']
     host_name = 'host'
     with patch('appinsights.dockerconvertors.get_container_properties') as properties_mock:
         with patch('appinsights.dockerconvertors.convert_to_metrics') as to_metric_mock:
             properties_mock.return_value = properties
             to_metric_mock.return_value = metrics
             wrapper_mock = Mock(spec=DockerClientWrapper)
             wrapper_mock.get_host_name.return_value = host_name
             wrapper_mock.get_containers.return_value = containers
             wrapper_mock.get_stats.return_value = stats
             wrapper_mock.run_command.return_value = ''
             injector_mock=Mock()
             injector_mock.get_my_container_id.return_value = 'c1'
             collector = DockerCollector(wrapper_mock, injector_mock ,3, lambda x: events.append(x))
             collector.collect_stats_and_send()
             self.assertEqual(0, len(events))
 def test_when_docker_wrapper_raises_on_run_commnad_it_assume_there_is_no_sdk_and_send_events(self):
     events = []
     properties = {'p1':'v1','p2':'v2'}
     metrics = ['m1','m2','m3']
     containers = [{'Id':'c1'}]
     stats = ['s1','s2','s3']
     host_name = 'host'
     with patch('appinsights.dockerconvertors.get_container_properties') as properties_mock:
         with patch('appinsights.dockerconvertors.convert_to_metrics') as to_metric_mock:
             properties_mock.return_value = properties
             to_metric_mock.return_value = metrics
             wrapper_mock = Mock(spec=DockerClientWrapper)
             wrapper_mock.get_host_name.return_value = host_name
             wrapper_mock.get_containers.return_value = containers
             wrapper_mock.get_stats.return_value = stats
             wrapper_mock.run_command.side_effect = DockerWrapperError('container is paused')
             injector_mock = Mock()
             injector_mock.get_my_container_id.return_value = 'c1'
             collector = DockerCollector(wrapper_mock, injector_mock, 3, lambda x: events.append(x))
             collector.collect_stats_and_send()
             self.assertEqual(len(metrics), len(events))
Ejemplo n.º 12
0
 def test_collect_and_send(self):
     events = []
     properties = {'p1': 'v1', 'p2': 'v2'}
     metrics = ['m1', 'm2', 'm3']
     containers = [{
         'Id': 'c1',
         'ikey': 'k1'
     }, {
         'Id': 'c2',
         'ikey': 'k2'
     }, {
         'Id': 'c3',
         'ikey': 'k3'
     }]
     stats = ['s1', 's2', 's3']
     host_name = 'host'
     with patch('appinsights.dockerconvertors.get_container_properties'
                ) as properties_mock:
         with patch('appinsights.dockerconvertors.convert_to_metrics'
                    ) as to_metric_mock:
             properties_mock.return_value = properties
             to_metric_mock.return_value = metrics
             wrapper_mock = Mock()
             wrapper_mock.get_host_name.return_value = host_name
             wrapper_mock.get_containers.return_value = containers
             wrapper_mock.get_stats.return_value = stats
             wrapper_mock.run_command.return_value = ''
             injector_mock = Mock()
             injector_mock.get_my_container_id.return_value = 'c1'
             collector = DockerCollector(wrapper_mock, injector_mock, 3,
                                         lambda x: events.append(x))
             collector.collect_stats_and_send()
             expected_metrics = [{
                 'metric': metric,
                 'properties': properties
             } for container in containers for metric in metrics]
             expectedEventsCount = len(containers) * len(metrics)
             self.assertEqual(expectedEventsCount, len(events))
             for sent_event in events:
                 self.assertIn(sent_event, expected_metrics)
Ejemplo n.º 13
0
    def test_old_container_is_removed_after_threshold(self):
        new_containers = [{'Id': 'c2', 'ikey': 'k2', 'unregistered': None}]
        current_containers = {
            'c1': {
                'Id': 'c1',
                'ikey': 'k1',
                'unregistered': time.time() - 70
            }
        }

        updated_containers = DockerCollector.remove_old_containers(
            current_containers, new_containers)

        self.assertTrue(len(updated_containers) == 0)
 def test_collect_and_send_dont_sends_only_metrics_on_the_sender_container_when_sdk_is_running(self):
     events = []
     properties = {'p1':'v1','p2':'v2'}
     metrics = ['m1','m2','m3']
     containers = [{'Id':'c1'}, {'Id':'c2'}, {'Id':'c3'}]
     stats = ['s1','s2','s3']
     host_name = 'host'
     with patch('appinsights.dockerconvertors.get_container_properties') as properties_mock:
         with patch('appinsights.dockerconvertors.convert_to_metrics') as to_metric_mock:
             properties_mock.return_value = properties
             to_metric_mock.return_value = metrics
             wrapper_mock = Mock(spec=DockerClientWrapper)
             wrapper_mock.get_host_name.return_value = host_name
             wrapper_mock.get_containers.return_value = containers
             wrapper_mock.get_stats.return_value = stats
             wrapper_mock.run_command.return_value = 'InstrumentationKey=ikey'
             injector_mock = Mock()
             injector_mock.get_my_container_id.return_value = 'c1'
             collector = DockerCollector(wrapper_mock, injector_mock,3, lambda x: events.append(x))
             collector.collect_stats_and_send()
             self.assertEqual(3, len(events))
             wrapper_mock.get_stats.call_with(container={'Id':'c1'})
             self.assertEqual(1, wrapper_mock.get_stats.call_count)
Ejemplo n.º 15
0
    def test_old_container_is_not_removed_immediately(self):
        new_containers = [{'Id': 'c2', 'ikey': 'k2', 'unregistered': None}]
        current_containers = {
            'c1': {
                'Id': 'c1',
                'ikey': 'k1',
                'unregistered': time.time()
            }
        }

        updated_containers = DockerCollector.remove_old_containers(
            current_containers, new_containers)

        self.assertEqual(current_containers['c1']['Id'],
                         updated_containers['c1']['Id'])