Skip to content

Commit

Permalink
run tests on Kasli
Browse files Browse the repository at this point in the history
  • Loading branch information
sbourdeauducq committed Aug 11, 2018
1 parent 00ce4bf commit 0eded5c
Showing 1 changed file with 70 additions and 36 deletions.
106 changes: 70 additions & 36 deletions master.cfg
Expand Up @@ -219,7 +219,7 @@ def addCondaSetupTestEnvironmentSteps(factory, packages=['python'],
[conda_lock.access('exclusive')]))

def addCondaInstallSteps(factory, packages=[],
update_deps=False, use_local=True):
update_deps=False, use_local=True, **kwargs):
packages_display = [re.sub("=.*", "", package) for package in packages]
factory.addStep(
ShellCommand(
Expand All @@ -234,7 +234,8 @@ def addCondaInstallSteps(factory, packages=[],
haltOnFailure = True,
env = condaEnv(use_local=True),
locks = default_locks +
[conda_lock.access('exclusive')]))
[conda_lock.access('exclusive')],
**kwargs))

def addCondaTeardownTestEnvironmentSteps(factory):
factory.addStep(
Expand All @@ -252,7 +253,7 @@ def addCondaTeardownTestEnvironmentSteps(factory):
[conda_lock.access('exclusive')]))

def addPythonUnittestSteps(factory, locks=default_locks,
extra_vars={}, test_path='.', warn_only=False):
extra_vars={}, test_path='.', warn_only=False, **kwargs):
factory.addStep(
ShellCommand(
name = 'python_unittest',
Expand All @@ -265,7 +266,8 @@ def addPythonUnittestSteps(factory, locks=default_locks,
warnOnFailure = warn_only,
env = condaEnv(use_local=True,
extra_vars=extra_vars),
locks = locks))
locks = locks,
**kwargs))

def addLitSteps(factory, test_path, extra_vars={}):
factory.addStep(
Expand Down Expand Up @@ -345,13 +347,27 @@ def addSFTPUploadSteps(factory, source_path, target_host,
target_path = target_path,
locks = default_locks))

def addARTIQFlashSteps(factory, board, domain, options=[]):
def addARTIQFlashSteps(factory, target, variant, board, domain, options=[]):
address = '{}.{}'.format(board, domain)
options = ['-I', 'source /var/lib/artiq/boards/{}'.format(board)] + options

factory.addStep(
ShellCommand(
name = 'artiq_flash',
doStepIf = lambda step: step.getProperty("branch") != "release-3",
command = ['artiq_flash', '-t', target, '-V', variant] + options,
description = 'flashing',
descriptionDone = 'flash',
haltOnFailure = True,
env = condaEnv(use_local=True),
locks = default_locks))

# This only flashes the default target/variant, which is kc705/nist_clock
# for release-3.
factory.addStep(
ShellCommand(
name = 'artiq_flash_legacy',
doStepIf = lambda step: step.getProperty("branch") == "release-3" and target == "kc705",
command = ['artiq_flash'] + options,
description = 'flashing',
descriptionDone = 'flash',
Expand All @@ -362,7 +378,8 @@ def addARTIQFlashSteps(factory, board, domain, options=[]):
factory.addStep(
SleepStep(
delay = 10.0,
locks = default_locks))
locks = default_locks,
doStepIf = lambda step: step.getProperty("branch") != "release-3" or target == "kc705"))

factory.addStep(
MasterShellCommand(
Expand All @@ -371,7 +388,8 @@ def addARTIQFlashSteps(factory, board, domain, options=[]):
description = ['pinging', address],
descriptionDone = ['ping', address],
haltOnFailure = True,
locks = default_locks))
locks = default_locks,
doStepIf = lambda step: step.getProperty("branch") != "release-3" or target == "kc705"))

factory.addStep(
ShellCommand(
Expand All @@ -388,7 +406,7 @@ def addARTIQFlashSteps(factory, board, domain, options=[]):
factory.addStep(
ShellCommand(
name = 'set_log_level_legacy',
doStepIf = lambda step: step.getProperty("branch") == "release-3",
doStepIf = lambda step: step.getProperty("branch") == "release-3" and target == "kc705",
command = ['artiq_corelog', 'set_level', 'INFO'],
description = ['setting', 'log level'],
descriptionDone = ['set', 'log level'],
Expand All @@ -397,21 +415,23 @@ def addARTIQFlashSteps(factory, board, domain, options=[]):
workdir = 'build/artiq/examples/master',
locks = default_locks))

def addFlockAcquireSteps(factory, board):
def addFlockAcquireSteps(factory, board, **kwargs):
factory.addStep(
FlockStep(
name = 'board_lock',
filename = '/var/lib/artiq/boards/{}'.format(board),
haltOnFailure = True,
locks = default_locks))
locks = default_locks,
**kwargs))

def addFlockReleaseSteps(factory, board):
def addFlockReleaseSteps(factory, board, **kwargs):
factory.addStep(
FunlockStep(
name = 'board_unlock',
filename = '/var/lib/artiq/boards/{}'.format(board),
hideStepIf = lambda result, step: result == SKIPPED,
locks = default_locks))
locks = default_locks,
**kwargs))

def addTriggerSteps(factory, builder_names, alwaysUseLatest,
waitForFinish=False, **kwargs):
Expand Down Expand Up @@ -491,10 +511,6 @@ c['builders'].append(

####### ARTIQ

test_board = 'kc705-1'
test_target = 'kc705'
test_variant = 'nist_clock'

#------ artiq

artiqBuildFactory = BuildFactory()
Expand Down Expand Up @@ -553,26 +569,44 @@ addTriggerSteps(artiqBuildFactory,
doStepIf=lambda step: step.getProperty("branch") != "release-3")

# Test ARTIQ with hardware in the loop
addCondaInstallSteps(artiqBuildFactory,
packages=["artiq-" + test_target + "-" + test_variant + "=%(output_version)s"])
addFlockAcquireSteps(artiqBuildFactory,
board=test_board)
addARTIQFlashSteps(artiqBuildFactory,
board=test_board,
domain='lab.m-labs.hk')
addPythonUnittestSteps(artiqBuildFactory,
test_path='artiq/test/coredevice',
locks=[low_latency_lock.access('exclusive')],
extra_vars={ 'ARTIQ_LOW_LATENCY': '1', 'ARTIQ_ROOT': 'artiq/examples/master' })
# Test ARTIQ on Windows with hardware in the loop
addTriggerSteps(artiqBuildFactory,
builder_names=['artiq-win64-test'],
alwaysUseLatest=False,
waitForFinish=True,
set_properties={'package': WithProperties('%(output_name)s'),
'conda_version': WithProperties('%(output_version)s=%(output_build)s')})
addFlockReleaseSteps(artiqBuildFactory,
board=test_board)
for target, variant, root in [
("kasli", "tester", "kasli_tester"),
("kc705", "nist_clock", "master")]: # "master" for release-3 compat

test_board = target + "-1"
if target == "kasli":
doStepIf = lambda step: step.getProperty("branch") != "release-3"
else:
doStepIf = lambda step: True

addCondaInstallSteps(artiqBuildFactory,
packages=["artiq-" + target + "-" + variant + "=%(output_version)s"],
doStepIf=doStepIf)
addFlockAcquireSteps(artiqBuildFactory,
board=test_board,
doStepIf=doStepIf)
addARTIQFlashSteps(artiqBuildFactory,
target=target,
variant=variant,
board=test_board,
domain='lab.m-labs.hk')
addPythonUnittestSteps(artiqBuildFactory,
test_path='artiq/test/coredevice',
locks=[low_latency_lock.access('exclusive')],
extra_vars={ 'ARTIQ_LOW_LATENCY': '1', 'ARTIQ_ROOT': 'artiq/examples/' + root },
doStepIf=doStepIf)
# Run Windows tests on one board only, as Windows- and board-specific failures are unlikely.
# Use KC705 for release-3 compat
if target == "kc705":
addTriggerSteps(artiqBuildFactory,
builder_names=['artiq-win64-test'],
alwaysUseLatest=False,
waitForFinish=True,
set_properties={'package': WithProperties('%(output_name)s'),
'conda_version': WithProperties('%(output_version)s=%(output_build)s')})
addFlockReleaseSteps(artiqBuildFactory,
board=test_board,
doStepIf=doStepIf)

# Teardown
addCondaTeardownTestEnvironmentSteps(artiqBuildFactory)
Expand Down

0 comments on commit 0eded5c

Please sign in to comment.