def test_run_ping_tests_with_success(self: InternetStatusTest, mock_response: patch, mock_logger: Logger) -> None: mock_response.side_effect = [GOOGLE_SUCCESSFUL_RESPONSE] self.internet_status.run_ping_tests() self.assertEqual(mock_logger.call_count, 0)
def test_parse_ping_response_with_local_router_error( self: PingTest, mock_ping_host: patch, mock_logger: patch) -> None: mock_ping_host.return_value = LOCAL_ROUTER_ISSUE_RESPONSE parsed_ping_dict = self.ping.ping_host_and_return_parsed_response( LOCAL_ROUTER_HOST) expected_parsed_ping_dict = { 'host': '192.168.86.1', 'able_to_resolve_host': False, 'error': LOCAL_ROUTER_ERROR } self.assertEqual(parsed_ping_dict, expected_parsed_ping_dict)
def test_parse_ping_response_unable_to_resolve_host( self: PingTest, mock_ping_host: patch, mock_logger: patch) -> None: mock_ping_host.return_value = UNABLE_TO_RESOLVE_HOST_RESPONSE parsed_ping_dict = self.ping.ping_host_and_return_parsed_response( GOOGLE_HOST) expected_parsed_ping_dict = { 'host': 'www.google.com', 'able_to_resolve_host': False, 'error': RESOLVE_HOST_ERROR } self.assertEqual(parsed_ping_dict, expected_parsed_ping_dict)
def test_run_ping_tests_with_multiple_error_types( self: InternetStatusTest, mock_response: patch, mock_logger: Logger) -> None: # Check first host is most severe mock_response.side_effect = [ GOOGLE_UNABLE_TO_RESOLVE_HOST_RESPONSE, APPLE_ROUND_TRIP_TIME_ERROR_RESPONSE, LOCAL_ROUTER_SUCCESSFUL_RESPONSE ] self.internet_status.run_ping_tests() self.assertEqual(mock_logger.call_count, 1) args, _ = mock_logger.call_args_list[0] args = args[1] self.assertIn(RESOLVE_HOST_ERROR, args) # Check second host is most severe mock_response.side_effect = [ GOOGLE_ROUND_TRIP_TIME_ERROR_RESPONSE, APPLE_PACKET_LOSS_RESPONSE, LOCAL_ROUTER_SUCCESSFUL_RESPONSE ] self.internet_status.run_ping_tests() self.assertEqual(mock_logger.call_count, 2) args, _ = mock_logger.call_args_list[1] args = args[1] self.assertIn(PACKET_LOSS_ERROR, args) # Check local router is most severe mock_response.side_effect = [ GOOGLE_UNABLE_TO_RESOLVE_HOST_RESPONSE, APPLE_ROUND_TRIP_TIME_ERROR_RESPONSE, COMMAND_EXIT_ISSUE_RESPONSE ] self.internet_status.run_ping_tests() self.assertEqual(mock_logger.call_count, 3) args, _ = mock_logger.call_args_list[2] args = args[1] self.assertIn(LOCAL_ROUTER_ERROR, args)
def test_run_ping_tests_with_resolve_host_error( self: InternetStatusTest, mock_response: patch, mock_logger: Logger) -> None: mock_response.side_effect = [ GOOGLE_UNABLE_TO_RESOLVE_HOST_RESPONSE, APPLE_UNABLE_TO_RESOLVE_HOST_RESPONSE, LOCAL_ROUTER_SUCCESSFUL_RESPONSE ] self.internet_status.run_ping_tests() self.assertEqual(mock_logger.call_count, 1) args, _ = mock_logger.call_args_list[0] self.assertIn(RESOLVE_HOST_ERROR, args)
def test_run_ping_tests_with_local_router_error( self: InternetStatusTest, mock_response: patch, mock_logger: Logger) -> None: mock_response.side_effect = [ COMMAND_EXIT_ISSUE_RESPONSE, COMMAND_EXIT_ISSUE_RESPONSE, COMMAND_EXIT_ISSUE_RESPONSE, ] self.internet_status.run_ping_tests() self.assertEqual(mock_logger.call_count, 1) args, _ = mock_logger.call_args_list[0] self.assertIn(LOCAL_ROUTER_ERROR, args)
def test_run_ping_tests_with_packet_loss_error( self: InternetStatusTest, mock_response: patch, mock_logger: Logger) -> None: mock_response.side_effect = [ GOOGLE_PACKET_LOSS_RESPONSE, APPLE_PACKET_LOSS_RESPONSE, LOCAL_ROUTER_SUCCESSFUL_RESPONSE ] self.internet_status.run_ping_tests() self.assertEqual(mock_logger.call_count, 1) args, _ = mock_logger.call_args_list[0] args = args[1] self.assertIn(PACKET_LOSS_ERROR, args) self.assertIn(str(90.0), args)
def test_run_ping_tests_with_round_trip_time_error( self: InternetStatusTest, mock_response: patch, mock_logger: Logger) -> None: mock_response.side_effect = [ GOOGLE_ROUND_TRIP_TIME_ERROR_RESPONSE, APPLE_ROUND_TRIP_TIME_ERROR_RESPONSE, LOCAL_ROUTER_SUCCESSFUL_RESPONSE ] self.internet_status.run_ping_tests() self.assertEqual(mock_logger.call_count, 1) args, _ = mock_logger.call_args_list[0] args = args[1] self.assertIn(ROUND_TRIP_TIME_ERROR, args) self.assertIn(str(100.0), args)
def test_parse_ping_response_with_received_errors( self: PingTest, mock_ping_host: patch, mock_logger: patch) -> None: mock_ping_host.return_value = RECEIVED_ERRORS_RESPONSE parsed_ping_dict = self.ping.ping_host_and_return_parsed_response( GOOGLE_HOST) expected_parsed_ping_dict = { 'host': 'www.google.com', 'num_packets_sent': 50, 'packet_loss_percent': 40.0, 'max_round_trip_time': 25.651, 'average_round_trip_time': 15.753, 'able_to_resolve_host': True, 'error': PACKET_LOSS_ERROR } self.assertEqual(parsed_ping_dict, expected_parsed_ping_dict)
def test_parse_ping_response_success(self: PingTest, mock_ping_host: patch, mock_logger: patch) -> None: mock_ping_host.return_value = SUCCESSFUL_RESPONSE parsed_ping_dict = \ self.ping.ping_host_and_return_parsed_response(GOOGLE_HOST) expected_parsed_ping_dict = { 'host': 'www.google.com', 'num_packets_sent': 10, 'packet_loss_percent': 0.0, 'max_round_trip_time': 30.101, 'average_round_trip_time': 21.855, 'able_to_resolve_host': True, 'error': '' } self.assertEqual(parsed_ping_dict, expected_parsed_ping_dict)
def test_parse_ping_response_with_packet_loss(self: PingTest, mock_ping_host: patch, mock_logger: patch) -> None: mock_ping_host.return_value = PACKET_LOSS_RESPONSE parsed_ping_dict = \ self.ping.ping_host_and_return_parsed_response(GOOGLE_HOST) expected_parsed_ping_dict = { 'host': 'www.google.com', 'num_packets_sent': 8, 'packet_loss_percent': 87.5, 'max_round_trip_time': 38.466, 'average_round_trip_time': 38.466, 'able_to_resolve_host': True, 'error': PACKET_LOSS_ERROR } self.assertEqual(parsed_ping_dict, expected_parsed_ping_dict)
def test_parse_log(self: LogParserTest, mock_get_log_file_string: patch) -> None: mock_get_log_file_string.return_value = fake_internet_status_log internet_status_summary = self.log_parser.run_parser() expected_summary = { '05/21/20': { 'packet_loss': 34, 'round_trip_time': 1, 'modem_down': 17, 'router_down': 1 }, '05/22/20': { 'packet_loss': 3, 'round_trip_time': 4, 'modem_down': 2, 'router_down': 1 } } self.assertEqual(expected_summary, internet_status_summary)