blob: 7e912d07ac959c9af66509c280bd6efbd82fd999 [file] [log] [blame]
"""
Insert network/ONOS/app events into CHOTestMonkey
Author: you@onlab.us
"""
import time
import random
from multiprocessing.connection import Client
def triggerEvent( type, scheduleMethod, *args ):
"""
This function inserts an event into CHOTestMonkey
"""
host = "localhost"
port = 6000
address = ( host, port )
conn = Client( address )
request = []
request.append( 1 )
request.append( type )
request.append( scheduleMethod )
for arg in args:
request.append( arg )
conn.send( request )
response = conn.recv()
while response == 11:
conn.close()
time.sleep( 1 )
conn = Client( address )
conn.send( request )
response = conn.recv()
if response == 10:
print "Event inserted:", type, scheduleMethod, args
elif response == 20:
print "Unknown message to server"
elif response == 21:
print "Unknown event type to server"
elif response == 22:
print "Unknown schedule method to server"
elif response == 23:
print "Not enough argument"
else:
print "Unknown response from server:", response
conn.close()
def testLoop( sleepTime=5 ):
downLinkNum = 0
downDeviceNum = 0
while True:
r = random.random()
if r < 0.2:
triggerEvent( 'NETWORK_LINK_DOWN', 'RUN_BLOCK', 'random', 'random' )
downLinkNum += 1
time.sleep( sleepTime )
elif r < 0.4:
triggerEvent( 'NETWORK_DEVICE_DOWN', 'RUN_BLOCK', 'random' )
downDeviceNum += 1
time.sleep( sleepTime * 2 )
elif r < 0.7 and downLinkNum > 0:
triggerEvent( 'NETWORK_LINK_UP', 'RUN_BLOCK', 'random', 'random' )
downLinkNum -= 1
time.sleep( sleepTime )
elif downDeviceNum > 0:
triggerEvent( 'NETWORK_DEVICE_UP', 'RUN_BLOCK', 'random' )
downDeviceNum -= 1
time.sleep( sleepTime * 2 )
else:
pass
def replayFromFile( filePath='/home/admin/event-list', sleepTime=1 ):
try:
f = open( filePath, 'r' )
for line in f.readlines():
event = line.split()
if event[ 3 ].startswith( 'CHECK' ):
continue
triggerEvent( event[ 3 ], 'RUN_BLOCK', *event[ 4: ] )
time.sleep( sleepTime )
f.close()
except Exception as e:
print e
if __name__ == '__main__':
#testLoop( 2 )
replayFromFile()