def test_gather_data(self): upstream = NginxUpstreamObject(local_name="trac-backend", parent_local_id="nginx123", root_uuid="root123") upstream.plus_status_internal_url_cache = "test_status" # Get the upstream collector upstream_collector = upstream.collectors[-1] context.plus_cache.put( "test_status", ( { "upstreams": { "trac-backend": { "peers": [ { "id": 0, "server": "10.0.0.1:8080", "backup": False, "weight": 1, "state": "up", "active": 0, "requests": 50411, "responses": { "1xx": 0, "2xx": 49034, "3xx": 507, "4xx": 864, "5xx": 6, "total": 50411, }, "sent": 22594151, "received": 2705341138, "fails": 0, "unavail": 0, "health_checks": {"checks": 22161, "fails": 0, "unhealthy": 0, "last_passed": True}, "downtime": 0, "downstart": 0, "selected": 1456184367000, } ] } } }, 1, ), ) data = upstream_collector.gather_data() assert_that(data, not_(equal_to([]))) assert_that(data, has_length(1))
def test_gather_data(self): upstream = NginxUpstreamObject(local_name='trac-backend', parent_local_id='nginx123', root_uuid='root123') upstream.plus_status_internal_url_cache = 'test_status' # Get the upstream collector upstream_collector = upstream.collectors[-1] context.plus_cache.put('test_status', ({ "upstreams": { "trac-backend": { "peers": [{ "id": 0, "server": "10.0.0.1:8080", "backup": False, "weight": 1, "state": "up", "active": 0, "requests": 50411, "responses": { "1xx": 0, "2xx": 49034, "3xx": 507, "4xx": 864, "5xx": 6, "total": 50411 }, "sent": 22594151, "received": 2705341138, "fails": 0, "unavail": 0, "health_checks": { "checks": 22161, "fails": 0, "unhealthy": 0, "last_passed": True }, "downtime": 0, "downstart": 0, "selected": 1456184367000 }] } } }, 1)) data = upstream_collector.gather_data() assert_that(data, not_(equal_to([]))) assert_that(data, has_length(1))
def test_upstream_peer_count(self): upstream = NginxUpstreamObject(local_name="trac-backend", parent_local_id="nginx123", root_uuid="root123") upstream.plus_status_internal_url_cache = "test_status" upstream_collector = upstream.collectors[-1] assert_that(upstream_collector.last_collect, equal_to(None)) test_peer = { "id": 0, "server": "10.0.0.1:8080", "backup": False, "weight": 1, "state": "up", "active": 0, "requests": 0, "responses": {"1xx": 100, "2xx": 200, "3xx": 300, "4xx": 400, "5xx": 500, "total": 1500}, "sent": 0, "received": 0, "fails": 0, "unavail": 0, "health_checks": {"checks": 0, "fails": 0, "unhealthy": 0, "last_passed": True}, "downtime": 0, "downstart": 0, "selected": 1456184367000, } gauges = upstream.statsd.current["gauge"] # drop data with two different peer counts into the plus_cache, then collect the data context.plus_cache.put("test_status", ({"upstreams": {"trac-backend": {"peers": [test_peer] * 1}}}, 3)) context.plus_cache.put("test_status", ({"upstreams": {"trac-backend": {"peers": [test_peer] * 2}}}, 14)) upstream_collector.collect() assert_that(gauges["plus.upstream.peer.count"], equal_to([(14, 2)])) # shows that the metric works even if the plus_cache data has been collected before context.plus_cache.put("test_status", ({"upstreams": {"trac-backend": {"peers": [test_peer] * 4}}}, 16)) context.plus_cache.put("test_status", ({"upstreams": {"trac-backend": {"peers": [test_peer] * 2}}}, 20)) context.plus_cache.put("test_status", ({"upstreams": {"trac-backend": {"peers": [test_peer] * 8}}}, 99)) upstream_collector.collect() assert_that(gauges["plus.upstream.peer.count"], equal_to([(99, 8)])) # shows that only peers with state == 'up' count towards upstream.peer.count test_peer["state"] = "down" context.plus_cache.put("test_status", ({"upstreams": {"trac-backend": {"peers": [test_peer] * 5}}}, 110)) upstream_collector.collect() assert_that(gauges["plus.upstream.peer.count"], equal_to([(99, 8)])) # doesn't change because state is 'down' test_peer["state"] = "up" context.plus_cache.put("test_status", ({"upstreams": {"trac-backend": {"peers": [test_peer] * 2}}}, 120)) upstream_collector.collect() assert_that(gauges["plus.upstream.peer.count"], equal_to([(120, 2)]))
def test_collect_complete_old_plus(self): upstream = NginxUpstreamObject(local_name='secretupstream', parent_local_id='nginx123', root_uuid='root123') upstream.plus_status_internal_url_cache = 'test_status' # Get the upstream collector upstream_collector = upstream.collectors[-1] assert_that(upstream_collector.last_collect, equal_to(None)) context.plus_cache.put('test_status', ({ u'processes': { u'respawned': 0 }, u'version': 5, u'upstreams': { u'secretupstream': [{ u'received': 0, u'fails': 0, u'responses': { u'5xx': 0, u'2xx': 0, u'4xx': 0, u'3xx': 0, u'1xx': 0, u'total': 0 }, u'weight': 1, u'selected': 0, u'server': u'127.0.0.1:9999', u'state': u'up', u'health_checks': { u'fails': 0, u'checks': 0, u'unhealthy': 0 }, u'unavail': 0, u'downtime': 0, u'active': 0, u'downstart': 0, u'requests': 0, u'backup': False, u'id': 0, u'sent': 0 }, { u'received': 0, u'fails': 0, u'responses': { u'5xx': 0, u'2xx': 0, u'4xx': 0, u'3xx': 0, u'1xx': 0, u'total': 0 }, u'weight': 1, u'selected': 0, u'server': u'104.236.93.23:80', u'state': u'up', u'health_checks': { u'fails': 0, u'checks': 0, u'unhealthy': 0 }, u'unavail': 0, u'downtime': 0, u'active': 0, u'downstart': 0, u'requests': 0, u'backup': False, u'id': 1, u'sent': 0 }] }, u'generation': 1, u'timestamp': 1474466062499, u'connections': { u'active': 1, u'idle': 2, u'accepted': 3163, u'dropped': 0 }, u'load_timestamp': 1473999906889, u'address': u'127.0.0.1', u'requests': { u'current': 1, u'total': 27850 }, u'caches': {}, u'nginx_version': u'1.7.11', u'server_zones': {} }, 1)) upstream_collector.collect() assert_that(upstream_collector.last_collect, equal_to(1)) assert_that(upstream.statsd.current, not_(has_length(0))) assert_that(upstream.statsd.current, not_( has_key('counter'))) # Counters need two data values to compute # difference assert_that(upstream.statsd.current, has_key('gauge')) gauges = upstream.statsd.current['gauge'] for key in ( 'plus.upstream.conn.active', 'plus.upstream.peer.count', ): assert_that(gauges, has_key(key)) # old plus doesn't have these metrics for key in ('plus.upstream.zombies', 'plus.upstream.conn.keepalive'): assert_that(gauges, not_(has_key(key))) assert_that(gauges['plus.upstream.conn.active'][0][1], equal_to(0)) assert_that(gauges['plus.upstream.peer.count'][0][1], equal_to(2))
def test_collect(self): upstream = NginxUpstreamObject(local_name='trac-backend', parent_local_id='nginx123', root_uuid='root123') upstream.plus_status_internal_url_cache = 'test_status' # Get the upstream collector upstream_collector = upstream.collectors[-1] assert_that(upstream_collector.last_collect, equal_to(None)) context.plus_cache.put('test_status', ({ "upstreams": { "trac-backend": { "peers": [{ "id": 0, "server": "10.0.0.1:8080", "backup": False, "weight": 1, "state": "up", "active": 0, "requests": 0, "responses": { "1xx": 0, "2xx": 0, "3xx": 0, "4xx": 0, "5xx": 0, "total": 0 }, "sent": 0, "received": 0, "fails": 0, "unavail": 0, "health_checks": { "checks": 0, "fails": 0, "unhealthy": 0, "last_passed": True }, "downtime": 0, "downstart": 0, "selected": 1456184367000 }] } } }, 1)) context.plus_cache.put('test_status', ({ "upstreams": { "trac-backend": { "peers": [{ "id": 0, "server": "10.0.0.1:8080", "backup": False, "weight": 1, "state": "up", "active": 0, "requests": 50411, "responses": { "1xx": 0, "2xx": 49034, "3xx": 507, "4xx": 864, "5xx": 6, "total": 50411 }, "sent": 22594151, "received": 2705341138, "fails": 0, "unavail": 0, "health_checks": { "checks": 22161, "fails": 0, "unhealthy": 0, "last_passed": True }, "downtime": 0, "downstart": 0, "selected": 1456184367000 }, { "id": 0, "server": "10.0.0.1:8080", "backup": False, "weight": 1, "state": "up", "active": 0, "requests": 50412, "responses": { "1xx": 0, "2xx": 49034, "3xx": 507, "4xx": 864, "5xx": 6, "total": 50411 }, "sent": 22594151, "received": 2705341138, "fails": 0, "unavail": 0, "health_checks": { "checks": 22160, "fails": 0, "unhealthy": 0, "last_passed": True }, "downtime": 0, "downstart": 0, "selected": 1456184367000 }] } } }, 2)) upstream_collector.collect() assert_that(upstream_collector.last_collect, equal_to(2)) assert_that(upstream.statsd.current, not_(has_length(0))) assert_that(upstream.statsd.current, has_key('counter')) counters = upstream.statsd.current['counter'] for key in ('plus.upstream.fails.count', 'plus.upstream.bytes_sent', 'plus.upstream.bytes_rcvd', 'plus.upstream.status.1xx', 'plus.upstream.status.5xx', 'plus.upstream.health.fails', 'plus.upstream.status.2xx', 'plus.upstream.health.unhealthy', 'plus.upstream.request.count', 'plus.upstream.health.checks', 'plus.upstream.response.count', 'plus.upstream.unavail.count', 'plus.upstream.status.3xx', 'plus.upstream.status.4xx'): assert_that(counters, has_key(key)) assert_that(counters['plus.upstream.health.checks'][0], equal_to([2, 44321]))
def test_collect_complete(self): upstream = NginxUpstreamObject(local_name='uploader', parent_local_id='nginx123', root_uuid='root123') upstream.plus_status_internal_url_cache = 'test_status' # Get the upstream collector upstream_collector = upstream.collectors[-1] assert_that(upstream_collector.last_collect, equal_to(None)) context.plus_cache.put('test_status', ({ u'processes': { u'respawned': 0 }, u'version': 6, u'upstreams': { u'album_manager': { u'peers': [{ u'received': 5993399, u'fails': 0, u'header_time': 36, u'weight': 1, u'unavail': 0, u'selected': 1468876152000, u'server': u'10.0.1.51:11873', u'state': u'up', u'health_checks': { u'fails': 0, u'checks': 0, u'unhealthy': 0 }, u'sent': 155167, u'downtime': 0, u'active': 0, u'downstart': 0, u'requests': 854, u'backup': False, u'id': 1, u'response_time': 36, u'responses': { u'5xx': 0, u'2xx': 854, u'4xx': 0, u'3xx': 0, u'1xx': 0, u'total': 854 } }], u'keepalive': 0 }, u'user_manager': { u'peers': [{ u'received': 121924, u'fails': 0, u'header_time': 86, u'weight': 1, u'unavail': 0, u'selected': 1468876152000, u'server': u'10.0.1.50:23438', u'state': u'up', u'health_checks': { u'fails': 0, u'checks': 0, u'unhealthy': 0 }, u'sent': 56100, u'downtime': 0, u'active': 0, u'downstart': 0, u'requests': 374, u'backup': False, u'id': 1, u'response_time': 86, u'responses': { u'5xx': 0, u'2xx': 374, u'4xx': 0, u'3xx': 0, u'1xx': 0, u'total': 374 } }, { u'received': 15974, u'fails': 0, u'header_time': 132, u'weight': 1, u'unavail': 0, u'selected': 1468868947000, u'server': u'10.0.1.50:24140', u'state': u'up', u'health_checks': { u'fails': 0, u'checks': 0, u'unhealthy': 0 }, u'sent': 7350, u'downtime': 0, u'active': 0, u'downstart': 0, u'requests': 49, u'backup': False, u'id': 2, u'response_time': 132, u'responses': { u'5xx': 0, u'2xx': 49, u'4xx': 0, u'3xx': 0, u'1xx': 0, u'total': 49 } }], u'keepalive': 0 }, u'uploader': { u'peers': [{ u'received': 8304658325, u'fails': 0, u'header_time': 16749, u'weight': 1, u'unavail': 0, u'selected': 1468973127000, u'server': u'10.0.1.51:18399', u'state': u'up', u'health_checks': { u'fails': 0, u'checks': 0, u'unhealthy': 0 }, u'sent': 26951257433, u'downtime': 0, u'active': 0, u'downstart': 0, u'requests': 6134, u'backup': False, u'id': 11, u'response_time': 16750, u'responses': { u'5xx': 537, u'2xx': 5597, u'4xx': 0, u'3xx': 0, u'1xx': 0, u'total': 6134 } }], u'keepalive': 0 } }, u'generation': 1, u'timestamp': 1469050138054, u'pid': 19, u'connections': { u'active': 1, u'idle': 2, u'accepted': 1368, u'dropped': 0 }, u'ssl': { u'handshakes': 170, u'session_reuses': 135, u'handshakes_failed': 0 }, u'load_timestamp': 1468626004273, u'address': u'127.0.0.1', u'requests': { u'current': 1, u'total': 115069 }, u'caches': {}, u'nginx_version': u'1.9.13', u'server_zones': { u'pages': { u'received': 28645206823, u'responses': { u'5xx': 537, u'2xx': 113231, u'4xx': 24, u'3xx': 6, u'1xx': 0, u'total': 113798 }, u'processing': 1, u'discarded': 1, u'requests': 113800, u'sent': 10485044815 } } }, 1)) upstream_collector.collect() assert_that(upstream_collector.last_collect, equal_to(1)) assert_that(upstream.statsd.current, not_(has_length(0))) assert_that(upstream.statsd.current, not_( has_key('counter'))) # Counters need two data values to compute # difference assert_that(upstream.statsd.current, has_key('timer')) timers = upstream.statsd.current['timer'] for key in ('plus.upstream.header.time', 'plus.upstream.response.time'): assert_that(timers, has_key(key)) assert_that(timers['plus.upstream.header.time'][0], equal_to(16.749)) assert_that(timers['plus.upstream.response.time'][0], equal_to(16.75))
def test_upstream_peer_count(self): upstream = NginxUpstreamObject(local_name='trac-backend', parent_local_id='nginx123', root_uuid='root123') upstream.plus_status_internal_url_cache = 'test_status' upstream_collector = upstream.collectors[-1] assert_that(upstream_collector.last_collect, equal_to(None)) test_peer = { "id": 0, "server": "10.0.0.1:8080", "backup": False, "weight": 1, "state": "up", "active": 0, "requests": 0, "responses": { "1xx": 100, "2xx": 200, "3xx": 300, "4xx": 400, "5xx": 500, "total": 1500 }, "sent": 0, "received": 0, "fails": 0, "unavail": 0, "health_checks": { "checks": 0, "fails": 0, "unhealthy": 0, "last_passed": True }, "downtime": 0, "downstart": 0, "selected": 1456184367000 } gauges = upstream.statsd.current['gauge'] # drop data with two different peer counts into the plus_cache, then collect the data context.plus_cache.put('test_status', ({ "upstreams": { "trac-backend": { "peers": [test_peer] * 1 } } }, 3)) context.plus_cache.put('test_status', ({ "upstreams": { "trac-backend": { "peers": [test_peer] * 2 } } }, 14)) upstream_collector.collect() assert_that(gauges['plus.upstream.peer.count'], equal_to([(14, 2)])) # shows that the metric works even if the plus_cache data has been collected before context.plus_cache.put('test_status', ({ "upstreams": { "trac-backend": { "peers": [test_peer] * 4 } } }, 16)) context.plus_cache.put('test_status', ({ "upstreams": { "trac-backend": { "peers": [test_peer] * 2 } } }, 20)) context.plus_cache.put('test_status', ({ "upstreams": { "trac-backend": { "peers": [test_peer] * 8 } } }, 99)) upstream_collector.collect() assert_that(gauges['plus.upstream.peer.count'], equal_to([(99, 8)])) # shows that only peers with state == 'up' count towards upstream.peer.count test_peer['state'] = 'down' context.plus_cache.put('test_status', ({ "upstreams": { "trac-backend": { "peers": [test_peer] * 5 } } }, 110)) upstream_collector.collect() assert_that(gauges['plus.upstream.peer.count'], equal_to([ (99, 8) ])) # doesn't change because state is 'down' test_peer['state'] = 'up' context.plus_cache.put('test_status', ({ "upstreams": { "trac-backend": { "peers": [test_peer] * 2 } } }, 120)) upstream_collector.collect() assert_that(gauges['plus.upstream.peer.count'], equal_to([(120, 2)]))
def test_collect(self): upstream = NginxUpstreamObject(local_name="trac-backend", parent_local_id="nginx123", root_uuid="root123") upstream.plus_status_internal_url_cache = "test_status" # Get the upstream collector upstream_collector = upstream.collectors[-1] assert_that(upstream_collector.last_collect, equal_to(None)) context.plus_cache.put( "test_status", ( { "upstreams": { "trac-backend": { "peers": [ { "id": 0, "server": "10.0.0.1:8080", "backup": False, "weight": 1, "state": "up", "active": 0, "requests": 0, "responses": {"1xx": 0, "2xx": 0, "3xx": 0, "4xx": 0, "5xx": 0, "total": 0}, "sent": 0, "received": 0, "fails": 0, "unavail": 0, "health_checks": {"checks": 0, "fails": 0, "unhealthy": 0, "last_passed": True}, "downtime": 0, "downstart": 0, "selected": 1456184367000, } ] } } }, 1, ), ) context.plus_cache.put( "test_status", ( { "upstreams": { "trac-backend": { "peers": [ { "id": 0, "server": "10.0.0.1:8080", "backup": False, "weight": 1, "state": "up", "active": 0, "requests": 50411, "responses": { "1xx": 0, "2xx": 49034, "3xx": 507, "4xx": 864, "5xx": 6, "total": 50411, }, "sent": 22594151, "received": 2705341138, "fails": 0, "unavail": 0, "health_checks": {"checks": 22161, "fails": 0, "unhealthy": 0, "last_passed": True}, "downtime": 0, "downstart": 0, "selected": 1456184367000, }, { "id": 0, "server": "10.0.0.1:8080", "backup": False, "weight": 1, "state": "up", "active": 0, "requests": 50412, "responses": { "1xx": 0, "2xx": 49034, "3xx": 507, "4xx": 864, "5xx": 6, "total": 50411, }, "sent": 22594151, "received": 2705341138, "fails": 0, "unavail": 0, "health_checks": {"checks": 22160, "fails": 0, "unhealthy": 0, "last_passed": True}, "downtime": 0, "downstart": 0, "selected": 1456184367000, }, ] } } }, 2, ), ) upstream_collector.collect() assert_that(upstream_collector.last_collect, equal_to(2)) assert_that(upstream.statsd.current, not_(has_length(0))) assert_that(upstream.statsd.current, has_key("counter")) counters = upstream.statsd.current["counter"] for key in ( "plus.upstream.fails.count", "plus.upstream.bytes_sent", "plus.upstream.bytes_rcvd", "plus.upstream.status.1xx", "plus.upstream.status.5xx", "plus.upstream.health.fails", "plus.upstream.status.2xx", "plus.upstream.health.unhealthy", "plus.upstream.request.count", "plus.upstream.health.checks", "plus.upstream.response.count", "plus.upstream.unavail.count", "plus.upstream.status.3xx", "plus.upstream.status.4xx", ): assert_that(counters, has_key(key)) assert_that(counters["plus.upstream.health.checks"][0], equal_to([2, 44321]))
def test_collect_complete_old_plus(self): upstream = NginxUpstreamObject(local_name="secretupstream", parent_local_id="nginx123", root_uuid="root123") upstream.plus_status_internal_url_cache = "test_status" # Get the upstream collector upstream_collector = upstream.collectors[-1] assert_that(upstream_collector.last_collect, equal_to(None)) context.plus_cache.put( "test_status", ( { u"processes": {u"respawned": 0}, u"version": 5, u"upstreams": { u"secretupstream": [ { u"received": 0, u"fails": 0, u"responses": {u"5xx": 0, u"2xx": 0, u"4xx": 0, u"3xx": 0, u"1xx": 0, u"total": 0}, u"weight": 1, u"selected": 0, u"server": u"127.0.0.1:9999", u"state": u"up", u"health_checks": {u"fails": 0, u"checks": 0, u"unhealthy": 0}, u"unavail": 0, u"downtime": 0, u"active": 0, u"downstart": 0, u"requests": 0, u"backup": False, u"id": 0, u"sent": 0, }, { u"received": 0, u"fails": 0, u"responses": {u"5xx": 0, u"2xx": 0, u"4xx": 0, u"3xx": 0, u"1xx": 0, u"total": 0}, u"weight": 1, u"selected": 0, u"server": u"104.236.93.23:80", u"state": u"up", u"health_checks": {u"fails": 0, u"checks": 0, u"unhealthy": 0}, u"unavail": 0, u"downtime": 0, u"active": 0, u"downstart": 0, u"requests": 0, u"backup": False, u"id": 1, u"sent": 0, }, ] }, u"generation": 1, u"timestamp": 1474466062499, u"connections": {u"active": 1, u"idle": 2, u"accepted": 3163, u"dropped": 0}, u"load_timestamp": 1473999906889, u"address": u"127.0.0.1", u"requests": {u"current": 1, u"total": 27850}, u"caches": {}, u"nginx_version": u"1.7.11", u"server_zones": {}, }, 1, ), ) upstream_collector.collect() assert_that(upstream_collector.last_collect, equal_to(1)) assert_that(upstream.statsd.current, not_(has_length(0))) assert_that(upstream.statsd.current, not_(has_key("counter"))) # Counters need two data values to compute # difference assert_that(upstream.statsd.current, has_key("gauge")) gauges = upstream.statsd.current["gauge"] for key in ("plus.upstream.conn.active", "plus.upstream.peer.count"): assert_that(gauges, has_key(key)) assert_that(gauges["plus.upstream.conn.active"][0][1], equal_to(0)) assert_that(gauges["plus.upstream.peer.count"][0][1], equal_to(2))
def test_collect_complete(self): upstream = NginxUpstreamObject(local_name="uploader", parent_local_id="nginx123", root_uuid="root123") upstream.plus_status_internal_url_cache = "test_status" # Get the upstream collector upstream_collector = upstream.collectors[-1] assert_that(upstream_collector.last_collect, equal_to(None)) context.plus_cache.put( "test_status", ( { u"processes": {u"respawned": 0}, u"version": 6, u"upstreams": { u"album_manager": { u"peers": [ { u"received": 5993399, u"fails": 0, u"header_time": 36, u"weight": 1, u"unavail": 0, u"selected": 1468876152000, u"server": u"10.0.1.51:11873", u"state": u"up", u"health_checks": {u"fails": 0, u"checks": 0, u"unhealthy": 0}, u"sent": 155167, u"downtime": 0, u"active": 0, u"downstart": 0, u"requests": 854, u"backup": False, u"id": 1, u"response_time": 36, u"responses": { u"5xx": 0, u"2xx": 854, u"4xx": 0, u"3xx": 0, u"1xx": 0, u"total": 854, }, } ], u"keepalive": 0, }, u"user_manager": { u"peers": [ { u"received": 121924, u"fails": 0, u"header_time": 86, u"weight": 1, u"unavail": 0, u"selected": 1468876152000, u"server": u"10.0.1.50:23438", u"state": u"up", u"health_checks": {u"fails": 0, u"checks": 0, u"unhealthy": 0}, u"sent": 56100, u"downtime": 0, u"active": 0, u"downstart": 0, u"requests": 374, u"backup": False, u"id": 1, u"response_time": 86, u"responses": { u"5xx": 0, u"2xx": 374, u"4xx": 0, u"3xx": 0, u"1xx": 0, u"total": 374, }, }, { u"received": 15974, u"fails": 0, u"header_time": 132, u"weight": 1, u"unavail": 0, u"selected": 1468868947000, u"server": u"10.0.1.50:24140", u"state": u"up", u"health_checks": {u"fails": 0, u"checks": 0, u"unhealthy": 0}, u"sent": 7350, u"downtime": 0, u"active": 0, u"downstart": 0, u"requests": 49, u"backup": False, u"id": 2, u"response_time": 132, u"responses": { u"5xx": 0, u"2xx": 49, u"4xx": 0, u"3xx": 0, u"1xx": 0, u"total": 49, }, }, ], u"keepalive": 0, }, u"uploader": { u"peers": [ { u"received": 8304658325, u"fails": 0, u"header_time": 16749, u"weight": 1, u"unavail": 0, u"selected": 1468973127000, u"server": u"10.0.1.51:18399", u"state": u"up", u"health_checks": {u"fails": 0, u"checks": 0, u"unhealthy": 0}, u"sent": 26951257433, u"downtime": 0, u"active": 0, u"downstart": 0, u"requests": 6134, u"backup": False, u"id": 11, u"response_time": 16750, u"responses": { u"5xx": 537, u"2xx": 5597, u"4xx": 0, u"3xx": 0, u"1xx": 0, u"total": 6134, }, } ], u"keepalive": 0, }, }, u"generation": 1, u"timestamp": 1469050138054, u"pid": 19, u"connections": {u"active": 1, u"idle": 2, u"accepted": 1368, u"dropped": 0}, u"ssl": {u"handshakes": 170, u"session_reuses": 135, u"handshakes_failed": 0}, u"load_timestamp": 1468626004273, u"address": u"127.0.0.1", u"requests": {u"current": 1, u"total": 115069}, u"caches": {}, u"nginx_version": u"1.9.13", u"server_zones": { u"pages": { u"received": 28645206823, u"responses": { u"5xx": 537, u"2xx": 113231, u"4xx": 24, u"3xx": 6, u"1xx": 0, u"total": 113798, }, u"processing": 1, u"discarded": 1, u"requests": 113800, u"sent": 10485044815, } }, }, 1, ), ) upstream_collector.collect() assert_that(upstream_collector.last_collect, equal_to(1)) assert_that(upstream.statsd.current, not_(has_length(0))) assert_that(upstream.statsd.current, not_(has_key("counter"))) # Counters need two data values to compute # difference assert_that(upstream.statsd.current, has_key("timer")) timers = upstream.statsd.current["timer"] for key in ("plus.upstream.header.time", "plus.upstream.response.time"): assert_that(timers, has_key(key)) assert_that(timers["plus.upstream.header.time"][0], equal_to(16.749)) assert_that(timers["plus.upstream.response.time"][0], equal_to(16.75))