fi
db_user="keatest"
-db_pass="keatest"
+db_password="keatest"
db_name="keatest"
# Set location of the kea-admin.
# Wipe all tables from the DB:
mysql_wipe() {
printf "Wiping whole database %s\n" $db_name
- mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
+ mysql -u$db_user -p$db_password $db_name >/dev/null 2>&1 <<EOF
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables
FROM information_schema.tables
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
+ ${keaadmin} lease-init mysql -u $db_user -p $db_password -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
+ mysql -u$db_user -p$db_password $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: lease4
- mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
+ mysql -u$db_user -p$db_password $db_name >/dev/null 2>&1 <<EOF
SELECT address, hwaddr, client_id, valid_lifetime, expire, subnet_id, fqdn_fwd, fqdn_rev, hostname FROM lease4;
EOF
ERRCODE=$?
assert_eq 0 $ERRCODE "lease4 table is missing or broken. (returned status code %d, expected %d)"
# Third table: lease6
- mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
+ mysql -u$db_user -p$db_password $db_name >/dev/null 2>&1 <<EOF
SELECT address, duid, valid_lifetime, expire, subnet_id, pref_lifetime, lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname, hwaddr, hwtype, hwaddr_source FROM lease6;
EOF
ERRCODE=$?
assert_eq 0 $ERRCODE "lease6 table is missing or broken. (returned status code %d, expected %d)"
# Fourth table: lease6_types
- mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
+ mysql -u$db_user -p$db_password $db_name >/dev/null 2>&1 <<EOF
SELECT lease_type, name FROM lease6_types;
EOF
ERRCODE=$?
assert_eq 0 $ERRCODE "lease6_types table is missing or broken. (returned status code %d, expected %d)"
# Fifth table: lease_hwaddr_source
- mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
+ mysql -u$db_user -p$db_password $db_name >/dev/null 2>&1 <<EOF
SELECT hwaddr_source, name FROM lease_hwaddr_source;
EOF
ERRCODE=$?
mysql_wipe
# Ok, now let's create a version 1.7
- mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
+ mysql -u$db_user -p$db_password $db_name >/dev/null 2>&1 <<EOF
CREATE TABLE schema_version (
version INT PRIMARY KEY NOT NULL,
minor INT
INSERT INTO schema_version VALUES (1, 7);
EOF
- version=$(${keaadmin} lease-version mysql -u $db_user -p $db_pass -n $db_name)
+ version=$(${keaadmin} lease-version mysql -u $db_user -p $db_password -n $db_name)
assert_str_eq "1.7" ${version} "Expected kea-admin to return %s, returned value was %s"
mysql_wipe
# Initialize database to scheme 1.0.
- mysql -u$db_user -p$db_pass $db_name < @abs_top_srcdir@/src/bin/admin/tests/dhcpdb_create_1.0.mysql
+ mysql -u$db_user -p$db_password $db_name < @abs_top_srcdir@/src/bin/admin/tests/dhcpdb_create_1.0.mysql
# Sanity check - verify that it reports version 1.0.
- version=$(${keaadmin} lease-version mysql -u $db_user -p $db_pass -n $db_name -d @abs_top_srcdir@/src/bin/admin/scripts)
+ version=$(${keaadmin} lease-version mysql -u $db_user -p $db_password -n $db_name -d @abs_top_srcdir@/src/bin/admin/scripts)
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
- ${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_password -n $db_name -d @abs_top_srcdir@/src/bin/admin/scripts
ERRCODE=$?
assert_eq 0 $ERRCODE "kea-admin lease-upgrade mysql returned non-zero status code %d, expected %d"
# Let's check that the new tables are indeed there.
# Third table: lease6
- mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
+ mysql -u$db_user -p$db_password $db_name >/dev/null 2>&1 <<EOF
SELECT hwaddr, hwtype, hwaddr_source FROM lease6;
EOF
ERRCODE=$?
assert_eq 0 $ERRCODE "lease6 table not upgraded to 2.0 (returned status code %d, expected %d)"
# Fifth table: lease_hwaddr_source
- mysql -u$db_user -p$db_pass $db_name >/dev/null 2>&1 <<EOF
+ mysql -u$db_user -p$db_password $db_name >/dev/null 2>&1 <<EOF
SELECT hwaddr_source, name FROM lease_hwaddr_source;
EOF
ERRCODE=$?
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.
- version=$(${keaadmin} lease-version mysql -u $db_user -p $db_pass -n $db_name)
+ version=$(${keaadmin} lease-version mysql -u $db_user -p $db_password -n $db_name)
assert_str_eq "2.0" ${version} "Expected kea-admin to return %s, returned value was %s"
test_finish 0
}
+mysql_lease4_dump_test() {
+ test_start "mysql.lease4_dump_test"
+
+ test_dir="@abs_top_srcdir@/src/bin/admin/tests"
+ script_dir="@abs_top_srcdir@/src/bin/admin/scripts"
+ output_file="$test_dir/data/lease4_dump_test.output.csv"
+ ref_file="$test_dir/data/mysql.lease4_dump_test.reference.csv"
+
+ # Let's wipe the whole database
+ mysql_wipe
+
+ # Ok, now let's initalize the database
+ ${keaadmin} lease-init mysql -u $db_user -p $db_password -n $db_name -d $script_dir
+ ERRCODE=$?
+ assert_eq 0 $ERRCODE "could not create database, status code %d"
+
+ # Insert the reference record
+ insert_sql="insert into lease4 values(10,20,30,40,0,50,1,1,\"example.com\");"
+ mysql_execute "$insert_sql"
+ ERRCODE=$?
+ assert_eq 0 $ERRCODE "insert into lease4 failed, status code %d"
+
+ # Dump lease4 to output_file
+ ${keaadmin} lease-dump mysql -4 -u $db_user -p $db_password -n $db_name -d $script_dir -o $output_file
+ ERRCODE=$?
+ assert_eq 0 $ERRCODE "kea-admin lease-dump -4 failed, status code %d"
+
+ # Compare the dump output to reference file, they should be identical
+ cmp -s $output_file $ref_file
+ ERRCODE=$?
+ assert_eq 0 $ERRCODE "dump file does not match reference file"
+
+ # remove the output file
+ rm $output_file
+
+ # Let's wipe the whole database
+ mysql_wipe
+
+ test_finish 0
+}
+
+mysql_lease6_dump_test() {
+ test_start "mysql.lease6_dump_test"
+
+ test_dir="@abs_top_srcdir@/src/bin/admin/tests"
+ script_dir="@abs_top_srcdir@/src/bin/admin/scripts"
+ output_file="$test_dir/data/lease6_dump_test.output.csv"
+ ref_file="$test_dir/data/mysql.lease6_dump_test.reference.csv"
+
+ # Let's wipe the whole database
+ mysql_wipe
+
+ # Ok, now let's initalize the database
+ ${keaadmin} lease-init mysql -u $db_user -p $db_password -n $db_name -d $script_dir
+ ERRCODE=$?
+ assert_eq 0 $ERRCODE "could not create database, status code %d"
+
+ # Insert the reference record
+ insert_sql="insert into lease6 values(10,20,30,0,40,50,1,60,70,1,1,\"example.com\",80,90,100);"
+
+ mysql_execute "$insert_sql"
+ ERRCODE=$?
+ assert_eq 0 $ERRCODE "insert into lease6 failed, status code %d"
+
+ # Dump lease4 to output_file
+ ${keaadmin} lease-dump mysql -6 -u $db_user -p $db_password -n $db_name -d $script_dir -o $output_file
+ ERRCODE=$?
+ assert_eq 0 $ERRCODE "kea-admin lease-dump -6 failed, status code %d"
+
+ # Compare the dump output to reference file, they should be identical
+ cmp -s $output_file $ref_file
+ ERRCODE=$?
+ assert_eq 0 $ERRCODE "dump file does not match reference file"
+
+ # remove the output file
+ rm $output_file
+
+ # Let's wipe the whole database
+ mysql_wipe
+
+ test_finish 0
+}
+
+
mysql_lease_init_test
mysql_lease_version_test
mysql_lease_upgrade_test
+mysql_lease4_dump_test
+mysql_lease6_dump_test