| <?xml version="1.0" encoding="UTF-8"?> |
| <resource-manager-builder xmlns="http://org.eclipse.ptp/rm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="resource_manager_type.xsd" name="test-parsers"> |
| <control-data> |
| <!-- EXAMPLE 1: output is a list of line-separated queue names to be assigned |
| to the known property "available-queues" --> |
| <start-up-command name="test00ParseQstat"> |
| <arg/> |
| <stdout-parser delim="\n"> |
| <target ref="available_queues"> |
| <match> |
| <expression>[^\s]+</expression> |
| <!-- <append field="value" separator=","> --> |
| <!-- <entry valueGroup="0"/> --> |
| <!-- </append> --> |
| <add field="value"> |
| <entry valueGroup="0"/> |
| </add> |
| </match> |
| </target> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 2: output is to be searched for its final line which should |
| contain a job id of the form "[digits].[chars]" --> |
| <start-up-command name="test01JobId"> |
| <arg/> |
| <stdout-parser delim="\n" all="true" save="1"> |
| <target ref="@jobId"> |
| <match> |
| <expression>([\d]*)[.].*</expression> |
| <set field="value"> |
| <entry valueGroup="1"/> |
| </set> |
| </match> |
| </target> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 3: indeterminate number and order of lines containing parts |
| of attribute definitions, but each line bearing a distinct |
| id (e.g., openMPI attribute discovery) --> |
| <start-up-command name="test02OpenMPI"> |
| <arg/> |
| <stdout-parser delim="\n"> |
| <target type="attribute"> |
| <match> |
| <expression>mca:.*:param:([^:]*):value:(.*)</expression> |
| <set field="name"> |
| <entry valueGroup="1"/> |
| </set> |
| <set field="visible"> |
| <entry value="true"/> |
| </set> |
| <set field="value"> |
| <entry valueGroup="2"/> |
| </set> |
| </match> |
| <match> |
| <expression>mca:.*:param:([^:]*):status:(.*)</expression> |
| <set field="status"> |
| <entry valueGroup="2"/> |
| </set> |
| </match> |
| <match> |
| <expression>mca:.*:param:([^:]*):help:(.*)</expression> |
| <set field="tooltip"> |
| <entry valueGroup="2"/> |
| </set> |
| </match> |
| <test op="EQ"> |
| <value>#status</value> |
| <value>read-only</value> |
| <set field="readOnly"> |
| <entry value="true"/> |
| </set> |
| <else> |
| <set field="readOnly"> |
| <entry value="false"/> |
| </set> |
| </else> |
| </test> |
| </target> |
| <target type="attribute"> |
| <match> |
| <expression>(.*):([^:]*)</expression> |
| <set field="name"> |
| <entry valueGroup="1"/> |
| </set> |
| <set field="value"> |
| <entry valueGroup="2"/> |
| </set> |
| <set field="visible"> |
| <entry value="false"/> |
| </set> |
| <set field="readOnly"> |
| <entry value="true"/> |
| </set> |
| </match> |
| </target> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 4: indeterminate number of definitions, but grouped |
| by caption; use of moveToTop to promote the target to the top of the list |
| when the caption appears --> |
| <start-up-command name="test03ImplicitWithTags"> |
| <arg/> |
| <stdout-parser delim="\n"> |
| <target type="property"> |
| <match moveToTop="true"> |
| <expression>PROPERTY</expression> |
| </match> |
| <match> |
| <expression>name:(.*)</expression> |
| <set field="name"> |
| <entry valueGroup="1"/> |
| </set> |
| </match> |
| <match> |
| <expression>value:(.*)</expression> |
| <set field="value"> |
| <entry valueGroup="1"/> |
| </set> |
| </match> |
| </target> |
| <target type="attribute"> |
| <match moveToTop="true"> |
| <expression>ATTRIBUTE</expression> |
| </match> |
| <match> |
| <expression>name:(.*)</expression> |
| <set field="name"> |
| <entry valueGroup="1"/> |
| </set> |
| </match> |
| <match> |
| <expression>value:(.*)</expression> |
| <set field="value"> |
| <entry valueGroup="1"/> |
| </set> |
| </match> |
| </target> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 5: similar to 4, but without delimiter (implicit ordering) --> |
| <start-up-command name="test04ImplicitOrdering"> |
| <arg/> |
| <stdout-parser delim="\n"> |
| <target type="attribute" matchAll="true"> |
| <match> |
| <expression>.+</expression> |
| <set field="name"> |
| <entry valueGroup="0"/> |
| </set> |
| </match> |
| <match> |
| <expression>.*</expression> |
| <set field="type"> |
| <entry valueGroup="0"/> |
| </set> |
| </match> |
| <match> |
| <expression>.*</expression> |
| <set field="description"> |
| <entry valueGroup="0"/> |
| </set> |
| </match> |
| <match> |
| <expression>.*</expression> |
| <set field="tooltip"> |
| <entry valueGroup="0"/> |
| </set> |
| </match> |
| <match> |
| <expression>.*</expression> |
| <set field="value"> |
| <entry valueGroup="0"/> |
| </set> |
| </match> |
| </target> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 6: like 4, but with indeterminate type order and using buffer + DOTALL --> |
| <start-up-command name="test05ImplicitWithTagsDotall"> |
| <arg/> |
| <stdout-parser maxMatchLen="32" applyToAll="true"> |
| <target type="property"> |
| <match> |
| <expression flags="DOTALL">.*PROPERTY[\n]name:(\w*)[\n]value:([\d.-]*).*</expression> |
| <set field="name"> |
| <entry valueGroup="1"/> |
| </set> |
| <set field="value"> |
| <entry valueGroup="2"/> |
| </set> |
| </match> |
| </target> |
| <target type="property"> |
| <match> |
| <expression flags="DOTALL">.*PROPERTY[\n]value:([\d.-]*)[\n]name:(\w*).*</expression> |
| <set field="name"> |
| <entry valueGroup="2"/> |
| </set> |
| <set field="value"> |
| <entry valueGroup="1"/> |
| </set> |
| </match> |
| </target> |
| <target type="attribute"> |
| <match> |
| <expression flags="DOTALL">.*ATTRIBUTE[\n]name:(\w*)[\n]value:([\d.-]*).*</expression> |
| <set field="name"> |
| <entry valueGroup="1"/> |
| </set> |
| <set field="value"> |
| <entry valueGroup="2"/> |
| </set> |
| </match> |
| </target> |
| <target type="attribute"> |
| <match> |
| <expression flags="DOTALL">.*ATTRIBUTE[\n]value:([\d.-]*)[\n]name:(\w*).*</expression> |
| <set field="name"> |
| <entry valueGroup="2"/> |
| </set> |
| <set field="value"> |
| <entry valueGroup="1"/> |
| </set> |
| </match> |
| </target> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 7: indeterminate number of property definitions, but on single line --> |
| <start-up-command name="test06PropertyDefsSingleLine"> |
| <arg/> |
| <stdout-parser delim="\n"> |
| <target type="property"> |
| <match> |
| <expression expression="<name>(.*)</name><value>(.*)</value>"/> |
| <set field="name"> |
| <entry valueGroup="1"/> |
| </set> |
| <set field="value"> |
| <entry valueGroup="2"/> |
| </set> |
| </match> |
| </target> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 8: looking for values interspersed in the stream but which will |
| not exceed 32 chars --> |
| <start-up-command name="test07JobStates"> |
| <arg/> |
| <stdout-parser maxMatchLen="32"> |
| <target ref="jobStates"> |
| <match> |
| <expression flags="DOTALL">.*<job>([\d]*):([\w]*)</job>.*</expression> |
| <put field="value"> |
| <entry keyGroup="1" valueGroup="2"/> |
| </put> |
| </match> |
| </target> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 9: Successive names/values, in order, but staggered --> |
| <start-up-command name="test08Staggered"> |
| <arg/> |
| <stdout-parser delim="\n"> |
| <target type="property"> |
| <match> |
| <expression>name:(.*)</expression> |
| <set field="name"> |
| <entry valueGroup="1"/> |
| </set> |
| </match> |
| <match> |
| <expression>value:(.*)</expression> |
| <set field="value"> |
| <entry valueGroup="1"/> |
| </set> |
| </match> |
| </target> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 10: forced merge --> |
| <start-up-command name="test09Merged"> |
| <arg/> |
| <stdout-parser delim="\n"> |
| <target type="property"> |
| <match> |
| <expression>name:(.+);value:(.+)</expression> |
| <set field="name"> |
| <entry valueGroup="1"/> |
| </set> |
| <set field="value"> |
| <entry valueGroup="2"/> |
| </set> |
| </match> |
| <match> |
| <expression>name:(.+);default:(.+)</expression> |
| <set field="name"> |
| <entry valueGroup="1"/> |
| </set> |
| <set field="default"> |
| <entry valueGroup="2"/> |
| </set> |
| </match> |
| </target> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 11: exit-on --> |
| <start-up-command name="test10ExitOn"> |
| <arg/> |
| <stdout-parser maxMatchLen="32"> |
| <target ref="jobStates"> |
| <match> |
| <expression flags="DOTALL">.*<job>([\d]*):([\w]*)</job>.*</expression> |
| <put field="value"> |
| <entry keyGroup="1" valueGroup="2"/> |
| </put> |
| </match> |
| </target> |
| <exit-on flags="DOTALL">.*EXIT.*</exit-on> |
| </stdout-parser> |
| </start-up-command> |
| <!-- EXAMPLE 12: exit-after --> |
| <start-up-command name="test11ExitAfter"> |
| <arg/> |
| <stdout-parser maxMatchLen="32"> |
| <target ref="jobStates"> |
| <match> |
| <expression flags="DOTALL">.*<job>([\d]*):([\w]*)</job>.*</expression> |
| <put field="value"> |
| <entry keyGroup="1" valueGroup="2"/> |
| </put> |
| </match> |
| </target> |
| <exit-after flags="DOTALL">.*EXIT.*</exit-after> |
| </stdout-parser> |
| </start-up-command> |
| <submit-interactive name="empty"> |
| <arg/> |
| </submit-interactive> |
| <get-job-status name="test12GetStatus"> |
| <arg/> |
| <stdout-parser delim="\n"> |
| <target ref="@jobId"> |
| <match> |
| <expression>.+[\s]+.+[\s]+.+[\s]+.+[\s]+([A-Z])[\s]+.+</expression> |
| <set field="value"> |
| <entry valueGroup="1"/> |
| </set> |
| </match> |
| <test op="EQ"> |
| <value>#value</value> |
| <value>Q</value> |
| <set field="value"> |
| <entry value="QUEUED_ACTIVE"/> |
| </set> |
| </test> |
| <test op="EQ"> |
| <value>#value</value> |
| <value>R</value> |
| <set field="value"> |
| <entry value="RUNNING"/> |
| </set> |
| </test> |
| <test op="EQ"> |
| <value>#value</value> |
| <value>S</value> |
| <set field="value"> |
| <entry value="SUSPENDED"/> |
| </set> |
| </test> |
| <test op="EQ"> |
| <value>#value</value> |
| <value>C</value> |
| <set field="value"> |
| <entry value="COMPLETED"/> |
| </set> |
| </test> |
| <test op="EQ"> |
| <value>#value</value> |
| <value>E</value> |
| <set field="value"> |
| <entry value="COMPLETED"/> |
| </set> |
| </test> |
| <test op="EQ"> |
| <value>#value</value> |
| <value>H</value> |
| <set field="value"> |
| <entry value="SYSTEM_ON_HOLD"/> |
| </set> |
| </test> |
| </target> |
| </stdout-parser> |
| </get-job-status> |
| </control-data> |
| <monitor-data schedulerType="test"> |
| <driver> |
| <name></name> |
| </driver> |
| </monitor-data> |
| </resource-manager-builder> |