diff --git a/netuitive/client.py b/netuitive/client.py index 429f969..bb8bb14 100644 --- a/netuitive/client.py +++ b/netuitive/client.py @@ -42,8 +42,6 @@ def __init__(self, url='https://api.app.netuitive.com/ingest', uri=urlparse(url)) self.eventurl = self.dataurl.replace('/ingest/', '/ingest/events/', 1) self.agent = agent - self.max_metrics = 10000 - self.element_dict = {} self.disabled = False self.kill_codes = [410, 418] self.post_error_count = 0 @@ -66,46 +64,22 @@ def post(self, element): if element.id is None: raise Exception('element id is not set') - if element.id not in self.element_dict: - self.element_dict[element.id] = [] + payload = json.dumps( + [element], default=lambda o: o.__dict__, sort_keys=True) + logging.debug(payload) - for m in element.metrics: - if m.id not in self.element_dict[element.id]: - self.element_dict[element.id].append(m.id) - - metric_count = len(self.element_dict[element.id]) - - if metric_count <= self.max_metrics: - - payload = json.dumps( - [element], default=lambda o: o.__dict__, sort_keys=True) - logging.debug(payload) - - headers = {'Content-Type': 'application/json', - 'User-Agent': self.agent} - request = urllib2.Request( - self.dataurl, data=payload, headers=headers) - resp = urllib2.urlopen(request) - logging.debug("Response code: %d", resp.getcode()) - - resp.close() - - self.post_error_count = 0 - - return(True) - - else: + headers = {'Content-Type': 'application/json', + 'User-Agent': self.agent} + request = urllib2.Request( + self.dataurl, data=payload, headers=headers) + resp = urllib2.urlopen(request) + logging.debug("Response code: %d", resp.getcode()) - errmsg = ('the {0} element has {1} metrics. ' - 'the max is {2} metrics.'.format( - element.id, metric_count, self.max_metrics)) + resp.close() - logging.debug('{0} has the following metrics: {1}'.format( - element.id, - json.dumps(self.element_dict[element.id]))) + self.post_error_count = 0 - logging.error(errmsg) - raise Exception(errmsg) + return(True) except urllib2.HTTPError as e: logging.debug("Response code: %d", e.code) diff --git a/tests/test_netuitive_client.py b/tests/test_netuitive_client.py index 1cc962c..86eedac 100755 --- a/tests/test_netuitive_client.py +++ b/tests/test_netuitive_client.py @@ -32,7 +32,6 @@ except ImportError: import urllib2 - def getFixtureDirPath(): path = os.path.join( os.path.dirname('tests/'), @@ -177,47 +176,6 @@ def test_failure_general(self, mock_logging, mock_post): self.assertEqual(mock_logging.exception.call_args_list[0][0][ 0], 'error posting payload to api ingest endpoint (%s): %s') - @mock.patch('netuitive.client.urllib2.urlopen') - @mock.patch('netuitive.client.logging') - def test_too_many_metrics(self, mock_logging, mock_post): - - mock_post.return_value = MockResponse(code=202) - # test infrastructure endpoint url creation - a = netuitive.Client(api_key='apikey') - a.max_metrics = 100 - - e = netuitive.Element() - - for i in range(101): - e.add_sample( - 'metric-' + str(i), 1434110794, 1, 'COUNTER', host='hostname') - - resp = a.post(e) - - self.assertNotEqual(resp, True) - - self.assertEqual(mock_logging.exception.call_args_list[0][0][ - 0], 'error posting payload to api ingest endpoint (%s): %s') - - @mock.patch('netuitive.client.urllib2.urlopen') - def test_just_enough_metrics(self, mock_post): - - mock_post.return_value = MockResponse(code=202) - # test infrastructure endpoint url creation - a = netuitive.Client(api_key='apikey') - a.max_metrics = 100 - - e = netuitive.Element() - - e.clear_samples() - for i in range(100): - e.add_sample( - 'metric-' + str(i), 1434110794, 1, 'COUNTER', host='hostname') - - resp = a.post(e) - - self.assertEqual(resp, True) - @mock.patch('netuitive.client.urllib2.urlopen') @mock.patch('netuitive.client.logging') def test_null_element_id(self, mock_logging, mock_post):