|
This is small follow up exercise where we will use embedded triggers.
These are trigger expression embedded within the scripts.
Whilst the expression is not true, then job will hold
Add/amend the t2.ecf
%include <head.h> ecflow_client --wait="t1 == complete" %include <tail.h> |
# Definition of the suite test. suite test edit ECF_INCLUDE "$HOME/course" # replace '$HOME' with the path to your home directory edit ECF_HOME "$HOME/course" family f1 edit SLEEP 20 task t1 task t2 endfamily endsuite |
The trigger expression can be checked, this is especially important when dealing with very large suites and complex triggers.
import os from ecflow import Defs,Suite,Family,Task,Edit,Trigger def create_family_f1(): return Family("f1", Edit(SLEEP=20), Task("t1"), Task("t2")) print("Creating suite definition") home = os.path.join(os.getenv("HOME"), "course") defs = Defs( Suite("test", Edit(ECF_INCLUDE=home,ECF_HOME=home), create_family_f1())) print(defs) print("check trigger expressions") check = defs.check() assert len(check) == 0, check print("Checking job creation: .ecf -> .job0") print(defs.check_job_creation()) print("Saving definition to file 'test.def'") defs.save_as_defs("test.def") |
Introduce an error in the wait expression and ensure that abort the job
ecflow_client --wait="txx == complete" # there is no node with name tax, this should abort the task |
Introduce an impossible expression, what is the effect.
ecflow_client --wait="1 == 0" # this expression will never be satisfied. |
|