Integration test: update host + metrics name

Change-Id: I2f369300562882f3db880241cb6463b8fbe6c9ea
This commit is contained in:
flavien peyre 2015-07-02 13:19:27 -04:00
parent 1cb311b96a
commit 78f8e4e6e2
5 changed files with 97 additions and 20 deletions

View File

@ -12,3 +12,4 @@ influxdb==2.6.0
pika
python-surveilclient==0.10.0
six
docker-py

View File

@ -18,6 +18,7 @@ import time
from compose.cli import docker_client
from compose import config as compose_config
from compose import project as compose_project
import docker
from surveilclient import client as sclient
@ -83,6 +84,19 @@ class DockerBackend():
else:
raise Exception("Surveil could not start")
def execute_command(self, commands, container_name):
dclient = docker.Client()
if container_name is not None:
containers = dclient.containers()
for container in containers:
count = container.get('Image').count(container_name)
if ((count == 1 and container_name != 'surveil') or
(count == 2 and container_name == 'surveil')):
for command in commands:
id = dclient.exec_create(container.get('Id')[:12],
command)
dclient.exec_start(id['Id'])
def tearDownClass(self):
self.project.kill()
self.project.remove_stopped()

View File

@ -5,7 +5,7 @@ surveil:
- influxdb
- alignak
ports:
- "8999:8080"
- "8999:5311"
command: bash -c "cd /opt/surveil && ./setup.sh && /opt/surveil/env/bin/python setup.py develop && ((sleep 40 && surveil-init --influxdb --packs --mongodb --demo) &) && sleep 20 && surveil-api --reload"
alignak:

View File

@ -18,7 +18,7 @@ import os
import unittest
from surveil.tests import base
from surveil.tests.integration.backend import docker
from surveil.tests.integration.backend import docker_backend
@unittest.skipIf(os.environ.get('SURVEIL_INTEGRATION_TESTS', None) != 'True',
@ -33,7 +33,7 @@ class MergedIntegrationTest(base.BaseTestCase):
)
if test_backend == 'DOCKER':
MergedIntegrationTest.backend = docker.DockerBackend()
MergedIntegrationTest.backend = docker_backend.DockerBackend()
else:
raise Exception(
"Could not identify tests backend: '%s'" % test_backend
@ -47,6 +47,9 @@ class MergedIntegrationTest(base.BaseTestCase):
def get_surveil_client(self):
return MergedIntegrationTest.backend.get_surveil_client()
def execute_command(self, command, container):
MergedIntegrationTest.backend.execute_command(command, container)
class SeparatedIntegrationTests(MergedIntegrationTest):

View File

@ -65,6 +65,7 @@ class TestSeparatedIntegrationSurveil(
)
def test_delete_host(self):
"""Delete a host and asserts that is is not monitored by Alignak."""
self.test_create_host()
self.get_surveil_client().config.hosts.delete(
@ -90,16 +91,41 @@ class TestSeparatedIntegrationSurveil(
)
)
def test_passive_check(self):
self.get_surveil_client().config.hosts.create(
def test_update_host(self):
"""Update a host and asserts that is is monitored by Alignak."""
self.test_create_host()
self.get_surveil_client().config.hosts.update(
host_name='integrationhosttest',
address='127.0.0.1',
use='generic-host',
host={'host_name': 'host_name_up',
'address': '127.0.1.1'}
)
self.get_surveil_client().config.commands.create(
command_name='check_integrationhosttest',
command_line='/usr/lib/monitoring/plugins/sfl/check_example'
self.get_surveil_client().config.reload_config()
def function():
status_host = (self.get_surveil_client().
config.hosts.get(host_name='host_name_up'))
self.assertTrue(
status_host['host_name'].decode() == 'host_name_up' and
status_host['address'].decode() == '127.0.1.1' and
status_host['use'].decode() == 'generic-host'
)
self.assertTrue(
self.try_for_x_seconds(
function,
time_to_wait=180,
cooldown=10,
exception=AssertionError,
message="Host is not updated."
)
)
def test_passive_check(self):
"""Test monitoring a host with passive checks."""
self.test_create_host()
self.get_surveil_client().config.services.create(
check_command="check_integrationhosttest",
check_interval="5",
@ -145,14 +171,24 @@ class TestSeparatedIntegrationSurveil(
)
def test_custom_plugins(self):
self.get_surveil_client().config.hosts.create(
host_name='integrationhosttest',
address='127.0.0.1',
use='generic-host',
)
"""Test documentation tutorial monitoring with your custom plugins."""
commands = [
"mkdir /usr/lib/monitoring/plugins/custom/",
"echo -e '#!/bin/bash\necho " +
"DISK $1 OK - free space: / 3326 MB (56%);"
" | /=2643MB;5948;5958;0;5968" +
"' | sudo tee /usr/lib/monitoring/plugins/"
"custom/check_example",
'chmod +x /usr/lib/monitoring/plugins/custom/'
'check_example'
]
self.execute_command(commands, 'alignak')
self.test_create_host()
self.get_surveil_client().config.commands.create(
command_name='check_integrationhosttest',
command_line='/usr/lib/monitoring/plugins/sfl/check_example'
command_line='$CUSTOMPLUGINSDIR$/check_example $HOSTADDRESS$'
)
self.get_surveil_client().config.services.create(
check_command="check_integrationhosttest",
@ -165,8 +201,7 @@ class TestSeparatedIntegrationSurveil(
notification_interval="30",
notification_period="24x7",
retry_interval="3",
service_description="check_integrationhosttest",
passive_checks_enabled="1"
service_description="check_integrationhosttest"
)
self.get_surveil_client().config.reload_config()
@ -178,8 +213,8 @@ class TestSeparatedIntegrationSurveil(
service['service_description'].decode() ==
'check_integrationhosttest' and
service['plugin_output'].decode() ==
"DISK OK - free space: / 3326 MB (56%);"
" | /=2643MB;5948;5958;0;5968"
"DISK 127.0.1.1 OK - free space: / 3326 MB (56%);"
"| /=2643MB;5948;5958;0;5968"
for service in status_services)
)
@ -191,4 +226,28 @@ class TestSeparatedIntegrationSurveil(
exception=AssertionError,
message="Custom Plugins is not used"
)
)
def test_list_metrics_name_host(self):
"""Test if a host with use=generic-host have the good metrics name."""
self.test_create_host()
def function():
metrics_name_hosts = (
self.get_surveil_client().status.hosts.metrics.get(
host_name='integrationhosttest')
)
self.assertTrue(
any(metric_name['metric_name'].decode() == 'rtmin'
for metric_name in metrics_name_hosts)
)
self.assertTrue(
self.try_for_x_seconds(
function,
time_to_wait=360,
cooldown=10,
exception=AssertionError,
message="No metric name for host created"
)
)