lh-l4v/run_tests

103 lines
2.6 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env python
2014-07-14 19:32:44 +00:00
#
#
# Copyright 2017, CSIRO
2014-07-14 19:32:44 +00:00
#
# This software may be distributed and modified according to the terms of
# the BSD 2-Clause license. Note that NO WARRANTY is provided.
# See "LICENSE_BSD2.txt" for details.
#
# @TAG(NICTA_BSD)
#
import os
import sys
# Settings
L4V_ARCH_DEFAULT="ARM"
L4V_ARCH_LIST=["ARM","ARM_HYP","X64","RISCV64"]
2014-07-14 19:32:44 +00:00
# Fetch directory this script is stored in.
DIR=os.path.dirname(os.path.realpath(__file__))
2014-07-14 19:32:44 +00:00
# Add repo version of Isabelle to our path.
os.environ["PATH"] += os.pathsep + DIR
2014-07-14 19:32:44 +00:00
# Export L4V_ARCH variable as ARM (Default)
if not os.environ.has_key("L4V_ARCH"):
os.environ["L4V_ARCH"] = L4V_ARCH_DEFAULT
2014-07-14 19:32:44 +00:00
L4V_ARCH=os.environ["L4V_ARCH"]
# Test Orphanage when L4V_ARCH=ARM;
# we need to set this flag here to test the above equality in the ROOT file.
# To be removed when we finish proving Orphanage for ARM_HYP and X64
if L4V_ARCH == "ARM":
os.environ["L4V_ARCH_IS_ARM"]= L4V_ARCH
print "Testing Orphanage for ARM"
# Check we are using a known Architecture
if L4V_ARCH not in L4V_ARCH_LIST:
sys.exit("Unknown architecture L4V_ARCH=%s" % L4V_ARCH)
print "Testing for L4V_ARCH=%s:" % L4V_ARCH
2017-04-28 10:17:36 +00:00
# enable timing logs in isabelle builds and set report interval to 3 seconds
os.environ["ISABELLE_TIMING_LOG"]="3.0s"
# Enable quick_and_dirty mode for various images
if os.environ.has_key("QUICK_AND_DIRTY"):
os.environ["AINVS_QUICK_AND_DIRTY"]=1
os.environ["REFINE_QUICK_AND_DIRTY"]=1
os.environ["CREFINE_QUICK_AND_DIRTY"]=1
print "Testing with QUICK_AND_DIRTY"
# Lists of excluded tests for diferent archs
EXCLUDE={}
EXCLUDE["ARM_HYP"]=[
"Access",
"Bisim",
"DRefine",
"SimplExportAndRefine"]
EXCLUDE["ARM"]=[]
2017-08-09 07:17:11 +00:00
EXCLUDE["X64"]=[
2017-08-09 07:10:06 +00:00
"Access",
"AutoCorresSEL4",
2017-08-09 07:10:06 +00:00
"Bisim",
"CamkesDarpaReport",
"CamkesGlueProofs",
"DBaseRefine",
"DSpec",
"SepTacticsExamples",
"SimplExportAndRefine",
"AsmRefine"]
2017-08-09 07:10:06 +00:00
EXCLUDE["RISCV64"]=[
"ASpec",
"DSpec",
"c-kernel",
"CKernel",
"CSpec",
"CamkesDarpaReport",
"CamkesGlueProofs",
"AsmRefine"
]
# Check EXCLUDE is exhaustive over the available architectures
if not set(L4V_ARCH_LIST) <= set(EXCLUDE.keys()):
sys.exit("[INTERNAL ERROR] exclusion lists are non-exhaustive")
2017-04-28 10:17:36 +00:00
2014-07-14 19:32:44 +00:00
# Run the tests from the script directory.
os.chdir(DIR)
# Arguments:
args = ['./misc/regression/run_tests.py'] # Script name
args += [r for t in EXCLUDE[L4V_ARCH] for r in ['-r', t]] # Exclusion list
args += sys.argv[1:] # Other arguments
# Run the thing!!
os.execvp('./misc/regression/run_tests.py',args)