def test_tags_limit_indirect(mock_post): """ Test for failure when too many tags are used indirectly (when combined with global tags) """ gtags_list = [ "gtk-%d:gtv-%d" % (i, i) for i in range(apptuit_client.MAX_TAGS_LIMIT // 2 + 1) ] global_tags = ",".join(gtags_list) tags = { 'tagk-%d' % i: 'tagv-%d' % i for i in range(apptuit_client.MAX_TAGS_LIMIT // 2 + 1) } timestamp = int(time.time()) with patch.dict(os.environ, {APPTUIT_PY_TAGS: global_tags}): client = Apptuit(sanitize_mode=None, token="test_token") point1 = DataPoint("metric1", {"tagk1": "tagv1"}, timestamp, 3.14) point2 = DataPoint("metric1", tags, timestamp, 3.14) with assert_raises(ValueError): client.send([point1, point2]) with patch.dict(os.environ, {APPTUIT_PY_TAGS: global_tags}): client = Apptuit(sanitize_mode=None, token="test_token") series1 = TimeSeries('metric1', {"tagk1": "tagv1"}) series1.add_point(timestamp, 3.14) series2 = TimeSeries('metric1', tags) series2.add_point(timestamp, 3.14) with assert_raises(ValueError): client.send_timeseries([series1, series2])
def test_invalid_chars_in_tag_keys(): """ Test for invalid character in tag keys """ metric_name = "node.load_avg.1m" tags = { "ho\\st": "localhost", "region": "us-east-1", "service": "web-server" } ts = int(time.time()) client = Apptuit(sanitize_mode=None, token="test") with assert_raises(ValueError) as ex: dp = DataPoint(metric=metric_name, tags=tags, timestamp=ts, value=random.random()) client.send([dp]) with assert_raises(AttributeError) as ex: dp = DataPoint(metric=metric_name, tags="error", timestamp=ts, value=random.random()) client.send([dp]) dp = DataPoint(metric=metric_name, tags=None, timestamp=ts, value=random.random()) assert_equals(dp.tags, None)
def test_tags_not_dict(): """ Test to validate that only dict type values are expected for tags """ metric_name = "node.load_avg.1m" tags = [ "host", "localhost", "region", "us-east-1", "service", "web-server" ] ts = int(time.time()) client = Apptuit(sanitize_mode=None, token="test") with assert_raises(AttributeError) as ex: dp = DataPoint(metric=metric_name, tags=tags, timestamp=ts, value=random.random()) client.send([dp])
def test_invalid_metric_name(): """ Test for invalid character in metric name """ metric_name = "node.load+avg.1m" tags = { "host": "localhost", "region": "us-east-1", "service": "web-server" } ts = int(time.time()) client = Apptuit(sanitize_mode=None, token="test") with assert_raises(ValueError) as ex: dp = DataPoint(metric=metric_name, tags=tags, timestamp=ts, value=random.random()) client.send([dp])
def test_tags_limit_direct(mock_post): """ Test for failure when too many tags are used for datapoints/series """ tags = { 'tagk-%d' % i: 'tagv-%d' % i for i in range(apptuit_client.MAX_TAGS_LIMIT + 1) } timestamp = int(time.time()) client = Apptuit(sanitize_mode=None, token="test_token") point1 = DataPoint("metric1", {"tagk1": "tagv1"}, timestamp, 3.14) point2 = DataPoint("metric1", tags, timestamp, 3.14) with assert_raises(ValueError): client.send([point1, point2]) series1 = TimeSeries('metric1', {"tagk1": "tagv1"}) series1.add_point(timestamp, 3.14) series2 = TimeSeries('metric1', tags) series2.add_point(timestamp, 3.14) with assert_raises(ValueError): client.send_timeseries([series1, series2])