跳转到主要内容

测试StatsD客户端

项目描述

nti.fakestatsd

Latest release Supported Python versions https://travis-ci.org/NextThought/nti.fakestatsd.svg?branch=master https://coveralls.io/repos/github/NextThought/nti.fakestatsd/badge.svg Documentation Status

nti.fakestatsd是用于验证perfmetrics发出的StatsD指标的测试客户端。

它很容易创建一个用于测试的新客户端

>>> from nti.fakestatsd import FakeStatsDClient
>>> test_client = FakeStatsDClient()

此客户端公开与 perfmetrics.statsd.StatsdClient 相同的公共接口。例如,我们可以增加计数器,设置仪表等

>>> test_client.incr('request_c')
>>> test_client.gauge('active_sessions', 320)

perfmetrics.statsd.StatsdClient 不同,~.FakeStatsDClient 仅跟踪将发送的statsd数据包。这些信息既以原始statsd数据包的形式,也以方便的形式作为 ~.Metric 对象公开。有关完整详情,请参阅 ~.FakeStatsDClient~.Metric

>>> test_client.packets
['request_c:1|c', 'active_sessions:320|g']
>>> test_client.metrics
[Observation(name='request_c', value='1', kind='c', sampling_rate=None), Observation(name='active_sessions', value='320', kind='g', sampling_rate=None)]

为了验证指标,我们提供了一组用于测试断言的Hamcrest匹配器。

>>> from hamcrest import assert_that
>>> from hamcrest import contains
>>> from nti.fakestatsd.matchers import is_metric
>>> from nti.fakestatsd.matchers import is_gauge

我们可以使用字符串和数字(或任何匹配器)作为值。

>>> assert_that(test_client,
...     contains(is_metric('c', 'request_c', '1'),
...              is_gauge('active_sessions', 320)))
>>> assert_that(test_client,
...     contains(is_metric('c', 'request_c', '1'),
...              is_gauge('active_sessions', '320')))
>>> from hamcrest import is_
>>> assert_that(test_client,
...     contains(is_metric('c', 'request_c', '1'),
...              is_gauge('active_sessions', is_('320'))))

如果匹配失败,我们将得到一个描述性的错误。

>>> assert_that(test_client,
...     contains(is_gauge('request_c', '1'),
...              is_gauge('active_sessions', '320')))
Traceback (most recent call last):
...
AssertionError:
Expected: a sequence containing [(an instance of Metric and (an object with a property 'kind' matching 'g' and an object with a property 'name' matching 'request_c' and an object with a property 'value' matching '1')), (an instance of Metric and (an object with a property 'kind' matching 'g' and an object with a property 'name' matching 'active_sessions' and an object with a property 'value' matching '320'))]
       but: item 0: was Metric(name='request_c', value='1', kind='c', sampling_rate=None)

有关完整详情和变更日志,请参阅文档

变更

1.0.0 (2019-09-03)

  • 该项目已被合并到perfmetrics.testing中。将不再进行进一步开发。

0.0.2 (2018-10-26)

  • 指标类型s现在被处理为一种独立类型。请参阅问题6

  • 指标值现在始终是原生字符串。请参阅问题2

  • 重构并记录公共对象。请参阅问题1

  • 添加便利的Hamcrest匹配器。请参阅问题1

0.0.1 (2018-10-12)

  • 首次PyPI发布。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

nti.fakestatsd-1.0.0.tar.gz (12.8 kB 查看哈希)

上传时间

构建分布

nti.fakestatsd-1.0.0-py2.py3-none-any.whl (9.6 kB 查看哈希)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面