Skip to content
Snippets Groups Projects
Commit d4c818c8 authored by Michael Boniface's avatar Michael Boniface
Browse files

Merge branch 'rp-scripts' into 'integration'

Rp scripts

See merge request FLAME/flame-clmc!18
parents 3fc79692 8117d748
No related branches found
No related tags found
No related merge requests found
...@@ -87,14 +87,23 @@ Vagrant.configure("2") do |config| ...@@ -87,14 +87,23 @@ Vagrant.configure("2") do |config|
puts "Instance name #{instance_name}:" puts "Instance name #{instance_name}:"
case instance_name case instance_name
when 'clmc-service' when 'clmc-service'
# instance_config.vm.provision :shell, :path => "scripts/clmc-service/install.sh" instance_config.vm.provision :shell, :path => "scripts/clmc-service/install.sh"
instance_config.vm.provision :shell, :path => "test/services/pytest/install.sh" instance_config.vm.provision :shell, :path => "test/services/pytest/install.sh"
else else
# specific service install # specific service install
instance_config.vm.provision :shell, :path => "test/services/#{host["service_name"]}/install.sh", env: {"REPO_ROOT" => "/vagrant"} instance_config.vm.provision :shell, :path => "test/services/#{host["service_name"]}/install.sh", env: {"REPO_ROOT" => "/vagrant"}
# CLMC agent install # CLMC agent install
instance_config.vm.provision :shell, :path => "scripts/clmc-agent/install.sh", :args => "/vagrant/scripts/clmc-agent/telegraf_template.conf /vagrant/test/services/#{host["service_name"]}/telegraf_#{host["service_name"]}.conf #{host["location"]} #{host["sfc_id"]} #{host["sfc_id_instance"]} #{host["sf_id"]} #{host["sf_id_instance"]} #{host["ipendpoint_id"]} #{host["influxdb_url"]} #{host["database_name"]}" instance_config.vm.provision :shell, :path => "scripts/clmc-agent/install.sh"
# CLMC agent service specific input configuration
instance_config.vm.provision :shell, inline: "cp /vagrant/test/services/#{host["service_name"]}/telegraf_#{host["service_name"]}.conf /etc/telegraf/telegraf.d/"
# CLMC agent general and output configuration
instance_config.vm.provision :shell, :path => "scripts/clmc-agent/configure.sh", :args => "/vagrant/scripts/clmc-agent/telegraf.conf /vagrant/scripts/clmc-agent/telegraf_output.conf #{host["location"]} #{host["sfc_id"]} #{host["sfc_id_instance"]} #{host["sf_id"]} #{host["sf_id_instance"]} #{host["ipendpoint_id"]} #{host["influxdb_url"]} #{host["database_name"]}"
# CLMC start agent
instance_config.vm.provision :shell, inline: "systemctl start telegraf"
end end
......
#!/bin/bash
#/////////////////////////////////////////////////////////////////////////
#//
#// (c) University of Southampton IT Innovation Centre, 2017
#//
#// Copyright in this software belongs to University of Southampton
#// IT Innovation Centre of Gamma House, Enterprise Road,
#// Chilworth Science Park, Southampton, SO16 7NS, UK.
#//
#// This software may not be used, sold, licensed, transferred, copied
#// or reproduced in whole or in part in any manner or form or in or
#// on any media by any person other than in accordance with the terms
#// of the Licence Agreement supplied with the software, or otherwise
#// without the prior written consent of the copyright owners.
#//
#// This software is distributed WITHOUT ANY WARRANTY, without even the
#// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
#// PURPOSE, except where stated in the Licence Agreement supplied with
#// the software.
#//
#// Created By : Michael Boniface
#// Created Date : 13/12/2017
#// Created for Project : FLAME
#//
#/////////////////////////////////////////////////////////////////////////
# Force fail on command fail
set -euo pipefail
echo "Configuring Telegraf agent general and output configuration"
# Get command line parameters
if [ "$#" -ne 10 ]; then
echo "Error: illegal number of arguments: "$#
echo "Usage: config.sh TELEGRAF_GENERAL_CONF_FILE TELEGRAF_OUTPUT_CONF_FILE LOCATION SFC_ID SFC_ID_INSTANCE SF_ID SF_ID_INSTANCE IP_ENDPOINT_ID INFLUXDB_URL DATABASE_NAME"
exit
fi
TELEGRAF_GENERAL_CONF_FILE=$1
TELEGRAF_OUTPUT_CONF_FILE=$2
LOCATION=$3
SFC_ID=$4
SFC_ID_INSTANCE=$5
SF_ID=$6
SF_ID_INSTANCE=$7
IP_ENDPOINT_ID=$8
INFLUXDB_URL=$9
DATABASE_NAME=${10}
TELEGRAF_CONF_DIR="/etc/telegraf"
TELEGRAF_CONF_FILE="$TELEGRAF_CONF_DIR/telegraf.conf"
TELEGRAF_INCLUDE_CONF_DIR="/etc/telegraf/telegraf.d"
TELEGRAF_OUTPUT_FILE="$TELEGRAF_INCLUDE_CONF_DIR/telegraf_output.conf"
echo "Checking Telegraf installation"
# Check the configuration files provided exist
echo "TELEGRAF_GENERAL_CONF_FILE: "$TELEGRAF_GENERAL_CONF_FILE
if [ ! -f $TELEGRAF_GENERAL_CONF_FILE ]; then
echo "Error: Telegraf conf template file not found: "$TELEGRAF_GENERAL_CONF_FILE
exit
fi
echo "TELEGRAF_OUTPUT_CONF_FILE: "$TELEGRAF_OUTPUT_CONF_FILE
if [ ! -f $TELEGRAF_OUTPUT_CONF_FILE ]; then
echo "Error: Telegraf output conf specific file not found: "$TELEGRAF_OUTPUT_CONF_FILE
exit
fi
# Check the target telegraf directory exists
if [ ! -d "$TELEGRAF_CONF_DIR" ]; then
echo "Error: Telegraf conf directory does not exist on target machine. Check that telegraf is installed "$TELEGRAF_CONF_DIR
exit
fi
# Check the target telegraf directory exists
if [ ! -d $TELEGRAF_INCLUDE_CONF_DIR ]; then
echo "Error: Telegraf conf include directory does not exist on target machine. Check that telegraf is installed "$TELEGRAF_INCLUDE_CONF_DIR
exit
fi
echo "Copying configuration"
# Copy configuration
echo "Telegraf general config file: " $TELEGRAF_GENERAL_CONF_FILE
cp $TELEGRAF_GENERAL_CONF_FILE $TELEGRAF_CONF_FILE
echo "Telegraf output config file: " $TELEGRAF_OUTPUT_CONF_FILE
cp $TELEGRAF_OUTPUT_CONF_FILE $TELEGRAF_OUTPUT_FILE
# Replace template parameters on general configuration
sed -i 's/$LOCATION/'$LOCATION'/g' $TELEGRAF_CONF_FILE
sed -i 's/$SFC_ID/'$SFC_ID'/g' $TELEGRAF_CONF_FILE
sed -i 's/$SFC_ID_INSTANCE/'$SFC_ID_INSTANCE'/g' $TELEGRAF_CONF_FILE
sed -i 's/$SF_ID/'$SF_ID'/g' /etc/telegraf/telegraf.conf
sed -i 's/$SF_ID_INSTANCE}}/'$SF_ID_INSTANCE'/g' $TELEGRAF_CONF_FILE
sed -i 's/$IP_ENDPOINT_ID/'$IP_ENDPOINT_ID'/g' $TELEGRAF_CONF_FILE
# Replace parameters on output configuration
echo "INFLUXDB_URL: " $INFLUXDB_URL
echo "DATABASE_NAME: " $DATABASE_NAME
sed -i 's|$INFLUXDB_URL|'$INFLUXDB_URL'|g' $TELEGRAF_OUTPUT_FILE
sed -i 's/$DATABASE_NAME/'$DATABASE_NAME'/g' $TELEGRAF_OUTPUT_FILE
# Start telegraf
systemctl restart telegraf
...@@ -27,29 +27,9 @@ ...@@ -27,29 +27,9 @@
# Force fail on command fail # Force fail on command fail
set -euo pipefail set -euo pipefail
# Install telegraf echo "Configuring Telegraf agent"
if [ "$#" -ne 10 ]; then
echo "Error: illegal number of arguments: "$#
echo "Usage: install-clmc-agent.sh TELEGRAF_GENERAL_CONF_FILE TELEGRAF_SERVICE_CONF_FILE LOCATION SFC_ID SFC_ID_INSTANCE SF_ID SF_ID_INSTANCE IP_ENDPOINT_ID INFLUXDB_URL DATABASE_NAME"
exit
fi
TELEGRAF_GENERAL_CONF_FILE=$1
TELEGRAF_SERVICE_CONF_FILE=$2
LOCATION=$3
SFC_ID=$4
SFC_ID_INSTANCE=$5
SF_ID=$6
SF_ID_INSTANCE=$7
IP_ENDPOINT_ID=$8
INFLUXDB_URL=$9
DATABASE_NAME=${10}
if [ ! -f $TELEGRAF_GENERAL_CONF_FILE ]; then
echo "Error: Telegraf conf template file not found: "$TELEGRAF_GENERAL_CONF_FILE
exit
fi
# Install telegraf
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.3.2-1_amd64.deb wget https://dl.influxdata.com/telegraf/releases/telegraf_1.3.2-1_amd64.deb
sha1sum telegraf_1.3.2-1_amd64.deb | grep '73794cc2986fef7c81cfff8bc638cd84d6629da8' &> /dev/null sha1sum telegraf_1.3.2-1_amd64.deb | grep '73794cc2986fef7c81cfff8bc638cd84d6629da8' &> /dev/null
if [ $? == 1 ]; then if [ $? == 1 ]; then
...@@ -58,29 +38,3 @@ if [ $? == 1 ]; then ...@@ -58,29 +38,3 @@ if [ $? == 1 ]; then
fi fi
dpkg -i telegraf_1.3.2-1_amd64.deb dpkg -i telegraf_1.3.2-1_amd64.deb
# Copy configuration
echo "Telegraf general config file: " $TELEGRAF_GENERAL_CONF_FILE
cp $TELEGRAF_GENERAL_CONF_FILE /etc/telegraf/telegraf.conf
if [ ! -f $TELEGRAF_SERVICE_CONF_FILE ]; then
echo "Warning: Telegraf conf service specific file not found: "$TELEGRAF_SERVICE_CONF_FILE
else
echo "Telegraf service config file: " $TELEGRAF_SERVICE_CONF_FILE
cp $TELEGRAF_SERVICE_CONF_FILE /etc/telegraf/telegraf.d/
fi
echo "INFLUXDB_URL: " $INFLUXDB_URL
echo "DATABASE_NAME: " $DATABASE_NAME
# Replace template parameters
sed -i 's/{{LOCATION}}/'$LOCATION'/g' /etc/telegraf/telegraf.conf
sed -i 's/{{SFC_ID}}/'$SFC_ID'/g' /etc/telegraf/telegraf.conf
sed -i 's/{{SFC_ID_INSTANCE}}/'$SFC_ID_INSTANCE'/g' /etc/telegraf/telegraf.conf
sed -i 's/{{SF_ID}}/'$SF_ID'/g' /etc/telegraf/telegraf.conf
sed -i 's/{{SF_ID_INSTANCE}}/'$SF_ID_INSTANCE'/g' /etc/telegraf/telegraf.conf
sed -i 's/{{IP_ENDPOINT_ID}}/'$IP_ENDPOINT_ID'/g' /etc/telegraf/telegraf.conf
sed -i 's|{{INFLUXDB_URL}}|'$INFLUXDB_URL'|g' /etc/telegraf/telegraf.conf
sed -i 's/{{DATABASE_NAME}}/'$DATABASE_NAME'/g' /etc/telegraf/telegraf.conf
# Start telegraf
systemctl start telegraf
\ No newline at end of file
# Telegraf configuration
# Telegraf is entirely plugin driven. All metrics are gathered from the
# declared inputs, and sent to the declared outputs.
# Plugins must be declared in here to be active.
# To deactivate a plugin, comment out the name and any variables.
# Use 'telegraf -config telegraf.conf -test' to see what metrics a config
# file would generate.
# Global tags can be specified here in key="value" format.
[global_tags]
# location of the data centre
location="$LOCATION"
# media service template id
sfc="$SFC_ID"
# media service instance
sfc_i="$SFC_ID_INSTANCE"
# service function type
sf="$SF_ID"
# service function instance id
sf_i="$SF_ID_INSTANCE"
# ipendpoint id aka surrogate instance
ipendpoint="$IP_ENDPOINT_ID"
# Configuration for telegraf agent
[agent]
## Default data collection interval for all inputs
interval = "10s"
## Rounds collection interval to 'interval'
## ie, if interval="10s" then always collect on :00, :10, :20, etc.
round_interval = true
## Telegraf will cache metric_buffer_limit metrics for each output, and will
## flush this buffer on a successful write.
metric_buffer_limit = 1000
## Flush the buffer whenever full, regardless of flush_interval.
flush_buffer_when_full = true
## Collection jitter is used to jitter the collection by a random amount.
## Each plugin will sleep for a random time within jitter before collecting.
## This can be used to avoid many plugins querying things like sysfs at the
## same time, which can have a measurable effect on the system.
collection_jitter = "0s"
## Default flushing interval for all outputs. You shouldn't set this below
## interval. Maximum flush_interval will be flush_interval + flush_jitter
flush_interval = "10s"
## Jitter the flush interval by a random amount. This is primarily to avoid
## large write spikes for users running a large number of telegraf instances.
## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s
flush_jitter = "0s"
## Logging configuration:
## Run telegraf in debug mode
debug = false
## Run telegraf in quiet mode
quiet = false
## Specify the log file name. The empty string means to log to stdout.
logfile = "/var/log/telegraf/telegraf.log"
## Override default hostname, if empty use os.Hostname()
hostname = ""
###############################################################################
# OUTPUTS #
###############################################################################
# Configuration for influxdb server to send metrics to
[[outputs.influxdb]]
# The full HTTP or UDP endpoint URL for your InfluxDB instance.
# Multiple urls can be specified but it is assumed that they are part of the same
# cluster, this means that only ONE of the urls will be written to each interval.
# urls = ["udp://127.0.0.1:8089"] # UDP endpoint example
urls = ["$INFLUXDB_URL"] # required
# The target database for metrics (telegraf will create it if not exists)
database = "$DATABASE_NAME" # required
# Precision of writes, valid values are "ns", "us" (or "µs"), "ms", "s", "m", "h".
# note: using second precision greatly helps InfluxDB compression
precision = "s"
## Write timeout (for the InfluxDB client), formatted as a string.
## If not provided, will default to 5s. 0s means no timeout (not recommended).
timeout = "5s"
# username = "telegraf"
# password = "metricsmetricsmetricsmetrics"
# Set the user agent for HTTP POSTs (can be useful for log differentiation)
# user_agent = "telegraf"
# Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes)
# udp_payload = 512
\ No newline at end of file
# Telegraf configuration
# Telegraf is entirely plugin driven. All metrics are gathered from the
# declared inputs, and sent to the declared outputs.
# Plugins must be declared in here to be active.
# To deactivate a plugin, comment out the name and any variables.
# Use 'telegraf -config telegraf.conf -test' to see what metrics a config
# file would generate.
# Global tags can be specified here in key="value" format.
[global_tags]
# location of the data centre
location="{{LOCATION}}"
# media service template id
sfc="{{SFC_ID}}"
# media service instance
sfc_i="{{SFC_ID_INSTANCE}}"
# service function type
sf="{{SF_ID}}"
# service function instance id
sf_i="{{SF_ID_INSTANCE}}"
# ipendpoint id aka surrogate instance
ipendpoint="{{IP_ENDPOINT_ID}}"
# Configuration for telegraf agent
[agent]
## Default data collection interval for all inputs
interval = "10s"
## Rounds collection interval to 'interval'
## ie, if interval="10s" then always collect on :00, :10, :20, etc.
round_interval = true
## Telegraf will cache metric_buffer_limit metrics for each output, and will
## flush this buffer on a successful write.
metric_buffer_limit = 1000
## Flush the buffer whenever full, regardless of flush_interval.
flush_buffer_when_full = true
## Collection jitter is used to jitter the collection by a random amount.
## Each plugin will sleep for a random time within jitter before collecting.
## This can be used to avoid many plugins querying things like sysfs at the
## same time, which can have a measurable effect on the system.
collection_jitter = "0s"
## Default flushing interval for all outputs. You shouldn't set this below
## interval. Maximum flush_interval will be flush_interval + flush_jitter
flush_interval = "10s"
## Jitter the flush interval by a random amount. This is primarily to avoid
## large write spikes for users running a large number of telegraf instances.
## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s
flush_jitter = "0s"
## Logging configuration:
## Run telegraf in debug mode
debug = false
## Run telegraf in quiet mode
quiet = false
## Specify the log file name. The empty string means to log to stdout.
logfile = "/var/log/telegraf/telegraf.log"
## Override default hostname, if empty use os.Hostname()
hostname = ""
###############################################################################
# OUTPUTS #
###############################################################################
# Configuration for influxdb server to send metrics to
[[outputs.influxdb]]
# The full HTTP or UDP endpoint URL for your InfluxDB instance.
# Multiple urls can be specified but it is assumed that they are part of the same
# cluster, this means that only ONE of the urls will be written to each interval.
# urls = ["udp://127.0.0.1:8089"] # UDP endpoint example
urls = ["{{INFLUXDB_URL}}"] # required
# The target database for metrics (telegraf will create it if not exists)
database = "{{DATABASE_NAME}}" # required
# Precision of writes, valid values are "ns", "us" (or "µs"), "ms", "s", "m", "h".
# note: using second precision greatly helps InfluxDB compression
precision = "s"
## Write timeout (for the InfluxDB client), formatted as a string.
## If not provided, will default to 5s. 0s means no timeout (not recommended).
timeout = "5s"
# username = "telegraf"
# password = "metricsmetricsmetricsmetrics"
# Set the user agent for HTTP POSTs (can be useful for log differentiation)
# user_agent = "telegraf"
# Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes)
# udp_payload = 512
############################################################################### ###############################################################################
# INPUTS # # INPUTS #
...@@ -170,25 +77,4 @@ ...@@ -170,25 +77,4 @@
#tls_key = "/etc/telegraf/key.pem" #tls_key = "/etc/telegraf/key.pem"
## MTLS ## MTLS
#tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] #tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"]
\ No newline at end of file
[[inputs.net_response]]
## Protocol, must be "tcp" or "udp"
## NOTE: because the "udp" protocol does not respond to requests, it requires
## a send/expect string pair (see below).
protocol = "tcp"
## Server address (default localhost)
address = "localhost:80"
## Set timeout
timeout = "1s"
## Set read timeout (only used if expecting a response)
read_timeout = "1s"
## The following options are required for UDP checks. For TCP, they are
## optional. The plugin will send the given string to the server and then
## expect to receive the given 'expect' string back.
## string sent to the server
# send = "ssh"
## expected string in answer
# expect = "ssh"
\ No newline at end of file
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#// #//
#///////////////////////////////////////////////////////////////////////// #/////////////////////////////////////////////////////////////////////////
apt-get update apt-get update
apt-get install python3 python3-pip apt-get -y install python3 python3-pip python-influxdb
update-alternatives --install /usr/bin/python python /usr/bin/python3 10 update-alternatives --install /usr/bin/python python /usr/bin/python3 10
pip install pytest pyyaml pip3 install pytest pyyaml
\ No newline at end of file pip3 install --upgrade influxdb
...@@ -2,10 +2,15 @@ ...@@ -2,10 +2,15 @@
import pytest import pytest
import yaml import yaml
from influxdb import InfluxDBClient
@pytest.fixture(scope="module") @pytest.fixture(scope="module")
def telegraf_agent_config(): def telegraf_agent_config():
"""Returns the service configuration deployed for the telegraf conf tests.""" """Returns the service configuration deployed for the telegraf conf tests."""
with open("test/telegraf-agents/rspec.yml", 'r') as stream: with open("test/telegraf-agents/rspec.yml", 'r') as stream:
data_loaded = yaml.load(stream) data_loaded = yaml.load(stream)
return data_loaded return data_loaded
\ No newline at end of file
@pytest.fixture(params=[{'database': 'CLMCMetrics'}], scope='module')
def influxdb(telegraf_agent_config, request):
return InfluxDBClient(telegraf_agent_config['hosts'][0]['ip_address'], 8086, request.param['database'])
\ No newline at end of file
#!/usr/bin/python3 #!/usr/bin/python3
import sys
if sys.version_info[0] < 3:
raise Exception("Python 3 or a more recent version is required.")
import pytest
import os import os
from urllib.parse import urlencode import pytest
from urllib.request import Request, urlopen from influxdb import InfluxDBClient
from os.path import join, dirname
@pytest.mark.parametrize("service_name", [
def test_service_names(telegraf_agent_config): ('clmc-service'),
print(telegraf_agent_config['hosts'][0]['name']) ('apache'),
assert telegraf_agent_config['hosts'][0]['name'] == 'clmc-service' ('nginx'),
assert telegraf_agent_config['hosts'][1]['name'] == 'apache' ('mongo'),
assert telegraf_agent_config['hosts'][2]['name'] == 'nginx' ('ffmpeg'),
assert telegraf_agent_config['hosts'][3]['name'] == 'mongo' ('ipendpoint'),
assert telegraf_agent_config['hosts'][4]['name'] == 'ffmpeg' ])
assert telegraf_agent_config['hosts'][5]['name'] == 'ipendpoint' def test_service_name(telegraf_agent_config, service_name):
assert any(s['name'] == service_name for s in telegraf_agent_config['hosts']), "{0} not in list of hosts".format(service_name)
def test_ping(telegraf_agent_config): def test_ping(telegraf_agent_config):
"""This test will only run on linux""" """This test will only run on linux as the process call is not portable, there's a better way"""
for x in telegraf_agent_config['hosts']: for host in telegraf_agent_config['hosts']:
print("Testing service" + x['name'] + " " + x['ip_address']) response = os.system("ping -c 1 " + host['ip_address'])
response = os.system("ping -c 1 " + x['ip_address']) assert response == 0, "Could not ping {0} on ip address {1}".format(host['name'], host['ip_address'])
assert response == 0, "Could not ping " + x['name'] + " on ip address " + x['ip_address']
@pytest.mark.parametrize("measurement, query, expected_result", [
@pytest.mark.parametrize("queries", ('nginx', 'SELECT mean("requests") AS "mean" FROM "CLMCMetrics"."autogen"."nginx"', 0),
[{'nginx': {'measurement': 'nginx', 'query': 'SELECT mean("requests") AS "mean_active" FROM "CLMCMetrics"."autogen"."nginx"', 'result': '1'}}]) ('cpu', 'SELECT mean("usage_idle") AS "mean" FROM "CLMCMetrics"."autogen"."cpu"', 0),
def test_nginx(telegraf_agent_config, queries): ('mongodb', 'SELECT mean("net_in_bytes") AS "mean" FROM "CLMCMetrics"."autogen"."mongodb"', 0)
])
measurements = send_query("http://localhost:8086", 'SHOW measurements ON "CLMCMetrics"') def test_all_inputs(influxdb, measurement, query, expected_result):
assert queries['nginx']['measurement'] in measurements, "Measurement " + measurement + " not in the CLMCMetrics database" """Tests measurements are received from an input plugin aggregated across all services
"""
result = send_query("http://localhost:8086", queries['nginx']['query']) query_result = influxdb.query('SHOW measurements ON "CLMCMetrics"')
print("result" + result) points = list(query_result.get_points())
# assert results is correct assert any(p['name'] == measurement for p in points), "{0} not in measurement list".format(measurement)
def send_query(url, query): query_result = influxdb.query(query)
points = list(query_result.get_points())
actual_result = points[0]['mean']
assert actual_result > expected_result, "actual result {0} is not > expected result {1} for query {2}".format(actual_result, str(expected_result), query)
@pytest.mark.parametrize("ipendpoint, measurements", [
('id1', [{'measurement': 'cpu', 'query': 'query', 'result': 'result'} , {'measurement': 'nginx', 'query': 'query', 'result': 'result'}, {'measurement': 'mongo', 'query': 'query', 'result': 'result'}]),
('id2', [{'measurement': 'cpu', 'query': 'query', 'result': 'result'} , {'measurement': 'nginx', 'query': 'query', 'result': 'result'}])
])
def test_multiple_inputs_on_a_service(influxdb, ipendpoint, measurements):
"""This test checks that a service configured with multiple input plugins as separate telegraf config files generates measurements in the database
""" """
An auxiliary static method to send a query to a url and retrieve the result # for each item in the measurement list run the query and test the result
assert 1
:param url: the target url to which the query is sent to - a string containing a valid URL address
:param query: the query to be executed on the given URL @pytest.mark.parametrize("query, expected_result",
:return: the result of the executed query [('filter query', 0),
('filter query', 0),
('filter query', 0)
])
def test_global_tag_filtering(influxdb, query, expected_result):
"""Tests that the global tags are inserted correctly into the global configuration using the install CLMC script
""" """
query = urlencode({"q": query}).encode("ascii") # run query
request = Request("{0}/query".format(url), query) # check result
result = urlopen(request) assert 1
return result.read().decode("utf-8").strip()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment