From dd783056f7ede461dd27347fa86743a24c4c4eed Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Mon, 9 Oct 2017 17:36:08 +0200 Subject: refactor db_subscr_lu() Use named parameters in the SQL statement. Use db_bind_* functions to drop some code dup. Use explicit subscriber id arg instead of subscriber struct. Match return values and error logging to other db functions. Change-Id: I35665e84ddbe54a6f218b24033df969ad2e669a0 --- tests/db/db_test.c | 37 ++++++++++++++ tests/db/db_test.err | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 174 insertions(+) (limited to 'tests') diff --git a/tests/db/db_test.c b/tests/db/db_test.c index 30de51d..5acd1e8 100644 --- a/tests/db/db_test.c +++ b/tests/db/db_test.c @@ -283,6 +283,43 @@ static void test_subscr_create_update_sel_delete() ASSERT_RC(db_subscr_nam(dbc, "foobar", false, true), -ENOENT); ASSERT_RC(db_subscr_nam(dbc, "foobar", false, false), -ENOENT); + comment("Record LU for PS and CS (SGSN and VLR names)"); + + ASSERT_RC(db_subscr_lu(dbc, id0, "5952", true), 0); + ASSERT_SEL(id, id0, 0); + ASSERT_RC(db_subscr_lu(dbc, id0, "712", false), 0); + ASSERT_SEL(id, id0, 0); + + comment("Record LU for PS and CS (SGSN and VLR names) *again*"); + + ASSERT_RC(db_subscr_lu(dbc, id0, "111", true), 0); + ASSERT_SEL(id, id0, 0); + ASSERT_RC(db_subscr_lu(dbc, id0, "111", true), 0); + ASSERT_SEL(id, id0, 0); + ASSERT_RC(db_subscr_lu(dbc, id0, "222", false), 0); + ASSERT_SEL(id, id0, 0); + ASSERT_RC(db_subscr_lu(dbc, id0, "222", false), 0); + ASSERT_SEL(id, id0, 0); + + comment("Unset LU info for PS and CS (SGSN and VLR names)"); + ASSERT_RC(db_subscr_lu(dbc, id0, "", true), 0); + ASSERT_SEL(id, id0, 0); + ASSERT_RC(db_subscr_lu(dbc, id0, "", false), 0); + ASSERT_SEL(id, id0, 0); + + ASSERT_RC(db_subscr_lu(dbc, id0, "111", true), 0); + ASSERT_RC(db_subscr_lu(dbc, id0, "222", false), 0); + ASSERT_SEL(id, id0, 0); + ASSERT_RC(db_subscr_lu(dbc, id0, NULL, true), 0); + ASSERT_SEL(id, id0, 0); + ASSERT_RC(db_subscr_lu(dbc, id0, NULL, false), 0); + ASSERT_SEL(id, id0, 0); + + comment("Record LU for non-existent ID"); + ASSERT_RC(db_subscr_lu(dbc, 99999, "5952", true), -ENOENT); + ASSERT_RC(db_subscr_lu(dbc, 99999, "712", false), -ENOENT); + ASSERT_SEL(id, 99999, -ENOENT); + comment("Delete non-existent / invalid IDs"); ASSERT_RC(db_subscr_delete_by_id(dbc, 999), -ENOENT); diff --git a/tests/db/db_test.err b/tests/db/db_test.err index f7c03d9..6e6a0ac 100644 --- a/tests/db/db_test.err +++ b/tests/db/db_test.err @@ -376,6 +376,143 @@ db_subscr_nam(dbc, "foobar", false, false) --> -ENOENT DAUC Cannot disable CS: no such subscriber: IMSI='foobar' +--- Record LU for PS and CS (SGSN and VLR names) + +db_subscr_lu(dbc, id0, "5952", true) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .sgsn_number = '5952', +} + +db_subscr_lu(dbc, id0, "712", false) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .vlr_number = '712', + .sgsn_number = '5952', +} + + +--- Record LU for PS and CS (SGSN and VLR names) *again* + +db_subscr_lu(dbc, id0, "111", true) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .vlr_number = '712', + .sgsn_number = '111', +} + +db_subscr_lu(dbc, id0, "111", true) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .vlr_number = '712', + .sgsn_number = '111', +} + +db_subscr_lu(dbc, id0, "222", false) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .vlr_number = '222', + .sgsn_number = '111', +} + +db_subscr_lu(dbc, id0, "222", false) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .vlr_number = '222', + .sgsn_number = '111', +} + + +--- Unset LU info for PS and CS (SGSN and VLR names) + +db_subscr_lu(dbc, id0, "", true) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .vlr_number = '222', +} + +db_subscr_lu(dbc, id0, "", false) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', +} + +db_subscr_lu(dbc, id0, "111", true) --> 0 + +db_subscr_lu(dbc, id0, "222", false) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .vlr_number = '222', + .sgsn_number = '111', +} + +db_subscr_lu(dbc, id0, NULL, true) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .vlr_number = '222', +} + +db_subscr_lu(dbc, id0, NULL, false) --> 0 + +db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', +} + + +--- Record LU for non-existent ID + +db_subscr_lu(dbc, 99999, "5952", true) --> -ENOENT +DAUC Cannot update SGSN number for subscriber ID=99999: no such subscriber + +db_subscr_lu(dbc, 99999, "712", false) --> -ENOENT +DAUC Cannot update VLR number for subscriber ID=99999: no such subscriber + +db_subscr_get_by_id(dbc, 99999, &g_subscr) --> -ENOENT +DAUC Cannot read subscriber from db: ID=99999: No such subscriber + + --- Delete non-existent / invalid IDs db_subscr_delete_by_id(dbc, 999) --> -ENOENT -- cgit v1.2.3