59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
|
# Copyright 2020 Red Hat, Inc.
|
||
|
#
|
||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||
|
# not use this file except in compliance with the License. You may obtain
|
||
|
# a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||
|
# License for the specific language governing permissions and limitations
|
||
|
# under the License.
|
||
|
import json
|
||
|
import logging
|
||
|
import ssl
|
||
|
import urllib.request
|
||
|
|
||
|
testinfra_hosts = ['graphite02.opendev.org']
|
||
|
|
||
|
|
||
|
def test_graphite_container_web_listening(host):
|
||
|
graphite_http = host.socket("tcp://127.0.0.1:80")
|
||
|
assert graphite_http.is_listening
|
||
|
|
||
|
graphite_https = host.socket("tcp://127.0.0.1:443")
|
||
|
assert graphite_https.is_listening
|
||
|
|
||
|
def test_graphite(host):
|
||
|
cmd = host.run('curl --insecure '
|
||
|
'--resolve graphite.opendev.org:443:127.0.0.1 '
|
||
|
'https://graphite.opendev.org')
|
||
|
assert '<title>Graphite Browser</title>' in cmd.stdout
|
||
|
|
||
|
def test_graphite_data(host):
|
||
|
# seed some data; send it over ipv6
|
||
|
cmd = ('timeout 20 bash -c '
|
||
|
'\'while true; do echo -n "example:$((RANDOM % 100))|c" '
|
||
|
'| nc -6 -w 1 -u localhost 8125; done\'')
|
||
|
host.run(cmd)
|
||
|
|
||
|
url='render?from=-10mins&until=now&target=stats.example&format=json'
|
||
|
|
||
|
# Assert we see some non-null values for this stat
|
||
|
# multi-node-hosts-file has setup graphite02.opendev.org to
|
||
|
# resolve from hosts.
|
||
|
found_value = False
|
||
|
with urllib.request.urlopen('https://graphite02.opendev.org/%s' % (url),
|
||
|
context=ssl._create_unverified_context()) \
|
||
|
as req:
|
||
|
data = json.loads(req.read().decode())
|
||
|
logging.debug('got: %s' % data)
|
||
|
datapoints = (data[0]['datapoints'])
|
||
|
for p in datapoints:
|
||
|
if p[0] != None:
|
||
|
found_value = True
|
||
|
|
||
|
assert found_value
|