Esempio n. 1
0
    def test_gather_sample_200_success_long_body_is_truncated(self):
        url = "http://%s:%s/200_long" % (
            self.mock_http_server_thread.host,
            self.mock_http_server_thread.port,
        )

        monitor_config = {
            "module": "shell_monitor",
            "url": url,
            "request_method": "GET",
            "max_characters": 10,
        }
        mock_logger = mock.Mock()
        monitor = UrlMonitor(monitor_config, mock_logger)

        monitor.gather_sample()
        call_args_list = mock_logger.emit_value.call_args_list[0]
        call_args = call_args_list[0]
        call_kwargs = call_args_list[1]

        self.assertEqual(mock_logger.error.call_count, 0)
        self.assertEqual(call_args[0], "response")
        self.assertEqual(call_args[1], "a" * 10 + "...")
        self.assertEqual(call_kwargs["extra_fields"]["url"], url)
        self.assertEqual(call_kwargs["extra_fields"]["status"], 200)
        self.assertEqual(call_kwargs["extra_fields"]["request_method"], "GET")
Esempio n. 2
0
    def test_get_request_no_headers(self):
        mock_logger = mock.MagicMock()
        config_data = {
            'url': 'fooUrl',
            'request_method': 'GET',
            'request_data': None,
            'request_headers': [],
            'module': self.module
        }
        config = MonitorConfig(content=config_data)
        url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger)

        actual_request = url_monitor.build_request()
        self.assertEqual(actual_request.get_method(), 'GET')
        self.assertFalse(actual_request.has_data())
        self.assertEqual(actual_request.header_items(), [])
Esempio n. 3
0
    def test_get_request_no_headers(self):
        mock_logger = mock.MagicMock()
        config_data = {
            "url": "http://fooUrl",
            "request_method": "GET",
            "request_data": None,
            "request_headers": [],
            "module": self.module,
        }
        config = MonitorConfig(content=config_data)
        url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger)

        actual_request = url_monitor.build_request()
        self.assertEqual(actual_request.get_method(), "GET")
        self.assertFalse(actual_request.data is not None)
        self.assertEqual(actual_request.header_items(), [])
Esempio n. 4
0
    def test_get_request_no_headers(self):
        mock_logger = mock.MagicMock()
        config_data = {
            'url': 'fooUrl',
            'request_method': 'GET',
            'request_data': None,
            'request_headers': [],
            'module': self.module
        }
        config = MonitorConfig(content=config_data)
        url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger)

        actual_request = url_monitor.build_request()
        self.assertEqual(actual_request.get_method(), 'GET')
        self.assertFalse(actual_request.has_data())
        self.assertEqual(actual_request.header_items(), [])
Esempio n. 5
0
    def test_post_request_with_data(self):
        mock_logger = mock.MagicMock()
        config_data = {
            'url': 'fooUrl',
            'request_method': 'POST',
            'request_data': '{fakejsonthatisnotlegit}',
            'request_headers': self.legit_headers,
            'module': self.module
        }

        config = MonitorConfig(content=config_data)
        url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger)
        actual_request = url_monitor.build_request()
        self.assertEqual(actual_request.get_method(), 'POST')
        self.assertEqual(actual_request.data, '{fakejsonthatisnotlegit}')
        self.assertEqual(actual_request.header_items(),
                         [('Header_foo', 'foo'), ('Header_bar', 'bar')])
Esempio n. 6
0
 def test_get_request_with_headers(self):
     mock_logger = mock.MagicMock()
     config_data = {
         "url": "http://fooUrl",
         "request_method": "GET",
         "request_data": None,
         "request_headers": self.legit_headers,
         "module": self.module,
     }
     config = MonitorConfig(content=config_data)
     url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger)
     actual_request = url_monitor.build_request()
     self.assertEqual(actual_request.get_method(), "GET")
     self.assertFalse(actual_request.data is not None)
     self.assertEqual(
         sorted(actual_request.header_items()),
         sorted([("Header_foo", "foo"), ("Header_bar", "bar")]),
     )
Esempio n. 7
0
    def test_post_request_with_data(self):
        mock_logger = mock.MagicMock()
        config_data = {
            'url': 'fooUrl',
            'request_method': 'POST',
            'request_data': '{fakejsonthatisnotlegit}',
            'request_headers': self.legit_headers,
            'module': self.module
        }

        config = MonitorConfig(content=config_data)
        url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger)
        actual_request = url_monitor.build_request()
        self.assertEqual(actual_request.get_method(), 'POST')
        self.assertEqual(actual_request.data, '{fakejsonthatisnotlegit}')
        self.assertEqual(
            actual_request.header_items(),
            [('Header_foo', 'foo'), ('Header_bar', 'bar')]
        )
Esempio n. 8
0
    def test_post_request_with_data(self):
        mock_logger = mock.MagicMock()
        config_data = {
            "url": "fooUrl",
            "request_method": "POST",
            "request_data": "{fakejsonthatisnotlegit}",
            "request_headers": self.legit_headers,
            "module": self.module,
        }

        config = MonitorConfig(content=config_data)
        url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger)
        actual_request = url_monitor.build_request()
        self.assertEqual(actual_request.get_method(), "POST")
        self.assertEqual(actual_request.data, "{fakejsonthatisnotlegit}")
        self.assertEqual(
            actual_request.header_items(),
            [("Header_foo", "foo"), ("Header_bar", "bar")],
        )
Esempio n. 9
0
    def test_gather_sample(self):
        monitor_config = {
            "module": "shell_monitor",
            "url": "https://www.scalyr.com",
            "request_method": "GET",
            "max_characters": 100,
        }
        mock_logger = mock.Mock()
        monitor = UrlMonitor(monitor_config, mock_logger)

        monitor.gather_sample()
        call_args_list = mock_logger.emit_value.call_args_list[0]
        call_args = call_args_list[0]
        call_kwargs = call_args_list[1]

        self.assertEqual(call_args[0], "response")
        self.assertTrue(len(call_args[1]) >= 10)
        self.assertEqual(call_kwargs["extra_fields"]["url"],
                         "https://www.scalyr.com")
        self.assertEqual(call_kwargs["extra_fields"]["status"], 200)
        self.assertEqual(call_kwargs["extra_fields"]["request_method"], "GET")
Esempio n. 10
0
    def test_gather_sample_200_success_multiline(self):
        url = "http://%s:%s/200_multiline" % (
            self.mock_http_server_thread.host,
            self.mock_http_server_thread.port,
        )

        # log_all_lines=False (only first line should be logged)
        monitor_config = {
            "module": "shell_monitor",
            "url": url,
            "request_method": "GET",
            "max_characters": 100,
        }
        mock_logger = mock.Mock()
        monitor = UrlMonitor(monitor_config, mock_logger)

        monitor.gather_sample()
        call_args_list = mock_logger.emit_value.call_args_list[0]
        call_args = call_args_list[0]
        call_kwargs = call_args_list[1]

        self.assertEqual(mock_logger.error.call_count, 0)
        self.assertEqual(call_args[0], "response")
        self.assertEqual(call_args[1], "line 1")
        self.assertEqual(call_kwargs["extra_fields"]["url"], url)
        self.assertEqual(call_kwargs["extra_fields"]["status"], 200)
        self.assertEqual(call_kwargs["extra_fields"]["request_method"], "GET")

        # log_all_lines=True (all lines should be logged)
        monitor_config = {
            "module": "shell_monitor",
            "url": url,
            "request_method": "GET",
            "max_characters": 100,
            "log_all_lines": True,
        }
        mock_logger = mock.Mock()
        monitor = UrlMonitor(monitor_config, mock_logger)

        monitor.gather_sample()
        call_args_list = mock_logger.emit_value.call_args_list[0]
        call_args = call_args_list[0]
        call_kwargs = call_args_list[1]

        self.assertEqual(mock_logger.error.call_count, 0)
        self.assertEqual(call_args[0], "response")
        self.assertEqual(call_args[1], "line 1\nline 2\nline 3")
        self.assertEqual(call_kwargs["extra_fields"]["url"], url)
        self.assertEqual(call_kwargs["extra_fields"]["status"], 200)
        self.assertEqual(call_kwargs["extra_fields"]["request_method"], "GET")
Esempio n. 11
0
    def test_malformed_headers(self):
        mock_logger = mock.MagicMock()
        config_data = {
            'url': 'fooUrl',
            'request_method': 'POST',
            'request_data': '{fakejsonthatisnotlegit}',
            'request_headers': 'not legit headers',
            'module': self.module
        }

        config = MonitorConfig(content=config_data)
        with self.assertRaises(Exception):
            _ = UrlMonitor(monitor_config=config, logger=mock_logger)
Esempio n. 12
0
    def test_malformed_headers(self):
        mock_logger = mock.MagicMock()
        config_data = {
            "url": "fooUrl",
            "request_method": "POST",
            "request_data": "{fakejsonthatisnotlegit}",
            "request_headers": "not legit headers",
            "module": self.module,
        }

        config = MonitorConfig(content=config_data)
        self.assertRaises(
            Exception,
            lambda: UrlMonitor(monitor_config=config, logger=mock_logger))