def init_status(logtype): global dbase if not STATUS_KEY in dbase: print "Init local status database for %s" % logtype.upper() l = list(combinations(configuration.listRobots, matches[logtype])) shuffle(l) dbase[STATUS_KEY] = l dbase.sync() CrobotsLibs.set_up(logtype)
def close_db(): global dbase if dbase is not None: try: dbase.close() except: print "Error on closing local database: results may be corrupted..." finally: dbase = None CrobotsLibs.close_connection()
def init_db(logfile, logtype): global configuration, dbase, dbfile filename = dbfile % (logfile, logtype) if not os.path.exists(filename): print "Init local database for %s" % logtype.upper() dbase = shelve.open(filename, 'c') for s in configuration.listRobots: key = os.path.basename(s) dbase[key] = [0, 0, 0, 0] dbase.sync() else: dbase = shelve.open(filename, 'w') CrobotsLibs.test_connection()
def update_db(logpath, logfile, logtype): global dbase log = '%s/%s_%s.log' % (logpath, logfile, logtype) if not os.path.exists(log): print log + ' does not exists!' close_db() raise SystemExit txt = open(log, 'r') lines = txt.readlines() txt.close() robots = parse_log_file(lines) for r in robots.values(): name = r[0] values = dbase[name] values[0] += r[1] values[1] += r[2] values[2] += r[3] values[3] += r[4] dbase[name] = values if CrobotsLibs.DATABASE_ENABLE: CrobotsLibs.update_results(logtype, name, values[0], values[1], values[2], values[3]) dbase.sync() clean_up_log_file(log)
# default stdin and stderr for crobots executable devNull = open(os.devnull) # command line strings robotPath = "%s/%s.ro" crobotsCmdLine = "crobots -m%s -l200000" # countCmdLine = "count -p -t %s/%s_%s >/dev/null 2>&1" dbfile = "db/%s_%s.db" matches = {'f2f': 2, '3vs3': 3, '4vs4': 4} # if True overrides the Configuration class parameters overrideConfiguration = False # number of CPUs / cores CPUs = CrobotsLibs.available_cpu_count() print "Detected %s CPU(s)" % CPUs spawnList = [] def run_crobots(tmppath, logpath, logfile, logtype): "spawn crobots command lines in subprocesses" global spawnList procs = [] # spawn processes for i, s in enumerate(spawnList): try: with open("%s/tmp_%s_%s_%s.log" % (tmppath, logfile, i, logtype), 'w') as tmpfile: procs.append(subprocess.Popen(shlex.split(s), stderr=devNull, stdout=tmpfile)) except OSError, e: print e