2017-07-11 04:20:17 +00:00
|
|
|
"""The tests for the Prometheus exporter."""
|
|
|
|
import asyncio
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
import homeassistant.components.prometheus as prometheus
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
2018-12-02 15:32:53 +00:00
|
|
|
def prometheus_client(loop, hass, hass_client):
|
|
|
|
"""Initialize an hass_client with Prometheus component."""
|
2019-07-31 19:25:30 +00:00
|
|
|
assert loop.run_until_complete(
|
|
|
|
async_setup_component(hass, prometheus.DOMAIN, {prometheus.DOMAIN: {}})
|
|
|
|
)
|
2018-12-02 15:32:53 +00:00
|
|
|
return loop.run_until_complete(hass_client())
|
2017-07-11 04:20:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
@asyncio.coroutine
|
|
|
|
def test_view(prometheus_client): # pylint: disable=redefined-outer-name
|
|
|
|
"""Test prometheus metrics view."""
|
|
|
|
resp = yield from prometheus_client.get(prometheus.API_ENDPOINT)
|
|
|
|
|
|
|
|
assert resp.status == 200
|
2019-07-31 19:25:30 +00:00
|
|
|
assert resp.headers["content-type"] == "text/plain"
|
2017-07-11 04:20:17 +00:00
|
|
|
body = yield from resp.text()
|
|
|
|
body = body.split("\n")
|
|
|
|
|
|
|
|
assert len(body) > 3 # At least two comment lines and a metric
|
|
|
|
for line in body:
|
|
|
|
if line:
|
2019-07-31 19:25:30 +00:00
|
|
|
assert (
|
|
|
|
line.startswith("# ")
|
|
|
|
or line.startswith("process_")
|
|
|
|
or line.startswith("python_info")
|
|
|
|
)
|