#!/usr/bin/env python import os, sys, time from optparse import OptionParser from TestPlc import TestPlc from TestSite import TestSite from TestNode import TestNode import TestConfig import threading class TestMain: subversion_id = "$Id$" def __init__ (self): self.path=os.path.dirname(sys.argv[0]) def main (self): try: usage = """usage: %prog [options] MyplcURL""" parser=OptionParser(usage=usage,version=self.subversion_id) # verbosity parser.add_option("-v","--verbose", action="store_true", dest="verbose", default=False, help="Run in verbose mode") # debug mode parser.add_option("-g","--debug", action="store", dest="debug", help="Run in debug mode for eventual virtual problems") #exporting Display parser.add_option("-d","--display", action="store", dest="Xterm", default='bellami:0.0', help="export the display on the mentionneted one") (self.options, self.args) = parser.parse_args() display='' url='' test_plcs=[] test_nodes=[] pids=[] timset=time.strftime("%H:%M:%S", time.localtime()) #test the existence of the URL if (len (self.args)): url=self.args[0] print 'the myplc url is ',url else: print "PLease introduce a right URL for the myplc instal" sys.exit(1) #check where to display Virtual machines if (self.options.Xterm): display=self.options.Xterm print 'the display is', display #the debug option if (self.options.debug): file=self.path+'/'+self.options.debug+'/My_Virtual_Machine.vmx' if os.path.exists(file): print 'vmx file is',file arg='< /dev/null &>/dev/null &' os.system('DISPLAY=%s vmplayer %s %s '%(display,file,arg)) sys.exit(0) else: print "no way to find the virtual file" sys.exit(1) for plc_spec in TestConfig.plc_specs: print '========>Creating plc at '+timset+':',plc_spec test_plc = TestPlc(plc_spec) test_plc.connect() test_plcs.append(test_plc) test_plc.cleanup_plc() print '========>Installing myplc at: ', timset if (len(sys.argv) > 1): test_plc.install_plc(url) test_plc.config_plc(plc_spec) else : print "========>PLease insert a valid url for the myplc install" ##create all the sites under the new plc,and then populate them with ##nodes,persons and slices for site_spec in plc_spec['sites']: print '========>Creating site at '+timset+ ':',site_spec test_site = test_plc.init_site(site_spec) for node_spec in site_spec['nodes']: print '========>Creating node at '+ timset+' :',node_spec test_nodes.append(node_spec) test_node = test_plc.init_node(test_site,node_spec,self.path) test_node.create_slice ("pi") print 'Runing Checkers and Vmwares for Site nodes at :',timset test_site.run_vmware(test_nodes,display) if(test_site.node_check_status(test_nodes,True)): test_plc.db_dump() test_site.slice_access(test_nodes) print "all is alright" return 0 else : print "There is something wrong" sys.exit(1) except Exception, e: print str(e) sys.exit(1) if __name__ == "__main__": TestMain().main()