| |
| ===== test_subscr_create_update_sel_delete |
| |
| --- Create with valid / invalid IMSI |
| |
| db_subscr_create(dbc, imsi0) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| } |
| |
| db_subscr_create(dbc, imsi1) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 2, |
| .imsi = '123456789000001', |
| } |
| |
| db_subscr_create(dbc, imsi2) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 3, |
| .imsi = '123456789000002', |
| } |
| |
| db_subscr_create(dbc, imsi0) --> -EIO |
| DDB (2067) abort at 18 in [INSERT INTO subscriber (imsi) VALUES ($imsi)]: UNIQUE constraint failed: subscriber.imsi |
| DAUC IMSI='123456789000000': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| } |
| |
| db_subscr_create(dbc, imsi1) --> -EIO |
| DDB (2067) abort at 18 in [INSERT INTO subscriber (imsi) VALUES ($imsi)]: UNIQUE constraint failed: subscriber.imsi |
| DAUC IMSI='123456789000001': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi |
| |
| db_subscr_create(dbc, imsi1) --> -EIO |
| DDB (2067) abort at 18 in [INSERT INTO subscriber (imsi) VALUES ($imsi)]: UNIQUE constraint failed: subscriber.imsi |
| DAUC IMSI='123456789000001': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi |
| |
| db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 2, |
| .imsi = '123456789000001', |
| } |
| |
| db_subscr_create(dbc, imsi2) --> -EIO |
| DDB (2067) abort at 18 in [INSERT INTO subscriber (imsi) VALUES ($imsi)]: UNIQUE constraint failed: subscriber.imsi |
| DAUC IMSI='123456789000002': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi |
| |
| db_subscr_create(dbc, imsi2) --> -EIO |
| DDB (2067) abort at 18 in [INSERT INTO subscriber (imsi) VALUES ($imsi)]: UNIQUE constraint failed: subscriber.imsi |
| DAUC IMSI='123456789000002': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi |
| |
| db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 3, |
| .imsi = '123456789000002', |
| } |
| |
| db_subscr_create(dbc, "123456789 000003") --> -EINVAL |
| DAUC Cannot create subscriber: invalid IMSI: '123456789 000003' |
| |
| db_subscr_get_by_imsi(dbc, "123456789000003", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: IMSI='123456789000003': No such subscriber |
| |
| db_subscr_create(dbc, "123456789000002123456") --> -EINVAL |
| DAUC Cannot create subscriber: invalid IMSI: '123456789000002123456' |
| |
| db_subscr_get_by_imsi(dbc, "123456789000002123456", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: IMSI='123456789000002123456': No such subscriber |
| |
| db_subscr_create(dbc, "foobar123") --> -EINVAL |
| DAUC Cannot create subscriber: invalid IMSI: 'foobar123' |
| |
| db_subscr_get_by_imsi(dbc, "foobar123", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: IMSI='foobar123': No such subscriber |
| |
| db_subscr_create(dbc, "123") --> -EINVAL |
| DAUC Cannot create subscriber: invalid IMSI: '123' |
| |
| db_subscr_get_by_imsi(dbc, "123", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: IMSI='123': No such subscriber |
| |
| db_subscr_create(dbc, short_imsi) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 4, |
| .imsi = '123456', |
| } |
| |
| |
| --- Set valid / invalid MSISDN |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| } |
| |
| db_subscr_update_msisdn_by_imsi(dbc, imsi0, "54321") --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '54321', |
| } |
| |
| db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '54321', |
| } |
| |
| db_subscr_update_msisdn_by_imsi(dbc, imsi0, "54321012345678912345678") --> -EINVAL |
| DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '54321012345678912345678' |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '54321', |
| } |
| |
| db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '54321', |
| } |
| |
| db_subscr_get_by_msisdn(dbc, "54321012345678912345678", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: MSISDN='54321012345678912345678': No such subscriber |
| |
| db_subscr_update_msisdn_by_imsi(dbc, imsi0, "543 21") --> -EINVAL |
| DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '543 21' |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '54321', |
| } |
| |
| db_subscr_get_by_msisdn(dbc, "543 21", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: MSISDN='543 21': No such subscriber |
| |
| db_subscr_update_msisdn_by_imsi(dbc, imsi0, "foobar123") --> -EINVAL |
| DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: 'foobar123' |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '54321', |
| } |
| |
| db_subscr_get_by_msisdn(dbc, "foobar123", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: MSISDN='foobar123': No such subscriber |
| |
| db_subscr_update_msisdn_by_imsi(dbc, imsi0, "5") --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '5', |
| } |
| |
| db_subscr_get_by_msisdn(dbc, "5", &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '5', |
| } |
| |
| db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: MSISDN='54321': No such subscriber |
| |
| db_subscr_update_msisdn_by_imsi(dbc, imsi0, "543210123456789") --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| } |
| |
| db_subscr_get_by_msisdn(dbc, "543210123456789", &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| } |
| |
| db_subscr_update_msisdn_by_imsi(dbc, imsi0, "5432101234567891") --> -EINVAL |
| DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '5432101234567891' |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| } |
| |
| db_subscr_get_by_msisdn(dbc, "5432101234567891", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: MSISDN='5432101234567891': No such subscriber |
| |
| |
| --- Set MSISDN on non-existent / invalid IMSI |
| |
| db_subscr_update_msisdn_by_imsi(dbc, unknown_imsi, "99") --> -ENOENT |
| DAUC Cannot update MSISDN: no such subscriber: IMSI='999999999' |
| |
| db_subscr_get_by_msisdn(dbc, "99", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: MSISDN='99': No such subscriber |
| |
| db_subscr_update_msisdn_by_imsi(dbc, "foobar", "99") --> -ENOENT |
| DAUC Cannot update MSISDN: no such subscriber: IMSI='foobar' |
| |
| db_subscr_get_by_msisdn(dbc, "99", &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: MSISDN='99': No such subscriber |
| |
| |
| --- Set / unset nam_cs and nam_ps |
| |
| db_subscr_nam(dbc, imsi0, false, true) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| .nam_ps = false, |
| } |
| |
| db_subscr_nam(dbc, imsi0, false, false) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| .nam_cs = false, |
| .nam_ps = false, |
| } |
| |
| db_subscr_nam(dbc, imsi0, true, false) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| .nam_ps = false, |
| } |
| |
| db_subscr_nam(dbc, imsi0, true, true) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| } |
| |
| |
| --- Set / unset nam_cs and nam_ps *again* |
| |
| db_subscr_nam(dbc, imsi0, false, true) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| .nam_ps = false, |
| } |
| |
| db_subscr_nam(dbc, imsi0, false, true) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| .nam_ps = false, |
| } |
| |
| db_subscr_nam(dbc, imsi0, false, false) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| .nam_cs = false, |
| .nam_ps = false, |
| } |
| |
| db_subscr_nam(dbc, imsi0, false, false) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| .nam_cs = false, |
| .nam_ps = false, |
| } |
| |
| db_subscr_nam(dbc, imsi0, true, true) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| .nam_cs = false, |
| } |
| |
| db_subscr_nam(dbc, imsi0, true, true) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| .nam_cs = false, |
| } |
| |
| db_subscr_nam(dbc, imsi0, true, false) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| } |
| |
| db_subscr_nam(dbc, imsi0, true, false) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| } |
| |
| |
| --- Set nam_cs and nam_ps on non-existent / invalid IMSI |
| |
| db_subscr_nam(dbc, unknown_imsi, false, true) --> -ENOENT |
| DAUC Cannot disable PS: no such subscriber: IMSI='999999999' |
| |
| db_subscr_nam(dbc, unknown_imsi, false, false) --> -ENOENT |
| DAUC Cannot disable 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 |
| |
| db_subscr_nam(dbc, "foobar", false, true) --> -ENOENT |
| DAUC Cannot disable PS: no such subscriber: IMSI='foobar' |
| |
| 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 |
| DAUC Cannot delete: no such subscriber: ID=999 |
| |
| db_subscr_delete_by_id(dbc, -10) --> -ENOENT |
| DAUC Cannot delete: no such subscriber: ID=-10 |
| |
| |
| --- Delete subscribers |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 1, |
| .imsi = '123456789000000', |
| .msisdn = '543210123456789', |
| } |
| |
| db_subscr_delete_by_id(dbc, id0) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber |
| |
| db_subscr_delete_by_id(dbc, id0) --> -ENOENT |
| DAUC Cannot delete: no such subscriber: ID=1 |
| |
| db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 2, |
| .imsi = '123456789000001', |
| } |
| |
| db_subscr_delete_by_id(dbc, id1) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: IMSI='123456789000001': No such subscriber |
| |
| db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 3, |
| .imsi = '123456789000002', |
| } |
| |
| db_subscr_delete_by_id(dbc, id2) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: IMSI='123456789000002': No such subscriber |
| |
| db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> 0 |
| struct hlr_subscriber { |
| .id = 4, |
| .imsi = '123456', |
| } |
| |
| db_subscr_delete_by_id(dbc, id_short) --> 0 |
| |
| db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> -ENOENT |
| DAUC Cannot read subscriber from db: IMSI='123456': No such subscriber |
| |
| ===== test_subscr_create_update_sel_delete: SUCCESS |
| |