diff options
Diffstat (limited to 'tests/abis')
-rw-r--r-- | tests/abis/Makefile.am | 34 | ||||
-rw-r--r-- | tests/abis/abis_test.c | 93 | ||||
-rw-r--r-- | tests/abis/abis_test.ok | 9 |
3 files changed, 136 insertions, 0 deletions
diff --git a/tests/abis/Makefile.am b/tests/abis/Makefile.am new file mode 100644 index 000000000..1c5dede3b --- /dev/null +++ b/tests/abis/Makefile.am @@ -0,0 +1,34 @@ +AM_CPPFLAGS = \ + $(all_includes) \ + -I$(top_srcdir)/include \ + $(NULL) + +AM_CFLAGS = \ + -Wall \ + -ggdb3 \ + $(LIBOSMOCORE_CFLAGS) \ + $(LIBOSMOABIS_CFLAGS) \ + $(LIBOSMOGSM_CFLAGS) \ + $(COVERAGE_CFLAGS) \ + $(NULL) + +EXTRA_DIST = \ + abis_test.ok \ + $(NULL) + +noinst_PROGRAMS = \ + abis_test \ + $(NULL) + +abis_test_SOURCES = \ + abis_test.c \ + $(NULL) + +abis_test_LDADD = \ + $(top_builddir)/src/libbsc/libbsc.a \ + $(top_builddir)/src/libcommon/libcommon.a \ + $(top_builddir)/src/libtrau/libtrau.a \ + $(LIBOSMOCORE_LIBS) \ + $(LIBOSMOABIS_LIBS) \ + $(LIBOSMOGSM_LIBS) \ + $(NULL) diff --git a/tests/abis/abis_test.c b/tests/abis/abis_test.c new file mode 100644 index 000000000..591f8350f --- /dev/null +++ b/tests/abis/abis_test.c @@ -0,0 +1,93 @@ +/* + * (C) 2012 by Holger Hans Peter Freyther <zecke@selfish.org> + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 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. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#include <stdio.h> +#include <stdlib.h> + +#include <osmocom/core/application.h> +#include <osmocom/core/utils.h> +#include <osmocom/gsm/protocol/gsm_12_21.h> + +#include <openbsc/gsm_data.h> +#include <openbsc/abis_nm.h> +#include <openbsc/debug.h> + +static const uint8_t load_config[] = { + 0x42, 0x12, 0x00, 0x08, 0x31, 0x36, 0x38, 0x64, + 0x34, 0x37, 0x32, 0x00, 0x13, 0x00, 0x0b, 0x76, + 0x32, 0x30, 0x30, 0x62, 0x31, 0x34, 0x33, 0x64, + 0x30, 0x00, 0x42, 0x12, 0x00, 0x08, 0x31, 0x36, + 0x38, 0x64, 0x34, 0x37, 0x32, 0x00, 0x13, 0x00, + 0x0b, 0x76, 0x32, 0x30, 0x30, 0x62, 0x31, 0x34, + 0x33, 0x64, 0x31, 0x00 +}; + +static void test_sw_selection(void) +{ + struct abis_nm_sw_desc descr[8], tmp; + uint16_t len0, len1; + int rc, pos; + + rc = abis_nm_get_sw_conf(load_config, ARRAY_SIZE(load_config), + &descr[0], ARRAY_SIZE(descr)); + if (rc != 2) { + printf("%s(): FAILED to parse the File Id/File version: %d\n", + __func__, rc); + abort(); + } + + len0 = abis_nm_sw_desc_len(&descr[0], true); + printf("len: %u\n", len0); + printf("file_id: %s\n", osmo_hexdump(descr[0].file_id, descr[0].file_id_len)); + printf("file_ver: %s\n", osmo_hexdump(descr[0].file_version, descr[0].file_version_len)); + + len1 = abis_nm_sw_desc_len(&descr[1], true); + printf("len: %u\n", len1); + printf("file_id: %s\n", osmo_hexdump(descr[1].file_id, descr[1].file_id_len)); + printf("file_ver: %s\n", osmo_hexdump(descr[1].file_version, descr[1].file_version_len)); + + /* start */ + pos = abis_nm_select_newest_sw(descr, rc); + if (pos != 1) { + printf("Selected the wrong version: %d\n", pos); + abort(); + } + printf("SELECTED: %d\n", pos); + + /* shuffle */ + tmp = descr[0]; + descr[0] = descr[1]; + descr[1] = tmp; + pos = abis_nm_select_newest_sw(descr, rc); + if (pos != 0) { + printf("Selected the wrong version: %d\n", pos); + abort(); + } + printf("SELECTED: %d\n", pos); + printf("%s(): OK\n", __func__); +} + +int main(int argc, char **argv) +{ + osmo_init_logging(&log_info); + + test_sw_selection(); + + return EXIT_SUCCESS; +} diff --git a/tests/abis/abis_test.ok b/tests/abis/abis_test.ok new file mode 100644 index 000000000..8418cad87 --- /dev/null +++ b/tests/abis/abis_test.ok @@ -0,0 +1,9 @@ +len: 26 +file_id: 31 36 38 64 34 37 32 00 +file_ver: 76 32 30 30 62 31 34 33 64 30 00 +len: 26 +file_id: 31 36 38 64 34 37 32 00 +file_ver: 76 32 30 30 62 31 34 33 64 31 00 +SELECTED: 1 +SELECTED: 0 +test_sw_selection(): OK |