Split clients to have preamble,run,postamble
3 files added
1 files modified
| | |
| | | <stax> |
| | | |
| | | <defaultcall function="tasks"/> |
| | | |
| | | |
| | | |
| | | <!-- ************************************************************ --> |
| | | <function name="tasks" scope="local"> |
| | | |
| | | <!-- Client is automatically called by the scheduler and must --> |
| | | <!-- always define all the parameters below --> |
| | | <function name="tasks"> |
| | | <function-map-args> |
| | | <function-arg-def name="workingDir" type="required"/> |
| | | <function-arg-def name="client" type="required"/> |
| | | <function-arg-def name="instances" type="required"/> |
| | | <function-arg-def name="duration" type="required"/> |
| | |
| | | <function-arg-def name="fileFd" type="required"/> |
| | | </function-map-args> |
| | | |
| | | |
| | | <sequence> |
| | | <!-- =================== Comments =================== --> |
| | | <!-- client is run under paralleliterate tag --> |
| | |
| | | msg = '' |
| | | </script> |
| | | |
| | | <!-- ================== Preamble =================== --> |
| | | <!-- ================== Parser =================== --> |
| | | <!-- parse the client parameters : --> |
| | | <!-- params is [[param1,val1],[param2,val2],...] --> |
| | | <!-- get the ldap instance parameters --> |
| | | <import machine="'%s' % (client.getHost())" |
| | | file="'%s/%sLib.xml' % (client.getPath(),client.getName())"/> |
| | | <call function="'%sParser' % client.getName()"> |
| | | { |
| | | 'client' : client, |
| | | 'instances' : instances, |
| | | 'duration' : duration, |
| | | 'suffix' : suffix |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | compilDir = '%s/%s_%s' % (workingDir,client.getHost(),client.getId()) |
| | | |
| | | outFile = '%s/client_tasks_id%s.txt' % \ |
| | | (client.getLogDir(),client.getId()) |
| | | |
| | | # |
| | | # Extract client parameters from client.getParams() |
| | | # |
| | | cParams = client.getParams() |
| | | try: |
| | | serverInstanceFromClient = cParams[0][1] |
| | | except IndexError: |
| | | serverInstanceFromClient = NOT_DEFINED |
| | | msg = '%s\nERROR: serverInstanceFromClient undefined,mandatory' % msg |
| | | try: |
| | | nbTasks = cParams[1][1] |
| | | except IndexError: |
| | | nbTasks = NOT_DEFINED |
| | | msg = '%s\nERROR: nbTasks undefined,mandatory' % msg |
| | | try: |
| | | delaySec = cParams[2][1] |
| | | except IndexError: |
| | | delaySec = NOT_DEFINED |
| | | msg = '%s\nERROR: delaySec undefined,mandatory' % msg |
| | | |
| | | # |
| | | # setup parms to run the client |
| | | # |
| | | if serverInstanceFromClient != NOT_DEFINED: |
| | | sys.path.append("%s/phases/scheduler" % TESTS_DIR ) |
| | | from scheduler import getInstance |
| | | serverInstance = getInstance(serverInstanceFromClient,instances) |
| | | if (serverInstance == 'ERROR'): |
| | | msg = '%s\nERROR: cant find client instance named' % msg |
| | | msg = '%s %s in server instance list' % \ |
| | | (msg,serverInstanceFromClient) |
| | | |
| | | else: |
| | | # remove sec, try to finish before timer kill -9 the client |
| | | duration = duration - 60 |
| | | </script> |
| | | |
| | | <call function="'writeMessage'"> |
| | | {'content' : 'Executing backup in tasks mode every %s secondes' % delaySec, |
| | | 'fileFd' : fileFd} |
| | | </call> |
| | | |
| | | <if expr="msg.find('ERROR') != -1"> |
| | | <sequence> |
| | | <message>'%s' % msg</message> |
| | |
| | | </sequence> |
| | | <else> |
| | | <sequence> |
| | | <!-- ========== Run the client ========== --> |
| | | <call function="'writeStartTagOperation'"> |
| | | { 'tagName' : 'Backup task', |
| | | { 'tagName' : 'run', |
| | | 'fileFd' : fileFd } |
| | | </call> |
| | | |
| | | |
| | | <script> |
| | | cpt=0 |
| | | intdelaySec= int(delaySec) |
| | |
| | | 'backEnd' : 'userRoot', |
| | | 'fileFd' : fileFd} |
| | | </call> |
| | | |
| | | |
| | | <script> |
| | | BackupFolder = '%s/backup_schedule_asynchronous_%s' % (serverInstance.getInstallDir(),cpt) |
| | |
| | | </call> |
| | | |
| | | <call function="'writeEndTagOperation'">{'fileFd' : fileFd}</call> |
| | | |
| | | |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | | |
| | | <return> errNum </return> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | </function> |
| | | |
| | | |
| | | </stax> |
| | | |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2008 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="tasksParser"/> |
| | | |
| | | |
| | | <!-- ************************************************************ --> |
| | | <!-- Client Parser --> |
| | | <!-- This function must NOT have scope=local has its variables may --> |
| | | <!-- be used by the caller --> |
| | | <function name="tasksParser"> |
| | | <function-map-args> |
| | | <function-arg-def name="client" type="required"/> |
| | | <function-arg-def name="instances" type="required"/> |
| | | <function-arg-def name="duration" type="required"/> |
| | | <function-arg-def name="suffix" type="required"/> |
| | | </function-map-args> |
| | | |
| | | <sequence> |
| | | <script> |
| | | compilDir = '%s/%s_%s' % (client.getPath(),client.getHost(),client.getId()) |
| | | |
| | | |
| | | # |
| | | # Extract client parameters from client.getParams() |
| | | # |
| | | cParams = client.getParams() |
| | | try: |
| | | serverInstanceFromClient = cParams[0][1] |
| | | except IndexError: |
| | | serverInstanceFromClient = NOT_DEFINED |
| | | msg = '%s\nERROR: serverInstanceFromClient undefined,mandatory' % msg |
| | | try: |
| | | nbTasks = cParams[1][1] |
| | | except IndexError: |
| | | nbTasks = NOT_DEFINED |
| | | msg = '%s\nERROR: nbTasks undefined,mandatory' % msg |
| | | try: |
| | | delaySec = cParams[2][1] |
| | | except IndexError: |
| | | delaySec = NOT_DEFINED |
| | | msg = '%s\nERROR: delaySec undefined,mandatory' % msg |
| | | |
| | | # |
| | | # setup parms to run the client |
| | | # |
| | | if serverInstanceFromClient != NOT_DEFINED: |
| | | sys.path.append("%s/phases/scheduler" % TESTS_DIR ) |
| | | from scheduler import getInstance |
| | | serverInstance = getInstance(serverInstanceFromClient,instances) |
| | | if (serverInstance == 'ERROR'): |
| | | msg = '%s\nERROR: cant find client instance named' % msg |
| | | msg = '%s %s in server instance list' % \ |
| | | (msg,serverInstanceFromClient) |
| | | |
| | | else: |
| | | # remove sec, try to finish before timer kill -9 the client |
| | | duration = duration - 60 |
| | | </script> |
| | | |
| | | </sequence> |
| | | </function> |
| | | |
| | | </stax> |
| | | |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2008 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="tasksPostamble"/> |
| | | |
| | | <!-- ************************************************************ --> |
| | | <!-- Client postamble is automatically called by the scheduler --> |
| | | <!-- and must always define all the parameters below --> |
| | | <function name="tasksPostamble" scope="local"> |
| | | <function-map-args> |
| | | <function-arg-def name="client" type="required"/> |
| | | <function-arg-def name="instances" type="required"/> |
| | | <function-arg-def name="duration" type="required"/> |
| | | <function-arg-def name="suffix" type="required"/> |
| | | <function-arg-def name="outFile" type="required"/> |
| | | <function-arg-def name="fileFd" type="required"/> |
| | | </function-map-args> |
| | | |
| | | <sequence> |
| | | <!-- =================== Comments =================== --> |
| | | <!-- client is run under paralleliterate tag --> |
| | | <!-- each variables defined are internal --> |
| | | <!-- client should have its own err_num variable in order --> |
| | | <!-- to inform scheduler if it has pass/fail status --> |
| | | <script> |
| | | errNum = 0 |
| | | msg = '' |
| | | </script> |
| | | <!-- ================== Parser =================== --> |
| | | <!-- parse the client parameters : --> |
| | | <!-- params is [[param1,val1],[param2,val2],...] --> |
| | | <!-- get the ldap instance parameters --> |
| | | <import machine="'%s' % (STAF_LOCAL_HOSTNAME)" |
| | | file="'%s/%sLib.xml' % (client.getPath(),client.getName())"/> |
| | | <call function="'%sParser' % client.getName()"> |
| | | { |
| | | 'client' : client, |
| | | 'instances' : instances, |
| | | 'duration' : duration, |
| | | 'suffix' : suffix |
| | | } |
| | | </call> |
| | | <if expr="msg.find('ERROR') != -1"> |
| | | <sequence> |
| | | <message>'%s' % msg</message> |
| | | <call function="'writeOperationResult'"> |
| | | { |
| | | 'returncode' : '1', |
| | | 'expected' : '0', |
| | | 'result' : msg, |
| | | 'status' : 'ERROR', |
| | | 'fileFd' : fileFd |
| | | } |
| | | </call> |
| | | <script> |
| | | errNum += 1 |
| | | </script> |
| | | </sequence> |
| | | <else> |
| | | <sequence> |
| | | <process name="'%s:%s: Grep' % (client.getHost(),client.getName())"> |
| | | <location>client.getHost()</location> |
| | | <command mode="'shell'"> |
| | | "grep -v 'ERROR' %s" % outFile |
| | | </command> |
| | | <envs>['PATH=/bin:/usr/bin']</envs> |
| | | <stderr mode="'stdout'"/> |
| | | <stdout/> |
| | | <returnstdout/> |
| | | </process> |
| | | <script> |
| | | summary = STAXResult[0][1] |
| | | </script> |
| | | <call function="'writeMessage'"> |
| | | {'content' : 'Summary %s' % (summary), |
| | | 'fileFd' : fileFd} |
| | | </call> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | | |
| | | <return> errNum </return> |
| | | |
| | | </sequence> |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2008 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="tasksPreamble"/> |
| | | |
| | | <!-- ************************************************************ --> |
| | | <!-- Client preamble is automatically called by the scheduler --> |
| | | <!-- and must always define all the parameters below --> |
| | | <function name="tasksPreamble" scope="local"> |
| | | <function-map-args> |
| | | <function-arg-def name="client" type="required"/> |
| | | <function-arg-def name="instances" type="required"/> |
| | | <function-arg-def name="duration" type="required"/> |
| | | <function-arg-def name="suffix" type="required"/> |
| | | <function-arg-def name="outFile" type="required"/> |
| | | <function-arg-def name="fileFd" type="required"/> |
| | | </function-map-args> |
| | | |
| | | <sequence> |
| | | <!-- =================== Comments =================== --> |
| | | <!-- client is run under paralleliterate tag --> |
| | | <!-- each variables defined are internal --> |
| | | <!-- client should have its own err_num variable in order --> |
| | | <!-- to inform scheduler if it has pass/fail status --> |
| | | <script> |
| | | errNum = 0 |
| | | msg = '' |
| | | </script> |
| | | <!-- ================== Parser =================== --> |
| | | <!-- parse the client parameters : --> |
| | | <!-- params is [[param1,val1],[param2,val2],...] --> |
| | | <!-- get the ldap instance parameters --> |
| | | <import machine="'%s' % (STAF_LOCAL_HOSTNAME)" |
| | | file="'%s/%sLib.xml' % (client.getPath(),client.getName())"/> |
| | | <call function="'%sParser' % client.getName()"> |
| | | { |
| | | 'client' : client, |
| | | 'instances' : instances, |
| | | 'duration' : duration, |
| | | 'suffix' : suffix |
| | | } |
| | | </call> |
| | | <if expr="msg.find('ERROR') != -1"> |
| | | <sequence> |
| | | <message>'%s' % msg</message> |
| | | <call function="'writeOperationResult'"> |
| | | { |
| | | 'returncode' : '1', |
| | | 'expected' : '0', |
| | | 'result' : msg, |
| | | 'status' : 'ERROR', |
| | | 'fileFd' : fileFd |
| | | } |
| | | </call> |
| | | <script> |
| | | errNum += 1 |
| | | </script> |
| | | </sequence> |
| | | </if> |
| | | |
| | | <return> errNum </return> |
| | | |
| | | </sequence> |
| | | </function> |
| | | |
| | | </stax> |