From 6b7d946e275248d1e7cbc6022f2ad0c9409a69e3 Mon Sep 17 00:00:00 2001 From: Jan Kadlec <jan.kadlec@nic.cz> Date: Tue, 16 Sep 2014 21:08:06 +0200 Subject: [PATCH] tests-extra: extended events/soa tests with zone restarts. --- tests-extra/tests/events/soa/test.py | 107 +++++++++++++++------------ 1 file changed, 58 insertions(+), 49 deletions(-) diff --git a/tests-extra/tests/events/soa/test.py b/tests-extra/tests/events/soa/test.py index d57565b247..2130b6c8cd 100644 --- a/tests-extra/tests/events/soa/test.py +++ b/tests-extra/tests/events/soa/test.py @@ -21,9 +21,65 @@ def test_expire(slave): resp = slave.dig("example.", "SOA") resp.check(rcode="SERVFAIL") +def test_run(master, slave, zone, action): + slave.zone_wait(zone) + slave.reload() # reload should keep the event intact + #test that zone does not expire when master is alive + detail_log("Refresh - master alive") + test_refresh(slave) + master.stop() + #test that zone does expire when master is down + action(slave) # action should keep the event intact + detail_log("Refresh - master alive") + test_expire(slave) + + #update master zone file with 10s retry in SOA + master.update_zonefile(zone, version=1) + master.start() + + slave.reload() #get new zone file + slave.zone_wait(zone) + #stop the master and start it again + master.stop() + t.sleep(EXPIRE_SLEEP) + master.start() + + #zone should expire, retry is pending now + detail_log("Retry - master dead then alive") + resp = slave.dig("example.", "SOA") + resp.check(rcode="SERVFAIL") + + #switch server roles, slave becomes master - there should be no expire + master.stop() + slave.zones = {} + master.zones = {} + t.link(zone, slave) + t.generate_conf() + action(slave) + + slave.zone_wait(zone) + t.sleep(EXPIRE_SLEEP) + detail_log("Expire - roles switch") + slave.zone_wait(zone) + + #switch again - zone should expire now + slave.zones = {} + t.link(zone, master, slave) + t.generate_conf() + action(slave) + t.sleep(1) + + detail_log("Expire - roles switch 2") + test_expire(slave) + +def restart_server(s): + s.stop() + s.start() + t = Test() master = t.server("bind") +master.disable_notify = True slave = t.server("knot") slave.disable_notify = True slave.max_conn_idle = "1s" @@ -35,55 +91,8 @@ t.link(zone, master, slave) t.start() -slave.zone_wait(zone) -slave.reload() # reload should keep the event intact -#test that zone does not expire when master is alive -detail_log("Refresh - master alive") -test_refresh(slave) -master.stop() -#test that zone does expire when master is down -slave.reload() # reload should keep the event intact -detail_log("Refresh - master alive") -test_expire(slave) - -#update master zone file with 10s retry in SOA -master.update_zonefile(zone, version=1) -master.start() - -slave.reload() #get new zone file -slave.zone_wait(zone) -#stop the master and start it again -master.stop() -t.sleep(EXPIRE_SLEEP) -master.start() - -#zone should expire, retry is pending now -detail_log("Retry - master dead then alive") -resp = slave.dig("example.", "SOA") -resp.check(rcode="SERVFAIL") - -#switch server roles, slave becomes master - there should be no expire -master.stop() -slave.zones = {} -master.zones = {} -t.link(zone, slave) -t.generate_conf() -slave.reload() - -slave.zone_wait(zone) -t.sleep(EXPIRE_SLEEP) -detail_log("Expire - roles switch") -slave.zone_wait(zone) - -#switch again - zone should expire now -slave.zones = {} -t.link(zone, master, slave) -t.generate_conf() -slave.reload() -t.sleep(1) - -detail_log("Expire - roles switch 2") -test_expire(slave) +test_run(master, slave, zone, lambda x: x.reload()) +test_run(master, slave, zone, restart_server) t.stop() -- GitLab