[PATCH 1/4] sms_test: Test that gsm340_scts(gsm340_gen_scts(time) == time

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Daniel Willmann dwillmann at sysmocom.de
Wed Mar 26 22:30:44 UTC 2014


gsm340_scts() needs to be the inverse of gsm340_gen_scts()
Test different timezones and iterate through a whole year (2013) in 30
min steps.

Record the current test result
---
 tests/sms/sms_test.c  | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/sms/sms_test.ok | 20 +++++++++++++++++
 2 files changed, 79 insertions(+)

diff --git a/tests/sms/sms_test.c b/tests/sms/sms_test.c
index cdd4158..8b19760 100644
--- a/tests/sms/sms_test.c
+++ b/tests/sms/sms_test.c
@@ -268,6 +268,64 @@ static void test_gen_oa(void)
 	printf("Result: len(%d) data(%s)\n", len, osmo_hexdump(oa, len));
 }
 
+const char *tz_list[] = {
+	"UTC",
+	"Europe/London",
+	"Europe/Berlin",
+	"Europe/Athens",
+	"Europe/Moscow",
+	"Canada/Central",
+	"America/New_York",
+	"America/Los_Angeles",
+	NULL
+};
+
+static int test_scts_id_one_tz(void)
+{
+	uint8_t scts[7];
+	time_t ts, ts_res, start_ts, end_ts;
+
+	/* 2013-01-01 00:00:00 - 2014-01-01 01:00:00 increment in 30min steps */
+	start_ts = 1356998400;
+	end_ts = 1388538000;
+	for (ts = start_ts; ts <= end_ts; ts += 1800) {
+		memset(scts, 0, sizeof(scts));
+		gsm340_gen_scts(scts, ts);
+		ts_res = gsm340_scts(scts);
+
+		if (ts_res != ts) {
+			printf("%li -> %s -> %li\n", ts,
+				osmo_hexdump_nospc(scts, sizeof(scts)), ts_res);
+			return ts;
+		}
+	}
+	return 0;
+}
+
+static void test_scts_id(void)
+{
+	int i;
+	time_t ts;
+	const char *tz;
+	char *old_tz = getenv("TZ");
+
+	for (i = 0; ;i++) {
+		tz = tz_list[i];
+		if (!tz)
+			break;
+
+		printf("Testing gsm340_scts(gsm340_gen_scts(ts)) == ts "
+				"for TZ %s\n", tz);
+		setenv("TZ", tz, 1);
+		tzset();
+
+		ts = test_scts_id_one_tz();
+		if (ts)
+			printf("Timezone %s failed at ts %li\n", tz, ts);
+	}
+	setenv("TZ", old_tz, 1);
+}
+
 int main(int argc, char** argv)
 {
 	printf("SMS testing\n");
@@ -414,6 +472,7 @@ int main(int argc, char** argv)
 
 	test_octet_return();
 	test_gen_oa();
+	test_scts_id();
 
 	printf("OK\n");
 	return 0;
diff --git a/tests/sms/sms_test.ok b/tests/sms/sms_test.ok
index fa536ea..a3d816c 100644
--- a/tests/sms/sms_test.ok
+++ b/tests/sms/sms_test.ok
@@ -26,4 +26,24 @@ Result: len(12) data(14 a1 21 43 65 87 09 21 43 65 87 19 )
 Result: len(2) data(00 91 )
 Result: len(9) data(0e d0 4f 78 d9 2d 9c 0e 01 )
 Result: len(12) data(14 d0 4f 78 d9 2d 9c 0e c3 e2 31 19 )
+Testing gsm340_scts(gsm340_gen_scts(ts)) == ts for TZ UTC
+Testing gsm340_scts(gsm340_gen_scts(ts)) == ts for TZ Europe/London
+1364691600 -> 31301310000000 -> 1364695200
+Timezone Europe/London failed at ts 1364691600
+Testing gsm340_scts(gsm340_gen_scts(ts)) == ts for TZ Europe/Berlin
+1364695200 -> 31301320000000 -> 1364698800
+Timezone Europe/Berlin failed at ts 1364695200
+Testing gsm340_scts(gsm340_gen_scts(ts)) == ts for TZ Europe/Athens
+1364698800 -> 31301330000000 -> 1364702400
+Timezone Europe/Athens failed at ts 1364698800
+Testing gsm340_scts(gsm340_gen_scts(ts)) == ts for TZ Europe/Moscow
+Testing gsm340_scts(gsm340_gen_scts(ts)) == ts for TZ Canada/Central
+1362880800 -> 31300120000000 -> 1362884400
+Timezone Canada/Central failed at ts 1362880800
+Testing gsm340_scts(gsm340_gen_scts(ts)) == ts for TZ America/New_York
+1362880800 -> 31300120000000 -> 1362884400
+Timezone America/New_York failed at ts 1362880800
+Testing gsm340_scts(gsm340_gen_scts(ts)) == ts for TZ America/Los_Angeles
+1362880800 -> 31300120000000 -> 1362884400
+Timezone America/Los_Angeles failed at ts 1362880800
 OK
-- 
1.8.4.2





More information about the OpenBSC mailing list