/scripts/run_internal_tests.py
Python | 248 lines | 196 code | 25 blank | 27 comment | 13 complexity | 80faa04118bbb57d7d22fed7598c9034 MD5 | raw file
- # -*- coding: utf-8 -*-
- #-------------------------------------------------------------------------
- # drawElements Quality Program utilities
- # --------------------------------------
- #
- # Copyright 2015 The Android Open Source Project
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- #-------------------------------------------------------------------------
- import os
- import sys
- import shutil
- import random
- import subprocess
- def die (msg):
- print msg
- exit(-1)
- def shellquote(s):
- return '"%s"' % s.replace('\\', '\\\\').replace('"', '\"').replace('$', '\$').replace('`', '\`')
- def execute (args, workDir = None):
- curPath = os.getcwd()
- if workDir != None:
- os.chdir(workDir)
- retcode = subprocess.call(args)
- os.chdir(curPath)
- if retcode != 0:
- raise Exception("Failed to execute %s, got %d" % (str(args), retcode))
- class Config:
- def __init__ (self, name, srcPath, buildPath, genParams, buildParams, testBinaryName, executor = 'executor', execserver = 'execserver', junitTool = 'testlog-to-junit'):
- self.name = name
- self.srcPath = srcPath
- self.buildPath = buildPath
- self.genParams = genParams
- self.buildParams = buildParams
- self.testBinaryName = testBinaryName
- self.executor = executor
- self.execserver = execserver
- self.junitTool = junitTool
- def initBuildDir (config):
- if os.path.exists(config.buildPath):
- shutil.rmtree(config.buildPath)
- os.makedirs(config.buildPath)
- execute(["cmake", os.path.realpath(config.srcPath)] + config.genParams, workDir = config.buildPath)
- def prepareBuildDir (config):
- # If build dir exists, try to refresh
- if os.path.exists(config.buildPath):
- try:
- execute(["cmake", "."], workDir = config.buildPath)
- except:
- print "WARNING: Failed to refresh build dir, recreating"
- initBuildDir(config)
- else:
- initBuildDir(config)
- def build (config):
- prepareBuildDir(config)
- execute(["cmake", "--build", "."] + config.buildParams, workDir = config.buildPath)
- def runInternalTests (config):
- batchResultFile = config.name + ".qpa"
- infoLogFile = config.name + ".txt"
- junitFile = config.name + ".xml"
- testWorkDir = os.path.join(config.buildPath, "modules", "internal")
- junitToolPath = os.path.join(config.buildPath, 'executor', config.junitTool)
- # Remove old files
- for file in [batchResultFile, junitFile]:
- if os.path.exists(file):
- os.remove(file)
- build(config)
- # Dump case list
- execute([config.testBinaryName, "--deqp-runmode=xml-caselist"], workDir = testWorkDir)
- # Run test binary using executor
- args = [
- os.path.join(config.buildPath, 'executor', config.executor),
- '--port=%d' % random.randint(50000, 60000),
- '--start-server=%s' % os.path.join(config.buildPath, 'execserver', config.execserver),
- '--binaryname=%s' % config.testBinaryName,
- '--cmdline=--deqp-crashhandler=enable --deqp-watchdog=enable',
- '--workdir=%s' % testWorkDir,
- '--caselistdir=%s' % os.path.join(testWorkDir),
- '--testset=dE-IT.*',
- '--out=%s' % batchResultFile,
- '--info=%s' % infoLogFile
- ]
- execute(args)
- # Convert log to junit format
- execute([junitToolPath, batchResultFile, junitFile])
- SRC_PATH = os.path.normpath(os.path.join(os.path.dirname(__file__), ".."))
- BASE_BUILD_PATH = os.path.normpath(os.path.join(SRC_PATH, "..", "de-internal-tests"))
- CONFIGS = [
- Config(
- "win32-vs10-debug",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "win32-vs10-debug"),
- ['-GVisual Studio 10', '-DDEQP_TARGET=no_modules'],
- ['--config', 'Debug', '--', '/m'],
- 'Debug\\de-internal-tests.exe',
- 'Debug\\executor.exe',
- 'Debug\\execserver.exe',
- 'Debug\\testlog-to-junit.exe'
- ),
- Config(
- "win32-vs10-release",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "win32-vs10-release"),
- ['-GVisual Studio 10', '-DDEQP_TARGET=no_modules'],
- ['--config', 'Release', '--', '/m'],
- 'Release\\de-internal-tests.exe',
- 'Release\\executor.exe',
- 'Release\\execserver.exe',
- 'Release\\testlog-to-junit.exe'
- ),
- Config(
- "win64-vs10-debug",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "win64-vs10-debug"),
- ['-GVisual Studio 10 Win64', '-DDEQP_TARGET=no_modules'],
- ['--config', 'Debug', '--', '/m'],
- 'Debug\\de-internal-tests.exe',
- 'Debug\\executor.exe',
- 'Debug\\execserver.exe',
- 'Debug\\testlog-to-junit.exe'
- ),
- Config(
- "win64-vs10-release",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "win64-vs10-release"),
- ['-GVisual Studio 10 Win64', '-DDEQP_TARGET=no_modules'],
- ['--config', 'Release', '--', '/m'],
- 'Release\\de-internal-tests.exe',
- 'Release\\executor.exe',
- 'Release\\execserver.exe',
- 'Release\\testlog-to-junit.exe'
- ),
- # GCC configs
- Config(
- "linux32-gcc-debug",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "linux32-gcc-debug"),
- ['-DDEQP_TARGET=no_modules', '-DCMAKE_BUILD_TYPE=Debug', '-DCMAKE_C_FLAGS=-m32', '-DCMAKE_CXX_FLAGS=-m32', '-DCMAKE_LIBRARY_PATH=/usr/lib32;usr/lib/i386-linux-gnu'],
- ['--', '-j', '2'],
- './de-internal-tests'
- ),
- Config(
- "linux32-gcc-release",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "linux32-gcc-release"),
- ['-DDEQP_TARGET=no_modules', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_C_FLAGS=-m32', '-DCMAKE_CXX_FLAGS=-m32', '-DCMAKE_LIBRARY_PATH=/usr/lib32;usr/lib/i386-linux-gnu'],
- ['--', '-j', '2'],
- './de-internal-tests'
- ),
- Config(
- "linux64-gcc-debug",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "linux64-gcc-debug"),
- ['-DDEQP_TARGET=no_modules', '-DCMAKE_BUILD_TYPE=Debug', '-DCMAKE_C_FLAGS=-m64', '-DCMAKE_CXX_FLAGS=-m64'],
- ['--', '-j', '2'],
- './de-internal-tests'
- ),
- Config(
- "linux64-gcc-release",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "linux64-gcc-release"),
- ['-DDEQP_TARGET=no_modules', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_C_FLAGS=-m64', '-DCMAKE_CXX_FLAGS=-m64'],
- ['--', '-j', '2'],
- './de-internal-tests'
- ),
- # Clang configs
- Config(
- "linux32-clang-debug",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "linux32-clang-debug"),
- ['-DDEQP_TARGET=no_modules', '-DCMAKE_BUILD_TYPE=Debug', '-DCMAKE_C_FLAGS=-m32', '-DCMAKE_CXX_FLAGS=-m32', '-DCMAKE_LIBRARY_PATH=/usr/lib32;usr/lib/i386-linux-gnu', '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', '-DDE_COMPILER=DE_COMPILER_CLANG'],
- ['--', '-j', '2'],
- './de-internal-tests'
- ),
- Config(
- "linux32-clang-release",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "linux32-clang-release"),
- ['-DDEQP_TARGET=no_modules', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_C_FLAGS=-m32', '-DCMAKE_CXX_FLAGS=-m32', '-DCMAKE_LIBRARY_PATH=/usr/lib32;usr/lib/i386-linux-gnu', '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', '-DDE_COMPILER=DE_COMPILER_CLANG'],
- ['--', '-j', '2'],
- './de-internal-tests'
- ),
- Config(
- "linux64-clang-debug",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "linux64-clang-debug"),
- ['-DDEQP_TARGET=no_modules', '-DCMAKE_BUILD_TYPE=Debug', '-DCMAKE_C_FLAGS=-m64', '-DCMAKE_CXX_FLAGS=-m64', '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', '-DDE_COMPILER=DE_COMPILER_CLANG'],
- ['--', '-j', '2'],
- './de-internal-tests'
- ),
- Config(
- "linux64-clang-release",
- SRC_PATH,
- os.path.join(BASE_BUILD_PATH, "linux64-clang-release"),
- ['-DDEQP_TARGET=no_modules', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_C_FLAGS=-m64', '-DCMAKE_CXX_FLAGS=-m64', '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', '-DDE_COMPILER=DE_COMPILER_CLANG'],
- ['--', '-j', '2'],
- './de-internal-tests'
- )
- ]
- def findConfig (name):
- for config in CONFIGS:
- if config.name == name:
- return config
- return None
- if __name__ == "__main__":
- if len(sys.argv) != 2:
- die("%s: [config]" % sys.argv[0])
- config = findConfig(sys.argv[1])
- if config == None:
- die("Config '%s' not found" % sys.argv[1])
- random.seed()
- runInternalTests(config)