|
@@ -129,11 +129,63 @@ EOF
|
|
test_finish 0
|
|
test_finish 0
|
|
}
|
|
}
|
|
|
|
|
|
-mysql_lease_upgrade_test() {
|
|
|
|
|
|
+mysql_host_reservation_init_test() {
|
|
|
|
+ test_start "mysql.host_reservation-init"
|
|
|
|
|
|
- # @todo: need to test whether non-empty database is updated correctly and the data survives the upgrade
|
|
|
|
|
|
+ # Let's wipe the whole database
|
|
|
|
+ mysql_wipe
|
|
|
|
+
|
|
|
|
+ # Ok, now let's initalize the database
|
|
|
|
+ ${keaadmin} lease-init mysql -u $db_user -p $db_pass -n $db_name -d @abs_top_srcdir@/src/bin/admin/scripts
|
|
|
|
+ ERRCODE=$?
|
|
|
|
+
|
|
|
|
+ assert_eq 0 $ERRCODE "kea-admin lease-init mysql returned non-zero status code %d, expected %d"
|
|
|
|
+
|
|
|
|
+ # Ok, now let's check if the tables are indeed there.
|
|
|
|
+ # First table: schema_version. Should have 2 columns: version and minor.
|
|
|
|
+ mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
|
|
+ SELECT version, minor FROM schema_version;
|
|
|
|
+EOF
|
|
|
|
+ ERRCODE=$?
|
|
|
|
+ assert_eq 0 $ERRCODE "schema_version table is missing or broken. (returned status code %d, expected %d)"
|
|
|
|
+
|
|
|
|
+ # Second table: hosts
|
|
|
|
+ mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
|
|
+ SELECT host_id, dhcp_identifier, dhcp_identifier_type, dhcp4_subnet_id, dhcp6_subnet_id, ipv4_address, hostname, dhcp4_client_classes, dhcp6_client_classes FROM hosts;
|
|
|
|
+EOF
|
|
|
|
+ ERRCODE=$?
|
|
|
|
+ assert_eq 0 $ERRCODE "hosts table is missing or broken. (returned status code %d, expected %d)"
|
|
|
|
+
|
|
|
|
+ # Third table: ipv6_reservations
|
|
|
|
+ mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
|
|
+ SELECT reservation_id, address, prefix_len, type, dhcp6_iaid, host_id FROM ipv6_reservations;
|
|
|
|
+EOF
|
|
|
|
+ ERRCODE=$?
|
|
|
|
+ assert_eq 0 $ERRCODE "ipv6_reservations table is missing or broken. (returned status code %d, expected %d)"
|
|
|
|
+
|
|
|
|
+ # Fourth table: dhcp4_options
|
|
|
|
+ mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
|
|
+ SELECT option_id, code, value, formatted_value, space, persistent, dhcp_client_class, dhcp4_subnet_id, host_id FROM dhcp4_options;
|
|
|
|
+EOF
|
|
|
|
+ ERRCODE=$?
|
|
|
|
+ assert_eq 0 $ERRCODE "dhcp4_options table is missing or broken. (returned status code %d, expected %d)"
|
|
|
|
+
|
|
|
|
+ # Fifth table: dhcp6_options
|
|
|
|
+ mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
|
|
+ SELECT option_id, code, value, formatted_value, space, persistent, dhcp_client_class, dhcp6_subnet_id, host_id FROM dhcp6_options;
|
|
|
|
+EOF
|
|
|
|
+ ERRCODE=$?
|
|
|
|
+ assert_eq 0 $ERRCODE "dhcp6_options table is missing or broken. (returned status code %d, expected %d)"
|
|
|
|
+
|
|
|
|
+ # Let's wipe the whole database
|
|
|
|
+ mysql_wipe
|
|
|
|
|
|
- test_start "mysql.lease-upgrade"
|
|
|
|
|
|
+ test_finish 0
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+mysql_upgrade_test() {
|
|
|
|
+
|
|
|
|
+ test_start "mysql.host_reservation-upgrade"
|
|
|
|
|
|
# Let's wipe the whole database
|
|
# Let's wipe the whole database
|
|
mysql_wipe
|
|
mysql_wipe
|
|
@@ -146,7 +198,7 @@ mysql_lease_upgrade_test() {
|
|
|
|
|
|
assert_str_eq "1.0" ${version} "Expected kea-admin to return %s, returned value was %s"
|
|
assert_str_eq "1.0" ${version} "Expected kea-admin to return %s, returned value was %s"
|
|
|
|
|
|
- # Ok, we have a 1.0 database. Let's upgrade it to 2.0
|
|
|
|
|
|
+ # Ok, we have a 1.0 database. Let's upgrade it to 3.0
|
|
${keaadmin} lease-upgrade mysql -u $db_user -p $db_pass -n $db_name -d @abs_top_srcdir@/src/bin/admin/scripts
|
|
${keaadmin} lease-upgrade mysql -u $db_user -p $db_pass -n $db_name -d @abs_top_srcdir@/src/bin/admin/scripts
|
|
ERRCODE=$?
|
|
ERRCODE=$?
|
|
|
|
|
|
@@ -154,24 +206,53 @@ mysql_lease_upgrade_test() {
|
|
|
|
|
|
# Let's check that the new tables are indeed there.
|
|
# Let's check that the new tables are indeed there.
|
|
|
|
|
|
- # Third table: lease6
|
|
|
|
|
|
+ #table: lease6 (upgrade 1.0 -> 2.0)
|
|
mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
SELECT hwaddr, hwtype, hwaddr_source FROM lease6;
|
|
SELECT hwaddr, hwtype, hwaddr_source FROM lease6;
|
|
EOF
|
|
EOF
|
|
ERRCODE=$?
|
|
ERRCODE=$?
|
|
assert_eq 0 $ERRCODE "lease6 table not upgraded to 2.0 (returned status code %d, expected %d)"
|
|
assert_eq 0 $ERRCODE "lease6 table not upgraded to 2.0 (returned status code %d, expected %d)"
|
|
|
|
|
|
- # Fifth table: lease_hwaddr_source
|
|
|
|
|
|
+ #table: lease_hwaddr_source (upgrade 1.0 -> 2.0)
|
|
mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
SELECT hwaddr_source, name FROM lease_hwaddr_source;
|
|
SELECT hwaddr_source, name FROM lease_hwaddr_source;
|
|
EOF
|
|
EOF
|
|
ERRCODE=$?
|
|
ERRCODE=$?
|
|
assert_eq 0 $ERRCODE "lease_hwaddr_source table is missing or broken. (returned status code %d, expected %d)"
|
|
assert_eq 0 $ERRCODE "lease_hwaddr_source table is missing or broken. (returned status code %d, expected %d)"
|
|
|
|
|
|
- # Verify that it reports version 2.0.
|
|
|
|
|
|
+ #table: hosts (upgrade 2.0 -> 3.0)
|
|
|
|
+ mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
|
|
+ SELECT host_id, dhcp_identifier, dhcp_identifier_type, dhcp4_subnet_id, dhcp6_subnet_id, ipv4_address, hostname, dhcp4_client_classes, dhcp6_client_classes FROM hosts;
|
|
|
|
+EOF
|
|
|
|
+ ERRCODE=$?
|
|
|
|
+ assert_eq 0 $ERRCODE "hosts table is missing or broken. (returned status code %d, expected %d)"
|
|
|
|
+
|
|
|
|
+ #table: ipv6_reservations (upgrade 2.0 -> 3.0)
|
|
|
|
+ mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
|
|
+ SELECT reservation_id, address, prefix_len, type, dhcp6_iaid, host_id FROM ipv6_reservations;
|
|
|
|
+EOF
|
|
|
|
+ ERRCODE=$?
|
|
|
|
+ assert_eq 0 $ERRCODE "ipv6_reservations table is missing or broken. (returned status code %d, expected %d)"
|
|
|
|
+
|
|
|
|
+ #table: dhcp4_options (upgrade 2.0 -> 3.0)
|
|
|
|
+ mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
|
|
+ SELECT option_id, code, value, formatted_value, space, persistent, dhcp_client_class, dhcp4_subnet_id, host_id FROM dhcp4_options;
|
|
|
|
+EOF
|
|
|
|
+ ERRCODE=$?
|
|
|
|
+ assert_eq 0 $ERRCODE "dhcp4_options table is missing or broken. (returned status code %d, expected %d)"
|
|
|
|
+
|
|
|
|
+ #table: dhcp6_options (upgrade 2.0 -> 3.0)
|
|
|
|
+ mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
|
|
|
|
+ SELECT option_id, code, value, formatted_value, space, persistent, dhcp_client_class, dhcp6_subnet_id, host_id FROM dhcp6_options;
|
|
|
|
+EOF
|
|
|
|
+ ERRCODE=$?
|
|
|
|
+ assert_eq 0 $ERRCODE "dhcp6_options table is missing or broken. (returned status code %d, expected %d)"
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ # Verify that it reports version 3.0.
|
|
version=$(${keaadmin} lease-version mysql -u $db_user -p $db_pass -n $db_name)
|
|
version=$(${keaadmin} lease-version mysql -u $db_user -p $db_pass -n $db_name)
|
|
|
|
|
|
- assert_str_eq "2.0" ${version} "Expected kea-admin to return %s, returned value was %s"
|
|
|
|
|
|
+ assert_str_eq "3.0" ${version} "Expected kea-admin to return %s, returned value was %s"
|
|
|
|
|
|
# Let's wipe the whole database
|
|
# Let's wipe the whole database
|
|
mysql_wipe
|
|
mysql_wipe
|
|
@@ -180,5 +261,6 @@ EOF
|
|
}
|
|
}
|
|
|
|
|
|
mysql_lease_init_test
|
|
mysql_lease_init_test
|
|
|
|
+mysql_host_reservation_init_test
|
|
mysql_lease_version_test
|
|
mysql_lease_version_test
|
|
-mysql_lease_upgrade_test
|
|
|
|
|
|
+mysql_upgrade_test
|