Skip to content
This repository was archived by the owner on Aug 14, 2025. It is now read-only.
Merged
4 changes: 4 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ jobs:
- name: "CalculiX adapter [PETSc] [Job failure permitted]"

include:
- stage: Testing trigger
name: "dealii test"
script: python trigger_systemtests.py --adapter dealii --wait

- stage: Building preCICE
name: "Arch Linux"
if: fork = false
Expand Down
47 changes: 31 additions & 16 deletions trigger_systemtests.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@
"dealii": adapter_info('dealii-adapter', ['dealii-of'], 'Ubuntu1604.home'),
"fenics": adapter_info('fenics-adapter', ['fe-fe'], 'Ubuntu1804.home')}

class msg_color:
green = "\033[92m"
bold = "\033[1m"
end = "\033[0m"


def get_json_response(url, **kwargs):

headers = {
Expand Down Expand Up @@ -121,15 +127,15 @@ def generate_travis_job(adapter, user, trigger_failure = True):
"name": "[{BASE}] {TESTNAME} <-> {TESTNAME}",
# force docker-compose to consider an image with a particular tag
"script": "export ${adapter_tag}={tag}; ".format(adapter_tag = adapter.upper() + "_TAG", tag = determine_image_tag()) \
+ main_test_script,
"after_success": "python push.py -s -t {TEST}",
+ main_test_script + "; " + \
"python push.py -t {TEST}",
"after_failure": after_failure_action
};

job_body={
"request": {
"message": "{} systemtests".format(adapter),
"branch": "master",
"message": "{} systemtest".format(adapter),
"branch": "develop",
"config": {
# we need to use 'replace' to replace .travis.yml,
# that is originally present in the repo
Expand Down Expand Up @@ -157,7 +163,7 @@ def generate_travis_job(adapter, user, trigger_failure = True):
ADAPTER=adapter, BASE=base)
jobs.append(job)

job_body["request"]["message"] = "{} systemtest. Triggered by:{}".format(adapter, triggered_by)
job_body["request"]["message"] = "{} systemtest. Triggered by: {}".format(adapter, triggered_by)
job_body["request"]["config"]["jobs"]["include"] = jobs;

return job_body
Expand Down Expand Up @@ -203,33 +209,42 @@ def trigger_travis_and_wait_and_respond(job_body, user, repo):
# it case request is being processes slow for whatever reasons
# (e.g) multiple requests were triggered, we don't yet have
# info about job_id, so we'll wait until we have it
print ("Request pending..")
print("Request pending...", flush=True)
while request_info.get('state') == 'pending':
# for ther reference in case of failures
print ("Current request status is {}".format(request_info['state']))
print("Current request status is '{}'.".format(request_info['state']), flush=True)
request_info = query_request_info(user, repo, request_id)
time.sleep(60)
time.sleep(20)

if request_info["result"] != "approved":
raise Exception("Systemtest build request did not get approved")
raise Exception("Systemtest build request did not get approved.")

build_id = request_info['builds'][0]['id']
build_number = request_info['builds'][0]['number']
print("\nRequest approved!\n" +
"Assigned build on 'systemtests': {}\n\n".format(build_number))
print(msg_color.green +
"###############################\n" +
"Request approved!\n" +
"Assigned build number on 'systemtests': {}\n\n".format(build_number) +
"Link to build page:\n" +
"https://travis-ci.org/github/precice/systemtests/builds/{}\n".format(build_id) +
"###############################\n" +
msg_color.end)
job_status = ''
success_status = ["passed", "canceled"]
failed_status = ["errored", "failed"]

print ("Job started..")
print("Job started!", flush=True)
while not job_status in (success_status + failed_status):
time.sleep(20)
job_status = check_job_status(build_id)
print ("Current job status is {}. Be patient...".format(job_status))
time.sleep(60)
print("Current job status is '{}'. Please wait...".format(job_status), flush=True)

if job_status in success_status:
print("Systemtest succeeded!")
exit(0)
else:
print("Systemtest failed!\n" +
"For more information, view the associated systemtest build.\n")
exit(1)


Expand All @@ -242,8 +257,8 @@ def generate_failure_callback():

callback_body={
"request": {
"message": "Systemtests failed. Build url:{}".format(triggered_by),
"branch": "master",
"message": "Systemtests failed! Build url: {}".format(triggered_by),
"branch": "develop",
"config": {
"merge_mode": "replace",
"sudo": "true",
Expand Down