class ProjectConfiguration: '''Load options, own all project step functions''' def __init__(self, options): '''Provide initial full steps, input options contains basic parameters''' self.options=options self.set_output_folder() self.set_logserver() self.set_configfile() def set_output_folder(self): '''Set output folder Input: options.outputpath Output: self.outputdir, ChorusGlobals.outputdir''' self.outputdir = Utils.create_folder(self.options.outputpath, "Output", True) ChorusGlobals.set_outputdir(self.outputdir) print "Set output directory to %s" % self.outputdir def set_configfile(self): configfile = ConfigFile(self.options.configfile,self.options.configpath) configfile.get_env(self.options.env) self.parameters = configfile.parameters self.config = configfile.config ChorusGlobals.set_parameters(self.parameters) ChorusGlobals.set_configinfo(self.config) def set_logserver(self, name = LogType.ChorusCore, level=Level.debug, formatter=Formatter.Console): self.logserver=LogServer(name, level, formatter, colorconsole = self.options.color) ChorusGlobals.set_logserver(self.logserver) ChorusGlobals.set_logger(self.logserver.get_logger())
class ProjectConfiguration: '''Load options, own all project step functions''' def init_options(self): self.parser = optparse.OptionParser() self.parser.add_option("-c","--config",dest="configfile", default="default.cfg", help="config file name, e.g: test.cfg") self.parser.add_option("-p","--path",dest="configpath", default="", help="config file path, default: Config/, e.g. test") self.parser.add_option("-o","--output",dest="outputpath", default="", help="output file path, default: Output/, e.g: Output") self.parser.add_option("--color",dest="color", default=False, action="store_true", help="provide a colorful console with different log level") self.parser.add_option("-e","--env",dest="env", default=None, help="choose environment to run the test in config file") def setup(self, argv=[]): if not hasattr(self,"parser"): self.init_options() self.options, argv = self.parser.parse_args(list(argv)) self.set_output_folder() self.set_logserver() self.set_configfile() def set_output_folder(self): '''Set output folder Input: options.outputpath Output: self.outputdir, ChorusGlobals.outputdir''' self.outputdir = Utils.create_folder(self.options.outputpath, "Output", True) ChorusGlobals.set_outputdir(self.outputdir) print "Set output directory to %s" % self.outputdir def set_configfile(self): configfile = ConfigFile(self.options.configfile,self.options.configpath) configfile.get_env(self.options.env) self.parameters = configfile.parameters self.config = configfile.config ChorusGlobals.set_parameters(self.parameters) ChorusGlobals.set_configinfo(self.config) def set_logserver(self, name = LogType.ChorusCore, level=Level.debug, formatter=Formatter.Console): self.logserver=LogServer(name, level, formatter, colorconsole = self.options.color) ChorusGlobals.set_logserver(self.logserver) ChorusGlobals.set_logger(self.logserver.get_logger())
from Game import Game from GamePlayer import GamePlayer from GameServer import GameServer from GameMap import GameMap from Player import Player # Load Log Server from LogServer import LogServer # Load Twisted from twisted.internet import reactor from twisted.internet.task import LoopingCall from twisted.web import static, server # Create the log server for UDP connections logserver = LogServer() logserver.config = config # Install SIGINT handler reactor.addSystemEventTrigger('before', 'shutdown', logserver.shutdown) # Setup Log Server reactor.listenUDP(27501, logserver) # Set Up Garbage Collector for log server gc = LoopingCall(logserver.gc) gc.start(config.getint('timers', 'idle_server_search_interval')) stats = LoopingCall(logserver.stats) stats.start(config.getint('timers', 'print_stats'))
def set_logserver(self, name = LogType.ChorusCore, level=Level.debug, formatter=Formatter.Console): self.logserver=LogServer(name, level, formatter, colorconsole = self.options.color) ChorusGlobals.set_logserver(self.logserver) ChorusGlobals.set_logger(self.logserver.get_logger())
def set_logserver(self, name = LogType.ChorusCore, level=Level.debug, formatter=Formatter.Console): self.logserver=LogServer(name, level, formatter, colorconsole = False if not hasattr(self,"options") else self.options.color) ChorusGlobals.set_logserver(self.logserver) ChorusGlobals.set_logger(self.logserver.get_logger())
class ProjectConfiguration: '''Load options, own all project step functions''' def init_options(self): self.parser = optparse.OptionParser() self.parser.add_option("-c","--config",dest="configfile", default="default.cfg", help="config file name, e.g: test.cfg") self.parser.add_option("-p","--path",dest="configpath", default="", help="config file path, default: Config/, e.g. test") self.parser.add_option("-o","--output",dest="outputpath", default="", help="output file path, default: Output/, e.g: Output") self.parser.add_option("--color",dest="color", default=False, action="store_true", help="provide a colorful console with different log level") self.parser.add_option("-e","--env",dest="env", default=None, help="choose environment to run the test in config file") self.parser.add_option("-d","--directory", dest="directory", default=None, help="Current working directory full path, which contains the Config/Testsuite/Baseline folder, if you are in the default directory, you can omit this option") self.parser.add_option("--order", dest="xml", default=None, help="give a configuration XML file which define the test execution order. And other cofiguration in scipts/config file will be ignored") def setup(self, argv=[]): if not hasattr(self,"parser"): self.init_options() self.options, argv = self.parser.parse_args(list(argv)) self.set_working_directory() self.set_output_folder() self.set_logserver() self.set_configfile() self.set_xml_file() def set_working_directory(self): if self.options.directory: if os.path.isdir(self.options.directory): os.chdir(self.options.directory) current_dir_abs = os.getcwd() sys.path.append(current_dir_abs) def set_output_folder(self): '''Set output folder Input: options.outputpath Output: self.outputdir, ChorusGlobals.outputdir''' self.outputdir = os.path.abspath(Utils.create_folder(self.options.outputpath, "Output", True)) ChorusGlobals.set_outputdir(self.outputdir) print "Set output directory to %s" % self.outputdir def set_configfile(self): configfile = ConfigFile(self.options.configfile,self.options.configpath) configfile.get_env(self.options.env) self.parameters = configfile.parameters self.config = configfile.config ChorusGlobals.set_parameters(self.parameters) ChorusGlobals.set_configinfo(self.config) def set_logserver(self, name = LogType.ChorusCore, level=Level.debug, formatter=Formatter.Console): self.logserver=LogServer(name, level, formatter, colorconsole = False if not hasattr(self,"options") else self.options.color) ChorusGlobals.set_logserver(self.logserver) ChorusGlobals.set_logger(self.logserver.get_logger()) def set_xml_file(self): if self.options.xml: if os.path.isfile(self.options.xml): if str(self.options.xml).endswith(".xml"): ChorusGlobals.set_xml_file(self.options.xml) print "Load test execution infomation from file %s"%(str(self.options.xml)) return else: print "The test execution configuration file should be an XML file" else: print "Can't find xml file %s" % (str(self.options.xml)) ChorusGlobals.set_xml_file(None)
class RandomSource: def __init__(self): pass def getRandomNumber(self, min, max): return random.randint(min, max) def getRandomFloat(self, min, max): return random.uniform(min, max) printer = RandomSource() server = LogServer("0.0.0.0", 8080) server.registerDataSource("random-int", printer.getRandomNumber, 0, 100) server.registerDataSource("random-int", printer.getRandomNumber, 100, 200) server.registerDataSource("random-float", printer.getRandomFloat, 1.0, 2.0) server.listen() # Retrieve data from all "random-int" sources """ { "get-data": { "mode": "all", "sources": ["random-int"] } } """