diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.c b/tests/msc_vlr/msc_vlr_test_authen_reuse.c
index 103c904..039c399 100644
--- a/tests/msc_vlr/msc_vlr_test_authen_reuse.c
+++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.c
@@ -284,46 +284,46 @@
 	clear_vlr();
 }
 
-void test_auth_use_twice_geran()
+void test_auth_use_twice_geran(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 	_test_auth_reuse(RAN_GERAN_A, 1, 1, true);
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_auth_use_twice_utran()
+void test_auth_use_twice_utran(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 	_test_auth_reuse(RAN_UTRAN_IU, 1, 1, true);
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_auth_use_infinitely_geran()
+void test_auth_use_infinitely_geran(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 	_test_auth_reuse(RAN_GERAN_A, -1, 3, false);
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_auth_use_infinitely_utran()
+void test_auth_use_infinitely_utran(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 	_test_auth_reuse(RAN_UTRAN_IU, -1, 3, false);
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_no_auth_reuse_geran()
+void test_no_auth_reuse_geran(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 	_test_auth_reuse(RAN_GERAN_A, 0, 0, true);
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_no_auth_reuse_utran()
+void test_no_auth_reuse_utran(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 	_test_auth_reuse(RAN_UTRAN_IU, 0, 0, true);
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 msc_vlr_test_func_t msc_vlr_tests[] = {
diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err
index c6c3f72..010f594 100644
--- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err
+++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err
@@ -1,4 +1,4 @@
-===== test_auth_use_twice_geran
+===== [1] test_auth_use_twice_geran(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -421,12 +421,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_auth_use_twice_geran: SUCCESS
+===== [1] test_auth_use_twice_geran(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_auth_use_twice_utran
+===== [2] test_auth_use_twice_utran(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -875,12 +875,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   iu_release_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_auth_use_twice_utran: SUCCESS
+===== [2] test_auth_use_twice_utran(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_auth_use_infinitely_geran
+===== [3] test_auth_use_infinitely_geran(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1396,12 +1396,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_auth_use_infinitely_geran: SUCCESS
+===== [3] test_auth_use_infinitely_geran(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_auth_use_infinitely_utran
+===== [4] test_auth_use_infinitely_utran(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1951,12 +1951,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   iu_release_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_auth_use_infinitely_utran: SUCCESS
+===== [4] test_auth_use_infinitely_utran(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_no_auth_reuse_geran
+===== [5] test_no_auth_reuse_geran(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -2272,12 +2272,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_no_auth_reuse_geran: SUCCESS
+===== [5] test_no_auth_reuse_geran(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_no_auth_reuse_utran
+===== [6] test_no_auth_reuse_utran(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -2611,7 +2611,7 @@
 DRLL Freeing subscriber connection with NULL subscriber
   iu_release_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_no_auth_reuse_utran: SUCCESS
+===== [6] test_no_auth_reuse_utran(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c
index cc120c8..dea1d96 100644
--- a/tests/msc_vlr/msc_vlr_test_call.c
+++ b/tests/msc_vlr/msc_vlr_test_call.c
@@ -151,13 +151,13 @@
 	vlr_subscr_put(vsub);
 }
 
-void test_call_mo()
+void test_call_mo(uint8_t nr, const char *imsi)
 {
 	struct gsm_mncc mncc = {
 		.imsi = IMSI,
 	};
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	fake_time_start();
 
@@ -248,17 +248,17 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_call_mt()
+void test_call_mt(uint8_t nr, const char *imsi)
 {
 	struct gsm_mncc mncc = {
 		.imsi = IMSI,
 		.callref = 0x423,
 	};
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	fake_time_start();
 
@@ -331,7 +331,7 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 msc_vlr_test_func_t msc_vlr_tests[] = {
diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err
index 32a65bb..77df72f 100644
--- a/tests/msc_vlr/msc_vlr_test_call.err
+++ b/tests/msc_vlr/msc_vlr_test_call.err
@@ -1,4 +1,4 @@
-===== test_call_mo
+===== [1] test_call_mo(901700000004620)...
 - Total time passed: 0.000000 s
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
@@ -342,12 +342,12 @@
 DREF VLR subscr MSISDN:42342 usage decreases to: 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:42342
-===== test_call_mo: SUCCESS
+===== [1] test_call_mo(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_call_mt
+===== [2] test_call_mt(901700000004620)...
 - Total time passed: 0.000000 s
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
@@ -696,7 +696,7 @@
 DREF VLR subscr MSISDN:42342 usage decreases to: 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:42342
-===== test_call_mt: SUCCESS
+===== [2] test_call_mt(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.c b/tests/msc_vlr/msc_vlr_test_gsm_authen.c
index 2bcdd3c..e9eacf0 100644
--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c
+++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.c
@@ -23,11 +23,11 @@
 
 #include "msc_vlr_tests.h"
 
-void test_gsm_authen(const char *imsi)
+void test_gsm_authen(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 
@@ -209,14 +209,14 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_gsm_authen_tmsi(const char *imsi)
+void test_gsm_authen_tmsi(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 	net->vlr->cfg.assign_tmsi = true;
@@ -485,14 +485,14 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_gsm_authen_imei(const char *imsi)
+void test_gsm_authen_imei(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 	net->vlr->cfg.check_imei_rqd = true;
@@ -580,14 +580,14 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_gsm_authen_tmsi_imei(const char *imsi)
+void test_gsm_authen_tmsi_imei(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 	net->vlr->cfg.assign_tmsi = true;
@@ -695,15 +695,15 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_gsm_milenage_authen()
+void test_gsm_milenage_authen(uint8_t nr, const char *ignored)
 {
 	struct vlr_subscr *vsub;
 	const char *imsi = "901700000010650";
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 	rx_from_ran = RAN_GERAN_A;
@@ -907,7 +907,7 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 msc_vlr_test_func_t msc_vlr_tests[] = {
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err
index 885d799..3926569 100644
--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err
+++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err
@@ -1,4 +1,4 @@
-===== test_gsm_authen
+===== [1] test_gsm_authen(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -441,12 +441,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_gsm_authen: SUCCESS
+===== [1] test_gsm_authen(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_gsm_authen_tmsi
+===== [2] test_gsm_authen_tmsi(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1093,12 +1093,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_gsm_authen_tmsi: SUCCESS
+===== [2] test_gsm_authen_tmsi(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_gsm_authen_imei
+===== [3] test_gsm_authen_imei(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1313,12 +1313,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_gsm_authen_imei: SUCCESS
+===== [3] test_gsm_authen_imei(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_gsm_authen_tmsi_imei
+===== [4] test_gsm_authen_tmsi_imei(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1564,12 +1564,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_gsm_authen_tmsi_imei: SUCCESS
+===== [4] test_gsm_authen_tmsi_imei(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_gsm_milenage_authen
+===== [5] test_gsm_milenage_authen(901700000010650)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1993,7 +1993,7 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_gsm_milenage_authen: SUCCESS
+===== [5] test_gsm_milenage_authen(901700000010650): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c
index 38f07bb..541bac1 100644
--- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c
+++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c
@@ -23,11 +23,11 @@
 
 #include "msc_vlr_tests.h"
 
-void test_ciph(const char *imsi)
+void test_ciph(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	/* implicit: net->authentication_required = true; */
 	net->a5_encryption_mask = (1 << 1);
@@ -231,14 +231,14 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_ciph_tmsi(const char *imsi)
+void test_ciph_tmsi(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	/* implicit: net->authentication_required = true; */
 	net->a5_encryption_mask = (1 << 1);
@@ -469,14 +469,14 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_ciph_imei(const char *imsi)
+void test_ciph_imei(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	/* implicit: net->authentication_required = true; */
 	net->a5_encryption_mask = (1 << 1);
@@ -570,14 +570,14 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_ciph_imeisv(const char *imsi)
+void test_ciph_imeisv(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	/* implicit: net->authentication_required = true; */
 	net->a5_encryption_mask = (1 << 1);
@@ -667,14 +667,14 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_ciph_tmsi_imei(const char *imsi)
+void test_ciph_tmsi_imei(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	/* implicit: net->authentication_required = true; */
 	net->a5_encryption_mask = (1 << 1);
@@ -786,12 +786,12 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_lu_unknown_tmsi()
+void test_lu_unknown_tmsi(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	btw("Location Update request with unknown TMSI sends ID Request for IMSI");
 	lu_result_sent = RES_NONE;
@@ -827,7 +827,7 @@
 	VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 msc_vlr_test_func_t msc_vlr_tests[] = {
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err
index cb9091c..6fca9ba 100644
--- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err
+++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err
@@ -1,4 +1,4 @@
-===== test_ciph
+===== [1] test_ciph(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -478,12 +478,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_ciph: SUCCESS
+===== [1] test_ciph(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_ciph_tmsi
+===== [2] test_ciph_tmsi(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1000,12 +1000,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_ciph_tmsi: SUCCESS
+===== [2] test_ciph_tmsi(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_ciph_imei
+===== [3] test_ciph_imei(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1221,12 +1221,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_ciph_imei: SUCCESS
+===== [3] test_ciph_imei(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_ciph_imeisv
+===== [4] test_ciph_imeisv(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1431,12 +1431,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_ciph_imeisv: SUCCESS
+===== [4] test_ciph_imeisv(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_ciph_tmsi_imei
+===== [5] test_ciph_tmsi_imei(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1683,7 +1683,7 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_ciph_tmsi_imei: SUCCESS
+===== [5] test_ciph_tmsi_imei(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.c b/tests/msc_vlr/msc_vlr_test_hlr_reject.c
index 76cfb47..2d9b863 100644
--- a/tests/msc_vlr/msc_vlr_test_hlr_reject.c
+++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.c
@@ -23,9 +23,9 @@
 
 #include "msc_vlr_tests.h"
 
-void test_hlr_rej_auth_info_unknown_imsi()
+void test_hlr_rej_auth_info_unknown_imsi(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 
@@ -46,12 +46,12 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_hlr_rej_auth_info_net_fail()
+void test_hlr_rej_auth_info_net_fail(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 
@@ -72,14 +72,14 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_hlr_rej_auth_info_net_fail_no_reuse_tuples(const char *imsi)
+void test_hlr_rej_auth_info_net_fail_no_reuse_tuples(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 	net->vlr->cfg.auth_reuse_old_sets_on_error = false;
@@ -158,14 +158,14 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples(const char *imsi)
+void test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 	net->vlr->cfg.auth_reuse_old_sets_on_error = true;
@@ -245,12 +245,12 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_hlr_acc_but_no_auth_tuples()
+void test_hlr_acc_but_no_auth_tuples(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 	net->vlr->cfg.auth_reuse_old_sets_on_error = true;
@@ -277,14 +277,14 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_hlr_rej_auth_info_net_fail_reuse_tuples(const char *imsi)
+void test_hlr_rej_auth_info_net_fail_reuse_tuples(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 	net->vlr->cfg.auth_reuse_old_sets_on_error = true;
@@ -379,12 +379,12 @@
 	EXPECT_CONN_COUNT(0);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_hlr_rej_lu()
+void test_hlr_rej_lu(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	btw("Location Update request causes a GSUP LU request to HLR");
 	lu_result_sent = RES_NONE;
@@ -402,12 +402,12 @@
 	EXPECT_CONN_COUNT(0);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_hlr_no_insert_data()
+void test_hlr_no_insert_data(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	btw("Location Update request causes a GSUP LU request to HLR");
 	lu_result_sent = RES_NONE;
@@ -428,7 +428,7 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 msc_vlr_test_func_t msc_vlr_tests[] = {
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err
index 0d189e8..56ab7be 100644
--- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err
+++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.err
@@ -1,4 +1,4 @@
-===== test_hlr_rej_auth_info_unknown_imsi
+===== [1] test_hlr_rej_auth_info_unknown_imsi(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -69,12 +69,12 @@
   lu_result_sent == 2
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_hlr_rej_auth_info_unknown_imsi: SUCCESS
+===== [1] test_hlr_rej_auth_info_unknown_imsi(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_hlr_rej_auth_info_net_fail
+===== [2] test_hlr_rej_auth_info_net_fail(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -145,12 +145,12 @@
   lu_result_sent == 2
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_hlr_rej_auth_info_net_fail: SUCCESS
+===== [2] test_hlr_rej_auth_info_net_fail(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_hlr_rej_auth_info_net_fail_reuse_tuples
+===== [3] test_hlr_rej_auth_info_net_fail_reuse_tuples(901700000004620)...
 ---
 - Submit a used auth tuple in the VLR
 - Location Update request causes a GSUP Send Auth Info request to HLR
@@ -448,12 +448,12 @@
   lu_result_sent == 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_hlr_rej_auth_info_net_fail_reuse_tuples: SUCCESS
+===== [3] test_hlr_rej_auth_info_net_fail_reuse_tuples(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples
+===== [4] test_hlr_rej_auth_info_net_fail_no_reuse_tuples(901700000004620)...
 ---
 - Submit a used auth tuple in the VLR
 - Location Update request causes a GSUP Send Auth Info request to HLR
@@ -676,12 +676,12 @@
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples: SUCCESS
+===== [4] test_hlr_rej_auth_info_net_fail_no_reuse_tuples(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples
+===== [5] test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples(901700000004620)...
 ---
 - Submit a used auth tuple in the VLR
 - Location Update request causes a GSUP Send Auth Info request to HLR
@@ -905,12 +905,12 @@
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: SUCCESS
+===== [5] test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_hlr_acc_but_no_auth_tuples
+===== [6] test_hlr_acc_but_no_auth_tuples(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -980,12 +980,12 @@
   lu_result_sent == 2
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_hlr_acc_but_no_auth_tuples: SUCCESS
+===== [6] test_hlr_acc_but_no_auth_tuples(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_hlr_rej_lu
+===== [7] test_hlr_rej_lu(901700000004620)...
 - Location Update request causes a GSUP LU request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1058,12 +1058,12 @@
   lu_result_sent == 2
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_hlr_rej_lu: SUCCESS
+===== [7] test_hlr_rej_lu(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_hlr_no_insert_data
+===== [8] test_hlr_no_insert_data(901700000004620)...
 - Location Update request causes a GSUP LU request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1159,7 +1159,7 @@
   lu_result_sent == 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr IMSI:901700000004620
-===== test_hlr_no_insert_data: SUCCESS
+===== [8] test_hlr_no_insert_data(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c
index c2f17c8..4dc453b 100644
--- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c
+++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c
@@ -25,9 +25,9 @@
 
 #include <osmocom/core/logging.h>
 
-void test_hlr_timeout_lu_auth_info()
+void test_hlr_timeout_lu_auth_info(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	fake_time_start();
 
@@ -61,12 +61,12 @@
 	VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_hlr_timeout_lu_upd_loc_result()
+void test_hlr_timeout_lu_upd_loc_result(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	fake_time_start();
 
@@ -108,7 +108,7 @@
 	VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 msc_vlr_test_func_t msc_vlr_tests[] = {
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err
index 79eecf4..1a5edd8 100644
--- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err
+++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err
@@ -1,4 +1,4 @@
-===== test_hlr_timeout_lu_auth_info
+===== [1] test_hlr_timeout_lu_auth_info(901700000004620)...
 - Total time passed: 0.000000 s
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
@@ -77,12 +77,12 @@
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
   lu_result_sent == 2
-===== test_hlr_timeout_lu_auth_info: SUCCESS
+===== [1] test_hlr_timeout_lu_auth_info(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_hlr_timeout_lu_upd_loc_result
+===== [2] test_hlr_timeout_lu_upd_loc_result(901700000004620)...
 - Total time passed: 0.000000 s
 - Location Update request causes a GSUP LU request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
@@ -180,7 +180,7 @@
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
   lu_result_sent == 2
-===== test_hlr_timeout_lu_upd_loc_result: SUCCESS
+===== [2] test_hlr_timeout_lu_upd_loc_result(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.c b/tests/msc_vlr/msc_vlr_test_ms_timeout.c
index d5f4bb0..569bbf5 100644
--- a/tests/msc_vlr/msc_vlr_test_ms_timeout.c
+++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.c
@@ -23,9 +23,9 @@
 
 #include "msc_vlr_tests.h"
 
-void test_ms_timeout_lu_auth_resp()
+void test_ms_timeout_lu_auth_resp(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 
@@ -80,12 +80,12 @@
 	EXPECT_CONN_COUNT(0);
 	VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
 
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_ms_timeout_cm_auth_resp()
+void test_ms_timeout_cm_auth_resp(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->authentication_required = true;
 
@@ -179,16 +179,16 @@
 	VERBOSE_ASSERT(cm_service_result_sent, == RES_REJECT, "%d");
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_ms_timeout_paging(const char *imsi)
+void test_ms_timeout_paging(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
 	rx_from_ran = RAN_GERAN_A;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	fake_time_start();
 
@@ -283,7 +283,7 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 msc_vlr_test_func_t msc_vlr_tests[] = {
diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err
index 7731bcb..cdf9be0 100644
--- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err
+++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err
@@ -1,4 +1,4 @@
-===== test_ms_timeout_lu_auth_resp
+===== [1] test_ms_timeout_lu_auth_resp(901700000004620)...
 - Total time passed: 0.000000 s
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
@@ -97,12 +97,12 @@
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
   lu_result_sent == 2
-===== test_ms_timeout_lu_auth_resp: SUCCESS
+===== [1] test_ms_timeout_lu_auth_resp(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_ms_timeout_cm_auth_resp
+===== [2] test_ms_timeout_cm_auth_resp(901700000004620)...
 - Total time passed: 0.000000 s
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
@@ -333,12 +333,12 @@
   llist_count(&net->subscr_conns) == 0
   cm_service_result_sent == 2
 DREF freeing VLR subscr MSISDN:46071
-===== test_ms_timeout_cm_auth_resp: SUCCESS
+===== [2] test_ms_timeout_cm_auth_resp(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_ms_timeout_paging
+===== [3] test_ms_timeout_paging(901700000004620)...
 - Total time passed: 0.000000 s
 - Location Update request causes a GSUP LU request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
@@ -516,7 +516,7 @@
   bssap_clear_sent == 1
   paging_stopped == 1
   llist_count(&net->subscr_conns) == 0
-===== test_ms_timeout_paging: SUCCESS
+===== [3] test_ms_timeout_paging(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.c b/tests/msc_vlr/msc_vlr_test_no_authen.c
index e193f27..b744827 100644
--- a/tests/msc_vlr/msc_vlr_test_no_authen.c
+++ b/tests/msc_vlr/msc_vlr_test_no_authen.c
@@ -23,14 +23,14 @@
 
 #include "msc_vlr_tests.h"
 
-void test_no_authen(const char *imsi)
+void test_no_authen(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 	
 	/* No auth only works on GERAN */
 	rx_from_ran = RAN_GERAN_A;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	btw("Location Update request causes a GSUP LU request to HLR");
 	lu_result_sent = RES_NONE;
@@ -158,16 +158,16 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_no_authen_tmsi(const char *imsi)
+void test_no_authen_tmsi(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
 	rx_from_ran = RAN_GERAN_A;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->vlr->cfg.assign_tmsi = true;
 
@@ -377,16 +377,16 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_no_authen_imei(const char *imsi)
+void test_no_authen_imei(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
 	rx_from_ran = RAN_GERAN_A;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->vlr->cfg.check_imei_rqd = true;
 
@@ -444,16 +444,16 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_no_authen_tmsi_imei(const char *imsi)
+void test_no_authen_tmsi_imei(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
 	rx_from_ran = RAN_GERAN_A;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->vlr->cfg.assign_tmsi = true;
 	net->vlr->cfg.check_imei_rqd = true;
@@ -520,17 +520,17 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_no_authen_imeisv(const char *imsi)
+void test_no_authen_imeisv(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 	
 	/* No auth only works on GERAN */
 	rx_from_ran = RAN_GERAN_A;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->vlr->cfg.retrieve_imeisv_early = true;
 
@@ -580,16 +580,16 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_no_authen_imeisv_imei(const char *imsi)
+void test_no_authen_imeisv_imei(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
 	rx_from_ran = RAN_GERAN_A;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->vlr->cfg.retrieve_imeisv_early = true;
 	net->vlr->cfg.check_imei_rqd = true;
@@ -657,16 +657,16 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_no_authen_imeisv_tmsi(const char *imsi)
+void test_no_authen_imeisv_tmsi(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
 	rx_from_ran = RAN_GERAN_A;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->vlr->cfg.retrieve_imeisv_early = true;
 	net->vlr->cfg.assign_tmsi = true;
@@ -794,16 +794,16 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_no_authen_imeisv_tmsi_imei(const char *imsi)
+void test_no_authen_imeisv_tmsi_imei(uint8_t nr, const char *imsi)
 {
 	struct vlr_subscr *vsub;
 
 	rx_from_ran = RAN_GERAN_A;
 
-	comment_start();
+	comment_start(nr, imsi);
 
 	net->vlr->cfg.retrieve_imeisv_early = true;
 	net->vlr->cfg.assign_tmsi = true;
@@ -883,7 +883,7 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 
diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err
index c12e8ec..92d6884 100644
--- a/tests/msc_vlr/msc_vlr_test_no_authen.err
+++ b/tests/msc_vlr/msc_vlr_test_no_authen.err
@@ -1,4 +1,4 @@
-===== test_no_authen
+===== [1] test_no_authen(901700000004620)...
 - Location Update request causes a GSUP LU request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -317,12 +317,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_no_authen: SUCCESS
+===== [1] test_no_authen(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_no_authen_tmsi
+===== [2] test_no_authen_tmsi(901700000004620)...
 - Location Update request causes a GSUP LU request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -828,12 +828,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_no_authen_tmsi: SUCCESS
+===== [2] test_no_authen_tmsi(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_no_authen_imei
+===== [3] test_no_authen_imei(901700000004620)...
 - Location Update request causes a GSUP LU request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1001,12 +1001,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_no_authen_imei: SUCCESS
+===== [3] test_no_authen_imei(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_no_authen_tmsi_imei
+===== [4] test_no_authen_tmsi_imei(901700000004620)...
 - Location Update request causes a GSUP LU request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1199,12 +1199,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_no_authen_tmsi_imei: SUCCESS
+===== [4] test_no_authen_tmsi_imei(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_no_authen_imeisv
+===== [5] test_no_authen_imeisv(901700000004620)...
 - Location Update request causes an IMEISV ID request back to the MS
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1357,12 +1357,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_no_authen_imeisv: SUCCESS
+===== [5] test_no_authen_imeisv(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_no_authen_imeisv_imei
+===== [6] test_no_authen_imeisv_imei(901700000004620)...
 - Location Update request causes an IMEISV ID request back to the MS
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1547,12 +1547,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_no_authen_imeisv_imei: SUCCESS
+===== [6] test_no_authen_imeisv_imei(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_no_authen_imeisv_tmsi
+===== [7] test_no_authen_imeisv_tmsi(901700000004620)...
 - Location Update request causes an IMEISV ID request back to the MS
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1903,12 +1903,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_no_authen_imeisv_tmsi: SUCCESS
+===== [7] test_no_authen_imeisv_tmsi(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_no_authen_imeisv_tmsi_imei
+===== [8] test_no_authen_imeisv_tmsi_imei(901700000004620)...
 - Location Update request causes an IMEISV ID request back to the MS
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -2119,7 +2119,7 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_no_authen_imeisv_tmsi_imei: SUCCESS
+===== [8] test_no_authen_imeisv_tmsi_imei(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c
index d6676cf..c7af200 100644
--- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c
+++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c
@@ -23,10 +23,10 @@
 
 #include "msc_vlr_tests.h"
 
-void test_reject_2nd_conn()
+void test_reject_2nd_conn(uint8_t nr, const char *imsi)
 {
 	struct gsm_subscriber_connection *conn1;
-	comment_start();
+	comment_start(nr, imsi);
 
 	btw("Location Update Request on one connection");
 	lu_result_sent = RES_NONE;
@@ -64,7 +64,7 @@
 	EXPECT_CONN_COUNT(0);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 void _normal_lu_part1()
@@ -188,9 +188,9 @@
 	EXPECT_CONN_COUNT(expect_conn_count);
 }
 
-void test_reject_lu_during_lu()
+void test_reject_lu_during_lu(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	_normal_lu_part1();
 
@@ -203,12 +203,12 @@
 	_normal_lu_part2();
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_reject_cm_during_lu()
+void test_reject_cm_during_lu(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	_normal_lu_part1();
 
@@ -224,12 +224,12 @@
 	_normal_lu_part2();
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_reject_paging_resp_during_lu()
+void test_reject_paging_resp_during_lu(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	_normal_lu_part1();
 
@@ -242,12 +242,12 @@
 	_normal_lu_part2();
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_reject_lu_during_cm()
+void test_reject_lu_during_cm(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	_normal_lu();
 	_normal_cm_service_req();
@@ -266,12 +266,12 @@
 	EXPECT_CONN_COUNT(0);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_reject_cm_during_cm()
+void test_reject_cm_during_cm(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	_normal_lu();
 	_normal_cm_service_req();
@@ -289,12 +289,12 @@
 	EXPECT_CONN_COUNT(0);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_reject_paging_resp_during_cm()
+void test_reject_paging_resp_during_cm(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	_normal_lu();
 	_normal_cm_service_req();
@@ -314,12 +314,12 @@
 	EXPECT_CONN_COUNT(0);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_reject_paging_resp_during_paging_resp(const char *imsi)
+void test_reject_paging_resp_during_paging_resp(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	_normal_lu();
 	_page(imsi);
@@ -331,12 +331,12 @@
 	_paging_resp_part2(0, true);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_reject_lu_during_paging_resp(const char *imsi)
+void test_reject_lu_during_paging_resp(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	_normal_lu();
 	_page(imsi);
@@ -351,12 +351,12 @@
 	_paging_resp_part2(0, true);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_accept_cm_during_paging_resp(const char *imsi)
+void test_accept_cm_during_paging_resp(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	_normal_lu();
 	_page(imsi);
@@ -378,7 +378,7 @@
 	EXPECT_CONN_COUNT(0);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 msc_vlr_test_func_t msc_vlr_tests[] = {
diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err
index aef8f72..477d928 100644
--- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err
+++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err
@@ -1,4 +1,4 @@
-===== test_reject_2nd_conn
+===== [1] test_reject_2nd_conn(901700000004620)...
 - Location Update Request on one connection
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -149,12 +149,12 @@
   lu_result_sent == 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_reject_2nd_conn: SUCCESS
+===== [1] test_reject_2nd_conn(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_reject_lu_during_lu
+===== [2] test_reject_lu_during_lu(901700000004620)...
 - Location Update Request
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -274,12 +274,12 @@
   lu_result_sent == 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_reject_lu_during_lu: SUCCESS
+===== [2] test_reject_lu_during_lu(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_reject_cm_during_lu
+===== [3] test_reject_cm_during_lu(901700000004620)...
 - Location Update Request
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -405,12 +405,12 @@
   lu_result_sent == 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_reject_cm_during_lu: SUCCESS
+===== [3] test_reject_cm_during_lu(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_reject_paging_resp_during_lu
+===== [4] test_reject_paging_resp_during_lu(901700000004620)...
 - Location Update Request
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -531,12 +531,12 @@
   lu_result_sent == 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_reject_paging_resp_during_lu: SUCCESS
+===== [4] test_reject_paging_resp_during_lu(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_reject_lu_during_cm
+===== [5] test_reject_lu_during_cm(901700000004620)...
 ---
 - Subscriber does a normal LU
 - Location Update Request
@@ -724,12 +724,12 @@
 DREF freeing VLR subscr MSISDN:46071
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_reject_lu_during_cm: SUCCESS
+===== [5] test_reject_lu_during_cm(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_reject_cm_during_cm
+===== [6] test_reject_cm_during_cm(901700000004620)...
 ---
 - Subscriber does a normal LU
 - Location Update Request
@@ -919,12 +919,12 @@
 DREF freeing VLR subscr MSISDN:46071
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_reject_cm_during_cm: SUCCESS
+===== [6] test_reject_cm_during_cm(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_reject_paging_resp_during_cm
+===== [7] test_reject_paging_resp_during_cm(901700000004620)...
 ---
 - Subscriber does a normal LU
 - Location Update Request
@@ -1120,12 +1120,12 @@
 - all requests serviced, conn has been released
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_reject_paging_resp_during_cm: SUCCESS
+===== [7] test_reject_paging_resp_during_cm(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_reject_lu_during_paging_resp
+===== [8] test_reject_lu_during_paging_resp(901700000004620)...
 ---
 - Subscriber does a normal LU
 - Location Update Request
@@ -1347,12 +1347,12 @@
 - SMS is done
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_reject_lu_during_paging_resp: SUCCESS
+===== [8] test_reject_lu_during_paging_resp(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_accept_cm_during_paging_resp
+===== [9] test_accept_cm_during_paging_resp(901700000004620)...
 ---
 - Subscriber does a normal LU
 - Location Update Request
@@ -1591,12 +1591,12 @@
 DREF freeing VLR subscr MSISDN:46071
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_accept_cm_during_paging_resp: SUCCESS
+===== [9] test_accept_cm_during_paging_resp(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_reject_paging_resp_during_paging_resp
+===== [10] test_reject_paging_resp_during_paging_resp(901700000004620)...
 ---
 - Subscriber does a normal LU
 - Location Update Request
@@ -1817,7 +1817,7 @@
 - SMS is done
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_reject_paging_resp_during_paging_resp: SUCCESS
+===== [10] test_reject_paging_resp_during_paging_resp(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c
index c19c4c6..cb5e24f 100644
--- a/tests/msc_vlr/msc_vlr_test_rest.c
+++ b/tests/msc_vlr/msc_vlr_test_rest.c
@@ -23,9 +23,9 @@
 
 #include "msc_vlr_tests.h"
 
-void test_early_stage()
+void test_early_stage(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	btw("NULL conn");
 	EXPECT_ACCEPTED(false);
@@ -59,12 +59,12 @@
 	EXPECT_CONN_COUNT(0);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_cm_service_without_lu()
+void test_cm_service_without_lu(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	btw("CM Service Request without a prior Location Updating");
 	expect_bssap_clear();
@@ -75,12 +75,12 @@
 	EXPECT_CONN_COUNT(0);
 
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_two_lu()
+void test_two_lu(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	btw("Location Update request causes a GSUP LU request to HLR");
 	lu_result_sent = RES_NONE;
@@ -147,12 +147,12 @@
 
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_lu_unknown_tmsi()
+void test_lu_unknown_tmsi(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 
 	btw("Location Update request with unknown TMSI sends ID Request for IMSI");
 	lu_result_sent = RES_NONE;
@@ -188,7 +188,7 @@
 	VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
 	EXPECT_CONN_COUNT(0);
 	clear_vlr();
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 msc_vlr_test_func_t msc_vlr_tests[] = {
diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err
index 31e3cfe..90deb3b 100644
--- a/tests/msc_vlr/msc_vlr_test_rest.err
+++ b/tests/msc_vlr/msc_vlr_test_rest.err
@@ -1,4 +1,4 @@
-===== test_early_stage
+===== [1] test_early_stage(901700000004620)...
 - NULL conn
 msc_subscr_conn_is_accepted() == false
 - freshly allocated conn
@@ -37,12 +37,12 @@
 DMM Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Deallocated
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_early_stage: SUCCESS
+===== [1] test_early_stage(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_cm_service_without_lu
+===== [2] test_cm_service_without_lu(901700000004620)...
 - CM Service Request without a prior Location Updating
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
   new conn
@@ -80,12 +80,12 @@
   bssap_clear_sent == 1
 - conn was released
   llist_count(&net->subscr_conns) == 0
-===== test_cm_service_without_lu: SUCCESS
+===== [2] test_cm_service_without_lu(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_two_lu
+===== [3] test_two_lu(901700000004620)...
 - Location Update request causes a GSUP LU request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -337,12 +337,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_two_lu: SUCCESS
+===== [3] test_two_lu(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_lu_unknown_tmsi
+===== [4] test_lu_unknown_tmsi(901700000004620)...
 - Location Update request with unknown TMSI sends ID Request for IMSI
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -486,7 +486,7 @@
   lu_result_sent == 1
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:46071
-===== test_lu_unknown_tmsi: SUCCESS
+===== [4] test_lu_unknown_tmsi(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c b/tests/msc_vlr/msc_vlr_test_umts_authen.c
index 1175bf8..9c02682 100644
--- a/tests/msc_vlr/msc_vlr_test_umts_authen.c
+++ b/tests/msc_vlr/msc_vlr_test_umts_authen.c
@@ -322,18 +322,18 @@
 	clear_vlr();
 }
 
-void test_umts_authen_geran()
+void test_umts_authen_geran(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 	_test_umts_authen(RAN_GERAN_A);
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_umts_authen_utran()
+void test_umts_authen_utran(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 	_test_umts_authen(RAN_UTRAN_IU);
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 #define RECALC_AUTS 0
@@ -558,18 +558,18 @@
 	clear_vlr();
 }
 
-void test_umts_authen_resync_geran()
+void test_umts_authen_resync_geran(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 	_test_umts_authen_resync(RAN_GERAN_A);
-	comment_end();
+	comment_end(nr, imsi);
 }
 
-void test_umts_authen_resync_utran()
+void test_umts_authen_resync_utran(uint8_t nr, const char *imsi)
 {
-	comment_start();
+	comment_start(nr, imsi);
 	_test_umts_authen_resync(RAN_UTRAN_IU);
-	comment_end();
+	comment_end(nr, imsi);
 }
 
 msc_vlr_test_func_t msc_vlr_tests[] = {
diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err
index a740bc2..6a2c6c5 100644
--- a/tests/msc_vlr/msc_vlr_test_umts_authen.err
+++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err
@@ -1,4 +1,4 @@
-===== test_umts_authen_geran
+===== [1] test_umts_authen_geran(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -455,12 +455,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   bssap_clear_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_umts_authen_geran: SUCCESS
+===== [1] test_umts_authen_geran(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_umts_authen_utran
+===== [2] test_umts_authen_utran(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -943,12 +943,12 @@
 DRLL Freeing subscriber connection with NULL subscriber
   iu_release_sent == 1
   llist_count(&net->subscr_conns) == 0
-===== test_umts_authen_utran: SUCCESS
+===== [2] test_umts_authen_utran(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_umts_authen_resync_geran
+===== [3] test_umts_authen_resync_geran(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1156,12 +1156,12 @@
 - LU was successful, and the conn has already been closed
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:42342
-===== test_umts_authen_resync_geran: SUCCESS
+===== [3] test_umts_authen_resync_geran(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
 
-===== test_umts_authen_resync_utran
+===== [4] test_umts_authen_resync_utran(901700000004620)...
 - Location Update request causes a GSUP Send Auth Info request to HLR
   MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
   new conn
@@ -1379,7 +1379,7 @@
 - LU was successful, and the conn has already been closed
   llist_count(&net->subscr_conns) == 0
 DREF freeing VLR subscr MSISDN:42342
-===== test_umts_authen_resync_utran: SUCCESS
+===== [4] test_umts_authen_resync_utran(901700000004620): SUCCESS
 
 full talloc report on 'msgb' (total      0 bytes in   1 blocks)
 talloc_total_blocks(tall_bsc_ctx) == 8
diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c
index c639f98..ba49180 100644
--- a/tests/msc_vlr/msc_vlr_tests.c
+++ b/tests/msc_vlr/msc_vlr_tests.c
@@ -829,7 +829,7 @@
 
 static void run_tests(int nr, const char *imsi)
 {
-	int test_nr;
+	uint8_t test_nr;
 
 	printf("Testing for IMSI %s\n", imsi);
 
@@ -838,13 +838,7 @@
 		if (nr >= 0 && test_nr != nr)
 			continue;
 
-		if (cmdline_opts.verbose)
-			fprintf(stderr, "(test nr %d)\n", test_nr + 1);
-
-		msc_vlr_tests[test_nr](imsi);
-
-		if (cmdline_opts.verbose)
-			fprintf(stderr, "(test nr %d)\n", test_nr + 1);
+		msc_vlr_tests[test_nr](test_nr + 1, imsi);
 
 		check_talloc(msgb_ctx, tall_bsc_ctx, 8);
 	}
diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h
index 2ea3f29..d00eb9f 100644
--- a/tests/msc_vlr/msc_vlr_tests.h
+++ b/tests/msc_vlr/msc_vlr_tests.h
@@ -46,8 +46,8 @@
 #define btw(fmt, args...) _log("- " fmt, ## args )
 #define log(fmt, args...) _log("  " fmt, ## args )
 
-#define comment_start() fprintf(stderr, "===== %s\n", __func__);
-#define comment_end() fprintf(stderr, "===== %s: SUCCESS\n\n", __func__);
+#define comment_start(nr, imsi) fprintf(stderr, "===== [%u] %s(%s)...\n", nr, __func__, imsi);
+#define comment_end(nr, imsi) fprintf(stderr, "===== [%u] %s(%s): SUCCESS\n\n", nr, __func__, imsi);
 
 extern struct gsm_subscriber_connection *g_conn;
 extern struct gsm_network *net;
@@ -122,7 +122,7 @@
 	int run_test_nr;
 };
 
-typedef void (* msc_vlr_test_func_t )(const char *);
+typedef void (* msc_vlr_test_func_t )(uint8_t, const char *);
 extern msc_vlr_test_func_t msc_vlr_tests[];
 
 struct msgb *msgb_from_hex(const char *label, uint16_t size, const char *hex);
