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