示例#1
0
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)
示例#2
0
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()
示例#3
0
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()
示例#4
0
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)
示例#5
0
# 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