Change in osmo-gsm-tester[master]: Create a "ms_driver" stub for the testsuite

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.org
Tue Oct 30 21:28:43 UTC 2018


Holger Freyther has submitted this change and it was merged. ( https://gerrit.osmocom.org/10686 )

Change subject: Create a "ms_driver" stub for the testsuite
......................................................................

Create a "ms_driver" stub for the testsuite

All config parameters are hardcoded for now and it should push
subscribers into the test (which should be a base class but not
a specific test).

Change-Id: I586b6d532c6e6395b4e6f2cf2128372237d05a7d
---
A src/osmo_gsm_tester/ms_driver.py
M src/osmo_gsm_tester/suite.py
2 files changed, 137 insertions(+), 1 deletion(-)

Approvals:
  Pau Espin Pedrol: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/osmo_gsm_tester/ms_driver.py b/src/osmo_gsm_tester/ms_driver.py
new file mode 100644
index 0000000..808989e
--- /dev/null
+++ b/src/osmo_gsm_tester/ms_driver.py
@@ -0,0 +1,131 @@
+# ms_driver: Launch OsmocomBB mobile's virtually connected to a BTS
+#
+# Copyright (C) 2018 by Holger Hans Peter Freyther
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from datetime import timedelta
+from . import log
+from osmo_ms_driver.cdf import cdfs
+from osmo_ms_driver.event_server import EventServer
+from osmo_ms_driver.simple_loop import SimpleLoop
+from osmo_ms_driver.location_update_test import MassUpdateLocationTest
+
+import os.path
+import shutil
+import tempfile
+
+class Subscriber(log.Origin):
+    def __init__(self, imsi, ki):
+        super().__init__(log.C_RUN, 'subscriber')
+        self._imsi = imsi
+        self._ki = ki
+        self._auth_algo = "comp128v1"
+        self._msisdn = None
+
+    def msisdn(self):
+        return self._msisdn
+
+    def set_msisdn(self, msisdn):
+        self._msisdn = msisdn
+
+    def imsi(self):
+       return self._imsi
+
+    def ki(self):
+       return self._ki
+
+    def auth_algo(self):
+       return self._auth_algo
+
+class MsDriver(log.Origin):
+
+    def __init__(self, suite_run):
+        super().__init__(log.C_RUN, 'ms-driver')
+        self._suite_run = suite_run
+
+        # TODO: take config out of the test scenario
+        self._num_ms = 10
+        self._time_start = timedelta(seconds=60)
+        self._time_step = timedelta(milliseconds=100)
+        self._test_duration = timedelta(seconds=120)
+        self._cdf = cdfs["ease_in_out"](self._time_start, self._time_step)
+        self._loop = SimpleLoop()
+        self._suite_run.remember_to_stop(self)
+        self._test_case = None
+
+        if len(self.event_server_path().encode()) > 107:
+            raise log.Error('Path for event_server socket is longer than max allowed len for unix socket path (107):', self.event_server_path())
+
+    def event_server_path(self):
+        if self.event_server_sk_tmp_dir is None:
+            self.event_server_sk_tmp_dir = tempfile.mkdtemp('', 'ogteventserversk')
+        return os.path.join(self.event_server_sk_tmp_dir, 'osmo_ms_driver.unix')
+
+    def configure(self):
+        """
+        Configures the subscribers, tests and registration server. Needs to be
+        called after the complete configuration of this driver.
+        """
+        event_server_path = self.event_server_path()
+
+        self._ev_server = EventServer("ev_server", event_server_path)
+        self._ev_server.listen(self._loop)
+        self._test_case = MassUpdateLocationTest("mass", self._num_ms, self._cdf, self._ev_server, self.event_server_sk_tmp_dir)
+
+        # TODO: We should pass subscribers down to the test and not get it from
+        # there.
+        self._subs = [Subscriber(imsi=mob.imsi(), ki=mob.ki()) for mob in self._test_case.mobiles()]
+
+
+    def ms_subscribers(self):
+        """
+        Returns a list of 'subscribers' that were configured in the
+        current scenario.
+        """
+        if not hasattr(self, '_subs'):
+            self.configure()
+        return self._subs
+
+    def run_test(self):
+        """
+        Runs the configured tests by starting the configured amount of mobile
+        devices according to their schedule. Returns once all tests succeeded
+        or the configured timeout has passed.
+        """
+        if not hasattr(self, '_subs'):
+            self.configure()
+        self._test_case.run_test(self._loop, self._test_duration)
+
+    def print_stats(self):
+        """
+        Prints statistics about the test run.
+        """
+        self._test_case.print_stats()
+
+    def cleanup(self):
+        """
+        Stops the testcase and all launched processes. Called by the
+        suite.
+        """
+
+        # Clean-up the temporary directory.
+        if self.event_server_sk_tmp_dir:
+            shutil.rmtree(path=self.event_server_sk_tmp_dir)
+
+        if not self._test_case:
+            return
+        self._test_case.stop_all()
+
+# vim: expandtab tabstop=4 shiftwidth=4
diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py
index 932a6ab..22a47a2 100644
--- a/src/osmo_gsm_tester/suite.py
+++ b/src/osmo_gsm_tester/suite.py
@@ -23,7 +23,7 @@
 import pprint
 from . import config, log, util, resource, test
 from .event_loop import MainLoop
-from . import osmo_nitb, osmo_hlr, osmo_mgcpgw, osmo_mgw, osmo_msc, osmo_bsc, osmo_stp, osmo_ggsn, osmo_sgsn, modem, esme, osmocon
+from . import osmo_nitb, osmo_hlr, osmo_mgcpgw, osmo_mgw, osmo_msc, osmo_bsc, osmo_stp, osmo_ggsn, osmo_sgsn, modem, esme, osmocon, ms_driver
 
 class Timeout(Exception):
     pass
@@ -311,6 +311,11 @@
             ip_address = self.ip_address()
         return osmo_stp.OsmoStp(self, ip_address)
 
+    def ms_driver(self):
+        ms = ms_driver.MsDriver(self)
+        self.register_for_cleanup(ms)
+        return ms
+
     def bts(self, specifics=None):
         bts = bts_obj(self, self.reserved_resources.get(resource.R_BTS, specifics=specifics))
         bts.set_lac(self.lac())

-- 
To view, visit https://gerrit.osmocom.org/10686
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I586b6d532c6e6395b4e6f2cf2128372237d05a7d
Gerrit-Change-Number: 10686
Gerrit-PatchSet: 7
Gerrit-Owner: Holger Freyther <holger at freyther.de>
Gerrit-Reviewer: Holger Freyther <holger at freyther.de>
Gerrit-Reviewer: Jenkins Builder (1000002)
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181030/1a1e5c47/attachment.htm>


More information about the gerrit-log mailing list