<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17233">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">remsim: Add tests using stdin/stdout of osmo-remsim-client-shell<br><br>osmo-remsim-client-shell allows to send C-APDU via STDIN of the program<br>and receive R-APDU via STDOUT.  We can attach to that using the PIPEasp<br>TTCN3 port, and hence test a [local] osmo-remsim-client-shell<br>transceiving APDUs from/to a simulated bankd in the test case.<br><br>The only sad part about this is that we now will need to have the<br>implementation under test (osmo-remsim-client-shell binary) in the<br>same container as the TTCN-3 test, as it will fork/exec it.<br><br>This is why we disable it by default and a modulepar must be used to<br>enable those particular tests.<br><br>Change-Id: I3a69c692cf3e6bbe04ce58594050b20da0c37d16<br>---<br>M deps/Makefile<br>M remsim/REMSIM_Tests.cfg<br>M remsim/RemsimClient_Tests.ttcn<br>M remsim/gen_links.sh<br>M remsim/regen_makefile.sh<br>5 files changed, 220 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/33/17233/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/deps/Makefile b/deps/Makefile</span><br><span>index ccb0b1b..c5af426 100644</span><br><span>--- a/deps/Makefile</span><br><span>+++ b/deps/Makefile</span><br><span>@@ -37,6 +37,7 @@</span><br><span>                  titan.TestPorts.IPL4asp \</span><br><span>                    titan.TestPorts.LANL2asp \</span><br><span>                   titan.TestPorts.PCAPasp \</span><br><span style="color: hsl(120, 100%, 40%);">+                     titan.TestPorts.PIPEasp \</span><br><span>                    titan.TestPorts.SIPmsg \</span><br><span>                     titan.TestPorts.TCPasp \</span><br><span>                     titan.TestPorts.TELNETasp \</span><br><span>@@ -116,6 +117,7 @@</span><br><span> titan.TestPorts.LANL2asp_commit=           R.8.C-3-gb07c265</span><br><span> titan.TestPorts.MTP3asp_commit=                     1cecdad6f3641a5f19b3833703bff6e5005eff11</span><br><span> titan.TestPorts.PCAPasp_commit=                     R.8.A-3-g9ad320f</span><br><span style="color: hsl(120, 100%, 40%);">+titan.TestPorts.PIPEasp_commit=                       R.7.D-3-g8b01154</span><br><span> titan.TestPorts.SCTPasp_commit=                     R.11.A-2-g2faa9cf</span><br><span> titan.TestPorts.SIPmsg_commit=                     R.15.A-1-ge4f9dd0</span><br><span> titan.TestPorts.TCPasp_commit=                     R.9.A-5-g2c91bc6</span><br><span>diff --git a/remsim/REMSIM_Tests.cfg b/remsim/REMSIM_Tests.cfg</span><br><span>index 36b0952..e3bb900 100644</span><br><span>--- a/remsim/REMSIM_Tests.cfg</span><br><span>+++ b/remsim/REMSIM_Tests.cfg</span><br><span>@@ -4,6 +4,9 @@</span><br><span> # testsuite specific configuration, not expected to change</span><br><span> "./REMSIM_Tests.default"</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+[MODULE_PARAMETERS]</span><br><span style="color: hsl(120, 100%, 40%);">+RemsimClient_Tests.mp_have_local_client := true</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> [EXECUTE]</span><br><span> RemsimServer_Tests.control</span><br><span> #RemsimBankd_Tests.control</span><br><span>diff --git a/remsim/RemsimClient_Tests.ttcn b/remsim/RemsimClient_Tests.ttcn</span><br><span>index d950152..e372faf 100644</span><br><span>--- a/remsim/RemsimClient_Tests.ttcn</span><br><span>+++ b/remsim/RemsimClient_Tests.ttcn</span><br><span>@@ -1,7 +1,7 @@</span><br><span> module RemsimClient_Tests {</span><br><span> </span><br><span> /* Integration Tests for osmo-remsim-client</span><br><span style="color: hsl(0, 100%, 40%);">- * (C) 2019 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(120, 100%, 40%);">+ * (C) 2019-2020 by Harald Welte <laforge@gnumonks.org></span><br><span>  * All rights reserved.</span><br><span>  *</span><br><span>  * Released under the terms of GNU General Public License, Version 2 or</span><br><span>@@ -12,15 +12,26 @@</span><br><span>  * This test suite tests osmo-remsim-client by attaching to the external interfaces.</span><br><span>  */</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+import from Native_Functions all;</span><br><span> import from Osmocom_Types all;</span><br><span> import from IPA_Emulation all;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* the PIPEasp port allows us to interact with osmo-remsim-client-shell via stdin/stdout */</span><br><span style="color: hsl(120, 100%, 40%);">+import from PIPEasp_PortType all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from PIPEasp_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> import from RSPRO all;</span><br><span> import from RSPRO_Types all;</span><br><span> import from RSPRO_Server all;</span><br><span> import from REMSIM_Tests all;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+modulepar {</span><br><span style="color: hsl(120, 100%, 40%);">+   boolean mp_have_local_client := false; /* backwards compatible default */</span><br><span style="color: hsl(120, 100%, 40%);">+     charstring mp_client_shell_cmd := "osmo-remsim-client-shell";</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> type component client_test_CT extends rspro_server_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      port PIPEasp_PT PIPE;</span><br><span>        var ComponentIdentity g_srv_comp_id, g_bankd_comp_id;</span><br><span> };</span><br><span> </span><br><span>@@ -168,6 +179,195 @@</span><br><span>      setverdict(pass);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/***********************************************************************</span><br><span style="color: hsl(120, 100%, 40%);">+ * Tests interacting with local remsim-bankd-client via PIPE port</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%);">+template (value) ASP_PExecuteBackground ts_ExecBg(charstring cmd) := {</span><br><span style="color: hsl(120, 100%, 40%);">+  command := cmd</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%);">+template (present) ASP_PStdout tr_Stdout(template (present) charstring line) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        stdout := line</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%);">+template (present) ASP_PStderr tr_Stderr(template (present) charstring line) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        stderr := line</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%);">+template (value) ASP_PStdin ts_Stdin(template (value) charstring line) := {</span><br><span style="color: hsl(120, 100%, 40%);">+      stdin :=line</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%);">+/* osmo-remsim-client logs to stderr, so we need to ignore that log output */</span><br><span style="color: hsl(120, 100%, 40%);">+private altstep as_ignore_stderr() runs on client_test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+[] PIPE.receive(tr_Stderr(?)) { repeat; }</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%);">+/* start a local osmo-remsim-client as sub-process and attach it to PIPE port */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_init_client_pipe(ClientSlot cs) runs on client_test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  var charstring cmdline := mp_client_shell_cmd & " -i 127.0.0.1";</span><br><span style="color: hsl(120, 100%, 40%);">+        map(self:PIPE, system:PIPE);</span><br><span style="color: hsl(120, 100%, 40%);">+  PIPE.send(ts_ExecBg(cmdline & " -c " & int2str(cs.clientId)</span><br><span style="color: hsl(120, 100%, 40%);">+                             & " -n " & int2str(cs.slotNr)));</span><br><span style="color: hsl(120, 100%, 40%);">+        activate(as_ignore_stderr());</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%);">+/* pretty-print an octet string as series of ASCII encoded hex bytes with spaces */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_osmo_hexdump(octetstring input) return charstring {</span><br><span style="color: hsl(120, 100%, 40%);">+       var charstring ret := "";</span><br><span style="color: hsl(120, 100%, 40%);">+   for (var integer i := 0; i < lengthof(input); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+          ret := ret & f_str_tolower(oct2str(input[i])) & " ";</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+     return ret;</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%);">+/* simulated bankd instructs client to "set ATR"; expect it to show up on stdout */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_set_atr(template (value) ClientSlot cs, octetstring atr,</span><br><span style="color: hsl(120, 100%, 40%);">+             template ResultCode exp_res := ok, integer i := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on client_test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       RSPRO_SRV[i].send(ts_RSPRO_SetAtrReq(cs, atr));</span><br><span style="color: hsl(120, 100%, 40%);">+       interleave {</span><br><span style="color: hsl(120, 100%, 40%);">+  [] RSPRO_SRV[i].receive(tr_RSPRO_SetAtrRes(exp_res));</span><br><span style="color: hsl(120, 100%, 40%);">+ [] PIPE.receive(tr_Stdout("SET_ATR: " & f_osmo_hexdump(atr)));</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* send a C-APDU from simulated application to client stdin; expect it on simulated bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_client2bank(template (present) ClientSlot cs, template (present) BankSlot bs,</span><br><span style="color: hsl(120, 100%, 40%);">+                        octetstring c_apdu, integer i:=0) runs on client_test_CT</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   /* send C-APDU via STDIN of osmo-remsim-client-shell */</span><br><span style="color: hsl(120, 100%, 40%);">+       PIPE.send(ts_Stdin(oct2str(c_apdu)));</span><br><span style="color: hsl(120, 100%, 40%);">+ /* expect the same C-APDU to arrive via RSPRO tpduModemToCard */</span><br><span style="color: hsl(120, 100%, 40%);">+      f_rspro_srv_exp(tr_RSPRO_TpduModemToCard(cs, bs, ?, c_apdu), i);</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%);">+/* send a R-APDU from simulated bankd to client; expect it on simualated app (client stdout) */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_bank2client(template (present) BankSlot bs, template (present) ClientSlot cs,</span><br><span style="color: hsl(120, 100%, 40%);">+                      octetstring r_apdu, boolean exp_fail := false, integer i:=0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on client_test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        var TpduFlags flags := {</span><br><span style="color: hsl(120, 100%, 40%);">+              tpduHeaderPresent:=true,</span><br><span style="color: hsl(120, 100%, 40%);">+              finalPart:=true,</span><br><span style="color: hsl(120, 100%, 40%);">+              procByteContinueTx:=false,</span><br><span style="color: hsl(120, 100%, 40%);">+            procByteContinueRx:=false</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     timer T := 10.0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    RSPRO_SRV[i].send(ts_RSPRO_TpduCardToModem(bs, cs, flags, r_apdu));</span><br><span style="color: hsl(120, 100%, 40%);">+   T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] PIPE.receive(tr_Stdout("R-APDU: " & f_osmo_hexdump(r_apdu))) {</span><br><span style="color: hsl(120, 100%, 40%);">+               if (exp_fail) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       setverdict(fail, "Expected R-APDU to fail but still received it");</span><br><span style="color: hsl(120, 100%, 40%);">+                  self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+            } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(pass);</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%);">+     [] PIPE.receive(tr_Stdout(?)) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, "Unexpected R-APDU on stdout of remsim-client-shell");</span><br><span style="color: hsl(120, 100%, 40%);">+             self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+                if (exp_fail) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+             } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(fail, "Timeout waiting for R-APDU on remsim-client-shell");</span><br><span style="color: hsl(120, 100%, 40%);">+                      self.stop;</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%);">+     }</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%);">+/* Transceive a C+R APDU from client (via pipe) to simulated bankd and back */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_xceive_apdus(ClientSlot cslot, BankSlot bslot,</span><br><span style="color: hsl(120, 100%, 40%);">+                     integer count := 100, integer i := 0) runs on client_test_CT</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       for (var integer j := 0; j < count; j := j+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+            var octetstring c_apdu := f_rnd_octstring(f_rnd_int(270));</span><br><span style="color: hsl(120, 100%, 40%);">+            var octetstring r_apdu := f_rnd_octstring(f_rnd_int(270));</span><br><span style="color: hsl(120, 100%, 40%);">+            f_client2bank(cslot, bslot, c_apdu, i:=i);</span><br><span style="color: hsl(120, 100%, 40%);">+            f_bank2client(bslot, cslot, r_apdu, i:=i);</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* transceive APDUs using forked osmo-remsim-client-shell + stdio */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_pipe_xceive_apdus() runs on client_test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        var BankSlot bslot := { 1, 0 };</span><br><span style="color: hsl(120, 100%, 40%);">+       var ClientSlot cslot := { 321, 123 };</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init_client_pipe(cslot);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* expect inbound connectClientReq */</span><br><span style="color: hsl(120, 100%, 40%);">+ as_connectClientReq();</span><br><span style="color: hsl(120, 100%, 40%);">+        /* configure client to connect to [simulated] bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_rspro_config_client_bank(bslot, ts_IpPort(ts_IPv4(mp_bankd_ip), mp_bankd_port));</span><br><span style="color: hsl(120, 100%, 40%);">+    /* expect inbound connect on simulated bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_rspro_srv_exp_connect(1);</span><br><span style="color: hsl(120, 100%, 40%);">+   /* expect inbound connectClientReq on simulated bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+      as_connectClientReq(i := 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_set_atr(cslot, '3B9F96801FC78031A073BE21136743200718000001A5'O, i:=1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_xceive_apdus(cslot, bslot, count := 100, i:=1);</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%);">+/* Send R-APDU from correct bankId/slotNr but to wrong ClientId */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_pipe_apdu_wrong_cslot() runs on client_test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var BankSlot bslot := { 1, 0 };</span><br><span style="color: hsl(120, 100%, 40%);">+       var ClientSlot cslot := { 321, 123 };</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init_client_pipe(cslot);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* expect inbound connectClientReq */</span><br><span style="color: hsl(120, 100%, 40%);">+ as_connectClientReq();</span><br><span style="color: hsl(120, 100%, 40%);">+        /* configure client to connect to [simulated] bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_rspro_config_client_bank(bslot, ts_IpPort(ts_IPv4(mp_bankd_ip), mp_bankd_port));</span><br><span style="color: hsl(120, 100%, 40%);">+    /* expect inbound connect on simulated bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_rspro_srv_exp_connect(1);</span><br><span style="color: hsl(120, 100%, 40%);">+   /* expect inbound connectClientReq on simulated bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+      as_connectClientReq(i := 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_set_atr(cslot, '3B9F96801FC78031A073BE21136743200718000001A5'O, i:=1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    var octetstring c_apdu := f_rnd_octstring(f_rnd_int(270));</span><br><span style="color: hsl(120, 100%, 40%);">+    var octetstring r_apdu := f_rnd_octstring(f_rnd_int(270));</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Send C-APDU from correct ClientId/Slot to simulated bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_client2bank(cslot, bslot, c_apdu, i:=1);</span><br><span style="color: hsl(120, 100%, 40%);">+    /* respond with R-APDU from correct bankId/Slot but stating wrong ClientId */</span><br><span style="color: hsl(120, 100%, 40%);">+ cslot.clientId := 1023;</span><br><span style="color: hsl(120, 100%, 40%);">+       f_bank2client(bslot, cslot, r_apdu, exp_fail:=true, i:=1);</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%);">+/* Send R-APDU from wrong bankId/slotNr but to correct ClientId/Slot */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_pipe_apdu_wrong_bslot() runs on client_test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        var BankSlot bslot := { 1, 0 };</span><br><span style="color: hsl(120, 100%, 40%);">+       var ClientSlot cslot := { 321, 123 };</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init_client_pipe(cslot);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* expect inbound connectClientReq */</span><br><span style="color: hsl(120, 100%, 40%);">+ as_connectClientReq();</span><br><span style="color: hsl(120, 100%, 40%);">+        /* configure client to connect to [simulated] bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_rspro_config_client_bank(bslot, ts_IpPort(ts_IPv4(mp_bankd_ip), mp_bankd_port));</span><br><span style="color: hsl(120, 100%, 40%);">+    /* expect inbound connect on simulated bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_rspro_srv_exp_connect(1);</span><br><span style="color: hsl(120, 100%, 40%);">+   /* expect inbound connectClientReq on simulated bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+      as_connectClientReq(i := 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_set_atr(cslot, '3B9F96801FC78031A073BE21136743200718000001A5'O, i:=1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    var octetstring c_apdu := f_rnd_octstring(f_rnd_int(270));</span><br><span style="color: hsl(120, 100%, 40%);">+    var octetstring r_apdu := f_rnd_octstring(f_rnd_int(270));</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Send C-APDU from correct ClientId/Slot to simulated bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_client2bank(cslot, bslot, c_apdu, i:=1);</span><br><span style="color: hsl(120, 100%, 40%);">+    /* respond with R-APDU from wrong bankId but stating correct ClientId */</span><br><span style="color: hsl(120, 100%, 40%);">+      bslot.bankId := 1023;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_bank2client(bslot, cslot, r_apdu, exp_fail:=true, i:=1);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> /* TODO:</span><br><span>    * send a configClientBankIpReq and change the bank of an active client</span><br><span>@@ -187,6 +387,12 @@</span><br><span>  execute( TC_bank_reconnect() );</span><br><span>      execute( TC_bank_disconnect() );</span><br><span>     execute( TC_bank_disconnect_reconnect() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  if (mp_have_local_client) {</span><br><span style="color: hsl(120, 100%, 40%);">+           execute( TC_pipe_xceive_apdus() );</span><br><span style="color: hsl(120, 100%, 40%);">+            execute( TC_pipe_apdu_wrong_cslot() );</span><br><span style="color: hsl(120, 100%, 40%);">+                execute( TC_pipe_apdu_wrong_bslot() );</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> }</span><br><span> </span><br><span> </span><br><span>diff --git a/remsim/gen_links.sh b/remsim/gen_links.sh</span><br><span>index 366a8e6..995abfb 100755</span><br><span>--- a/remsim/gen_links.sh</span><br><span>+++ b/remsim/gen_links.sh</span><br><span>@@ -32,6 +32,10 @@</span><br><span> FILES="JSON_EncDec.cc JSON_Types.ttcn "</span><br><span> gen_links $DIR $FILES</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DIR=$BASEDIR/titan.TestPorts.PIPEasp/src</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="PIPEasp_PT.cc PIPEasp_PT.hh PIPEasp_Types.ttcn PIPEasp_PortType.ttcn "</span><br><span style="color: hsl(120, 100%, 40%);">+gen_links $DIR $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> DIR=../library</span><br><span> FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_VTY_Functions.ttcn Osmocom_Types.ttcn "</span><br><span>diff --git a/remsim/regen_makefile.sh b/remsim/regen_makefile.sh</span><br><span>index 6f7d209..3f19228 100755</span><br><span>--- a/remsim/regen_makefile.sh</span><br><span>+++ b/remsim/regen_makefile.sh</span><br><span>@@ -1,7 +1,10 @@</span><br><span> #!/bin/sh</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-FILES="*.ttcn *.ttcnpp *.asn IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc TELNETasp_PT.cc Native_FunctionDefs.cc RSPRO_EncDec.cc Abstract_Socket.cc HTTPmsg_PT.cc HTTPmsg_MessageLen_Function.cc JSON_EncDec.cc VPCD_CodecPort_CtrlFunctDef.cc "</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="*.ttcn *.ttcnpp *.asn IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc TELNETasp_PT.cc Native_FunctionDefs.cc RSPRO_EncDec.cc Abstract_Socket.cc HTTPmsg_PT.cc HTTPmsg_MessageLen_Function.cc JSON_EncDec.cc VPCD_CodecPort_CtrlFunctDef.cc PIPEasp_PT.cc "</span><br><span> </span><br><span> export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSPRO -DIPA_EMULATION_CTRL"</span><br><span> </span><br><span> ../regen-makefile.sh REMSIM_Tests.ttcn $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# required for forkpty(3) used by PIPEasp</span><br><span style="color: hsl(120, 100%, 40%);">+sed -i -e '/^LINUX_LIBS/ s/$/ -lutil/' Makefile</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17233">change 17233</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-ttcn3-hacks/+/17233"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I3a69c692cf3e6bbe04ce58594050b20da0c37d16 </div>
<div style="display:none"> Gerrit-Change-Number: 17233 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>