osmo-ttcn3-hacks/library/Misc_Helpers.ttcn

55 lines
1.5 KiB
Plaintext

module Misc_Helpers {
modulepar {
charstring mp_osmo_repo := "nightly";
}
/* Test the Osmocom repository (nightly, latest, 2021q4, ...), from which the
* SUT is running (OS#4878). Usage examples:
* if (Misc_Helpers.f_osmo_repo_is("nightly")) {
* ...
* }
* if (Misc_Helpers.f_osmo_repo_is(("nightly", "2021q4"))) {
* ...
* }
*/
function f_osmo_repo_is(template charstring ver) return boolean {
return match(mp_osmo_repo, ver);
}
/* Try to properly shutdown a testcase.
* The reliable method to stop a testcase without running into dynamic
* testcase errors due to unconnected ports receiving messages is to call
* all component.stop before terminating. However, this can only be called
* from the mtc! So in case we want to terminate from a component that is not
* the mtc we try to do the next best thing which is calling mtc.stop and
* hoping for the best.
*/
function f_shutdown(charstring file, integer line, verdicttype verdict := none,
charstring text := "") {
if (verdict != none) {
text := file & ":" & int2str(line) & " : " & text
setverdict(verdict, text);
}
log("Stopping testcase execution from ", file, ":", line)
if (self == mtc) {
/* Properly stop all ports before disconnecting them. This avoids
* running into the dynamic testcase error due to messages arriving on
* unconnected ports. */
all component.stop;
}
mtc.stop
}
function f_addr_is_ipv6(charstring addr) return boolean {
for (var integer i := 0; i < lengthof(addr); i := i + 1) {
if (addr[i] == ":") {
return true;
}
}
return false;
}
}