Attention is currently required from: jolly.
dexter has posted comments on this change by jolly. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43657?usp=email )
Change subject: IPAd: Add test to verify IPAd polling from two eIMs
......................................................................
Patch Set 1:
(3 comments)
File ipad/IPAd_Tests.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43657/comment/0f951843_a91e… :
PS1, Line 805: var charstring eim_fqdn := mp_esipa_ip & ":" & int2str(mp_esipa_port);
Is the eim_fqdn variable still needed? I don't see where it is used here...
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43657/comment/63396b9b_9da7… :
PS1, Line 807: f_package_euicc_data_req(id, "myEIM_1");
in case you decide to follow the array approach, you could pull the eimId strings form the array in pars.
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43657/comment/92907483_0902… :
PS1, Line 813: f_eim_init();
The f_eim_init function is called by f_es10x_init. Now it is called again here and it is not immediately obvious for someone who reads this where f_eim_init is called the first time. Maybe we should not call f_eim_init from f_es10x_init and put the call after f_es10x_init where it is needed.
The downside of this is that we have do do it in each test then. I also wonder if it sis possible to put all those boilerplate calls into the f_init_handler handler function. But as far as I can see the boilerplate code is not exactly the same in all tests. So some logic is needed.
But then, the f_eim_init() call is again orphaned. What a pity... Then let's keep it where it is, but addressing the boilerplate problem would be worthwhile I think.
In any case this is definitely be a topic for a follow up patch.
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43657?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I87d62196f7e0b96070d162faf8f382ebba3fa017
Gerrit-Change-Number: 43657
Gerrit-PatchSet: 1
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: dexter <pmaier(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Comment-Date: Thu, 17 Sep 2026 08:19:34 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
jolly has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43622?usp=email )
(
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: IPAd: Check for memory leaks after each test
......................................................................
IPAd: Check for memory leaks after each test
After each test, use grep to verify that no pending allocation is left
after the last free() function call.
The built-in memory leak detection will print the current memory useage
to stdout. The last debug message must have an allocation count of 0
bytes.
Related: SYS#8199
Change-Id: Ifd5390ac230b48614585d2820b9133daebd8c321
---
M ipad/IPAd_Tests.ttcn
A ipad/checkleak.sh
M ipad/testenv.cfg
3 files changed, 15 insertions(+), 2 deletions(-)
Approvals:
Jenkins Builder: Verified
dexter: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
diff --git a/ipad/IPAd_Tests.ttcn b/ipad/IPAd_Tests.ttcn
index 4001b68..226c70b 100644
--- a/ipad/IPAd_Tests.ttcn
+++ b/ipad/IPAd_Tests.ttcn
@@ -470,7 +470,7 @@
f_sleep(1.0);
map(self:PIPE, system:PIPE);
f_PIPEasp_exec_async_start(PIPE, "sh", "rm -f nvstate.bin ; " &
- "onomondo-ipa -C example_ca/pki/issued/alttest.cabundle " &
+ "stdbuf -oL -eL onomondo-ipa -C example_ca/pki/issued/alttest.cabundle " &
parameters &
" 2>&1 | tee -i /tmp/single_log >> onomondo-ipa.log");
@@ -483,8 +483,18 @@
/* Stop IPAd, if still running. */
private function f_stop_ipad(charstring parameters := "") runs on IPAd_ConnHdlr {
+ /* Wait for IPAd to terminate, so that the log is complete. */
+ f_sleep(1.0);
+
map(self:PIPE, system:PIPE);
+
+ /* Expect that the last line Terminate iPAd in case it freezes. */
+ log("Finally checking for memory leaks...");
+ f_PIPEasp_exec_sync(PIPE, "sh checkleak.sh", 0);
+
+ /* Terminate iPAd in case it freezes. */
f_PIPEasp_exec_async_stop(PIPE, "onomondo-ipa");
+
unmap(self:PIPE, system:PIPE);
}
diff --git a/ipad/checkleak.sh b/ipad/checkleak.sh
new file mode 100755
index 0000000..2a9b7d7
--- /dev/null
+++ b/ipad/checkleak.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+grep "====> free" onomondo-ipa.log | tail -n 1 | grep " 0 bytes total"
diff --git a/ipad/testenv.cfg b/ipad/testenv.cfg
index dfec811..98a2fee 100644
--- a/ipad/testenv.cfg
+++ b/ipad/testenv.cfg
@@ -1,7 +1,7 @@
[testsuite]
program=IPAd_Tests
config=IPAd_Tests.cfg
-copy=example_ca
+copy=example_ca checkleak.sh
[pcscd]
prepare=require_vsmartcard_vpcd.sh
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43622?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ifd5390ac230b48614585d2820b9133daebd8c321
Gerrit-Change-Number: 43622
Gerrit-PatchSet: 2
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
jolly has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43621?usp=email )
(
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: IPAd: Cleanly process TC_set_device_capabilities
......................................................................
IPAd: Cleanly process TC_set_device_capabilities
Process the test and make IPAd terminate cleanly. This is required to
check if all memory was freed and there is no memory leak.
Related: SYS#8199
Change-Id: I426b2d0d00790577468599fedd65377a4e4bfeed
---
M ipad/IPAd_Tests.ttcn
1 file changed, 10 insertions(+), 0 deletions(-)
Approvals:
laforge: Looks good to me, but someone else must approve
Jenkins Builder: Verified
dexter: Looks good to me, approved
diff --git a/ipad/IPAd_Tests.ttcn b/ipad/IPAd_Tests.ttcn
index c543ef8..4001b68 100644
--- a/ipad/IPAd_Tests.ttcn
+++ b/ipad/IPAd_Tests.ttcn
@@ -982,7 +982,17 @@
private function f_TC_set_device_capabilities(charstring id) runs on IPAd_ConnHdlr {
f_exec_ipad("-D 0xF1");
f_es10x_init(dev_capa := 'F1'O);
+ f_http_register();
+
+ /* IPAd will poll for eIM package. */
+ f_terminate_poll_cycle();
+
+ /* Wait some time until the the last HTTP response is actually delivered */
+ f_sleep(2.0);
+
+ f_es10x_close();
f_stop_ipad();
+
setverdict(pass);
}
testcase TC_set_device_capabilities() runs on MTC_CT {
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43621?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I426b2d0d00790577468599fedd65377a4e4bfeed
Gerrit-Change-Number: 43621
Gerrit-PatchSet: 2
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
jolly has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43620?usp=email )
Change subject: IPAd: Add test case for multple eIM packages
......................................................................
IPAd: Add test case for multple eIM packages
IPAd will cycle through the main loop until there is no eIM package
available. The IPAd process keeps running. Provide multiple eIM packes
to see if they do not conflict with each other. At the end there must be
no memory leak, but this is checked in a later patch.
To re-use code from other tests, move the package processing of other
tests to extra functions. These functions are called in this test
multiple times.
Related: SYS#8199
Change-Id: I74bba77cc391ed243729e99a5aeaefb9dbde2922
---
M ipad/IPAd_Tests.ttcn
1 file changed, 106 insertions(+), 37 deletions(-)
Approvals:
dexter: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
Jenkins Builder: Verified
diff --git a/ipad/IPAd_Tests.ttcn b/ipad/IPAd_Tests.ttcn
index 8f3af56..c543ef8 100644
--- a/ipad/IPAd_Tests.ttcn
+++ b/ipad/IPAd_Tests.ttcn
@@ -43,7 +43,8 @@
integer mp_esipa_port := 4430;
boolean mp_esipa_disable_ssl := false;
boolean mp_use_vpcd := true;
- float mp_restart_guardtime := 2.0
+ float mp_restart_guardtime := 2.0;
+ integer mp_tc_multi_package_rounds := 5;
}
/* Altstep to handle card power up/down and ATR transmission */
@@ -502,15 +503,11 @@
/* A testcase to try out an indirect profile download,
* See also: GSMA SGP.32, section 3.2.3.2: Indirect Profile Download */
-private function f_TC_proc_indirect_prfle_dwnld(charstring id) runs on IPAd_ConnHdlr {
+private function f_package_indirect_prfle_dwnld(charstring id) runs on IPAd_ConnHdlr {
var integer i;
var charstring eim_fqdn := mp_esipa_ip & ":" & int2str(mp_esipa_port);
var BoundProfilePackage boundProfilePackage;
- f_exec_ipad();
- f_es10x_init();
- f_http_register();
-
/* Prepare indirect profile download by responding with a download trigger request */
f_esipa_transceive(valueof(ts_getEimPackageResponse_dnlTrigReq(ts_profileDownloadTriggerRequest(eimTransactionId := '42'O))),
tr_getEimPackageRequest);
@@ -567,6 +564,13 @@
/* IPAd will poll for notifications. */
f_respond_empty_notifications();
+}
+private function f_TC_proc_indirect_prfle_dwnld(charstring id) runs on IPAd_ConnHdlr {
+ f_exec_ipad();
+ f_es10x_init();
+ f_http_register();
+
+ f_package_indirect_prfle_dwnld(id);
/* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
@@ -592,14 +596,10 @@
/* A testcase to try out an the Generic eUICC Package Download and Execution Procedure,
* See also: GSMA SGP.32, section 3.3.1: Generic eUICC Package Download and Execution */
-private function f_TC_proc_euicc_pkg_dwnld_exec(charstring id) runs on IPAd_ConnHdlr {
+private function f_package_euicc_pkg_dwnld_exec(charstring id) runs on IPAd_ConnHdlr {
template (value) EuiccPackageSigned euiccPackageSigned := ts_euiccPackageSigned(eimTransactionId := '42'O);
template (present) EuiccPackageRequest euiccPackageRequest := ts_euiccPackageRequest(euiccPackageSigned);
- f_exec_ipad();
- f_es10x_init();
- f_http_register();
-
/* Step #1-#2 */
f_esipa_transceive(valueof(ts_getEimPackageResponse_euiccPkgReq(euiccPackageRequest)), tr_getEimPackageRequest);
@@ -626,6 +626,13 @@
/* IPAd will poll for notifications. */
f_respond_empty_notifications();
+}
+private function f_TC_proc_euicc_pkg_dwnld_exec(charstring id) runs on IPAd_ConnHdlr {
+ f_exec_ipad();
+ f_es10x_init();
+ f_http_register();
+
+ f_package_euicc_pkg_dwnld_exec(id);
/* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
@@ -652,11 +659,7 @@
/* A testcase to try out an the Generic eUICC Package Download and Execution Procedure,
* but this time we force a rollback meneuver */
-private function f_TC_proc_euicc_pkg_dwnld_exec_rollback(charstring id) runs on IPAd_ConnHdlr {
- f_exec_ipad();
- f_es10x_init();
- f_http_register();
-
+private function f_package_euicc_pkg_dwnld_exec_rollback(charstring id) runs on IPAd_ConnHdlr {
/* Step #1-#2 */
f_esipa_transceive(valueof(ts_getEimPackageResponse_euiccPkgReq), tr_getEimPackageRequest);
@@ -702,6 +705,13 @@
/* IPAd will poll for notifications. */
f_respond_empty_notifications();
+}
+private function f_TC_proc_euicc_pkg_dwnld_exec_rollback(charstring id) runs on IPAd_ConnHdlr {
+ f_exec_ipad();
+ f_es10x_init();
+ f_http_register();
+
+ f_package_euicc_pkg_dwnld_exec_rollback(id);
/* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
@@ -727,13 +737,9 @@
/* A testcase to try out an IpaEuiccDataRequest */
-private function f_TC_proc_euicc_data_req(charstring id) runs on IPAd_ConnHdlr {
+private function f_package_euicc_data_req(charstring id) runs on IPAd_ConnHdlr {
var charstring eim_fqdn := mp_esipa_ip & ":" & int2str(mp_esipa_port);
- f_exec_ipad();
- f_es10x_init();
- f_http_register();
-
/* IPAd requests a package, we tell it to execute an ipaEuiccDataRequest */
f_esipa_transceive(valueof(ts_getEimPackageResponse_euiccDataReq(ts_ipaEuiccDataRequest(eimTransactionId := '42'O))),
tr_getEimPackageRequest);
@@ -753,6 +759,13 @@
/* IPAd will poll for notifications. */
f_respond_empty_notifications();
+}
+private function f_TC_proc_euicc_data_req(charstring id) runs on IPAd_ConnHdlr {
+ f_exec_ipad();
+ f_es10x_init();
+ f_http_register();
+
+ f_package_euicc_data_req(id);
/* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
@@ -983,17 +996,12 @@
}
/* A testcase to test the forwarding of a PSMO and the expected otherSignedNotification */
-private function f_TC_euiccPackageRequest_PSMO(charstring id) runs on IPAd_ConnHdlr {
+private function f_package_euiccPackageRequest_PSMO(charstring id) runs on IPAd_ConnHdlr {
template (value) EuiccPackage euiccPackage := ts_euiccPackage_setFallbackAttribute;
template (value) EuiccPackageSigned euiccPackageSigned := ts_euiccPackageSigned(euiccPackage);
template (value) EuiccPackageRequest euiccPackageRequest := ts_euiccPackageRequest(euiccPackageSigned);
template (value) OtherSignedNotification otherSignedNotification := ts_otherSignedNotification(euiccCertificate := ts_cert_eum_nist,
eumCertificate := ts_cert_eum_nist);
-
- f_exec_ipad();
- f_es10x_init();
- f_http_register();
-
/* IPAd requests a package, we tell it to execute an euiccPackageRequest */
f_esipa_transceive(valueof(ts_getEimPackageResponse_euiccPkgReq(euiccPackageRequest)), tr_getEimPackageRequest);
@@ -1010,6 +1018,13 @@
/* IPAd will poll for notifications. */
f_respond_empty_notifications();
+}
+private function f_TC_euiccPackageRequest_PSMO(charstring id) runs on IPAd_ConnHdlr {
+ f_exec_ipad();
+ f_es10x_init();
+ f_http_register();
+
+ f_package_euiccPackageRequest_PSMO(id);
/* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
@@ -1033,13 +1048,9 @@
}
/* A testcase to trigger an indirect profile download. This download will fail because the eUICC indicates so. */
-private function f_TC_proc_indirect_prfle_dwnld_cancel_euicc(charstring id) runs on IPAd_ConnHdlr {
+private function f_package_indirect_prfle_dwnld_cancel_euicc(charstring id) runs on IPAd_ConnHdlr {
var charstring eim_fqdn := mp_esipa_ip & ":" & int2str(mp_esipa_port);
- f_exec_ipad();
- f_es10x_init();
- f_http_register();
-
/* Prepare indirect profile download by responding with a download trigger request */
f_esipa_transceive(valueof(ts_getEimPackageResponse_dnlTrigReq(ts_profileDownloadTriggerRequest(eimTransactionId := '42'O))),
tr_getEimPackageRequest);
@@ -1065,6 +1076,13 @@
/* IPAd will poll for notifications. */
f_respond_empty_notifications();
+}
+private function f_TC_proc_indirect_prfle_dwnld_cancel_euicc(charstring id) runs on IPAd_ConnHdlr {
+ f_exec_ipad();
+ f_es10x_init();
+ f_http_register();
+
+ f_package_indirect_prfle_dwnld_cancel_euicc(id);
/* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
@@ -1088,13 +1106,9 @@
}
/* A testcase to trigger an indirect profile download. This download will fail because the eIM indicates so. */
-private function f_TC_proc_indirect_prfle_dwnld_cancel_eim(charstring id) runs on IPAd_ConnHdlr {
+private function f_package_indirect_prfle_dwnld_cancel_eim(charstring id) runs on IPAd_ConnHdlr {
var charstring eim_fqdn := mp_esipa_ip & ":" & int2str(mp_esipa_port);
- f_exec_ipad();
- f_es10x_init();
- f_http_register();
-
/* Prepare indirect profile download by responding with a download trigger request */
f_esipa_transceive(valueof(ts_getEimPackageResponse_dnlTrigReq(ts_profileDownloadTriggerRequest(eimTransactionId := '42'O))),
tr_getEimPackageRequest);
@@ -1123,6 +1137,13 @@
/* IPAd will poll for notifications. */
f_respond_empty_notifications();
+}
+private function f_TC_proc_indirect_prfle_dwnld_cancel_eim(charstring id) runs on IPAd_ConnHdlr {
+ f_exec_ipad();
+ f_es10x_init();
+ f_http_register();
+
+ f_package_indirect_prfle_dwnld_cancel_eim(id);
/* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
@@ -1145,6 +1166,53 @@
setverdict(pass);
}
+/* Test multiple packages at once. */
+private function f_TC_multi_packages(charstring id) runs on IPAd_ConnHdlr {
+ var integer i;
+
+ f_exec_ipad();
+ f_es10x_init();
+ f_http_register();
+
+ for (i := 0; i < mp_tc_multi_package_rounds; i := i + 1) {
+ log("Test round ", i, " of ", mp_tc_multi_package_rounds);
+ log("Testing indirect_prfle_dwnld...");
+ f_package_indirect_prfle_dwnld(id);
+ log("Testing euicc_pkg_dwnld_exec...");
+ f_package_euicc_pkg_dwnld_exec(id);
+ log("Testing euicc_pkg_dwnld_exec_rollback...");
+ f_package_euicc_pkg_dwnld_exec_rollback(id);
+ log("Testing euicc_data_req...");
+ f_package_euicc_data_req(id);
+ log("Testing euiccPackageRequest_PSMO...");
+ f_package_euiccPackageRequest_PSMO(id);
+ log("Testing indirect_prfle_dwnld_cancel_euicc...");
+ f_package_indirect_prfle_dwnld_cancel_euicc(id);
+ log("Testing indirect_prfle_dwnld_cancel_eim...");
+ f_package_indirect_prfle_dwnld_cancel_eim(id);
+ }
+
+ /* IPAd will poll for eIM package. */
+ f_terminate_poll_cycle();
+
+ /* Wait some time until the the last HTTP response is actually delivered */
+ f_sleep(2.0);
+
+ f_es10x_close();
+ f_stop_ipad();
+
+ setverdict(pass);
+}
+testcase TC_multi_packages() runs on MTC_CT {
+ var charstring id := testcasename();
+ var IPAd_ConnHdlrPars pars := f_init_pars();
+ var IPAd_ConnHdlr vc_conn;
+ f_init(id, t_guard := 60.0 * int2float(mp_tc_multi_package_rounds));
+ vc_conn := f_start_handler(refers(f_TC_multi_packages), pars);
+ vc_conn.done;
+ setverdict(pass);
+}
+
control {
execute ( TC_proc_indirect_prfle_dwnld() );
execute ( TC_proc_euicc_pkg_dwnld_exec() );
@@ -1161,6 +1229,7 @@
execute ( TC_euiccPackageRequest_PSMO() );
execute ( TC_proc_indirect_prfle_dwnld_cancel_euicc() );
execute ( TC_proc_indirect_prfle_dwnld_cancel_eim() );
+ execute ( TC_multi_packages() );
}
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43620?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I74bba77cc391ed243729e99a5aeaefb9dbde2922
Gerrit-Change-Number: 43620
Gerrit-PatchSet: 2
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
jolly has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43619?usp=email )
(
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: IPAd: Split f_terminate_poll_cycle()
......................................................................
IPAd: Split f_terminate_poll_cycle()
Remove the handling of notification list polling from
f_terminate_poll_cycle() and put it into an extra function. The
notification list is polled by IPAd after every eIM package processing.
This allows to send multiple eIM packages (and process notification list
polling) before terminating the poll cycle at the end. Later tests will
use this to check for memory leaks.
Related: SYS#8199
Change-Id: I4e278f74ce3bb9bbd666f13c2a72ed90eba34af7
---
M ipad/IPAd_Tests.ttcn
1 file changed, 34 insertions(+), 10 deletions(-)
Approvals:
laforge: Looks good to me, but someone else must approve
dexter: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/ipad/IPAd_Tests.ttcn b/ipad/IPAd_Tests.ttcn
index 75e7be7..8f3af56 100644
--- a/ipad/IPAd_Tests.ttcn
+++ b/ipad/IPAd_Tests.ttcn
@@ -450,12 +450,15 @@
f_esipa_transceive(valueof(ts_authenticateClientResponseEsipa_dpe), tr_authenticateClientRequestEsipa);
}
-/* After processing notifications and eIM packages, IPAd will poll again.
- * Respond with empty notification list and with no eIM package. */
-private function f_terminate_poll_cycle() runs on IPAd_ConnHdlr {
+/* Respond with empty notification list. */
+private function f_respond_empty_notifications() runs on IPAd_ConnHdlr {
/* Expect the IPAd to query the eUICC for pending notifications, we respond with an empty list */
f_vpcd_transceive(enc_RetrieveNotificationsListResponse(valueof(ts_retrieveNotificationsListResponse_empty)), 'BF2B00'O);
+}
+/* After processing notifications and eIM packages, IPAd will poll again.
+ * Respond with no eIM package. */
+private function f_terminate_poll_cycle() runs on IPAd_ConnHdlr {
/* IPAd requests a package, we tell it that there is no package available */
f_esipa_transceive(valueof(ts_getEimPackageResponse_noEimPackageAvailable), tr_getEimPackageRequest);
}
@@ -562,7 +565,10 @@
/* Receive RemoveNotificationFromList from iPAD->eUICC */
f_vpcd_transceive(enc_NotificationSentResponse(valueof(ts_notificationSentResponse)));
- /* IPAd will poll again. */
+ /* IPAd will poll for notifications. */
+ f_respond_empty_notifications();
+
+ /* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
/* Wait some time until the the last HTTP response is actually delivered */
@@ -618,7 +624,10 @@
f_vpcd_transceive(enc_NotificationSentResponse(valueof(ts_notificationSentResponse)));
f_vpcd_transceive(enc_NotificationSentResponse(valueof(ts_notificationSentResponse)));
- /* IPAd will poll again. */
+ /* IPAd will poll for notifications. */
+ f_respond_empty_notifications();
+
+ /* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
/* Wait some time until the the last HTTP response is actually delivered */
@@ -691,7 +700,10 @@
f_vpcd_transceive(enc_NotificationSentResponse(valueof(ts_notificationSentResponse)));
f_vpcd_transceive(enc_NotificationSentResponse(valueof(ts_notificationSentResponse)));
- /* IPAd will poll again. */
+ /* IPAd will poll for notifications. */
+ f_respond_empty_notifications();
+
+ /* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
/* Wait some time until the the last HTTP response is actually delivered */
@@ -739,7 +751,10 @@
f_esipa_transceive(valueof(ts_provideEimPackageResultResponse_eimAck(eimAcknowledgements := {1,2,3,4})),
tr_provideEimPackageResult(*, tr_eimPackageResult_euiccDataResp(eimTransactionId := '42'O)));
- /* IPAd will poll again. */
+ /* IPAd will poll for notifications. */
+ f_respond_empty_notifications();
+
+ /* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
/* Wait some time until the the last HTTP response is actually delivered */
@@ -993,7 +1008,10 @@
f_esipa_transceive(valueof(ts_provideEimPackageResultResponse_eimAck()), ?);
f_vpcd_transceive(enc_NotificationSentResponse(valueof(ts_notificationSentResponse)));
- /* IPAd will poll again. */
+ /* IPAd will poll for notifications. */
+ f_respond_empty_notifications();
+
+ /* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
/* Wait some time until the the last HTTP response is actually delivered */
@@ -1045,7 +1063,10 @@
f_esipa_transceive(valueof(ts_cancelSessionResponseEsipa),
tr_cancelSessionRequestEsipa(cancelSessionResponse := tr_SGP32_cancelSessionResponse));
- /* IPAd will poll again. */
+ /* IPAd will poll for notifications. */
+ f_respond_empty_notifications();
+
+ /* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
/* Wait some time until the the last HTTP response is actually delivered */
@@ -1100,7 +1121,10 @@
f_esipa_transceive(valueof(ts_cancelSessionResponseEsipa),
tr_cancelSessionRequestEsipa(cancelSessionResponse := tr_SGP32_cancelSessionResponse));
- /* IPAd will poll again. */
+ /* IPAd will poll for notifications. */
+ f_respond_empty_notifications();
+
+ /* IPAd will poll for eIM package. */
f_terminate_poll_cycle();
/* Wait some time until the the last HTTP response is actually delivered */
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43619?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I4e278f74ce3bb9bbd666f13c2a72ed90eba34af7
Gerrit-Change-Number: 43619
Gerrit-PatchSet: 2
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Attention is currently required from: jolly.
dexter has posted comments on this change by jolly. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43655?usp=email )
Change subject: IPAd: Make existing tests work with multi eIM support
......................................................................
Patch Set 1:
(3 comments)
Commit Message:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43655/comment/aa148ea2_62a7… :
PS1, Line 9: The test cases terminate differently. At the end, the IPAd will request
I have difficulties to understand what differently means here. To my understanding the behavior of the IPAd is changed consistently, meaning that it now always requests the eIM configuration.
Maybe write: "The behavior of the IPAd implementation has been changed." Now at the end of a poll cycle, the IPAd will ..."
File ipad/IPAd_Tests.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43655/comment/74983328_fa46… :
PS1, Line 804: var EsipaMessageFromEimToIpa esipa_res;
I think it would be cleaner to remove those two unused variables in a separate patch.
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43655/comment/d1846522_3e61… :
PS1, Line 462: private function f_terminate_poll_cycle() runs on IPAd_ConnHdlr {
I wonder if we can optimize this a bit and remove some code dup. We may add a parameter "eimPackageError := 1" to the parameter list of this function.
Then we would use ts_getEimPackageResponse_eimPkgErr(eimPackageError) as template for f_esipa_transceive
This would not change the behavior of this function, but we then can call it from f_TC_get_eim_pkg_req_rej like so:
f_terminate_poll_cycle(eimPackageError := 127)
replacing the call to f_esipa_transceive and the call to f_vpcd_transceive which is introduced by this patch.
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43655?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Id67bb3acc3f90805b06f441c5352ba29a28698c4
Gerrit-Change-Number: 43655
Gerrit-PatchSet: 1
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: dexter <pmaier(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Comment-Date: Thu, 17 Sep 2026 07:33:12 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Attention is currently required from: pespin.
osmith has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43650?usp=email )
Change subject: deps/Makefile: Depend on osmo-ttcn3-openapi-generator.git to support 5G SBI types
......................................................................
Patch Set 1: Code-Review+1
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43650?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I10753fde79fddcf1c64a2a8b6eb6a2e1af708081
Gerrit-Change-Number: 43650
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 17 Sep 2026 07:26:57 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Attention is currently required from: pespin.
osmith has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43649?usp=email )
Change subject: library/HTTP2_*: Add initial HTTP2 client/server support
......................................................................
Patch Set 1: Code-Review+1
(2 comments)
File library/HTTP2_CodecPort_CtrlFunct.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43649/comment/5f015c30_601a… :
PS1, Line 3: import from HTTP2_CodecPort all;
Why does this file and library/HTTP2_CodecPort_CtrlFunctDef.cc use spaces instead of tabs for indention?
File library/HTTP2_Server_Emulation.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43649/comment/e59906f7_2074… :
PS1, Line 483: //log("HTTP2_Server: Register ", vc_conn);
Do you want to keep the commented out log lines here and above?
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43649?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I3ab440517e925a7c402dd4055c223ef568405adc
Gerrit-Change-Number: 43649
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 17 Sep 2026 07:26:09 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes