Framework of the new CHOtest
Change-Id: Ie5b58bfa2ed487386443692cbea0d469d7419c24
diff --git a/TestON/tests/CHOTestMonkey/dependencies/cli.py b/TestON/tests/CHOTestMonkey/dependencies/cli.py
new file mode 100644
index 0000000..d1a8448
--- /dev/null
+++ b/TestON/tests/CHOTestMonkey/dependencies/cli.py
@@ -0,0 +1,109 @@
+"""
+Start CLI for CHOTestMonkey
+Author: you@onlab.us
+"""
+from multiprocessing.connection import Client
+
+commandMap = {}
+paramNum = {}
+
+def triggerEvent( debugMode, name, scheduleMethod, args ):
+ """
+ This function inserts an event from CLI to CHOTestMonkey
+ """
+ host = "localhost"
+ port = 6000
+ address = ( host, port )
+ conn = Client( address )
+ request = []
+ if debugMode:
+ request.append( 2 )
+ else:
+ request.append( 1 )
+ request.append( name )
+ request.append( scheduleMethod )
+ for arg in args:
+ request.append( arg )
+ conn.send( request )
+ response = conn.recv()
+ return response
+
+def startCLI():
+ debugMode = False
+ while 1:
+ try:
+ if debugMode:
+ cmd = raw_input("CHOTestMonkey-debug>")
+ else:
+ cmd = raw_input("CHOTestMonkey>")
+ except EOFError:
+ print "exit"
+ return
+ except Exception:
+ print "Uncaught exception!"
+ return
+
+ if cmd == 'help':
+ print 'Supported commands:'
+ print 'help'
+ print 'debug'
+ print 'exit'
+ for command in commandMap.keys():
+ print command
+ elif cmd == '':
+ pass
+ elif cmd == 'debug':
+ debugMode = True
+ elif cmd == 'exit':
+ if debugMode:
+ debugMode = False
+ else:
+ return
+ else:
+ cmdList = cmd.split( ' ' )
+ if cmdList[ 0 ] in commandMap.keys():
+ num = paramNum[ cmdList[ 0 ] ]
+ name = commandMap[ cmdList[ 0 ] ]
+ if len( cmdList ) < num + 1:
+ print 'not enough arguments'
+ elif len( cmdList ) > num + 1:
+ print 'Too many arguments'
+ else:
+ result = triggerEvent( debugMode, name, 'RUN_BLOCK', cmdList[ 1: ] )
+ if result == 10:
+ pass
+ elif result == 11:
+ print "Scheduler busy...Try later or use debugging mode by entering \'debug\'"
+ elif result == 20:
+ print "Unknown message to server"
+ elif result == 21:
+ print "Unknown event type to server"
+ elif result == 22:
+ print "Unknown schedule method to server"
+ elif result == 23:
+ print "Not enough argument"
+ else:
+ print "Unknown response from server"
+ else:
+ print 'Unknown command'
+
+if __name__ == '__main__':
+ import xml.etree.ElementTree
+ try:
+ root = xml.etree.ElementTree.parse( '../CHOTestMonkey.params' ).getroot()
+ except Exception:
+ print "Uncaught exception!"
+ for child in root:
+ if child.tag == 'EVENT':
+ for event in child:
+ for item in event:
+ if item.tag == 'CLI':
+ CLI = str( item.text )
+ if item.tag == 'typeString':
+ name = str( item.text )
+ if item.tag == 'CLIParamNum':
+ num = int( item.text )
+ commandMap[ CLI ] = name
+ paramNum[ CLI ] = num
+ startCLI()
+