Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Python

The trigger expression can be checked,  this is especially important when dealing with very large suites and complex triggers.

Code Block
languagepy
title$HOME/course/test.py
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",Trigger("t1 == complete")))
             
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")
 

What to do

  1. Edit the suite definition file to add the trigger.
  2. Replace the suite
    python:   python test.py ;  python client.py
    text:        ecflow_client --suspend=/test ; ecflow_client --replace=/test  test.def
  3. Observe the tasks in ecflow_ui .
  4. See the triggers by selecting t1 or t2.
  5. See the trigger relation by clicking on the trigger tab.
  6. Search any reference to t1 by using the search menu.
  7. Introduce an error in the trigger expression and ensure that this error is trapped. i.e. change trigger to.

    Code Block
    languagepy
    titleCheck trigger expressions
    Trigger("t == complete")  # there is no node with name t, this should be reported as an error


     

...