This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Holger Freyther gerrit-no-reply at lists.osmocom.orgHolger Freyther has uploaded this change for review. ( https://gerrit.osmocom.org/9717 Change subject: ms: Simplify starting of the test and combine loop and wait ...................................................................... ms: Simplify starting of the test and combine loop and wait This will make it easier to strt different kind of tests. The cost of calling step_once is hopefully neglectable as it simplifies the test. Change-Id: I3708ac382c0a34e17cf147d18f03603946437a53 --- M src/osmo_ms_driver/__main__.py M src/osmo_ms_driver/location_update_test.py 2 files changed, 45 insertions(+), 42 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/17/9717/1 diff --git a/src/osmo_ms_driver/__main__.py b/src/osmo_ms_driver/__main__.py index abc5e54..ef06393 100644 --- a/src/osmo_ms_driver/__main__.py +++ b/src/osmo_ms_driver/__main__.py @@ -82,10 +82,7 @@ atexit.register(test.stop_all) # Run until everything has been launched - test.launch(loop) - - # Wait for it to complete - test.wait_for_result(loop) + test.run_test(loop) # Print stats test.print_stats() diff --git a/src/osmo_ms_driver/location_update_test.py b/src/osmo_ms_driver/location_update_test.py index 9bab8ad..a5823a5 100644 --- a/src/osmo_ms_driver/location_update_test.py +++ b/src/osmo_ms_driver/location_update_test.py @@ -97,7 +97,7 @@ for phy in self._phys: phy.verify_ready() - def launch(self, loop): + def prepare(self, loop): self.log("Starting testcase") self.pre_launch(loop) @@ -107,40 +107,57 @@ self._cdf.duration().total_seconds() + \ timedelta(seconds=120).total_seconds() - current_time = self._start_time - step_size = self._cdf.step_size().total_seconds() self._started = [] - too_slow = 0 + self._too_slow = 0 + + def step_once(self, loop, current_time): + if len(self._unstarted) <= 0: + return current_time, None + + step_size = self._cdf.step_size().total_seconds() # Start self._cdf.step_once() - while len(self._unstarted) > 0: - # Check for timeout - # start pending MS - while len(self._started) < self._cdf.current_scaled_value() and len(self._unstarted) > 0: - ms = self._unstarted.pop(0) - ms.start(loop) - launch_time = time.clock_gettime(time.CLOCK_MONOTONIC) - self._results[ms.name_number()].set_launch_time(launch_time) - self._started.append(ms) + # Check for timeout + # start pending MS + while len(self._started) < self._cdf.current_scaled_value() and len(self._unstarted) > 0: + ms = self._unstarted.pop(0) + ms.start(loop) + launch_time = time.clock_gettime(time.CLOCK_MONOTONIC) + self._results[ms.name_number()].set_launch_time(launch_time) + self._started.append(ms) - # Progress and sleep - self._cdf.step_once() + now_time = time.clock_gettime(time.CLOCK_MONOTONIC) + sleep_time = (current_time + step_size) - now_time + if sleep_time <= 0: + self.log("Starting too slowly. Moving on", + target=(current_time + step_size), now=now_time, sleep=sleep_time) + self._too_slow += 1 + sleep_time = 0 + if len(self._unstarted) == 0: + end_time = time.clock_gettime(time.CLOCK_MONOTONIC) + self.log("All started...", too_slow=self._too_slow, duration=end_time - self._start_time) + return current_time, None + + return current_time + step_size, sleep_time + + def run_test(self, loop): + self.prepare(loop) + + to_complete_time = self._start_time + self.TEST_TIME.total_seconds() + tick_time = self._start_time + + while not self.all_completed(): + tick_time, sleep_time = self.step_once(loop, tick_time) now_time = time.clock_gettime(time.CLOCK_MONOTONIC) - sleep_time = (current_time + step_size) - now_time - if sleep_time <= 0: - self.log("Starting too slowly. Moving on", - target=(current_time + step_size), now=now_time, sleep=sleep_time) - too_slow += 1 - else: - loop.schedule_timeout(sleep_time) - loop.select() - current_time += step_size - - end_time = time.clock_gettime(time.CLOCK_MONOTONIC) - self.log("All started...", too_slow=too_slow, duration=end_time - self._start_time) + if sleep_time is None: + sleep_time = to_complete_time - now_time + if sleep_time < 0: + break + loop.schedule_timeout(sleep_time) + loop.select() def stop_all(self): for launcher in self._started: @@ -165,17 +182,6 @@ raise Exception("Unknown event type..:" + _data.decode()) - def wait_for_result(self, loop): - to_complete_time = self._start_time + self.TEST_TIME.total_seconds() - - while not self.all_completed(): - now_time = time.clock_gettime(time.CLOCK_MONOTONIC) - sleep_time = to_complete_time - now_time - if sleep_time < 0: - break - loop.schedule_timeout(sleep_time) - loop.select() - def all_completed(self): from functools import reduce return reduce(lambda b, ms: b and ms.has_lu_time(), self._results.values(), True) -- To view, visit https://gerrit.osmocom.org/9717 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: I3708ac382c0a34e17cf147d18f03603946437a53 Gerrit-Change-Number: 9717 Gerrit-PatchSet: 1 Gerrit-Owner: Holger Freyther <holger at freyther.de> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180623/9172f2ac/attachment.htm>