aboutsummaryrefslogtreecommitdiffstats
path: root/library/Misc_Helpers.ttcn
blob: a40252570e4444b9301359af9914fe307deb4a66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
module Misc_Helpers {

/* 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;
}

}