mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

smaguin
30.32.2008 e39398018aba01db52cf8d2df110045c61712ee6
Split clients to have preamble,run,postamble
3 files added
1 files modified
635 ■■■■■ changed files
opends/tests/system-tests/scenario/singleServer/clients/secureUserpasswordModify/secureUserpasswordModify.xml 219 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/scenario/singleServer/clients/secureUserpasswordModify/secureUserpasswordModifyLib.xml 136 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/scenario/singleServer/clients/secureUserpasswordModify/secureUserpasswordModifyPostamble.xml 116 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/scenario/singleServer/clients/secureUserpasswordModify/secureUserpasswordModifyPreamble.xml 164 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/scenario/singleServer/clients/secureUserpasswordModify/secureUserpasswordModify.xml
@@ -28,12 +28,13 @@
<stax>
  <defaultcall function="secureUserpasswordModify"/>
  <!-- ************************************************************ -->
  <function name="secureUserpasswordModify" scope="local">
  <!-- Client is automatically called by the scheduler and must     -->
  <!-- always define all the parameters below                       -->
  <function name="secureUserpasswordModify">
    <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"/>
@@ -42,7 +43,6 @@
      <function-arg-def name="fileFd"     type="required"/>
    </function-map-args>
    
    <sequence>
      <!-- ===================   Comments   =================== -->
      <!-- client is run under paralleliterate tag              -->
@@ -54,100 +54,21 @@
        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_secureUserpasswordModify_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:
          baseDn = cParams[1][1]
        except IndexError:
          baseDn = NOT_DEFINED
          msg = '%s\nERROR: baseDn undefined,mandatory' % msg
        try:
          nbCnx = cParams[2][1]
        except IndexError:
          nbCnx = NOT_DEFINED
          msg = '%s\nERROR: nbCnx undefined,mandatory' % msg
        try:
          nbMaxOp = cParams[3][1]
        except IndexError:
          nbMaxOp = NOT_DEFINED
          msg = '%s\nERROR: nbMaxOperations undefined,mandatory' % msg
        try:
          attributeName = cParams[4][1]
        except IndexError:
          attributeName = NOT_DEFINED
        try:
          protocol = cParams[5][1]
        except IndexError:
          protocol = NOT_DEFINED
        try:
          certAlias = cParams[6][1]
        except IndexError:
          certAlias = NOT_DEFINED
        try:
          delaySec = cParams[7][1]
        except IndexError:
          delaySec = NOT_DEFINED
        #
        # 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 - 120
            # keystorePath
            keystorePath = "%s/CERT_%s_%s/config" % (client.getLogDir(),client.getName(),client.getId())
            parms=[]
            if (protocol == 'ssl'):
              parms.append('-Dhostname=%s -Dport=%s' % \
                       (serverInstance.getHost(),serverInstance.getLDAPSPort()))
            else:
              parms.append('-Dhostname=%s -Dport=%s' % \
                       (serverInstance.getHost(),serverInstance.getLDAPPort()))
            parms.append('-Dsuffix="%s"' % baseDn)
            parms.append('-Dnb_threads=%s -DNB_MAX_mod=%s -DmaxDuration=%s' % (nbCnx,nbMaxOp,duration))
            parms.append('-Dprotocol="%s"' % protocol)
            if attributeName != NOT_DEFINED:
              parms.append('-DattributeName="%s"' % attributeName)
            parms.append('-DbindDN="%s"' % DIRECTORY_INSTANCE_DN)
            parms.append('-DbindPW="%s"' % DIRECTORY_INSTANCE_PSWD)
            if delaySec != NOT_DEFINED:
              parms.append('-DdelaySec="%s"' % delaySec)
            parms = ' '.join(parms)
      </script>
      <if expr="msg.find('ERROR') != -1">
        <sequence>
          <message>'%s' % msg</message>
@@ -166,75 +87,6 @@
        </sequence>
      <else>
        <sequence>
          <!-- ==== Add execute permission to build.ksh file ==== -->
          <call function="'writeStartTagOperation'">
          { 'tagName' : 'chmod',
            'fileFd'  : fileFd }
          </call>
          <call function="'writeMessage'">
          {'content' : 'Add execute permission to build.ksh file',
           'fileFd'  : fileFd}
          </call>
          <process name="'%s: chmod +x build.ksh' % client.getHost()">
            <location>client.getHost()</location>
            <command mode="'shell'">'chmod +x build.ksh'</command>
            <parms/>
            <workdir>workingDir</workdir>
            <envs>['PATH=/bin:/usr/bin']</envs>
            <stderr mode="'stdout'"/>
            <stdout/>
            <returnstdout/>
          </process>
          <call function="'checkRC'">
            { 'returncode' : RC,
              'result'     : STAXResult[0][1],
              'fileFd'     : fileFd }
          </call>
          <script>
            errNum += STAXResult
          </script>
          <call function="'writeEndTagOperation'">{'fileFd'  : fileFd}</call>
          <!-- ==== Build client : run build.ksh file ==== -->
          <call function="'writeStartTagOperation'">
          { 'tagName' : 'build',
            'fileFd'  : fileFd }
          </call>
          <!-- Build Client in unique directory (compilDir), avoid          -->
          <!-- conflict if same client is run several time at the same time -->
          <process name="'%s: build %s' % (client.getHost(),client.getName())">
            <location>client.getHost()</location>
            <command mode="'shell'">'./build.ksh'</command>
            <parms/>
            <workdir>workingDir</workdir>
            <envs>['PATH=%s/bin:/bin:/usr/bin' % JAVA_HOME,'COMPILDIR=%s' % compilDir ]</envs>
            <stderr mode="'stdout'"/>
            <stdout/>
            <returnstdout/>
          </process>
          <call function="'checkRC'">
            { 'returncode' : RC,
              'result'     : STAXResult[0][1],
              'fileFd'     : fileFd }
          </call>
          <if expr="RC != 0">
            <message>
              'FAILED to build client %s on %s' % \
              (client.getName(),client.getHost())
            </message>
          </if>
          <script>
            errNum += STAXResult
          </script>
          <call function="'writeEndTagOperation'">{'fileFd'  : fileFd}</call>
          <!-- ========== Run the client ========== -->
          <call function="'writeStartTagOperation'">
          { 'tagName' : 'run',
@@ -242,7 +94,14 @@
          </call>
          <call function="'writeMessage'">
          { 'fileFd'  : fileFd,
            'content' : 'Do ldapmodify on %s:%s' % \
            'content' : 'Do secure or non secure ldapsearchs on %s:%s' % \
                        (serverInstance.getHost(),serverInstance.getLDAPPort())
          }
          </call>
          <call function="'writeMessage'">
          { 'fileFd'  : fileFd,
            'content' : 'Do userpassword modify on %s:%s' % \
                        (serverInstance.getHost(),serverInstance.getLDAPSPort())
          }
          </call>
@@ -271,12 +130,13 @@
            <location>client.getHost()</location>
            <command>'%s/bin/java' % JAVA_HOME</command>
            <parms>cParam </parms>
            <workdir>workingDir</workdir>
            <workdir>client.getPath()</workdir>
            <envs>['PATH=%s/bin:/bin:/usr/bin' % JAVA_HOME]</envs>
            <stderr mode="'stdout'"/>
            <stdout>outFile</stdout>
            <returnstdout/>
          </process>
          <!-- TBD : result should be STAXResult[0][1] : problem when
                     javaexception, with carac " and < >-->
          <call function="'checkRC'">
@@ -289,33 +149,12 @@
          </script>
          <call function="'writeEndTagOperation'">{'fileFd'  : fileFd}</call>
          
          <!-- ========== Postamble ========== -->
          <call function="'writeMessage'">
          {'content' : 'Output file %s' % outFile,
           'xlink'   : outFile,
           'fileFd'  : fileFd}
          </call>
          
          <process name="'%s:%s: Grep' % (client.getHost(),client.getName())">
            <location>client.getHost()</location>
            <command mode="'shell'">
              "grep 'TOTAL' %s | cut -d ' ' -f3-" % 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>
@@ -324,7 +163,5 @@
      
    </sequence>
    
  </function>
  </function>
</stax>
opends/tests/system-tests/scenario/singleServer/clients/secureUserpasswordModify/secureUserpasswordModifyLib.xml
New file
@@ -0,0 +1,136 @@
<?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="secureUserpasswordModifyParser"/>
  <!-- ************************************************************ -->
  <!-- Client Parser -->
  <!-- This function must NOT have scope=local has its variables may -->
  <!-- be used by the caller -->
  <function name="secureUserpasswordModifyParser">
    <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:
          baseDn = cParams[1][1]
        except IndexError:
          baseDn = NOT_DEFINED
          msg = '%s\nERROR: baseDn undefined,mandatory' % msg
        try:
          nbCnx = cParams[2][1]
        except IndexError:
          nbCnx = NOT_DEFINED
          msg = '%s\nERROR: nbCnx undefined,mandatory' % msg
        try:
          nbMaxOp = cParams[3][1]
        except IndexError:
          nbMaxOp = NOT_DEFINED
          msg = '%s\nERROR: nbMaxOperations undefined,mandatory' % msg
        try:
          attributeName = cParams[4][1]
        except IndexError:
          attributeName = NOT_DEFINED
        try:
          protocol = cParams[5][1]
        except IndexError:
          protocol = NOT_DEFINED
        try:
          certAlias = cParams[6][1]
        except IndexError:
          certAlias = NOT_DEFINED
        try:
          delaySec = cParams[7][1]
        except IndexError:
          delaySec = NOT_DEFINED
        #
        # 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 - 20
            # keystorePath
            keystorePath = "%s/CERT_%s_%s/config" % (client.getLogDir(),client.getName(),client.getId())
            parms=[]
            if (protocol == 'ssl'):
              parms.append('-Dhostname=%s -Dport=%s' % \
                       (serverInstance.getHost(),serverInstance.getLDAPSPort()))
            else:
              parms.append('-Dhostname=%s -Dport=%s' % \
                       (serverInstance.getHost(),serverInstance.getLDAPPort()))
            parms.append('-Dsuffix="%s"' % baseDn)
            parms.append('-Dnb_threads=%s -DNB_MAX_mod=%s -DmaxDuration=%s' % (nbCnx,nbMaxOp,duration))
            parms.append('-Dprotocol="%s"' % protocol)
            if attributeName != NOT_DEFINED:
              parms.append('-DattributeName="%s"' % attributeName)
            parms.append('-DbindDN="%s"' % DIRECTORY_INSTANCE_DN)
            parms.append('-DbindPW="%s"' % DIRECTORY_INSTANCE_PSWD)
            if delaySec != NOT_DEFINED:
              parms.append('-DdelaySec="%s"' % delaySec)
            parms = ' '.join(parms)
      </script>
    </sequence>
  </function>
</stax>
opends/tests/system-tests/scenario/singleServer/clients/secureUserpasswordModify/secureUserpasswordModifyPostamble.xml
New file
@@ -0,0 +1,116 @@
<?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="secureUserpasswordModifyPostamble"/>
  <!-- ************************************************************ -->
  <!-- Client postamble is automatically called by the scheduler    -->
  <!-- and must always define all the parameters below              -->
  <function name="secureUserpasswordModifyPostamble" 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 'ERROR' %s " % outFile
            </command>
            <envs>['PATH=/bin:/usr/bin']</envs>
            <stderr mode="'stdout'"/>
            <stdout/>
            <returnstdout/>
          </process>
          <script>
            if RC == 0:
              errNum +=1
            summary = STAXResult[0][1]
          </script>
          <call function="'writeMessage'">
          {'content' : 'Summary %s' % (summary),
           'fileFd'  : fileFd}
          </call>
        </sequence>
      </else>
      </if>
      <return> errNum </return>
    </sequence>
  </function>
</stax>
opends/tests/system-tests/scenario/singleServer/clients/secureUserpasswordModify/secureUserpasswordModifyPreamble.xml
New file
@@ -0,0 +1,164 @@
<?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="secureUserpasswordModifyPreamble"/>
  <!-- ************************************************************ -->
  <!-- Client preamble is automatically called by the scheduler     -->
  <!-- and must always define all the parameters below              -->
  <function name="secureUserpasswordModifyPreamble" 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>
          <!-- ==== Add execute permission to build.ksh file ==== -->
          <call function="'writeStartTagOperation'">
          { 'tagName' : 'chmod',
            'fileFd'  : fileFd }
          </call>
          <call function="'writeMessage'">
          {'content' : 'Add execute permission to build.ksh file',
           'fileFd'  : fileFd}
          </call>
          <process name="'%s: chmod +x build.ksh' % client.getHost()">
            <location>client.getHost()</location>
            <command mode="'shell'">'chmod +x build.ksh'</command>
            <parms/>
            <workdir>client.getPath()</workdir>
            <envs>['PATH=/bin:/usr/bin']</envs>
            <stderr mode="'stdout'"/>
            <stdout/>
            <returnstdout/>
          </process>
          <call function="'checkRC'">
            { 'returncode' : RC,
              'result'     : STAXResult[0][1],
              'fileFd'     : fileFd }
          </call>
          <script>
            errNum += STAXResult
          </script>
          <call function="'writeEndTagOperation'">{'fileFd'  : fileFd}</call>
          <!-- ==== Build client : run build.ksh file ==== -->
          <call function="'writeStartTagOperation'">
          { 'tagName' : 'build',
            'fileFd'  : fileFd }
          </call>
          <call function="'writeMessage'">
          {'content' : 'Build client',
           'fileFd'  : fileFd}
          </call>
          <!-- Build Client in unique directory (compilDir), avoid          -->
          <!-- conflict if same client is run several time at the same time -->
          <process name="'%s: build %s' % (client.getHost(),client.getName())">
            <location>client.getHost()</location>
            <command mode="'shell'">'./build.ksh'</command>
            <parms/>
            <workdir>client.getPath()</workdir>
            <envs>['PATH=%s/bin:/bin:/usr/bin' % JAVA_HOME,'COMPILDIR=%s' % compilDir ]</envs>
            <stderr mode="'stdout'"/>
            <stdout/>
            <returnstdout/>
          </process>
          <call function="'checkRC'">
            { 'returncode' : RC,
              'result'     : STAXResult[0][1],
              'fileFd'     : fileFd }
          </call>
          <if expr="RC != 0">
            <message>
              'FAILED to build client %s on %s' % \
              (client.getName(),client.getHost())
            </message>
          </if>
          <script>
            errNum += STAXResult
          </script>
          <call function="'writeEndTagOperation'">{'fileFd'  : fileFd}</call>
        </sequence>
      </else>
      </if>
      <return> errNum </return>
    </sequence>
  </function>
</stax>