calculating network outage time
@@ -5,12 +5,18 @@ from moler.device.device import DeviceFactory
from moler.util.moler_test import MolerTest
-def outage_callback(device_name):
+def outage_callback(device_name, ping_times):
MolerTest.info("Network outage on {}".format(device_name))
+ ping_times["lost_connection_time"] = time.time()
-def ping_is_on_callback():
+def ping_is_on_callback(ping_times):
MolerTest.info("Ping works")
+ if ping_times["lost_connection_time"] > 0: # ping operable AFTER any net loss
+ if ping_times["reconnection_time"] == 0:
+ ping_times["reconnection_time"] = time.time()
+ outage_time = ping_times["reconnection_time"] - ping_times["lost_connection_time"]
+ MolerTest.info("Network outage time is {}".format(outage_time))
def test_network_outage():
@@ -18,18 +24,22 @@ def test_network_outage():
unix1 = DeviceFactory.get_device(name='MyMachine1')
unix2 = DeviceFactory.get_device(name='MyMachine2')
- # test setup - ensure network is up before running test
+ # test setup
+ ping_times = {"lost_connection_time": 0,
+ "reconnection_time": 0}
+ # ensure network is up before running test
net_up = unix2.get_cmd(cmd_name="ifconfig", cmd_params={"options": "lo up"})
sudo_ensure_net_up = unix2.get_cmd(cmd_name="sudo", cmd_params={"password": "moler", "cmd_object": net_up})
sudo_ensure_net_up()
# run event observing "network down/up"
no_ping = unix1.get_event(event_name="ping_no_response")
no_ping.add_event_occurred_callback(callback=outage_callback,
- callback_params={'device_name': 'MyMachine1'})
+ callback_params={'device_name': 'MyMachine1',
+ 'ping_times': ping_times})
no_ping.start()
ping_is_on = unix1.get_event(event_name="ping_response")
ping_is_on.add_event_occurred_callback(callback=ping_is_on_callback,
- callback_params={})
+ callback_params={'ping_times': ping_times})
ping_is_on.start()
# run test
