# 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 'Graphite Browser' 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