diff --git a/signalfx/ingest.py b/signalfx/ingest.py index 08f32ed..9411939 100644 --- a/signalfx/ingest.py +++ b/signalfx/ingest.py @@ -6,7 +6,7 @@ import logging import pprint import requests -from requests.exceptions import ConnectionError +from requests.exceptions import ConnectionError, HTTPError import six from six.moves import queue import threading @@ -57,6 +57,7 @@ def __init__(self, token, endpoint=DEFAULT_INGEST_ENDPOINT, self._compress = compress self._extra_dimensions = {} + self._response = None self._queue = queue.Queue() self._thread_running = False @@ -183,7 +184,7 @@ def send_event(self, event_type, category=None, dimensions=None, self._add_extra_dimensions(data) return self._send_event(event_data=data, url='{0}/{1}'.format( self._endpoint, self._INGEST_ENDPOINT_EVENT_SUFFIX), - session=self._session) + session=self._session) def _send_event(self, event_data=None, url=None, session=None): raise NotImplementedError('Subclasses should implement this!') @@ -272,18 +273,20 @@ def _post(self, data, url, session=None, timeout=None): uncompressed_bytes, len(data)) try: - response = session.post(url, data=data, timeout=timeout) + self._response = session.post(url, data=data, timeout=timeout) except ConnectionError: if session is self._session: _logger.debug('Connection error attempting reconnect') self._reconnect() session = self._session - response = session.post(url, data=data, timeout=timeout) + self._response = session.post(url, data=data, timeout=timeout) else: raise - _logger.debug('Sending to SignalFx %s (%d %s)', - 'succeeded' if response.ok else 'failed', - response.status_code, response.text) + try: + self._response.raise_for_status() + except HTTPError as e: + logging.error(e) + return False class ProtoBufSignalFxIngestClient(_BaseSignalFxIngestClient): diff --git a/tests/test_data_reporting.py b/tests/test_data_reporting.py index bcac0ec..4f31c57 100644 --- a/tests/test_data_reporting.py +++ b/tests/test_data_reporting.py @@ -7,9 +7,16 @@ import sys import signalfx import time +import argparse +parser = argparse.ArgumentParser() +parser.add_argument("--token", choices=["valid", "invalid"], default="valid", type=str, help="Provider Name") +args = parser.parse_args() -MY_TOKEN = os.environ['SIGNALFX_API_TOKEN'] +if args.token == "invalid": + MY_TOKEN = "123-12345678-123456789" +else: + MY_TOKEN = os.environ['SIGNALFX_API_TOKEN'] sfx = signalfx.SignalFx().ingest(MY_TOKEN) logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) @@ -44,7 +51,7 @@ # Sending events sfx.send_event( - event_type='deployments', + event_type='deployments_test', category='USER_DEFINED', dimensions={ 'host': 'myhost',