Coverage for src/es_testbed/classes/base.py: 94%
30 statements
« prev ^ index » next coverage.py v7.5.0, created at 2024-04-23 13:14 -0600
« prev ^ index » next coverage.py v7.5.0, created at 2024-04-23 13:14 -0600
1"""Base TestBed Class"""
2import typing as t
3from datetime import datetime, timezone
4from elasticsearch8 import Elasticsearch
5from es_testbed.helpers.utils import getlogger
6from .testplan import TestPlan
7from .tracker import Tracker
9class TestBed:
10 """Base TestBed Class"""
11 __test__ = False
12 def __init__(
13 self,
14 client: Elasticsearch = None,
15 plan: TestPlan = None,
16 autobuild: t.Optional[bool] = False,
17 ):
18 """Initialize"""
19 self.logger = getlogger('es_testbed.TestBed')
20 self.client = client
21 if plan is None: 21 ↛ 22line 21 didn't jump to line 22, because the condition on line 21 was never true
22 plan = TestPlan() # Use defaults
23 self.tracker = Tracker(client=client, plan=plan, autobuild=autobuild)
25 def ilm_polling(self, interval: t.Union[str, None] = None):
26 """Return persistent cluster settings to speed up ILM polling during testing"""
27 return {'indices.lifecycle.poll_interval': interval}
29 def setup(self):
30 """Setup the instance"""
31 start = datetime.now(timezone.utc)
32 self.logger.info('Setting: %s', self.ilm_polling(interval='1s'))
33 self.client.cluster.put_settings(persistent=self.ilm_polling(interval='1s'))
34 self.tracker.setup()
35 end = datetime.now(timezone.utc)
36 self.logger.info('Testbed setup elapsed time: %s', (end - start).total_seconds())
38 def teardown(self):
39 """Tear down anything we created"""
40 start = datetime.now(timezone.utc)
41 self.tracker.teardown()
42 self.logger.info('Restoring ILM polling to default: %s', self.ilm_polling(interval=None))
43 self.client.cluster.put_settings(persistent=self.ilm_polling(interval=None))
44 end = datetime.now(timezone.utc)
45 self.logger.info('Testbed teardown elapsed time: %s', (end - start).total_seconds())