]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2909] Addressed review comments
authorThomas Markwalder <tmark@isc.org>
Tue, 20 Jun 2023 19:49:13 +0000 (15:49 -0400)
committerThomas Markwalder <tmark@isc.org>
Thu, 22 Jun 2023 11:43:36 +0000 (11:43 +0000)
src/bin/admin/tests/pgsql_tests.sh.in
    Adjusted v6 address values
    Added pgsql_update_v6_addresses_to_binary() to verify conversion

src/bin/admin/tests/pgsql_tests.sh.in

index a6b1e6d3de9b81795962c9d1843343581399d1e0..c86c5066a3ded1fedfa65381bfae56e961830ef7 100644 (file)
@@ -387,7 +387,7 @@ pgsql_upgrade_7_0_to_8_0_test() {
 
     # Check lease6Dump*().
     run_command \
-        pgsql_execute "INSERT INTO lease6 VALUES('::10',E'\\\\x3230',30,TO_TIMESTAMP(1678900000),40,50,1,60,70,'t','t','one,example,com',0,E'\\\\x3830',16,0,'{ \"a\": 1, \"b\": 2 }',0)"
+        pgsql_execute "INSERT INTO lease6 VALUES(cast('::10' as inet),E'\\\\x3230',30,TO_TIMESTAMP(1678900000),40,50,1,60,70,'t','t','one,example,com',0,E'\\\\x3830',16,0,'{ \"a\": 1, \"b\": 2 }',0)"
     assert_eq 0 "${EXIT_CODE}" 'INSERT INTO lease6 failed, expected exit code %d, actual %d'
     assert_str_eq '' "${OUTPUT}"
 
@@ -1391,7 +1391,7 @@ pgsql_lease6_stat_per_type() {
     ltype=$1
 
     # insert a lease6 for addr and ltype, state assigned
-    qry="insert into lease6 (address, lease_type, subnet_id, state) values ('$addr',$ltype,1,0)"
+    qry="insert into lease6 (address, lease_type, subnet_id, state) values (cast('$addr' as inet),$ltype,1,0)"
     run_statement "#2" "$qry"
 
     # assigned stat should be 1
@@ -1403,7 +1403,7 @@ pgsql_lease6_stat_per_type() {
     run_statement "#4" "$qry" 1
 
     # update the lease, changing state to declined
-    qry="update lease6 set state = 1 where address = '$addr'"
+    qry="update lease6 set state = 1 where address = cast('$addr' as inet)"
     run_statement "#5" "$qry"
 
     # leases stat for assigned state should be 0
@@ -1435,7 +1435,7 @@ pgsql_lease6_stat_per_type() {
     run_statement "#12" "$qry" 0
 
     # insert a lease6 for addr and ltype, state assigned
-    qry="insert into lease6 (address, lease_type, subnet_id, pool_id, state) values ('$addr1',$ltype,1,1,0)"
+    qry="insert into lease6 (address, lease_type, subnet_id, pool_id, state) values (cast('$addr1' as inet),$ltype,1,1,0)"
     run_statement "#13" "$qry"
 
     # assigned stat should be 1
@@ -1447,7 +1447,7 @@ pgsql_lease6_stat_per_type() {
     run_statement "#15" "$qry" 1
 
     # insert a lease6 for addr and ltype, state assigned
-    qry="insert into lease6 (address, lease_type, subnet_id, pool_id, state) values ('$addr2',$ltype,1,2,0)"
+    qry="insert into lease6 (address, lease_type, subnet_id, pool_id, state) values (cast('$addr2' as inet),$ltype,1,2,0)"
     run_statement "#16" "$qry"
 
     # assigned stat should be 2
@@ -1482,10 +1482,10 @@ pgsql_lease6_stat_test() {
     run_statement "#1" "$qry"
 
     # Test for address 111, NA lease type
-    pgsql_lease6_stat_per_type "111" "112" "113" "0"
+    pgsql_lease6_stat_per_type "::11" "::12" "::13" "0"
 
     # Test for address 222, PD lease type
-    pgsql_lease6_stat_per_type "222" "223" "224" "1"
+    pgsql_lease6_stat_per_type "::22" "::23" "::24" "1"
 
     # Let's wipe the whole database
     pgsql_wipe
@@ -1734,12 +1734,12 @@ pgsql_lease_stat_recount_test() {
     run_statement "insert v4 leases" "$qry"
 
     qry=\
-"insert into lease6 (address, lease_type, subnet_id, state) values (111,0,40,0);\
- insert into lease6 (address, lease_type, subnet_id, pool_id, state) values (222,0,40,1,1);\
- insert into lease6 (address, lease_type, subnet_id, state) values (333,1,40,0);\
- insert into lease6 (address, lease_type, subnet_id, state) values (444,1,50,0);\
- insert into lease6 (address, lease_type, subnet_id, pool_id, state) values (555,1,50,2,0);\
- insert into lease6 (address, lease_type, subnet_id, state) values (666,1,40,2)"
+"insert into lease6 (address, lease_type, subnet_id, state) values (cast('::11' as inet),0,40,0);\
+ insert into lease6 (address, lease_type, subnet_id, pool_id, state) values (cast('::22' as inet),0,40,1,1);\
+ insert into lease6 (address, lease_type, subnet_id, state) values (cast('::33' as inet),1,40,0);\
+ insert into lease6 (address, lease_type, subnet_id, state) values (cast('::44' as inet),1,50,0);\
+ insert into lease6 (address, lease_type, subnet_id, pool_id, state) values (cast('::55' as inet),1,50,2,0);\
+ insert into lease6 (address, lease_type, subnet_id, state) values (cast('::66' as inet),1,40,2)"
     run_statement "insert v6 leases" "$qry"
 
     # Now we change some counters.
@@ -1996,10 +1996,58 @@ pgsql_update_empty_duid_test() {
     test_finish 0
 }
 
-# Run tests.
-pgsql_lease4_upload_test
-exit 0
+# Verifies that converting from lease6.address to binary column works
+# while preserving data.
+pgsql_update_v6_addresses_to_binary() {
+    test_start "pgsql.update_v6_address_to_binary"
+
+    # Let's wipe the whole database
+    pgsql_wipe
 
+    # Initialize database to schema 1.0.
+    pgsql_execute_script "/home/tmark/labs/build/keadev/sandbox/git.pgsql-2909/kea/src/bin/admin/tests/dhcpdb_create_1.0.pgsql"
+    assert_eq 0 "${EXIT_CODE}" "cannot initialize 1.0 database, expected exit code: %d, actual: %d"
+
+    # Now upgrade to schema 16.0
+    pgsql_upgrade_schema_to_version 16.0
+
+    sql=\
+"insert into lease6 (address, lease_type, subnet_id) values('2601:19e:8100:1e10:b1b:51a8:f616:cf14', 1, 1);
+insert into lease6 (address, lease_type, subnet_id) values('2601:19e:8100:1e10:b1b:51a8:f616:cf15', 1, 1);"
+
+    run_statement "insert v6 leases" "$sql"
+
+    # Insert ipv6_reservations address is binary.
+    sql=\
+"insert into hosts(host_id, dhcp_identifier, dhcp_identifier_type) values (18219, '18219', 1); \
+insert into ipv6_reservations (address, prefix_len, type, dhcp6_iaid, host_id) \
+        values ('2601:19e:8100:1e10:b1b:51a8:f616:cf16', 128, 1, 123, 18219);"
+
+    run_statement "insert an ipv6 reservation" "$sql"
+
+    # Let's upgrade it to the latest version.
+    run_command \
+        "${kea_admin}" db-upgrade pgsql -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}"
+
+    # leases count for declined state should be 1 with DUID updated (0x000000)
+    qry="select count(*) from lease6 where address = cast('2601:19e:8100:1e10:b1b:51a8:f616:cf14' as inet);"
+    run_statement "#2" "$qry" 1
+
+    # leases count for non declined state should be 1 with DUID unchanged (0x323033)
+    qry="select count(*) from lease6 where address = cast('2601:19e:8100:1e10:b1b:51a8:f616:cf15' as inet);"
+    run_statement "#3" "$qry" 1
+
+    # verify the reservation is intact
+    qry="select host(address) from ipv6_reservations where host_id = 18219;"
+    run_statement "ipv6_reservations_insert" "$qry" "2601:19e:8100:1e10:b1b:51a8:f616:cf16"
+
+    # Let's wipe the whole database
+    pgsql_wipe
+
+    test_finish 0
+}
+
+# Run tests.
 pgsql_db_init_test
 pgsql_db_version_test
 pgsql_upgrade_test
@@ -2017,3 +2065,4 @@ pgsql_lease_stat_upgrade_test
 pgsql_lease_stat_recount_test
 pgsql_unused_subnet_id_test
 pgsql_update_empty_duid_test
+pgsql_update_v6_addresses_to_binary