114 lines
3.7 KiB
Python
114 lines
3.7 KiB
Python
|
from base import BaseTest
|
||
|
import os
|
||
|
from elasticsearch import Elasticsearch, TransportError
|
||
|
from nose.plugins.attrib import attr
|
||
|
import unittest
|
||
|
|
||
|
INTEGRATION_TESTS = os.environ.get('INTEGRATION_TESTS', False)
|
||
|
|
||
|
|
||
|
class Test(BaseTest):
|
||
|
|
||
|
def test_index_modified(self):
|
||
|
"""
|
||
|
Test that beat stops in case elasticsearch index is modified and pattern not
|
||
|
"""
|
||
|
self.render_config_template(
|
||
|
elasticsearch={"index": "test"},
|
||
|
)
|
||
|
|
||
|
exit_code = self.run_beat()
|
||
|
|
||
|
assert exit_code == 1
|
||
|
assert self.log_contains(
|
||
|
"setup.template.name and setup.template.pattern have to be set if index name is modified.") is True
|
||
|
|
||
|
def test_index_not_modified(self):
|
||
|
"""
|
||
|
Test that beat starts running if elasticsearch output is set
|
||
|
"""
|
||
|
self.render_config_template(
|
||
|
elasticsearch={"hosts": "localhost:9200"},
|
||
|
)
|
||
|
|
||
|
proc = self.start_beat()
|
||
|
self.wait_until(lambda: self.log_contains("mockbeat start running."))
|
||
|
proc.check_kill_and_wait()
|
||
|
|
||
|
def test_index_modified_no_pattern(self):
|
||
|
"""
|
||
|
Test that beat stops in case elasticsearch index is modified and pattern not
|
||
|
"""
|
||
|
self.render_config_template(
|
||
|
elasticsearch={"index": "test"},
|
||
|
es_template_name="test",
|
||
|
)
|
||
|
|
||
|
exit_code = self.run_beat()
|
||
|
|
||
|
assert exit_code == 1
|
||
|
assert self.log_contains(
|
||
|
"setup.template.name and setup.template.pattern have to be set if index name is modified.") is True
|
||
|
|
||
|
def test_index_modified_no_name(self):
|
||
|
"""
|
||
|
Test that beat stops in case elasticsearch index is modified and name not
|
||
|
"""
|
||
|
self.render_config_template(
|
||
|
elasticsearch={"index": "test"},
|
||
|
es_template_pattern="test",
|
||
|
)
|
||
|
|
||
|
exit_code = self.run_beat()
|
||
|
|
||
|
assert exit_code == 1
|
||
|
assert self.log_contains(
|
||
|
"setup.template.name and setup.template.pattern have to be set if index name is modified.") is True
|
||
|
|
||
|
def test_index_with_pattern_name(self):
|
||
|
"""
|
||
|
Test that beat starts running if elasticsearch output with modified index and pattern and name are set
|
||
|
"""
|
||
|
self.render_config_template(
|
||
|
elasticsearch={"hosts": "localhost:9200"},
|
||
|
es_template_name="test",
|
||
|
es_template_pattern="test-*",
|
||
|
)
|
||
|
|
||
|
proc = self.start_beat()
|
||
|
self.wait_until(lambda: self.log_contains("mockbeat start running."))
|
||
|
proc.check_kill_and_wait()
|
||
|
|
||
|
@unittest.skipUnless(INTEGRATION_TESTS, "integration test")
|
||
|
@attr('integration')
|
||
|
def test_json_template(self):
|
||
|
"""
|
||
|
Test loading of json based template
|
||
|
"""
|
||
|
|
||
|
self.copy_files(["template.json"])
|
||
|
|
||
|
path = os.path.join(self.working_dir, "template.json")
|
||
|
|
||
|
print path
|
||
|
self.render_config_template(
|
||
|
elasticsearch={"hosts": self.get_host()},
|
||
|
template_overwrite="true",
|
||
|
template_json_enabled="true",
|
||
|
template_json_path=path,
|
||
|
template_json_name="bla",
|
||
|
)
|
||
|
|
||
|
proc = self.start_beat()
|
||
|
self.wait_until(lambda: self.log_contains("mockbeat start running."))
|
||
|
self.wait_until(lambda: self.log_contains("Loading json template from file"))
|
||
|
self.wait_until(lambda: self.log_contains("Elasticsearch template with name 'bla' loaded"))
|
||
|
proc.check_kill_and_wait()
|
||
|
|
||
|
es = Elasticsearch([self.get_elasticsearch_url()])
|
||
|
result = es.transport.perform_request('GET', '/_template/bla')
|
||
|
assert len(result) == 1
|
||
|
|
||
|
def get_host(self):
|
||
|
return os.getenv('ES_HOST', 'localhost') + ':' + os.getenv('ES_PORT', '9200')
|