<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17781">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Create core directory to contain most of code not in object classes used by tests<br><br>Change-Id: I9aec6c55ccd71894182057d36e0025b69925d314<br>---<br>M selftest/_prep.py<br>M selftest/config_test.py<br>M selftest/lock_test_help.py<br>M selftest/log_test.py<br>M selftest/process_test.py<br>M selftest/resource_test.py<br>M selftest/suite_test.py<br>M selftest/template_test.py<br>M selftest/trial_test.py<br>M selftest/util_test.py<br>M src/osmo-gsm-tester.py<br>M src/osmo_gsm_tester/bsc_osmo.py<br>M src/osmo_gsm_tester/bts.py<br>M src/osmo_gsm_tester/bts_nanobts.py<br>M src/osmo_gsm_tester/bts_oc2g.py<br>M src/osmo_gsm_tester/bts_octphy.py<br>M src/osmo_gsm_tester/bts_osmo.py<br>M src/osmo_gsm_tester/bts_osmotrx.py<br>M src/osmo_gsm_tester/bts_osmovirtual.py<br>M src/osmo_gsm_tester/bts_sysmo.py<br>A src/osmo_gsm_tester/core/__init__.py<br>R src/osmo_gsm_tester/core/config.py<br>R src/osmo_gsm_tester/core/event_loop.py<br>R src/osmo_gsm_tester/core/log.py<br>R src/osmo_gsm_tester/core/process.py<br>R src/osmo_gsm_tester/core/remote.py<br>R src/osmo_gsm_tester/core/schema.py<br>R src/osmo_gsm_tester/core/template.py<br>R src/osmo_gsm_tester/core/util.py<br>M src/osmo_gsm_tester/enb.py<br>M src/osmo_gsm_tester/enb_amarisoft.py<br>M src/osmo_gsm_tester/enb_srs.py<br>M src/osmo_gsm_tester/epc.py<br>M src/osmo_gsm_tester/epc_amarisoft.py<br>M src/osmo_gsm_tester/epc_srs.py<br>M src/osmo_gsm_tester/esme.py<br>M src/osmo_gsm_tester/ggsn_osmo.py<br>M src/osmo_gsm_tester/hlr_osmo.py<br>M src/osmo_gsm_tester/iperf3.py<br>M src/osmo_gsm_tester/mgcpgw_osmo.py<br>M src/osmo_gsm_tester/mgw_osmo.py<br>M src/osmo_gsm_tester/modem.py<br>M src/osmo_gsm_tester/ms.py<br>M src/osmo_gsm_tester/ms_amarisoft.py<br>M src/osmo_gsm_tester/ms_driver.py<br>M src/osmo_gsm_tester/ms_srs.py<br>M src/osmo_gsm_tester/msc_osmo.py<br>M src/osmo_gsm_tester/nitb_osmo.py<br>M src/osmo_gsm_tester/osmo_ctrl.py<br>M src/osmo_gsm_tester/osmocon.py<br>M src/osmo_gsm_tester/pcap_recorder.py<br>M src/osmo_gsm_tester/pcu.py<br>M src/osmo_gsm_tester/pcu_oc2g.py<br>M src/osmo_gsm_tester/pcu_osmo.py<br>M src/osmo_gsm_tester/pcu_sysmo.py<br>M src/osmo_gsm_tester/powersupply.py<br>M src/osmo_gsm_tester/powersupply_intellinet.py<br>M src/osmo_gsm_tester/powersupply_sispm.py<br>M src/osmo_gsm_tester/resource.py<br>M src/osmo_gsm_tester/run_node.py<br>M src/osmo_gsm_tester/sgsn_osmo.py<br>M src/osmo_gsm_tester/smsc.py<br>M src/osmo_gsm_tester/stp_osmo.py<br>M src/osmo_gsm_tester/suite.py<br>M src/osmo_gsm_tester/test.py<br>M src/osmo_gsm_tester/trial.py<br>M src/osmo_ms_driver/__main__.py<br>M src/osmo_ms_driver/event_server.py<br>M src/osmo_ms_driver/simple_loop.py<br>M src/osmo_ms_driver/starter.py<br>M src/osmo_ms_driver/test_support.py<br>71 files changed, 113 insertions(+), 89 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/selftest/_prep.py b/selftest/_prep.py</span><br><span>index 3ef6e81..582b8fb 100644</span><br><span>--- a/selftest/_prep.py</span><br><span>+++ b/selftest/_prep.py</span><br><span>@@ -7,11 +7,10 @@</span><br><span> # to find the osmo_gsm_tester py module</span><br><span> sys.path.append(src_dir)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import log</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import log</span><br><span> </span><br><span> log.TestsTarget()</span><br><span> log.set_all_levels(log.L_DBG)</span><br><span> </span><br><span> if '-v' in sys.argv:</span><br><span>     log.style_change(trace=True)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/selftest/config_test.py b/selftest/config_test.py</span><br><span>index fa86adc..83a8d06 100755</span><br><span>--- a/selftest/config_test.py</span><br><span>+++ b/selftest/config_test.py</span><br><span>@@ -8,7 +8,7 @@</span><br><span> import pprint</span><br><span> import copy</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import config, log, schema</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import config, log, schema</span><br><span> </span><br><span> example_config_file = 'test.cfg'</span><br><span> example_config = os.path.join(_prep.script_dir, 'config_test', example_config_file)</span><br><span>diff --git a/selftest/lock_test_help.py b/selftest/lock_test_help.py</span><br><span>index f4e1f9b..d68bbf8 100644</span><br><span>--- a/selftest/lock_test_help.py</span><br><span>+++ b/selftest/lock_test_help.py</span><br><span>@@ -4,7 +4,7 @@</span><br><span> </span><br><span> import _prep</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester.util import FileLock, touch_file</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core.util import FileLock, touch_file</span><br><span> </span><br><span> testdir, name = sys.argv[1:]</span><br><span> stop_signalling_file = os.path.join(testdir, name)</span><br><span>diff --git a/selftest/log_test.py b/selftest/log_test.py</span><br><span>index 889a8a5..f6ce02b 100755</span><br><span>--- a/selftest/log_test.py</span><br><span>+++ b/selftest/log_test.py</span><br><span>@@ -24,7 +24,7 @@</span><br><span> import sys</span><br><span> import os</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import log</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import log</span><br><span> </span><br><span> #log.targets[0].get_time_str = lambda: '01:02:03'</span><br><span> fake_time = '01:02:03'</span><br><span>@@ -45,7 +45,7 @@</span><br><span>         super().__init__(log.C_TST, *name_items, **detail_items)</span><br><span> </span><br><span> t = LogTest('some', 'name', some="detail")</span><br><span style="color: hsl(0, 100%, 40%);">-        </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> t.log("hello log")</span><br><span> t.err("hello err")</span><br><span> t.dbg("hello dbg not visible")</span><br><span>diff --git a/selftest/process_test.py b/selftest/process_test.py</span><br><span>index 71523c9..de4f7a6 100755</span><br><span>--- a/selftest/process_test.py</span><br><span>+++ b/selftest/process_test.py</span><br><span>@@ -4,7 +4,7 @@</span><br><span> import time</span><br><span> import os</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import process, util, log</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import process, util, log</span><br><span> </span><br><span> tmpdir = util.Dir(util.get_tempdir())</span><br><span> </span><br><span>diff --git a/selftest/resource_test.py b/selftest/resource_test.py</span><br><span>index cdfe021..f399e20 100755</span><br><span>--- a/selftest/resource_test.py</span><br><span>+++ b/selftest/resource_test.py</span><br><span>@@ -6,7 +6,8 @@</span><br><span> import shutil</span><br><span> import atexit</span><br><span> import _prep</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import config, log, resource, util</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import config, log, util</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester import resource</span><br><span> </span><br><span> workdir = util.get_tempdir()</span><br><span> </span><br><span>diff --git a/selftest/suite_test.py b/selftest/suite_test.py</span><br><span>index 115d76e..c4dd5bf 100755</span><br><span>--- a/selftest/suite_test.py</span><br><span>+++ b/selftest/suite_test.py</span><br><span>@@ -2,7 +2,8 @@</span><br><span> import os</span><br><span> import _prep</span><br><span> import shutil</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import log, suite, config, report, util</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import log, config, util</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester import suite, report</span><br><span> </span><br><span> config.ENV_CONF = './suite_test'</span><br><span> </span><br><span>diff --git a/selftest/template_test.py b/selftest/template_test.py</span><br><span>index f4f1bd5..747d508 100755</span><br><span>--- a/selftest/template_test.py</span><br><span>+++ b/selftest/template_test.py</span><br><span>@@ -5,7 +5,7 @@</span><br><span> import sys</span><br><span> import os</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import template, log</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import template, log</span><br><span> </span><br><span> log.set_level(log.C_CNF, log.L_DBG)</span><br><span> </span><br><span>diff --git a/selftest/trial_test.py b/selftest/trial_test.py</span><br><span>index ba3f01b..e73ca37 100755</span><br><span>--- a/selftest/trial_test.py</span><br><span>+++ b/selftest/trial_test.py</span><br><span>@@ -3,7 +3,7 @@</span><br><span> import time</span><br><span> import _prep</span><br><span> import os</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import util</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import util</span><br><span> from osmo_gsm_tester.trial import Trial</span><br><span> </span><br><span> workdir = util.get_tempdir()</span><br><span>diff --git a/selftest/util_test.py b/selftest/util_test.py</span><br><span>index c517655..e07b2d4 100755</span><br><span>--- a/selftest/util_test.py</span><br><span>+++ b/selftest/util_test.py</span><br><span>@@ -1,7 +1,7 @@</span><br><span> #!/usr/bin/env python3</span><br><span> import _prep</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester.util import hash_obj</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core.util import hash_obj</span><br><span> </span><br><span> print('- expect the same hashes on every test run')</span><br><span> print(hash_obj('abc'))</span><br><span>@@ -9,4 +9,3 @@</span><br><span> print(hash_obj([1, 2, 3]))</span><br><span> print(hash_obj({ 'k': [ {'a': 1, 'b': 2}, {'a': 3, 'b': 4}, ],</span><br><span>                  'i': [ {'c': 1, 'd': 2}, {'c': 3, 'd': 4}, ] }))</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/src/osmo-gsm-tester.py b/src/osmo-gsm-tester.py</span><br><span>index 18b852b..df87957 100755</span><br><span>--- a/src/osmo-gsm-tester.py</span><br><span>+++ b/src/osmo-gsm-tester.py</span><br><span>@@ -70,7 +70,8 @@</span><br><span> import argparse</span><br><span> from signal import *</span><br><span> from osmo_gsm_tester import __version__</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import trial, suite, log, config</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import log, config</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester import trial, suite</span><br><span> </span><br><span> def sig_handler_cleanup(signum, frame):</span><br><span>     print("killed by signal %d" % signum)</span><br><span>diff --git a/src/osmo_gsm_tester/bsc_osmo.py b/src/osmo_gsm_tester/bsc_osmo.py</span><br><span>index 4160527..e9d1631 100644</span><br><span>--- a/src/osmo_gsm_tester/bsc_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/bsc_osmo.py</span><br><span>@@ -21,7 +21,8 @@</span><br><span> import re</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, osmo_ctrl, pcap_recorder</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import osmo_ctrl, pcap_recorder</span><br><span> </span><br><span> class OsmoBsc(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/bts.py b/src/osmo_gsm_tester/bts.py</span><br><span>index 2ca44d2..a20bd53 100644</span><br><span>--- a/src/osmo_gsm_tester/bts.py</span><br><span>+++ b/src/osmo_gsm_tester/bts.py</span><br><span>@@ -19,7 +19,7 @@</span><br><span> </span><br><span> import copy</span><br><span> from abc import ABCMeta, abstractmethod</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config, schema</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config, schema</span><br><span> </span><br><span> class Bts(log.Origin, metaclass=ABCMeta):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/bts_nanobts.py b/src/osmo_gsm_tester/bts_nanobts.py</span><br><span>index 4cdb98e..539e5ed 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_nanobts.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_nanobts.py</span><br><span>@@ -20,9 +20,10 @@</span><br><span> import os</span><br><span> import re</span><br><span> import json</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config, util, process, pcap_recorder, bts, pcu</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config, util, process</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcap_recorder, bts, pcu</span><br><span> from . import powersupply</span><br><span style="color: hsl(0, 100%, 40%);">-from .event_loop import MainLoop</span><br><span> </span><br><span> class NanoBts(bts.Bts):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/bts_oc2g.py b/src/osmo_gsm_tester/bts_oc2g.py</span><br><span>index d1f80b7..0cebc09 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_oc2g.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_oc2g.py</span><br><span>@@ -19,7 +19,8 @@</span><br><span> </span><br><span> import os</span><br><span> import pprint</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config, util, template, process, remote, pcu_oc2g, bts_osmo</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config, util, template, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcu_oc2g, bts_osmo</span><br><span> </span><br><span> class OsmoBtsOC2G(bts_osmo.OsmoBts):</span><br><span> ##############</span><br><span>diff --git a/src/osmo_gsm_tester/bts_octphy.py b/src/osmo_gsm_tester/bts_octphy.py</span><br><span>index a1dd494..e15cc15 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_octphy.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_octphy.py</span><br><span>@@ -19,7 +19,8 @@</span><br><span> </span><br><span> import os</span><br><span> import pprint</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config, util, template, process, bts_osmo</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config, util, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import bts_osmo</span><br><span> </span><br><span> class OsmoBtsOctphy(bts_osmo.OsmoBtsMainUnit):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/bts_osmo.py b/src/osmo_gsm_tester/bts_osmo.py</span><br><span>index 9105c28..39ca264 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_osmo.py</span><br><span>@@ -20,7 +20,8 @@</span><br><span> import os</span><br><span> import tempfile</span><br><span> from abc import ABCMeta, abstractmethod</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, bts, pcu_osmo</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log</span><br><span style="color: hsl(120, 100%, 40%);">+from . import bts, pcu_osmo</span><br><span> </span><br><span> class OsmoBts(bts.Bts, metaclass=ABCMeta):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py</span><br><span>index 22ff4b6..91a1dd8 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_osmotrx.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_osmotrx.py</span><br><span>@@ -20,9 +20,9 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> from abc import ABCMeta, abstractmethod</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config, util, template, process, remote, bts_osmo</span><br><span style="color: hsl(0, 100%, 40%);">-from . import powersupply</span><br><span style="color: hsl(0, 100%, 40%);">-from .event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config, util, template, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+from . import powersupply, bts_osmo</span><br><span> </span><br><span> class OsmoBtsTrx(bts_osmo.OsmoBtsMainUnit):</span><br><span> ##############</span><br><span>diff --git a/src/osmo_gsm_tester/bts_osmovirtual.py b/src/osmo_gsm_tester/bts_osmovirtual.py</span><br><span>index 516d992..262c805 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_osmovirtual.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_osmovirtual.py</span><br><span>@@ -20,7 +20,8 @@</span><br><span> </span><br><span> import os</span><br><span> import pprint</span><br><span style="color: hsl(0, 100%, 40%);">-from . import config, util, template, process, bts_osmo</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import config, util, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import bts_osmo</span><br><span> </span><br><span> class OsmoBtsVirtual(bts_osmo.OsmoBtsMainUnit):</span><br><span> ##############</span><br><span>@@ -112,4 +113,3 @@</span><br><span>         self.suite_run.poll()</span><br><span> </span><br><span> # vim: expandtab tabstop=4 shiftwidth=4</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/src/osmo_gsm_tester/bts_sysmo.py b/src/osmo_gsm_tester/bts_sysmo.py</span><br><span>index d616e29..d28b034 100644</span><br><span>--- a/src/osmo_gsm_tester/bts_sysmo.py</span><br><span>+++ b/src/osmo_gsm_tester/bts_sysmo.py</span><br><span>@@ -19,7 +19,8 @@</span><br><span> </span><br><span> import os</span><br><span> import pprint</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config, util, template, process, remote, pcu_sysmo, bts_osmo</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config, util, template, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcu_sysmo, bts_osmo</span><br><span> </span><br><span> class SysmoBts(bts_osmo.OsmoBts):</span><br><span> ##############</span><br><span>diff --git a/src/osmo_gsm_tester/core/__init__.py b/src/osmo_gsm_tester/core/__init__.py</span><br><span>new file mode 100644</span><br><span>index 0000000..e69de29</span><br><span>--- /dev/null</span><br><span>+++ b/src/osmo_gsm_tester/core/__init__.py</span><br><span>diff --git a/src/osmo_gsm_tester/config.py b/src/osmo_gsm_tester/core/config.py</span><br><span>similarity index 100%</span><br><span>rename from src/osmo_gsm_tester/config.py</span><br><span>rename to src/osmo_gsm_tester/core/config.py</span><br><span>diff --git a/src/osmo_gsm_tester/event_loop.py b/src/osmo_gsm_tester/core/event_loop.py</span><br><span>similarity index 100%</span><br><span>rename from src/osmo_gsm_tester/event_loop.py</span><br><span>rename to src/osmo_gsm_tester/core/event_loop.py</span><br><span>diff --git a/src/osmo_gsm_tester/log.py b/src/osmo_gsm_tester/core/log.py</span><br><span>similarity index 100%</span><br><span>rename from src/osmo_gsm_tester/log.py</span><br><span>rename to src/osmo_gsm_tester/core/log.py</span><br><span>diff --git a/src/osmo_gsm_tester/process.py b/src/osmo_gsm_tester/core/process.py</span><br><span>similarity index 100%</span><br><span>rename from src/osmo_gsm_tester/process.py</span><br><span>rename to src/osmo_gsm_tester/core/process.py</span><br><span>diff --git a/src/osmo_gsm_tester/remote.py b/src/osmo_gsm_tester/core/remote.py</span><br><span>similarity index 98%</span><br><span>rename from src/osmo_gsm_tester/remote.py</span><br><span>rename to src/osmo_gsm_tester/core/remote.py</span><br><span>index ba1a5e1..95b8967 100644</span><br><span>--- a/src/osmo_gsm_tester/remote.py</span><br><span>+++ b/src/osmo_gsm_tester/core/remote.py</span><br><span>@@ -22,7 +22,7 @@</span><br><span> import re</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, osmo_ctrl, pcap_recorder</span><br><span style="color: hsl(120, 100%, 40%);">+from . import log, util, config, template, process</span><br><span> </span><br><span> class RemoteHost(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/schema.py b/src/osmo_gsm_tester/core/schema.py</span><br><span>similarity index 100%</span><br><span>rename from src/osmo_gsm_tester/schema.py</span><br><span>rename to src/osmo_gsm_tester/core/schema.py</span><br><span>diff --git a/src/osmo_gsm_tester/template.py b/src/osmo_gsm_tester/core/template.py</span><br><span>similarity index 95%</span><br><span>rename from src/osmo_gsm_tester/template.py</span><br><span>rename to src/osmo_gsm_tester/core/template.py</span><br><span>index dac89f2..2bf4fed 100644</span><br><span>--- a/src/osmo_gsm_tester/template.py</span><br><span>+++ b/src/osmo_gsm_tester/core/template.py</span><br><span>@@ -32,7 +32,7 @@</span><br><span>     global _logger</span><br><span>     if not templates_dirs:</span><br><span>         # default templates dir is relative to this source file</span><br><span style="color: hsl(0, 100%, 40%);">-        templates_dirs = [os.path.join(os.path.dirname(__file__), 'templates')]</span><br><span style="color: hsl(120, 100%, 40%);">+        templates_dirs = [os.path.join(os.path.dirname(os.path.dirname(__file__)), 'templates')]</span><br><span>     for d in templates_dirs:</span><br><span>         if not os.path.isdir(d):</span><br><span>             raise RuntimeError('templates dir is not a dir: %r'</span><br><span>diff --git a/src/osmo_gsm_tester/util.py b/src/osmo_gsm_tester/core/util.py</span><br><span>similarity index 100%</span><br><span>rename from src/osmo_gsm_tester/util.py</span><br><span>rename to src/osmo_gsm_tester/core/util.py</span><br><span>diff --git a/src/osmo_gsm_tester/enb.py b/src/osmo_gsm_tester/enb.py</span><br><span>index d069f84..edaf462 100644</span><br><span>--- a/src/osmo_gsm_tester/enb.py</span><br><span>+++ b/src/osmo_gsm_tester/enb.py</span><br><span>@@ -18,7 +18,7 @@</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span> from abc import ABCMeta, abstractmethod</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config</span><br><span> </span><br><span> </span><br><span> class eNodeB(log.Origin, metaclass=ABCMeta):</span><br><span>diff --git a/src/osmo_gsm_tester/enb_amarisoft.py b/src/osmo_gsm_tester/enb_amarisoft.py</span><br><span>index 1487bdd..a058653 100644</span><br><span>--- a/src/osmo_gsm_tester/enb_amarisoft.py</span><br><span>+++ b/src/osmo_gsm_tester/enb_amarisoft.py</span><br><span>@@ -20,7 +20,7 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process, remote</span><br><span> from . import enb</span><br><span> </span><br><span> def rf_type_valid(rf_type_str):</span><br><span>diff --git a/src/osmo_gsm_tester/enb_srs.py b/src/osmo_gsm_tester/enb_srs.py</span><br><span>index 372848d..079671a 100644</span><br><span>--- a/src/osmo_gsm_tester/enb_srs.py</span><br><span>+++ b/src/osmo_gsm_tester/enb_srs.py</span><br><span>@@ -20,7 +20,7 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process, remote</span><br><span> from . import enb</span><br><span> </span><br><span> def rf_type_valid(rf_type_str):</span><br><span>diff --git a/src/osmo_gsm_tester/epc.py b/src/osmo_gsm_tester/epc.py</span><br><span>index 6aa17e7..9141455 100644</span><br><span>--- a/src/osmo_gsm_tester/epc.py</span><br><span>+++ b/src/osmo_gsm_tester/epc.py</span><br><span>@@ -18,7 +18,7 @@</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span> from abc import ABCMeta, abstractmethod</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config</span><br><span> </span><br><span> </span><br><span> class EPC(log.Origin, metaclass=ABCMeta):</span><br><span>diff --git a/src/osmo_gsm_tester/epc_amarisoft.py b/src/osmo_gsm_tester/epc_amarisoft.py</span><br><span>index a117a9e..33b8162 100644</span><br><span>--- a/src/osmo_gsm_tester/epc_amarisoft.py</span><br><span>+++ b/src/osmo_gsm_tester/epc_amarisoft.py</span><br><span>@@ -20,7 +20,7 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process, remote</span><br><span> from . import epc</span><br><span> </span><br><span> class AmarisoftEPC(epc.EPC):</span><br><span>diff --git a/src/osmo_gsm_tester/epc_srs.py b/src/osmo_gsm_tester/epc_srs.py</span><br><span>index 7c32486..4a45c7e 100644</span><br><span>--- a/src/osmo_gsm_tester/epc_srs.py</span><br><span>+++ b/src/osmo_gsm_tester/epc_srs.py</span><br><span>@@ -20,7 +20,7 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process, remote</span><br><span> from . import epc</span><br><span> </span><br><span> class srsEPC(epc.EPC):</span><br><span>diff --git a/src/osmo_gsm_tester/esme.py b/src/osmo_gsm_tester/esme.py</span><br><span>index de3ac16..048b69e 100644</span><br><span>--- a/src/osmo_gsm_tester/esme.py</span><br><span>+++ b/src/osmo_gsm_tester/esme.py</span><br><span>@@ -23,8 +23,8 @@</span><br><span> import smpplib.consts</span><br><span> import smpplib.exceptions</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log</span><br><span style="color: hsl(0, 100%, 40%);">-from .event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.event_loop import MainLoop</span><br><span> </span><br><span> # if you want to know what's happening inside python-smpplib</span><br><span> #import logging</span><br><span>diff --git a/src/osmo_gsm_tester/ggsn_osmo.py b/src/osmo_gsm_tester/ggsn_osmo.py</span><br><span>index 0ece596..e699203 100644</span><br><span>--- a/src/osmo_gsm_tester/ggsn_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/ggsn_osmo.py</span><br><span>@@ -20,7 +20,8 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, pcap_recorder</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcap_recorder</span><br><span> </span><br><span> class OsmoGgsn(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/hlr_osmo.py b/src/osmo_gsm_tester/hlr_osmo.py</span><br><span>index 1c361dd..245328b 100644</span><br><span>--- a/src/osmo_gsm_tester/hlr_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/hlr_osmo.py</span><br><span>@@ -21,7 +21,8 @@</span><br><span> import pprint</span><br><span> import sqlite3</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, pcap_recorder</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcap_recorder</span><br><span> </span><br><span> class OsmoHlr(log.Origin):</span><br><span>     run_dir = None</span><br><span>diff --git a/src/osmo_gsm_tester/iperf3.py b/src/osmo_gsm_tester/iperf3.py</span><br><span>index 7103193..331a3ba 100644</span><br><span>--- a/src/osmo_gsm_tester/iperf3.py</span><br><span>+++ b/src/osmo_gsm_tester/iperf3.py</span><br><span>@@ -20,7 +20,8 @@</span><br><span> import os</span><br><span> import json</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, process, pcap_recorder, run_node, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcap_recorder, run_node</span><br><span> </span><br><span> def iperf3_result_to_json(file):</span><br><span>     with open(file) as f:</span><br><span>diff --git a/src/osmo_gsm_tester/mgcpgw_osmo.py b/src/osmo_gsm_tester/mgcpgw_osmo.py</span><br><span>index 20bb689..0c9a13a 100644</span><br><span>--- a/src/osmo_gsm_tester/mgcpgw_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/mgcpgw_osmo.py</span><br><span>@@ -20,7 +20,8 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, pcap_recorder</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcap_recorder</span><br><span> </span><br><span> class OsmoMgcpgw(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/mgw_osmo.py b/src/osmo_gsm_tester/mgw_osmo.py</span><br><span>index ea8e652..b7bd681 100644</span><br><span>--- a/src/osmo_gsm_tester/mgw_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/mgw_osmo.py</span><br><span>@@ -20,7 +20,8 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, pcap_recorder</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcap_recorder</span><br><span> </span><br><span> class OsmoMgw(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/modem.py b/src/osmo_gsm_tester/modem.py</span><br><span>index a1e5e97..6759e70 100644</span><br><span>--- a/src/osmo_gsm_tester/modem.py</span><br><span>+++ b/src/osmo_gsm_tester/modem.py</span><br><span>@@ -17,9 +17,10 @@</span><br><span> # You should have received a copy of the GNU General Public License</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, sms, process</span><br><span style="color: hsl(0, 100%, 40%);">-from .event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, process</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.event_loop import MainLoop</span><br><span> from .ms import MS</span><br><span style="color: hsl(120, 100%, 40%);">+from . import sms</span><br><span> </span><br><span> from pydbus import SystemBus, Variant</span><br><span> import os</span><br><span>diff --git a/src/osmo_gsm_tester/ms.py b/src/osmo_gsm_tester/ms.py</span><br><span>index 3276aff..d310f5f 100644</span><br><span>--- a/src/osmo_gsm_tester/ms.py</span><br><span>+++ b/src/osmo_gsm_tester/ms.py</span><br><span>@@ -18,7 +18,7 @@</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span> from abc import ABCMeta, abstractmethod</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log</span><br><span> </span><br><span> class MS(log.Origin, metaclass=ABCMeta):</span><br><span>     """Base for everything about mobile/modem and SIMs."""</span><br><span>diff --git a/src/osmo_gsm_tester/ms_amarisoft.py b/src/osmo_gsm_tester/ms_amarisoft.py</span><br><span>index 422f28d..9527fa9 100644</span><br><span>--- a/src/osmo_gsm_tester/ms_amarisoft.py</span><br><span>+++ b/src/osmo_gsm_tester/ms_amarisoft.py</span><br><span>@@ -20,9 +20,9 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.event_loop import MainLoop</span><br><span> from .run_node import RunNode</span><br><span style="color: hsl(0, 100%, 40%);">-from .event_loop import MainLoop</span><br><span> from .ms import MS</span><br><span> </span><br><span> def rf_type_valid(rf_type_str):</span><br><span>diff --git a/src/osmo_gsm_tester/ms_driver.py b/src/osmo_gsm_tester/ms_driver.py</span><br><span>index f1334fc..ef45b8b 100644</span><br><span>--- a/src/osmo_gsm_tester/ms_driver.py</span><br><span>+++ b/src/osmo_gsm_tester/ms_driver.py</span><br><span>@@ -16,7 +16,7 @@</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span> from datetime import timedelta</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util</span><br><span> from osmo_ms_driver.cdf import cdfs</span><br><span> from osmo_ms_driver.event_server import EventServer</span><br><span> from osmo_ms_driver.simple_loop import SimpleLoop</span><br><span>diff --git a/src/osmo_gsm_tester/ms_srs.py b/src/osmo_gsm_tester/ms_srs.py</span><br><span>index 119a477..d23cf40 100644</span><br><span>--- a/src/osmo_gsm_tester/ms_srs.py</span><br><span>+++ b/src/osmo_gsm_tester/ms_srs.py</span><br><span>@@ -20,9 +20,9 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, remote</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process, remote</span><br><span> from .run_node import RunNode</span><br><span style="color: hsl(0, 100%, 40%);">-from .event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.event_loop import MainLoop</span><br><span> from .ms import MS</span><br><span> </span><br><span> def rf_type_valid(rf_type_str):</span><br><span>diff --git a/src/osmo_gsm_tester/msc_osmo.py b/src/osmo_gsm_tester/msc_osmo.py</span><br><span>index 51f50c4..fd5d41f 100644</span><br><span>--- a/src/osmo_gsm_tester/msc_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/msc_osmo.py</span><br><span>@@ -20,7 +20,8 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, osmo_ctrl, pcap_recorder, smsc</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import osmo_ctrl, pcap_recorder, smsc</span><br><span> </span><br><span> class OsmoMsc(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/nitb_osmo.py b/src/osmo_gsm_tester/nitb_osmo.py</span><br><span>index e161ccb..ec4912f 100644</span><br><span>--- a/src/osmo_gsm_tester/nitb_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/nitb_osmo.py</span><br><span>@@ -21,7 +21,8 @@</span><br><span> import re</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, osmo_ctrl, pcap_recorder, smsc</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import osmo_ctrl, pcap_recorder, smsc</span><br><span> </span><br><span> class OsmoNitb(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/osmo_ctrl.py b/src/osmo_gsm_tester/osmo_ctrl.py</span><br><span>index be27b75..3bc21bd 100644</span><br><span>--- a/src/osmo_gsm_tester/osmo_ctrl.py</span><br><span>+++ b/src/osmo_gsm_tester/osmo_ctrl.py</span><br><span>@@ -21,7 +21,7 @@</span><br><span> import socket</span><br><span> import struct</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log</span><br><span> </span><br><span> class CtrlInterfaceExn(Exception):</span><br><span>     pass</span><br><span>diff --git a/src/osmo_gsm_tester/osmocon.py b/src/osmo_gsm_tester/osmocon.py</span><br><span>index 8b6040f..a6b3221 100644</span><br><span>--- a/src/osmo_gsm_tester/osmocon.py</span><br><span>+++ b/src/osmo_gsm_tester/osmocon.py</span><br><span>@@ -20,8 +20,8 @@</span><br><span> import os</span><br><span> import tempfile</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, process</span><br><span style="color: hsl(0, 100%, 40%);">-from .event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, process</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.event_loop import MainLoop</span><br><span> </span><br><span> class Osmocon(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/pcap_recorder.py b/src/osmo_gsm_tester/pcap_recorder.py</span><br><span>index e0f0098..a9ba3a7 100644</span><br><span>--- a/src/osmo_gsm_tester/pcap_recorder.py</span><br><span>+++ b/src/osmo_gsm_tester/pcap_recorder.py</span><br><span>@@ -19,7 +19,7 @@</span><br><span> </span><br><span> import os</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, process</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, process</span><br><span> </span><br><span> class PcapRecorder(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/pcu.py b/src/osmo_gsm_tester/pcu.py</span><br><span>index cc338cf..9dd6f59 100644</span><br><span>--- a/src/osmo_gsm_tester/pcu.py</span><br><span>+++ b/src/osmo_gsm_tester/pcu.py</span><br><span>@@ -18,7 +18,7 @@</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span> from abc import ABCMeta, abstractmethod</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log</span><br><span> </span><br><span> class Pcu(log.Origin, metaclass=ABCMeta):</span><br><span>     """PCU Abstract Base Class."""</span><br><span>diff --git a/src/osmo_gsm_tester/pcu_oc2g.py b/src/osmo_gsm_tester/pcu_oc2g.py</span><br><span>index 67c49b3..714f6fd 100644</span><br><span>--- a/src/osmo_gsm_tester/pcu_oc2g.py</span><br><span>+++ b/src/osmo_gsm_tester/pcu_oc2g.py</span><br><span>@@ -19,7 +19,8 @@</span><br><span> </span><br><span> import os</span><br><span> import pprint</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config, util, template, process, pcu</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config, util, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcu</span><br><span> </span><br><span> class OsmoPcuOC2G(pcu.Pcu):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/pcu_osmo.py b/src/osmo_gsm_tester/pcu_osmo.py</span><br><span>index aac6901..11d3805 100644</span><br><span>--- a/src/osmo_gsm_tester/pcu_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/pcu_osmo.py</span><br><span>@@ -19,7 +19,8 @@</span><br><span> </span><br><span> import os</span><br><span> import pprint</span><br><span style="color: hsl(0, 100%, 40%);">-from . import config, util, template, process, pcu</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import config, util, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcu</span><br><span> </span><br><span> class OsmoPcu(pcu.Pcu):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/pcu_sysmo.py b/src/osmo_gsm_tester/pcu_sysmo.py</span><br><span>index 55d6f53..e907367 100644</span><br><span>--- a/src/osmo_gsm_tester/pcu_sysmo.py</span><br><span>+++ b/src/osmo_gsm_tester/pcu_sysmo.py</span><br><span>@@ -19,7 +19,8 @@</span><br><span> </span><br><span> import os</span><br><span> import pprint</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config, util, template, process, pcu</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config, util, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcu</span><br><span> </span><br><span> class OsmoPcuSysmo(pcu.Pcu):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/powersupply.py b/src/osmo_gsm_tester/powersupply.py</span><br><span>index 1cf7106..4a9205d 100644</span><br><span>--- a/src/osmo_gsm_tester/powersupply.py</span><br><span>+++ b/src/osmo_gsm_tester/powersupply.py</span><br><span>@@ -18,8 +18,8 @@</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span> from abc import ABCMeta, abstractmethod</span><br><span style="color: hsl(0, 100%, 40%);">-from . import log</span><br><span style="color: hsl(0, 100%, 40%);">-from .event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.event_loop import MainLoop</span><br><span> </span><br><span> class PowerSupply(log.Origin, metaclass=ABCMeta):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/powersupply_intellinet.py b/src/osmo_gsm_tester/powersupply_intellinet.py</span><br><span>index 792d929..02dc803 100644</span><br><span>--- a/src/osmo_gsm_tester/powersupply_intellinet.py</span><br><span>+++ b/src/osmo_gsm_tester/powersupply_intellinet.py</span><br><span>@@ -20,7 +20,7 @@</span><br><span> import urllib.request</span><br><span> import xml.etree.ElementTree as ET</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log</span><br><span> from .powersupply import PowerSupply</span><br><span> </span><br><span> class PowerSupplyIntellinet(PowerSupply):</span><br><span>diff --git a/src/osmo_gsm_tester/powersupply_sispm.py b/src/osmo_gsm_tester/powersupply_sispm.py</span><br><span>index 4505b17..b392f73 100644</span><br><span>--- a/src/osmo_gsm_tester/powersupply_sispm.py</span><br><span>+++ b/src/osmo_gsm_tester/powersupply_sispm.py</span><br><span>@@ -20,8 +20,8 @@</span><br><span> import sispm</span><br><span> from usb.core import USBError</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log</span><br><span style="color: hsl(0, 100%, 40%);">-from .event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.event_loop import MainLoop</span><br><span> from .powersupply import PowerSupply</span><br><span> </span><br><span> class PowerSupplySispm(PowerSupply):</span><br><span>diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py</span><br><span>index fa17bcd..5b86a08 100644</span><br><span>--- a/src/osmo_gsm_tester/resource.py</span><br><span>+++ b/src/osmo_gsm_tester/resource.py</span><br><span>@@ -22,16 +22,16 @@</span><br><span> import atexit</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log</span><br><span style="color: hsl(0, 100%, 40%);">-from . import config</span><br><span style="color: hsl(0, 100%, 40%);">-from . import util</span><br><span style="color: hsl(0, 100%, 40%);">-from . import schema</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import config</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import util</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import schema</span><br><span> from . import bts_sysmo, bts_osmotrx, bts_osmovirtual, bts_octphy, bts_nanobts, bts_oc2g</span><br><span style="color: hsl(0, 100%, 40%);">-from . import modem</span><br><span style="color: hsl(0, 100%, 40%);">-from . import ms_osmo_mobile</span><br><span style="color: hsl(0, 100%, 40%);">-from . import ms_srs, ms_amarisoft, enb_srs, enb_amarisoft, epc_srs, epc_amarisoft</span><br><span style="color: hsl(120, 100%, 40%);">+from .  import modem</span><br><span style="color: hsl(120, 100%, 40%);">+from .  import ms_osmo_mobile</span><br><span style="color: hsl(120, 100%, 40%);">+from .  import ms_srs, ms_amarisoft, enb_srs, enb_amarisoft, epc_srs, epc_amarisoft</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from .util import is_dict, is_list</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.util import is_dict, is_list</span><br><span> </span><br><span> HASH_KEY = '_hash'</span><br><span> RESERVED_KEY = '_reserved_by'</span><br><span>diff --git a/src/osmo_gsm_tester/run_node.py b/src/osmo_gsm_tester/run_node.py</span><br><span>index 88555a6..e5f7d56 100644</span><br><span>--- a/src/osmo_gsm_tester/run_node.py</span><br><span>+++ b/src/osmo_gsm_tester/run_node.py</span><br><span>@@ -17,7 +17,7 @@</span><br><span> # You should have received a copy of the GNU General Public License</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log</span><br><span> </span><br><span> class RunNode(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/sgsn_osmo.py b/src/osmo_gsm_tester/sgsn_osmo.py</span><br><span>index 9ffaaed..647d848 100644</span><br><span>--- a/src/osmo_gsm_tester/sgsn_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/sgsn_osmo.py</span><br><span>@@ -20,7 +20,8 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, pcap_recorder</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcap_recorder</span><br><span> </span><br><span> class OsmoSgsn(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/smsc.py b/src/osmo_gsm_tester/smsc.py</span><br><span>index d154801..1083d22 100644</span><br><span>--- a/src/osmo_gsm_tester/smsc.py</span><br><span>+++ b/src/osmo_gsm_tester/smsc.py</span><br><span>@@ -17,7 +17,7 @@</span><br><span> # You should have received a copy of the GNU Affero General Public License</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, config</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, config</span><br><span> </span><br><span> class Smsc:</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/stp_osmo.py b/src/osmo_gsm_tester/stp_osmo.py</span><br><span>index 5a7f0d3..500c5da 100644</span><br><span>--- a/src/osmo_gsm_tester/stp_osmo.py</span><br><span>+++ b/src/osmo_gsm_tester/stp_osmo.py</span><br><span>@@ -20,7 +20,8 @@</span><br><span> import os</span><br><span> import pprint</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, config, template, process, pcap_recorder</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util, config, template, process</span><br><span style="color: hsl(120, 100%, 40%);">+from . import pcap_recorder</span><br><span> </span><br><span> class OsmoStp(log.Origin):</span><br><span> </span><br><span>diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py</span><br><span>index 0ddd95f..586c518 100644</span><br><span>--- a/src/osmo_gsm_tester/suite.py</span><br><span>+++ b/src/osmo_gsm_tester/suite.py</span><br><span>@@ -21,9 +21,10 @@</span><br><span> import sys</span><br><span> import time</span><br><span> import pprint</span><br><span style="color: hsl(0, 100%, 40%);">-from . import config, log, util, resource, test</span><br><span style="color: hsl(0, 100%, 40%);">-from .event_loop import MainLoop</span><br><span style="color: hsl(0, 100%, 40%);">-from . import nitb_osmo, hlr_osmo, mgcpgw_osmo, mgw_osmo, msc_osmo, bsc_osmo, stp_osmo, ggsn_osmo, sgsn_osmo, esme, osmocon, ms_driver, iperf3, process</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import config, log, util, process</span><br><span style="color: hsl(120, 100%, 40%);">+from .core.event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+from . import resource, test</span><br><span style="color: hsl(120, 100%, 40%);">+from . import nitb_osmo, hlr_osmo, mgcpgw_osmo, mgw_osmo, msc_osmo, bsc_osmo, stp_osmo, ggsn_osmo, sgsn_osmo, esme, osmocon, ms_driver, iperf3</span><br><span> from . import run_node</span><br><span> </span><br><span> class Timeout(Exception):</span><br><span>diff --git a/src/osmo_gsm_tester/test.py b/src/osmo_gsm_tester/test.py</span><br><span>index 0bbff41..f517b52 100644</span><br><span>--- a/src/osmo_gsm_tester/test.py</span><br><span>+++ b/src/osmo_gsm_tester/test.py</span><br><span>@@ -23,7 +23,8 @@</span><br><span> import traceback</span><br><span> from . import testenv</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, resource</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util</span><br><span style="color: hsl(120, 100%, 40%);">+from . import resource</span><br><span> </span><br><span> class Test(log.Origin):</span><br><span>     UNKNOWN = 'UNKNOWN' # matches junit 'error'</span><br><span>@@ -56,8 +57,9 @@</span><br><span>             log.large_separator(self.suite_run.trial.name(), self.suite_run.name(), self.name(), sublevel=3)</span><br><span>             self.status = Test.UNKNOWN</span><br><span>             self.start_timestamp = time.time()</span><br><span style="color: hsl(0, 100%, 40%);">-            from . import suite, sms, process</span><br><span style="color: hsl(0, 100%, 40%);">-            from .event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+            from .core import process</span><br><span style="color: hsl(120, 100%, 40%);">+            from .core.event_loop import MainLoop</span><br><span style="color: hsl(120, 100%, 40%);">+            from . import suite, sms</span><br><span>             testenv.setup(self.suite_run, self, suite, MainLoop, sms, process)</span><br><span>             with self.redirect_stdout():</span><br><span>                 util.run_python_file('%s.%s' % (self.suite_run.definition.name(), self.basename),</span><br><span>diff --git a/src/osmo_gsm_tester/trial.py b/src/osmo_gsm_tester/trial.py</span><br><span>index 149d34c..9dcc188 100644</span><br><span>--- a/src/osmo_gsm_tester/trial.py</span><br><span>+++ b/src/osmo_gsm_tester/trial.py</span><br><span>@@ -22,7 +22,8 @@</span><br><span> import shutil</span><br><span> import tarfile</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from . import log, util, suite, report</span><br><span style="color: hsl(120, 100%, 40%);">+from .core import log, util</span><br><span style="color: hsl(120, 100%, 40%);">+from . import suite, report</span><br><span> </span><br><span> FILE_MARK_TAKEN = 'taken'</span><br><span> FILE_CHECKSUMS = 'checksums.md5'</span><br><span>diff --git a/src/osmo_ms_driver/__main__.py b/src/osmo_ms_driver/__main__.py</span><br><span>index a752c37..a4276d9 100644</span><br><span>--- a/src/osmo_ms_driver/__main__.py</span><br><span>+++ b/src/osmo_ms_driver/__main__.py</span><br><span>@@ -22,7 +22,7 @@</span><br><span> from .cdf import cdfs</span><br><span> from .starter import BinaryOptions, MobileTestStarter</span><br><span> from .test_support import imsi_ki_gen</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import log, util</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import log, util</span><br><span> from osmo_gsm_tester import ms_osmo_mobile</span><br><span> </span><br><span> # System modules</span><br><span>diff --git a/src/osmo_ms_driver/event_server.py b/src/osmo_ms_driver/event_server.py</span><br><span>index ce9d5c1..fb8a6c7 100644</span><br><span>--- a/src/osmo_ms_driver/event_server.py</span><br><span>+++ b/src/osmo_ms_driver/event_server.py</span><br><span>@@ -1,5 +1,5 @@</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import log</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import log</span><br><span> </span><br><span> import time</span><br><span> </span><br><span>diff --git a/src/osmo_ms_driver/simple_loop.py b/src/osmo_ms_driver/simple_loop.py</span><br><span>index 29a4b5b..373fa20 100644</span><br><span>--- a/src/osmo_ms_driver/simple_loop.py</span><br><span>+++ b/src/osmo_ms_driver/simple_loop.py</span><br><span>@@ -15,7 +15,7 @@</span><br><span> # You should have received a copy of the GNU General Public License</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import log</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import log</span><br><span> </span><br><span> import os</span><br><span> import selectors</span><br><span>diff --git a/src/osmo_ms_driver/starter.py b/src/osmo_ms_driver/starter.py</span><br><span>index 8757e40..702baf0 100644</span><br><span>--- a/src/osmo_ms_driver/starter.py</span><br><span>+++ b/src/osmo_ms_driver/starter.py</span><br><span>@@ -16,7 +16,7 @@</span><br><span> # You should have received a copy of the GNU General Public License</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import log, util, process, template</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import log, util, process, template</span><br><span> </span><br><span> from .test_support import ResultStore</span><br><span> </span><br><span>diff --git a/src/osmo_ms_driver/test_support.py b/src/osmo_ms_driver/test_support.py</span><br><span>index ce3f5f1..cb2b9af 100644</span><br><span>--- a/src/osmo_ms_driver/test_support.py</span><br><span>+++ b/src/osmo_ms_driver/test_support.py</span><br><span>@@ -16,7 +16,7 @@</span><br><span> # along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span> </span><br><span> from abc import ABCMeta</span><br><span style="color: hsl(0, 100%, 40%);">-from osmo_gsm_tester import log</span><br><span style="color: hsl(120, 100%, 40%);">+from osmo_gsm_tester.core import log</span><br><span> </span><br><span> import time</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17781">change 17781</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17781"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-tester </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I9aec6c55ccd71894182057d36e0025b69925d314 </div>
<div style="display:none"> Gerrit-Change-Number: 17781 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>