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

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 

8 

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) 

24 

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} 

28 

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()) 

37 

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())