virtual: Make mass tests be able to activate themselves

We will need to enable/disable generation of lua script code
depending on the subscriber and mass test.

Change-Id: Ide4d788543d910356efe9f61e789b3975f7bc558
This commit is contained in:
Holger Hans Peter Freyther 2019-04-30 22:03:12 +01:00
parent 2e7e84358e
commit dbb16e869e
5 changed files with 42 additions and 18 deletions

View File

@ -122,7 +122,8 @@ class MsDriver(log.Origin):
for sub in self._subscribers:
self._starter.subscriber_add(sub)
self._executor.configure(len(self._subscribers))
self._starter.configure_tasks()
self._executor.configure(self._subscribers, self._starter.mobiles())
self._configured = True
def run_test(self):

View File

@ -98,8 +98,10 @@ def main():
'imsi': imsi,
'ki': ki,
'auth_algo': 'comp128v1',
'run_lu_test': False,
}
starter.subscriber_add(ms_osmo_mobile.MSOsmoMobile("ms_%d" % i, conf))
starter.configure_tasks()
test.configure(args.num_ms)
atexit.register(starter.stop_all)

View File

@ -60,9 +60,13 @@ class MassUpdateLocationTest(TestBase):
super().__init__(name, event_server, results)
self._event_server.register(self.handle_msg)
def configure(self, num_subscribers):
self._num_subscribers = num_subscribers
self._outstanding = num_subscribers
def configure(self, subscribers, mobiles):
# Enable the LU test script in each mobile
for mobile in mobiles:
mobile.set_cfg_item('run_lu_test', True)
self._num_subscribers = len(subscribers)
self._outstanding = self._num_subscribers
def handle_msg(self, _data, addr, time):
data = json.loads(_data.decode())

View File

@ -85,23 +85,32 @@ class OsmoMobile(Launcher):
self._ki = subscriber.ki()
self._omob_proc = None
lua_support = os.path.join(os.path.dirname(__file__), 'lua')
self._cfg = {
'test': {
'event_path': self._ev_server_path,
'lua_support': lua_support,
}
}
def imsi(self):
return self._imsi
def ki(self):
return self._ki
def set_cfg_item(self, key, value):
"""
Sets `key` to `value` inside the test dictionary.
Used by testcases to pass per MS settings into the lua script
generator.
"""
self._cfg['test'][key] = value
def write_lua_cfg(self):
lua_support = os.path.join(os.path.dirname(__file__), 'lua')
cfg = {
'test': {
'event_path': self._ev_server_path,
'lua_support': lua_support,
'run_lu_test': True,
}
}
lua_cfg_file = os.path.join(self._tmp_dir, "lua_" + self._name_number + ".lua")
lua_script = template.render(self._lua_template, cfg)
lua_script = template.render(self._lua_template, self._cfg)
with open(lua_cfg_file, 'w') as w:
w.write(lua_script)
return lua_cfg_file
@ -220,7 +229,6 @@ class MobileTestStarter(log.Origin):
def prepare(self, loop):
self.log("Starting testcase")
self.configure_tasks()
self.pre_launch(loop)
self._start_time = time.clock_gettime(time.CLOCK_MONOTONIC)
@ -296,3 +304,7 @@ class MobileTestStarter(log.Origin):
ms.set_start_time(time)
launch_delay = ms.start_time() - ms.launch_time()
self.log("MS start registered ", ms=ms, at=time, delay=launch_delay)
def mobiles(self):
"""Returns the list of mobiles configured."""
return self._mobiles

View File

@ -76,8 +76,13 @@ class TestBase(log.Origin, metaclass=ABCMeta):
self._event_server = event_server
self._results = results
def configure(self, num_subscribers):
"""Configures the test given the (number) of subscribers."""
def configure(self, subscribers, mobiles):
"""
Configures the test given the subscribers.
The subscriber at index _i_ belongs to the mobile at the
same index. subscribers[i] == mobiles[i].subscriber().
"""
pass
def before_start(self):
@ -107,9 +112,9 @@ class TestExecutor(log.Origin):
def add_test(self, test):
self._tests.append(test)
def configure(self, num_subscriber):
def configure(self, subscribers, mobiles):
for test in self._tests:
test.configure(num_subscriber)
test.configure(subscribers, mobiles)
def before_start(self):
for test in self._tests: