diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2017-10-09 17:48:51 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2017-10-10 23:43:52 +0200 |
commit | 21c4b1427c17ad567ef98cccc1848193bb09b617 (patch) | |
tree | f6eb724ea6cd921beae521c1ebceddb156658ee8 /tests | |
parent | 02ea5241f7fd4d4874eaddeea83f488502854379 (diff) |
refactor db_subscr_purge
Use named parameters in the SQL statements.
Use db_bind_* functions to drop some code dup.
Adopt error handling (rc and logging) to match the other db functions: return
-ENOENT for unknown subscriber, -EIO for SQL failures.
Change-Id: Iad49d29b90a708c6cf55bfb3bcc02d9e29001a15
Diffstat (limited to 'tests')
-rw-r--r-- | tests/db/db_test.c | 38 | ||||
-rw-r--r-- | tests/db/db_test.err | 137 |
2 files changed, 175 insertions, 0 deletions
diff --git a/tests/db/db_test.c b/tests/db/db_test.c index 5acd1e8..20553ef 100644 --- a/tests/db/db_test.c +++ b/tests/db/db_test.c @@ -320,6 +320,44 @@ static void test_subscr_create_update_sel_delete() ASSERT_RC(db_subscr_lu(dbc, 99999, "712", false), -ENOENT); ASSERT_SEL(id, 99999, -ENOENT); + comment("Purge and un-purge PS and CS"); + + /* purge_val, is_ps */ + ASSERT_RC(db_subscr_purge(dbc, imsi0, true, true), 0); + ASSERT_SEL(imsi, imsi0, 0); + ASSERT_RC(db_subscr_purge(dbc, imsi0, true, false), 0); + ASSERT_SEL(imsi, imsi0, 0); + ASSERT_RC(db_subscr_purge(dbc, imsi0, false, false), 0); + ASSERT_SEL(imsi, imsi0, 0); + ASSERT_RC(db_subscr_purge(dbc, imsi0, false, true), 0); + ASSERT_SEL(imsi, imsi0, 0); + + comment("Purge PS and CS *again*"); + + ASSERT_RC(db_subscr_purge(dbc, imsi0, true, true), 0); + ASSERT_SEL(imsi, imsi0, 0); + ASSERT_RC(db_subscr_purge(dbc, imsi0, true, true), 0); + ASSERT_SEL(imsi, imsi0, 0); + ASSERT_RC(db_subscr_purge(dbc, imsi0, false, true), 0); + ASSERT_SEL(imsi, imsi0, 0); + ASSERT_RC(db_subscr_purge(dbc, imsi0, false, true), 0); + ASSERT_SEL(imsi, imsi0, 0); + ASSERT_RC(db_subscr_purge(dbc, imsi0, true, false), 0); + ASSERT_SEL(imsi, imsi0, 0); + ASSERT_RC(db_subscr_purge(dbc, imsi0, true, false), 0); + ASSERT_SEL(imsi, imsi0, 0); + ASSERT_RC(db_subscr_purge(dbc, imsi0, false, false), 0); + ASSERT_SEL(imsi, imsi0, 0); + ASSERT_RC(db_subscr_purge(dbc, imsi0, false, false), 0); + ASSERT_SEL(imsi, imsi0, 0); + + comment("Purge on non-existent / invalid IMSI"); + + ASSERT_RC(db_subscr_purge(dbc, unknown_imsi, true, true), -ENOENT); + ASSERT_SEL(imsi, unknown_imsi, -ENOENT); + ASSERT_RC(db_subscr_purge(dbc, unknown_imsi, true, false), -ENOENT); + ASSERT_SEL(imsi, unknown_imsi, -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 6e6a0ac..59b9ba1 100644 --- a/tests/db/db_test.err +++ b/tests/db/db_test.err @@ -513,6 +513,143 @@ db_subscr_get_by_id(dbc, 99999, &g_subscr) --> -ENOENT DAUC Cannot read subscriber from db: ID=99999: No such subscriber +--- Purge and un-purge PS and CS + +db_subscr_purge(dbc, imsi0, true, true) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .ms_purged_ps = true, +} + +db_subscr_purge(dbc, imsi0, true, false) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .ms_purged_cs = true, + .ms_purged_ps = true, +} + +db_subscr_purge(dbc, imsi0, false, false) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .ms_purged_ps = true, +} + +db_subscr_purge(dbc, imsi0, false, true) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', +} + + +--- Purge PS and CS *again* + +db_subscr_purge(dbc, imsi0, true, true) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .ms_purged_ps = true, +} + +db_subscr_purge(dbc, imsi0, true, true) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .ms_purged_ps = true, +} + +db_subscr_purge(dbc, imsi0, false, true) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', +} + +db_subscr_purge(dbc, imsi0, false, true) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', +} + +db_subscr_purge(dbc, imsi0, true, false) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .ms_purged_cs = true, +} + +db_subscr_purge(dbc, imsi0, true, false) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', + .ms_purged_cs = true, +} + +db_subscr_purge(dbc, imsi0, false, false) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', +} + +db_subscr_purge(dbc, imsi0, false, false) --> 0 + +db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 +struct hlr_subscriber { + .id = 1, + .imsi = '123456789000000', + .msisdn = '543210123456789', +} + + +--- Purge on non-existent / invalid IMSI + +db_subscr_purge(dbc, unknown_imsi, true, true) --> -ENOENT +DAUC Cannot purge PS: no such subscriber: IMSI='999999999' + +db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT +DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber + +db_subscr_purge(dbc, unknown_imsi, true, false) --> -ENOENT +DAUC Cannot purge CS: no such subscriber: IMSI='999999999' + +db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT +DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber + + --- Delete non-existent / invalid IDs db_subscr_delete_by_id(dbc, 999) --> -ENOENT |