Esempio n. 1
0
def runTest():
    util.dlog("runTest begins. category=" + category + " build=" + str(build))
    if testMethod == "webmark":
        os.system("python WebMark/webmark.py binary/" + category + "/" + build + ".json")

    command = (
        "python qa/ts-rt24/ts-rt24-testtools/run_qatest/run_qatest.py --type=QATEST-RUN-SLAVE --test-properties={'buildername':'"
        + category
        + "-builder','buildnumber':'"
        + build
        + "','mastername':'rt24','scheduler':'','slavename':'"
        + category
        + "','testcfg':'','restcfg_uri_default':'','testcfg_uri_temp':''}"
    )
    print command
    os.system(command)
    # time.sleep(random.uniform(5, 15))
    util.dlog("runTest ends.   category=" + category + " build=" + str(build))
Esempio n. 2
0
def downloadBinary():
    os.chdir("binary/" + category)

    # Download zip file
    zipFile = build + ".zip"
    if not os.path.exists(build + ".zip"):
        util.dlog("Downloading " + category + "/" + build)
        url = util.urlPrefix + category + "/" + build + "/chrome-win32.zip"
        f = urllib2.urlopen(url)
        data = f.read()
        with open(zipFile, "wb") as code:
            code.write(data)
        util.dlog("Download " + category + "/" + build + " finished.")

    if not os.path.exists(zipFile):
        util.dlog("Download failed")
        os.chdir(sys.path[0])
        return

    # Extract zip file
    if os.path.exists(build):
        shutil.rmtree(build)

    os.system("unzip " + build + ".zip")
    os.rename("chrome-win32", build)

    # Handle webmark config file
    if testMethod != "webmark":
        os.chdir(sys.path[0])
        return

    configFile = build + ".json"
    if os.path.exists(configFile):
        os.remove(configFile)

    shutil.copyfile(sys.path[0] + "/webmark.json", configFile)
    f = open(configFile)
    lines = f.readlines()
    f.close()

    placeHolder = "placeholder"
    for lineIndex in range(0, len(lines)):
        if re.search(placeHolder, lines[lineIndex]):
            line = lines[lineIndex]
            line = line.replace(placeHolder, os.getcwd() + "/" + build + "/chrome.exe")
            line = line.replace("\\", "/")
            lines[lineIndex] = line
            break

    f = open(configFile, "w")
    for line in lines:
        f.write(line)
    f.close()

    os.chdir(sys.path[0])
Esempio n. 3
0
            builds = queue.split(",")
            for buildIndex in range(0, len(builds)):
                if re.match("^\d+$", builds[buildIndex]):
                    build = builds[buildIndex]
                    builds[buildIndex] += "(r)"
                    lines[lineIndex] = util.queuePrefix + ",".join(builds) + "\n"
                    util.writeStatus(lines)
                    return True

    return False


if __name__ == "__main__":
    os.chdir(sys.path[0])
    util.dlog("Start to run test")

    lockRunName = "lock-run"
    if util.hasLock(lockRunName):
        util.dlog("It's already running")
        quit()

    util.lock(lockRunName)

    hasUpdate = False
    while util.atomOp(getAvailable):
        hasUpdate = True
        if testMethod == "webmark":
            downloadBinary()
        runTest()
        util.atomOp(updateStatus)
Esempio n. 4
0
def checkUpdate():
    global lines
    global hasUpdate



    file = open('status.txt')
    lines = file.readlines()
    file.close()
    
    categoryPattern = re.compile("category=(.*)")
    startPattern = re.compile("start=(.*)")
    queuePattern = re.compile("queue=(.*)")

    for lineIndex in range(0, len(lines)):
        line = lines[lineIndex]
        if categoryPattern.search(line):
            m = categoryPattern.search(line)
            category = m.group(1)
        elif startPattern.search(line):
            m = startPattern.search(line)
            start = m.group(1)
            startDate = time.strptime(start, '%Y-%m-%d')
        elif queuePattern.search(line):
            m = queuePattern.search(line)
            queue = str.strip(m.group(1))
            
            # Get the previous max build number
            if not queue:
                maxBuildNumber = 0
            else:
                oldBuilds = queue.split(',')
                numberPattern = re.compile("(\d+)")
                m = numberPattern.search(oldBuilds[0])
                maxBuildNumber = m.group(1)

            # Ensure startDate is valid
            if not start:
                startDate = time.strptime('20120101', '%d-%b-%Y')
                
            # Get the new queue needs to be updated
            url = util.urlPrefix + category
            try:
                u = urllib2.urlopen(url)
            except BadStatusLine:
                start = ""
                continue
            html = u.read()
            
            buildPattern = re.compile('href="(\d+).*(\d\d-.*-\d+ \d+:\d+)')
            builds = buildPattern.findall(html)
            newQueue = ""
            for build in reversed(builds):
                buildNumber = build[0]
                if buildNumber <= maxBuildNumber:
                    break
                
                buildDate = time.strptime(build[1], '%d-%b-%Y %H:%M')
                if buildDate <= startDate:
                    break
                
                if not newQueue:
                    newQueue = str(buildNumber)   
                else:
                    newQueue = newQueue + "," + str(buildNumber)
            
            # Update the queue
            if not newQueue:
                continue
            hasUpdate = True
            if not queue:
                line = "queue=" + newQueue
            else:
                line = "queue=" + newQueue + "," + queue
            lines[lineIndex] = line + '\n'
            util.dlog('Has an update: category=' + category + ' ' + line)
Esempio n. 5
0
def updateStatus():
    if not hasUpdate:
        util.dlog('Has no update')
        return

    util.writeStatus(lines)
Esempio n. 6
0
            for build in reversed(builds):
                buildNumber = build[0]
                if buildNumber <= maxBuildNumber:
                    break
                
                buildDate = time.strptime(build[1], '%d-%b-%Y %H:%M')
                if buildDate <= startDate:
                    break
                
                if not newQueue:
                    newQueue = str(buildNumber)   
                else:
                    newQueue = newQueue + "," + str(buildNumber)
            
            # Update the queue
            if not newQueue:
                continue
            hasUpdate = True
            if not queue:
                line = "queue=" + newQueue
            else:
                line = "queue=" + newQueue + "," + queue
            lines[lineIndex] = line + '\n'
            util.dlog('Has an update: category=' + category + ' ' + line)
    
            
if __name__ == '__main__':  
    os.chdir(sys.path[0])
    util.dlog('Start to check update')
    checkUpdate()
    util.atomOp(updateStatus)