xref: /freebsd/contrib/unbound/testdata/redis_replica.tdir/redis_replica.test (revision 4b15965daa99044daf184221b7c283bf7f2d7e66)
1# #-- redis_replica.test --#
2# source the master var file when it's there
3[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master
4# use .tpkg.var.test for in test variable passing
5[ -f .tpkg.var.test ] && source .tpkg.var.test
6
7PRE="../.."
8# do the test
9
10# Check number of keys in the db
11# $1: socket to connect to
12# $2: expected number of keys
13redis_cli_check_keys () {
14	echo "> redis-cli connecting to $1 to check number of keys; expecting $2"
15	keys=$(redis-cli --no-raw -s $1 keys "*" | grep -vF empty | wc -l)
16	if test $keys -ne $2
17	then
18		echo "Expected $2 keys, got $keys"
19		exit 1
20	fi
21	echo "OK"
22}
23
24# Query and check the expected result
25# $1: query
26# $2: expected answer
27expect_answer () {
28	echo "> dig @127.0.0.1 -p $UNBOUND_PORT $1"
29	dig @127.0.0.1 -p $UNBOUND_PORT $1 > tmp.answer
30	if ! grep -F $2 tmp.answer
31	then
32		echo "Expected $2 in the answer, got:"
33		cat tmp.answer
34		exit 1
35	fi
36	echo "OK"
37}
38
39# Start test
40
41# check Redis server has no keys
42redis_cli_check_keys $REDIS_SOCKET 0
43
44# check Redis replica server has no keys
45redis_cli_check_keys $REDIS_REPLICA_SOCKET 0
46
47# query and check answer
48expect_answer redis.com 1.1.1.1
49
50# check Redis server has 1 key
51redis_cli_check_keys $REDIS_SOCKET 1
52
53# check Redis replica server has no keys
54redis_cli_check_keys $REDIS_REPLICA_SOCKET 0
55
56# change auth zone and reload
57cp after.zone redis.zone
58echo "$PRE/unbound-control -c ub.conf reload"
59$PRE/unbound-control -c ub.conf reload
60if test $? -ne 0; then
61	echo "wrong exit value after success"
62	exit 1
63fi
64
65# query and check answer
66# we are writing to server but reading from replica; which is not actually
67# replicating so the new answer will come through while overwriting the record
68# in the server.
69expect_answer redis.com 2.2.2.2
70
71# check Redis server has 1 key
72redis_cli_check_keys $REDIS_SOCKET 1
73
74# check Redis replica server has no keys
75redis_cli_check_keys $REDIS_REPLICA_SOCKET 0
76
77echo "> OK"
78exit 0
79