def test_send_ok(self, requests_post): requests_post.return_value = Mock(status_code=200) sender = StatsSender() self.assertEqual( sender.send_data_to_url( url=sender.build_collector_url("COLLECTOR_ACTION_LOGS_URL"), data={}), requests_post.return_value) requests_post.assert_called_once_with( sender.build_collector_url("COLLECTOR_ACTION_LOGS_URL"), headers={'content-type': 'application/json'}, data='{}', timeout=settings.COLLECTOR_RESP_TIMEOUT)
def test_send_ok(self, requests_post): requests_post.return_value = Mock(status_code=200) sender = StatsSender() self.assertEqual( sender.send_data_to_url( url=sender.build_collector_url("COLLECTOR_ACTION_LOGS_URL"), data={}), requests_post.return_value ) requests_post.assert_called_once_with( sender.build_collector_url("COLLECTOR_ACTION_LOGS_URL"), headers={'content-type': 'application/json'}, data='{}', timeout=settings.COLLECTOR_RESP_TIMEOUT)
def test_ping_ok(self, requests_get): requests_get.return_value = Mock(status_code=200) sender = StatsSender() self.assertTrue(sender.ping_collector()) requests_get.assert_called_once_with( sender.build_collector_url("COLLECTOR_PING_URL"), timeout=settings.COLLECTOR_RESP_TIMEOUT)
def test_send_failed_on_exception(self, log_error, requests_post): requests_post.side_effect = Exception("custom") sender = StatsSender() self.assertIsNone( sender.send_data_to_url( url=sender.build_collector_url("COLLECTOR_ACTION_LOGS_URL"), data={})) log_error.assert_called_once_with( "Sending data to collector failed: %s", "custom")
def test_send_failed_on_exception(self, log_error, requests_post): requests_post.side_effect = Exception("custom") sender = StatsSender() self.assertIsNone( sender.send_data_to_url( url=sender.build_collector_url("COLLECTOR_ACTION_LOGS_URL"), data={}) ) log_error.assert_called_once_with( "Sending data to collector failed: %s", "custom")
def test_send_failed_on_connection_error(self, log_error, requests_post): except_types = (urllib3.exceptions.DecodeError, urllib3.exceptions.ProxyError, requests.exceptions.ConnectionError, requests.exceptions.Timeout, requests.exceptions.TooManyRedirects) for except_ in except_types: requests_post.side_effect = except_() sender = StatsSender() self.assertIsNone( sender.send_data_to_url(url=sender.build_collector_url( "COLLECTOR_ACTION_LOGS_URL"), data={})) log_error.assert_called_with( "Sending data to collector failed: %s", type(except_()).__name__)
def test_send_failed_on_connection_error(self, log_error, requests_post): except_types = ( urllib3.exceptions.DecodeError, urllib3.exceptions.ProxyError, requests.exceptions.ConnectionError, requests.exceptions.Timeout, requests.exceptions.TooManyRedirects) for except_ in except_types: requests_post.side_effect = except_() sender = StatsSender() self.assertIsNone( sender.send_data_to_url( url=sender.build_collector_url( "COLLECTOR_ACTION_LOGS_URL"), data={}) ) log_error.assert_called_with( "Sending data to collector failed: %s", type(except_()).__name__)
def check_oswl_data_send_result(self, send_data_to_url, status, is_sent): # make yesterdays record (today's will not be sent) dt = datetime.datetime.utcnow() - datetime.timedelta(days=1) obj_data = { 'cluster_id': 1, 'resource_type': consts.OSWL_RESOURCE_TYPES.vm, 'created_date': dt.date(), 'updated_time': dt.time(), 'resource_checksum': "" } obj = OpenStackWorkloadStats.create(obj_data) self.assertEqual( OpenStackWorkloadStats.get_last_by( 1, consts.OSWL_RESOURCE_TYPES.vm), obj ) rec_id = obj.id self.assertEqual(obj.is_sent, False) # emulate the answer from requests.post() class response(object): status_code = 200 data = { "status": "ok", "text": "ok", "oswl_stats": [{ "master_node_uid": "", "id": rec_id, "status": status }] } def __getitem__(self, key): return self.data[key] @classmethod def json(cls): return cls.data send_data_to_url.return_value = response sender = StatsSender() sender.send_oswl_info() obj_data_sent = {'oswl_stats': [{ 'id': rec_id, 'cluster_id': 1, 'created_date': dt.date().isoformat(), 'updated_time': dt.time().isoformat(), 'resource_type': 'vm', 'resource_checksum': '', 'master_node_uid': None, 'resource_data': None, }]} send_data_to_url.assert_called_once_with( url=sender.build_collector_url("COLLECTOR_OSWL_INFO_URL"), data=obj_data_sent) obj = OpenStackWorkloadStats.get_last_by( 1, consts.OSWL_RESOURCE_TYPES.vm) self.assertEqual(obj.is_sent, is_sent) OpenStackWorkloadStats.delete(obj) send_data_to_url.reset_mock()
def check_oswl_data_send_result(self, send_data_to_url, status, is_sent): # make yesterdays record (today's will not be sent) dt = datetime.datetime.utcnow() - datetime.timedelta(days=1) obj_data = { 'cluster_id': 1, 'resource_type': consts.OSWL_RESOURCE_TYPES.vm, 'created_date': dt.date(), 'updated_time': dt.time(), 'resource_checksum': "" } obj = OpenStackWorkloadStats.create(obj_data) self.assertEqual( OpenStackWorkloadStats.get_last_by(1, consts.OSWL_RESOURCE_TYPES.vm), obj) rec_id = obj.id self.assertEqual(obj.is_sent, False) # emulate the answer from requests.post() class response(object): status_code = 200 data = { "status": "ok", "text": "ok", "oswl_stats": [{ "master_node_uid": "", "id": rec_id, "status": status }] } def __getitem__(self, key): return self.data[key] @classmethod def json(cls): return cls.data send_data_to_url.return_value = response sender = StatsSender() sender.send_oswl_info() obj_data_sent = { 'oswl_stats': [{ 'id': rec_id, 'cluster_id': 1, 'created_date': dt.date().isoformat(), 'updated_time': dt.time().isoformat(), 'resource_type': 'vm', 'resource_checksum': '', 'master_node_uid': None, 'resource_data': None, }] } send_data_to_url.assert_called_once_with( url=sender.build_collector_url("COLLECTOR_OSWL_INFO_URL"), data=obj_data_sent) obj = OpenStackWorkloadStats.get_last_by(1, consts.OSWL_RESOURCE_TYPES.vm) self.assertEqual(obj.is_sent, is_sent) OpenStackWorkloadStats.delete(obj) send_data_to_url.reset_mock()