<p>Holger Freyther <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/9713">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Harald Welte: Looks good to me, but someone else must approve
  Pau Espin Pedrol: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ms: Make the outer variables configurable<br><br>Do the easy part for making these variables configurable.<br><br>Change-Id: If8bbedcf672f6481a12c30d3669564704063626c<br>---<br>M src/osmo_ms_driver/__main__.py<br>M src/osmo_ms_driver/cdf.py<br>2 files changed, 31 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_ms_driver/__main__.py b/src/osmo_ms_driver/__main__.py</span><br><span>index 0e35280..7bca1d1 100644</span><br><span>--- a/src/osmo_ms_driver/__main__.py</span><br><span>+++ b/src/osmo_ms_driver/__main__.py</span><br><span>@@ -19,50 +19,65 @@</span><br><span> from .event_server import EventServer</span><br><span> from .simple_loop import SimpleLoop</span><br><span> from .location_update_test import MassUpdateLocationTest</span><br><span style="color: hsl(0, 100%, 40%);">-from .cdf import ease_in_out_duration, linear_with_duration</span><br><span style="color: hsl(120, 100%, 40%);">+from .cdf import ease_in_out_duration, linear_with_duration, cdfs</span><br><span> from osmo_gsm_tester import log</span><br><span> </span><br><span> # System modules</span><br><span style="color: hsl(120, 100%, 40%);">+import argparse</span><br><span> import datetime</span><br><span> import subprocess</span><br><span> import signal</span><br><span> import tempfile</span><br><span> import os.path</span><br><span style="color: hsl(120, 100%, 40%);">+import os</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+def parser():</span><br><span style="color: hsl(120, 100%, 40%);">+    parser = argparse.ArgumentParser(epilog=__doc__, formatter_class=argparse.RawTextHelpFormatter)</span><br><span style="color: hsl(120, 100%, 40%);">+    parser.add_argument('-s', '--launch-duration', dest='launch_duration',</span><br><span style="color: hsl(120, 100%, 40%);">+            default=60, type=int,</span><br><span style="color: hsl(120, 100%, 40%);">+            help="Time launching applications should take in seconds")</span><br><span style="color: hsl(120, 100%, 40%);">+    parser.add_argument('-i', '--launch-interval', dest='launch_interval',</span><br><span style="color: hsl(120, 100%, 40%);">+            default=100, type=int,</span><br><span style="color: hsl(120, 100%, 40%);">+            help="Time between launching in milliseconds")</span><br><span style="color: hsl(120, 100%, 40%);">+    parser.add_argument('-d', '--distribution', dest="cdf_name",</span><br><span style="color: hsl(120, 100%, 40%);">+            choices=cdfs.keys(), default="ease_in_out",</span><br><span style="color: hsl(120, 100%, 40%);">+            help="Curve to use for starting within launch duration")</span><br><span style="color: hsl(120, 100%, 40%);">+    parser.add_argument('-m', '--number-ms', dest="num_ms",</span><br><span style="color: hsl(120, 100%, 40%);">+            default=10, type=int,</span><br><span style="color: hsl(120, 100%, 40%);">+            help="Number of MobileStations to simulate")</span><br><span style="color: hsl(120, 100%, 40%);">+    return parser</span><br><span> </span><br><span> def main():</span><br><span>     # Create a default log to stdout</span><br><span>     log.LogTarget().style(src=False)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    args = parser().parse_args()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     # We don't care what is happening to child processes we spawn!</span><br><span>     signal.signal(signal.SIGCHLD, signal.SIG_IGN)</span><br><span> </span><br><span>     loop = SimpleLoop()</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    # TODO: Parse parameters and test composition. Right now we test</span><br><span style="color: hsl(0, 100%, 40%);">-    # with a single set of values.</span><br><span style="color: hsl(0, 100%, 40%);">-    num_ms = 10</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>     tmp_dir = tempfile.mkdtemp(suffix="osmo-ms-driver")</span><br><span>     log.log("Going to store files in ", tmp_dir=tmp_dir)</span><br><span> </span><br><span>     # How long should starting all apps take</span><br><span style="color: hsl(0, 100%, 40%);">-    time_start=datetime.timedelta(seconds=60)</span><br><span style="color: hsl(120, 100%, 40%);">+    time_start=datetime.timedelta(seconds=args.launch_duration)</span><br><span>     # In which steps to start processes</span><br><span style="color: hsl(0, 100%, 40%);">-    time_step=datetime.timedelta(milliseconds=100)</span><br><span style="color: hsl(120, 100%, 40%);">+    time_step=datetime.timedelta(milliseconds=args.launch_interval)</span><br><span> </span><br><span>     # Event server path</span><br><span>     event_server_path = os.path.join(tmp_dir,  "osmo_ms_driver.unix")</span><br><span> </span><br><span>     # The function that decides when to start something</span><br><span style="color: hsl(0, 100%, 40%);">-    cdf = ease_in_out_duration(time_start, time_step)</span><br><span style="color: hsl(120, 100%, 40%);">+    cdf = cdfs[args.cdf_name](time_start, time_step)</span><br><span> </span><br><span>     # Event server to handle MS->test events</span><br><span>     ev_server = EventServer("ev_server", event_server_path)</span><br><span>     ev_server.listen(loop)</span><br><span> </span><br><span>     # Just a single test for now.</span><br><span style="color: hsl(0, 100%, 40%);">-    test = MassUpdateLocationTest("lu_test", num_ms, cdf, ev_server, tmp_dir)</span><br><span style="color: hsl(120, 100%, 40%);">+    test = MassUpdateLocationTest("lu_test", args.num_ms, cdf, ev_server, tmp_dir)</span><br><span> </span><br><span>     # Run until everything has been launched</span><br><span>     test.launch(loop)</span><br><span>diff --git a/src/osmo_ms_driver/cdf.py b/src/osmo_ms_driver/cdf.py</span><br><span>index 781349b..e163cc3 100644</span><br><span>--- a/src/osmo_ms_driver/cdf.py</span><br><span>+++ b/src/osmo_ms_driver/cdf.py</span><br><span>@@ -103,3 +103,10 @@</span><br><span>     scale = 1.0/duration.total_seconds()</span><br><span>     return DistributionFunctionHandler(step_size, duration,</span><br><span>                                         lambda x: _in_out(x*scale))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+cdfs = {</span><br><span style="color: hsl(120, 100%, 40%);">+    'immediate': lambda x,y: immediate(y),</span><br><span style="color: hsl(120, 100%, 40%);">+    'linear': linear_with_duration,</span><br><span style="color: hsl(120, 100%, 40%);">+    'ease_in_out': ease_in_out_duration,</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/9713">change 9713</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/9713"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: If8bbedcf672f6481a12c30d3669564704063626c </div>
<div style="display:none"> Gerrit-Change-Number: 9713 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: Holger Freyther <holger@freyther.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Holger Freyther <holger@freyther.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>