diff --git a/tests/Makefile.am b/tests/Makefile.am index d4bfe26d0..4eac63540 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -15,6 +15,7 @@ check_PROGRAMS = timer/timer_test sms/sms_test ussd/ussd_test \ gsm0808/gsm0808_test gsm0408/gsm0408_test \ gprs/gprs_test kasumi/kasumi_test gea/gea_test \ logging/logging_test codec/codec_test \ + logging/logging_test_gsmtap \ loggingrb/loggingrb_test strrb/strrb_test \ comp128/comp128_test \ bitvec/bitvec_test msgb/msgb_test bits/bitcomp_test \ @@ -242,6 +243,8 @@ logging_logging_test_SOURCES = logging/logging_test.c logging_logging_vty_test_SOURCES = logging/logging_vty_test.c logging_logging_vty_test_LDADD = $(top_builddir)/src/vty/libosmovty.la $(LDADD) +logging_logging_test_gsmtap_SOURCES = logging/logging_test_gsmtap.c + vty_vty_transcript_test_SOURCES = vty/vty_transcript_test.c vty_vty_transcript_test_LDADD = $(top_builddir)/src/vty/libosmovty.la $(LDADD) @@ -419,6 +422,7 @@ EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \ msgfile/msgfile_test.ok msgfile/msgconfig.cfg \ logging/logging_test.ok logging/logging_test.err \ logging/logging_vty_test.vty \ + logging/logging_test_gsmtap.err \ fr/fr_test.ok loggingrb/logging_test.ok \ loggingrb/logging_test.err strrb/strrb_test.ok \ codec/codec_test.ok \ @@ -574,6 +578,8 @@ endif logging/logging_test \ >$(srcdir)/logging/logging_test.ok \ 2>$(srcdir)/logging/logging_test.err + logging/logging_test_gsmtap \ + 2>&1 |grep -v "enqueueing message failed" >$(srcdir)/logging/logging_test_gsmtap.err codec/codec_test \ >$(srcdir)/codec/codec_test.ok codec/codec_ecu_fr_test \ diff --git a/tests/logging/logging_test_gsmtap.c b/tests/logging/logging_test_gsmtap.c new file mode 100644 index 000000000..5ede5a471 --- /dev/null +++ b/tests/logging/logging_test_gsmtap.c @@ -0,0 +1,64 @@ +/* simple test for gsmtap logging */ +/* + * (C) 2023 by sysmocom - s.f.m.c. GmbH + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#include +#include +#include + +#include + +static const struct log_info_cat default_categories[] = {}; + +const struct log_info log_info = { + .cat = default_categories, + .num_cat = ARRAY_SIZE(default_categories), +}; + +extern struct log_info *osmo_log_info; + +int main(int argc, char **argv) +{ + struct log_target *stderr_target; + struct log_target *gsmtap_target; + + log_init(&log_info, NULL); + stderr_target = log_target_create_stderr(); + log_add_target(stderr_target); + log_set_all_filter(stderr_target, 1); + log_set_print_filename2(stderr_target, LOG_FILENAME_NONE); + log_set_print_category_hex(stderr_target, 0); + log_set_print_category(stderr_target, 1); + log_set_use_color(stderr_target, 0); + log_parse_category_mask(stderr_target, "DLGLOBAL,1"); + + gsmtap_target = log_target_create_gsmtap("127.0.0.2", 4729, "gsmtap", 1, 1); + log_add_target(gsmtap_target); + log_set_all_filter(gsmtap_target, 1); + log_parse_category_mask(gsmtap_target, "DLGLOBAL,1"); + + log_target_file_switch_to_stream(stderr_target); + + log_set_category_filter(stderr_target, DLIO, 1, LOGL_DEBUG); + + for (int i = 0; i < 200; i++) + DEBUGP(DLGLOBAL, "Repeating message (i = %d)\n", i); + + for (int i = 0; i < 200; i++) + osmo_select_main(1); + + return 0; +} diff --git a/tests/logging/logging_test_gsmtap.err b/tests/logging/logging_test_gsmtap.err new file mode 100644 index 000000000..92016abb4 --- /dev/null +++ b/tests/logging/logging_test_gsmtap.err @@ -0,0 +1,200 @@ +DLGLOBAL Repeating message (i = 0) +DLGLOBAL Repeating message (i = 1) +DLGLOBAL Repeating message (i = 2) +DLGLOBAL Repeating message (i = 3) +DLGLOBAL Repeating message (i = 4) +DLGLOBAL Repeating message (i = 5) +DLGLOBAL Repeating message (i = 6) +DLGLOBAL Repeating message (i = 7) +DLGLOBAL Repeating message (i = 8) +DLGLOBAL Repeating message (i = 9) +DLGLOBAL Repeating message (i = 10) +DLGLOBAL Repeating message (i = 11) +DLGLOBAL Repeating message (i = 12) +DLGLOBAL Repeating message (i = 13) +DLGLOBAL Repeating message (i = 14) +DLGLOBAL Repeating message (i = 15) +DLGLOBAL Repeating message (i = 16) +DLGLOBAL Repeating message (i = 17) +DLGLOBAL Repeating message (i = 18) +DLGLOBAL Repeating message (i = 19) +DLGLOBAL Repeating message (i = 20) +DLGLOBAL Repeating message (i = 21) +DLGLOBAL Repeating message (i = 22) +DLGLOBAL Repeating message (i = 23) +DLGLOBAL Repeating message (i = 24) +DLGLOBAL Repeating message (i = 25) +DLGLOBAL Repeating message (i = 26) +DLGLOBAL Repeating message (i = 27) +DLGLOBAL Repeating message (i = 28) +DLGLOBAL Repeating message (i = 29) +DLGLOBAL Repeating message (i = 30) +DLGLOBAL Repeating message (i = 31) +DLGLOBAL Repeating message (i = 32) +DLGLOBAL Repeating message (i = 33) +DLGLOBAL Repeating message (i = 34) +DLGLOBAL Repeating message (i = 35) +DLGLOBAL Repeating message (i = 36) +DLGLOBAL Repeating message (i = 37) +DLGLOBAL Repeating message (i = 38) +DLGLOBAL Repeating message (i = 39) +DLGLOBAL Repeating message (i = 40) +DLGLOBAL Repeating message (i = 41) +DLGLOBAL Repeating message (i = 42) +DLGLOBAL Repeating message (i = 43) +DLGLOBAL Repeating message (i = 44) +DLGLOBAL Repeating message (i = 45) +DLGLOBAL Repeating message (i = 46) +DLGLOBAL Repeating message (i = 47) +DLGLOBAL Repeating message (i = 48) +DLGLOBAL Repeating message (i = 49) +DLGLOBAL Repeating message (i = 50) +DLGLOBAL Repeating message (i = 51) +DLGLOBAL Repeating message (i = 52) +DLGLOBAL Repeating message (i = 53) +DLGLOBAL Repeating message (i = 54) +DLGLOBAL Repeating message (i = 55) +DLGLOBAL Repeating message (i = 56) +DLGLOBAL Repeating message (i = 57) +DLGLOBAL Repeating message (i = 58) +DLGLOBAL Repeating message (i = 59) +DLGLOBAL Repeating message (i = 60) +DLGLOBAL Repeating message (i = 61) +DLGLOBAL Repeating message (i = 62) +DLGLOBAL Repeating message (i = 63) +DLGLOBAL Repeating message (i = 64) +DLGLOBAL Repeating message (i = 65) +DLGLOBAL Repeating message (i = 66) +DLGLOBAL Repeating message (i = 67) +DLGLOBAL Repeating message (i = 68) +DLGLOBAL Repeating message (i = 69) +DLGLOBAL Repeating message (i = 70) +DLGLOBAL Repeating message (i = 71) +DLGLOBAL Repeating message (i = 72) +DLGLOBAL Repeating message (i = 73) +DLGLOBAL Repeating message (i = 74) +DLGLOBAL Repeating message (i = 75) +DLGLOBAL Repeating message (i = 76) +DLGLOBAL Repeating message (i = 77) +DLGLOBAL Repeating message (i = 78) +DLGLOBAL Repeating message (i = 79) +DLGLOBAL Repeating message (i = 80) +DLGLOBAL Repeating message (i = 81) +DLGLOBAL Repeating message (i = 82) +DLGLOBAL Repeating message (i = 83) +DLGLOBAL Repeating message (i = 84) +DLGLOBAL Repeating message (i = 85) +DLGLOBAL Repeating message (i = 86) +DLGLOBAL Repeating message (i = 87) +DLGLOBAL Repeating message (i = 88) +DLGLOBAL Repeating message (i = 89) +DLGLOBAL Repeating message (i = 90) +DLGLOBAL Repeating message (i = 91) +DLGLOBAL Repeating message (i = 92) +DLGLOBAL Repeating message (i = 93) +DLGLOBAL Repeating message (i = 94) +DLGLOBAL Repeating message (i = 95) +DLGLOBAL Repeating message (i = 96) +DLGLOBAL Repeating message (i = 97) +DLGLOBAL Repeating message (i = 98) +DLGLOBAL Repeating message (i = 99) +DLGLOBAL Repeating message (i = 100) +DLGLOBAL Repeating message (i = 101) +DLGLOBAL Repeating message (i = 102) +DLGLOBAL Repeating message (i = 103) +DLGLOBAL Repeating message (i = 104) +DLGLOBAL Repeating message (i = 105) +DLGLOBAL Repeating message (i = 106) +DLGLOBAL Repeating message (i = 107) +DLGLOBAL Repeating message (i = 108) +DLGLOBAL Repeating message (i = 109) +DLGLOBAL Repeating message (i = 110) +DLGLOBAL Repeating message (i = 111) +DLGLOBAL Repeating message (i = 112) +DLGLOBAL Repeating message (i = 113) +DLGLOBAL Repeating message (i = 114) +DLGLOBAL Repeating message (i = 115) +DLGLOBAL Repeating message (i = 116) +DLGLOBAL Repeating message (i = 117) +DLGLOBAL Repeating message (i = 118) +DLGLOBAL Repeating message (i = 119) +DLGLOBAL Repeating message (i = 120) +DLGLOBAL Repeating message (i = 121) +DLGLOBAL Repeating message (i = 122) +DLGLOBAL Repeating message (i = 123) +DLGLOBAL Repeating message (i = 124) +DLGLOBAL Repeating message (i = 125) +DLGLOBAL Repeating message (i = 126) +DLGLOBAL Repeating message (i = 127) +DLGLOBAL Repeating message (i = 128) +DLGLOBAL Repeating message (i = 129) +DLGLOBAL Repeating message (i = 130) +DLGLOBAL Repeating message (i = 131) +DLGLOBAL Repeating message (i = 132) +DLGLOBAL Repeating message (i = 133) +DLGLOBAL Repeating message (i = 134) +DLGLOBAL Repeating message (i = 135) +DLGLOBAL Repeating message (i = 136) +DLGLOBAL Repeating message (i = 137) +DLGLOBAL Repeating message (i = 138) +DLGLOBAL Repeating message (i = 139) +DLGLOBAL Repeating message (i = 140) +DLGLOBAL Repeating message (i = 141) +DLGLOBAL Repeating message (i = 142) +DLGLOBAL Repeating message (i = 143) +DLGLOBAL Repeating message (i = 144) +DLGLOBAL Repeating message (i = 145) +DLGLOBAL Repeating message (i = 146) +DLGLOBAL Repeating message (i = 147) +DLGLOBAL Repeating message (i = 148) +DLGLOBAL Repeating message (i = 149) +DLGLOBAL Repeating message (i = 150) +DLGLOBAL Repeating message (i = 151) +DLGLOBAL Repeating message (i = 152) +DLGLOBAL Repeating message (i = 153) +DLGLOBAL Repeating message (i = 154) +DLGLOBAL Repeating message (i = 155) +DLGLOBAL Repeating message (i = 156) +DLGLOBAL Repeating message (i = 157) +DLGLOBAL Repeating message (i = 158) +DLGLOBAL Repeating message (i = 159) +DLGLOBAL Repeating message (i = 160) +DLGLOBAL Repeating message (i = 161) +DLGLOBAL Repeating message (i = 162) +DLGLOBAL Repeating message (i = 163) +DLGLOBAL Repeating message (i = 164) +DLGLOBAL Repeating message (i = 165) +DLGLOBAL Repeating message (i = 166) +DLGLOBAL Repeating message (i = 167) +DLGLOBAL Repeating message (i = 168) +DLGLOBAL Repeating message (i = 169) +DLGLOBAL Repeating message (i = 170) +DLGLOBAL Repeating message (i = 171) +DLGLOBAL Repeating message (i = 172) +DLGLOBAL Repeating message (i = 173) +DLGLOBAL Repeating message (i = 174) +DLGLOBAL Repeating message (i = 175) +DLGLOBAL Repeating message (i = 176) +DLGLOBAL Repeating message (i = 177) +DLGLOBAL Repeating message (i = 178) +DLGLOBAL Repeating message (i = 179) +DLGLOBAL Repeating message (i = 180) +DLGLOBAL Repeating message (i = 181) +DLGLOBAL Repeating message (i = 182) +DLGLOBAL Repeating message (i = 183) +DLGLOBAL Repeating message (i = 184) +DLGLOBAL Repeating message (i = 185) +DLGLOBAL Repeating message (i = 186) +DLGLOBAL Repeating message (i = 187) +DLGLOBAL Repeating message (i = 188) +DLGLOBAL Repeating message (i = 189) +DLGLOBAL Repeating message (i = 190) +DLGLOBAL Repeating message (i = 191) +DLGLOBAL Repeating message (i = 192) +DLGLOBAL Repeating message (i = 193) +DLGLOBAL Repeating message (i = 194) +DLGLOBAL Repeating message (i = 195) +DLGLOBAL Repeating message (i = 196) +DLGLOBAL Repeating message (i = 197) +DLGLOBAL Repeating message (i = 198) +DLGLOBAL Repeating message (i = 199) diff --git a/tests/testsuite.at b/tests/testsuite.at index 64ebedfc5..b5259281f 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -201,6 +201,12 @@ cat $abs_srcdir/logging/logging_test.err > experr AT_CHECK([$abs_top_builddir/tests/logging/logging_test wqueue], [0], [expout], [experr]) AT_CLEANUP +AT_SETUP([logging_gsmtap]) +AT_KEYWORDS([logging_gsmtap]) +cat $abs_srcdir/logging/logging_test_gsmtap.err > experr +AT_CHECK([$abs_top_builddir/tests/logging/logging_test_gsmtap 3>&1 1>&2 2>&3 |grep -v "enqueueing message failed" 3>&1 1>&2 2>&3 ], [], [ignore], [experr]) +AT_CLEANUP + AT_SETUP([codec]) AT_KEYWORDS([codec]) cat $abs_srcdir/codec/codec_test.ok > expout