diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn
index a0e6d1d..aa334ec 100644
--- a/gbproxy/GBProxy_Tests.ttcn
+++ b/gbproxy/GBProxy_Tests.ttcn
@@ -1096,20 +1096,25 @@
 	f_global_sgsn2pcu(pdu_tx, pdu_rx, sgsn_idx, pcu_idx);
 }
 
-private function f_TC_suspend() runs on GlobalTest_CT {
+private function f_TC_suspend(integer sgsn_idx, integer nri_idx, integer pcu_idx, integer bvc_idx)
+runs on GlobalTest_CT {
 	var integer i;
 
-	/* TODO: Generate RA ID for each ConnHdlr */
 	for (i := 0; i < 10; i := i+1) {
-		f_suspend_one(sgsn_idx := 0, nri_idx := 0, pcu_idx := 0, bvc_idx := 0, suffix := i);
+		f_suspend_one(sgsn_idx, nri_idx, pcu_idx, bvc_idx, suffix := i);
 	}
 	setverdict(pass);
 }
 testcase TC_suspend() runs on GlobalTest_CT
 {
+	var integer sgsn_idx, nri_idx;
 	f_init();
 	f_global_init();
-	f_TC_suspend();
+	for (sgsn_idx := 0; sgsn_idx < NUM_SGSN; sgsn_idx := sgsn_idx+1) {
+		for (nri_idx := 0; nri_idx < lengthof(mp_sgsn_nri[sgsn_idx]); nri_idx := nri_idx+1) {
+			f_TC_suspend(sgsn_idx, nri_idx, pcu_idx:=0, bvc_idx:=0);
+		}
+	}
 	f_cleanup();
 }
 
@@ -1143,19 +1148,25 @@
 	f_global_sgsn2pcu(pdu_tx, pdu_rx, sgsn_idx, pcu_idx);
 }
 
-private function f_TC_resume() runs on GlobalTest_CT {
+private function f_TC_resume(integer sgsn_idx, integer nri_idx, integer pcu_idx, integer bvc_idx)
+runs on GlobalTest_CT {
 	var integer i;
 
 	for (i := 0; i < 10; i := i+1) {
-		f_resume_one(sgsn_idx := 0, nri_idx := 0, pcu_idx := 0, bvc_idx := 0, suffix := i);
+		f_resume_one(sgsn_idx, nri_idx, pcu_idx, bvc_idx, suffix := i);
 	}
 	setverdict(pass);
 }
 testcase TC_resume() runs on GlobalTest_CT
 {
+	var integer sgsn_idx, nri_idx;
 	f_init();
 	f_global_init();
-	f_TC_resume();
+	for (sgsn_idx := 0; sgsn_idx < NUM_SGSN; sgsn_idx := sgsn_idx+1) {
+		for (nri_idx := 0; nri_idx < lengthof(mp_sgsn_nri[sgsn_idx]); nri_idx := nri_idx+1) {
+			f_TC_resume(sgsn_idx, nri_idx, pcu_idx:=0, bvc_idx:=0);
+		}
+	}
 	f_cleanup();
 }
 
