def test_es_wrapper_call(self): # NB! beware that if the environment variable 'elasticsearch-runner-install-path' is set this test will fail runner = ElasticsearchRunner(install_path='fakepath') self.assertEqual(runner._es_wrapper_call('nt'), [os.path.sep.join(['fakepath', runner.version_folder, 'bin', 'elasticsearch.bat'])]) self.assertEqual(runner._es_wrapper_call('posix'), ['/bin/sh', os.path.sep.join(['fakepath', runner.version_folder, 'bin', 'elasticsearch'])])
def test_run_multiple(self): self.runner = ElasticsearchRunner() self.runner.install() self.runner.run() self.runner.wait_for_green() self.assertTrue(self.runner.is_running()) self.runner2 = ElasticsearchRunner() self.runner2.install() self.runner2.run() self.runner2.wait_for_green() self.assertTrue(self.runner2.is_running()) health_resp = requests.get('http://localhost:%d/_cluster/health' % self.runner.es_state.port) self.assertEqual(200, health_resp.status_code) health_data = json.loads(health_resp.text) self.assertEqual(health_data['status'], 'green') health_resp = requests.get('http://localhost:%d/_cluster/health' % self.runner2.es_state.port) self.assertEqual(200, health_resp.status_code) health_data = json.loads(health_resp.text) self.assertEqual(health_data['status'], 'green') server_pid = self.runner.es_state.server_pid self.runner.stop() self.assertFalse(process_exists(server_pid)) self.assertFalse(self.runner.is_running()) self.assertIsNone(self.runner.es_state) server_pid = self.runner2.es_state.server_pid self.runner2.stop() self.assertFalse(process_exists(server_pid)) self.assertFalse(self.runner2.is_running()) self.assertIsNone(self.runner2.es_state)
def test_run_version2(self): es_version = '2.1.0' self.runner = ElasticsearchRunner(version=es_version) self.runner.install() self.runner.run() self.runner.wait_for_green() self.assertTrue(self.runner.is_running()) health_resp = requests.get('http://localhost:%d/_cluster/health' % self.runner.es_state.port) self.assertEqual(200, health_resp.status_code) health_data = json.loads(health_resp.text) self.assertEqual(health_data['status'], 'green') status = requests.get('http://localhost:%d' % self.runner.es_state.port) status_data = json.loads(status.text) self.assertEqual(status_data['version']['number'], es_version) server_pid = self.runner.es_state.server_pid self.runner.stop() self.assertFalse(process_exists(server_pid)) self.assertFalse(self.runner.is_running()) self.assertIsNone(self.runner.es_state)
class TestElasticsearchRunner(TestCase): def __init__(self, methodName='runTest'): super(TestElasticsearchRunner, self).__init__(methodName) self.runner = None self.runner2 = None def tearDown(self): super(TestElasticsearchRunner, self).tearDown() if self.runner and self.runner.is_running(): self.runner.stop() if self.runner2 and self.runner2.is_running(): self.runner2.stop() def test_run(self): self.runner = ElasticsearchRunner() self.runner.install() self.runner.run() self.runner.wait_for_green() self.assertTrue(self.runner.is_running()) health_resp = requests.get('http://localhost:%d/_cluster/health' % self.runner.es_state.port) self.assertEqual(200, health_resp.status_code) health_data = json.loads(health_resp.text) self.assertEqual(health_data['status'], 'green') server_pid = self.runner.es_state.server_pid self.runner.stop() self.assertFalse(process_exists(server_pid)) self.assertFalse(self.runner.is_running()) self.assertIsNone(self.runner.es_state) def test_run_multiple(self): self.runner = ElasticsearchRunner() self.runner.install() self.runner.run() self.runner.wait_for_green() self.assertTrue(self.runner.is_running()) self.runner2 = ElasticsearchRunner() self.runner2.install() self.runner2.run() self.runner2.wait_for_green() self.assertTrue(self.runner2.is_running()) health_resp = requests.get('http://localhost:%d/_cluster/health' % self.runner.es_state.port) self.assertEqual(200, health_resp.status_code) health_data = json.loads(health_resp.text) self.assertEqual(health_data['status'], 'green') health_resp = requests.get('http://localhost:%d/_cluster/health' % self.runner2.es_state.port) self.assertEqual(200, health_resp.status_code) health_data = json.loads(health_resp.text) self.assertEqual(health_data['status'], 'green') server_pid = self.runner.es_state.server_pid self.runner.stop() self.assertFalse(process_exists(server_pid)) self.assertFalse(self.runner.is_running()) self.assertIsNone(self.runner.es_state) server_pid = self.runner2.es_state.server_pid self.runner2.stop() self.assertFalse(process_exists(server_pid)) self.assertFalse(self.runner2.is_running()) self.assertIsNone(self.runner2.es_state) def test_es_wrapper_call(self): # NB! beware that if the environment variable 'elasticsearch-runner-install-path' is set this test will fail runner = ElasticsearchRunner(install_path='fakepath') self.assertEqual(runner._es_wrapper_call('nt'), [os.path.sep.join(['fakepath', runner.version_folder, 'bin', 'elasticsearch.bat'])]) self.assertEqual(runner._es_wrapper_call('posix'), ['/bin/sh', os.path.sep.join(['fakepath', runner.version_folder, 'bin', 'elasticsearch'])]) def test_run_version2(self): es_version = '2.1.0' self.runner = ElasticsearchRunner(version=es_version) self.runner.install() self.runner.run() self.runner.wait_for_green() self.assertTrue(self.runner.is_running()) health_resp = requests.get('http://localhost:%d/_cluster/health' % self.runner.es_state.port) self.assertEqual(200, health_resp.status_code) health_data = json.loads(health_resp.text) self.assertEqual(health_data['status'], 'green') status = requests.get('http://localhost:%d' % self.runner.es_state.port) status_data = json.loads(status.text) self.assertEqual(status_data['version']['number'], es_version) server_pid = self.runner.es_state.server_pid self.runner.stop() self.assertFalse(process_exists(server_pid)) self.assertFalse(self.runner.is_running()) self.assertIsNone(self.runner.es_state) def test_run_version15(self): es_version = '1.5.2' self.runner = ElasticsearchRunner(version=es_version) self.runner.install() self.runner.run() self.runner.wait_for_green() self.assertTrue(self.runner.is_running()) health_resp = requests.get('http://localhost:%d/_cluster/health' % self.runner.es_state.port) self.assertEqual(200, health_resp.status_code) health_data = json.loads(health_resp.text) self.assertEqual(health_data['status'], 'green') status = requests.get('http://localhost:%d' % self.runner.es_state.port) status_data = json.loads(status.text) self.assertEqual(status_data['version']['number'], es_version) server_pid = self.runner.es_state.server_pid self.runner.stop() self.assertFalse(process_exists(server_pid)) self.assertFalse(self.runner.is_running()) self.assertIsNone(self.runner.es_state) def test_parse_log_header_esv2_format(self): testStream = io.StringIO() testStream.write( u"[2015-10-08 11:21:02,427][INFO ][node ] [Hero] version[2.0.0-rc1], pid[208], build[4757962/2015-10-01T10:06:08Z]\n") testStream.write( u"[2015-10-08 11:21:09,025][INFO ][http ] [Hero] publish_address {127.0.0.1:9200}, bound_addresses {127.0.0.1:9200}, {[::1]:9200}\n") testStream.write(u"[2015-10-08 11:04:15,784][INFO ][node ] [Hero] started\n") testStream.seek(0) server_pid, es_port = parse_es_log_header(testStream) self.assertEqual(server_pid, 208) self.assertEqual(es_port, 9200) def test_parse_log_header_esv1_format(self): testStream = io.StringIO() testStream.write( u"[2015-10-08 11:04:09,252][INFO ][node ] [Astronomer] version[1.7.2], pid[8248], build[e43676b/2015-09-14T09:49:53Z]\n") testStream.write( u"[2015-10-08 11:04:15,784][INFO ][http ] [Astronomer] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/10.0.80.134:9200]}\n") testStream.write(u"[2015-10-08 11:04:15,784][INFO ][node ] [Astronomer] started\n") testStream.seek(0) server_pid, es_port = parse_es_log_header(testStream) self.assertEqual(server_pid, 8248) self.assertEqual(es_port, 9200)
from elasticsearch_runner.runner import ElasticsearchRunner es_runner = ElasticsearchRunner() def setup(): es_runner.install() es_runner.run() es_runner.wait_for_green() def teardown(): if es_runner and es_runner.is_running(): es_runner.stop()