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

andrug
22.06.2008 75ace4eb028a63acfc8d6933eaa4f209400ace8f
use percentage result for specific phase (scheduler,verdict)
15 files modified
498 ■■■■ changed files
opends/tests/system-tests/phases/configuration/configuration.xml 13 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/generateLdif/generateLdif.xml 13 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/installation/installation.xml 13 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/log/log.xml 54 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/main_run.xml 70 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/parser/parser.py 48 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/scheduler/scheduler.xml 35 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/shared/functions/ldap.xml 8 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/shared/functions/opendstools.xml 5 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/shared/functions/utils.xml 43 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/verdict/verdict.xml 127 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/report/clientDetails.xsl 1 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/report/result.xsl 42 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/scenario/sample2/post_configuration.xml 13 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/scenario/sample2/pre_configuration.xml 13 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/configuration/configuration.xml
@@ -33,6 +33,11 @@
  <!-- ************************************************************ -->
  <function name="configuration" scope="local">
    <function-map-args>
      <function-arg-def name="phase" type="required">
        <function-arg-description>
          phase object
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="instances" type="required">
        <function-arg-description>
          list of instances classes
@@ -48,8 +53,8 @@
    <sequence>
      <!-- == Call preambule == -->
      <call function="'phasePreamble'">
      { 'phaseName' : 'configuration' ,
        'fileFd'    : LOG_MAIN_FD }
      { 'phase'  : PHASE_CONFIGURATION,
        'fileFd' : LOG_MAIN_FD }
      </call>
      
      <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
@@ -105,8 +110,8 @@
      <!-- ==  Call postphase == -->
      <call function="'phasePostamble'">
      {
        'phaseName' : 'configuration',
        'fileFd'    : LOG_MAIN_FD
        'phase'  : PHASE_CONFIGURATION,
        'fileFd' : LOG_MAIN_FD
      }
      </call>
    
opends/tests/system-tests/phases/generateLdif/generateLdif.xml
@@ -33,6 +33,11 @@
  <!-- ************************************************************ -->
  <function name="generateLdif" scope="local">
    <function-map-args>
      <function-arg-def name="phase" type="required">
        <function-arg-description>
          phase object
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="suffix" type="required">
        <function-arg-description>
          suffix
@@ -43,8 +48,8 @@
    <sequence>
      <!--==========  Call preambule  =========-->
      <call function="'phasePreamble'">
      { 'phaseName' : 'generateLdif' ,
        'fileFd'    : LOG_MAIN_FD }
      { 'phase'  : phase,
        'fileFd' : LOG_MAIN_FD }
      </call>
      
      <!--==========  Define variables  =========-->
@@ -248,8 +253,8 @@
      <!--==========  Call postphase =========-->
      <call function="'phasePostamble'">
      {
        'phaseName' : 'generateLdif',
        'fileFd'    : LOG_MAIN_FD
        'phase'  : phase,
        'fileFd' : LOG_MAIN_FD
      }
      </call>
    
opends/tests/system-tests/phases/installation/installation.xml
@@ -33,6 +33,11 @@
  <!-- ************************************************************ -->
  <function name="installation" scope="local">
    <function-map-args>
      <function-arg-def name="phase" type="required">
        <function-arg-description>
          phase object
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="instances" type="required">
        <function-arg-description>
          list of instances
@@ -49,8 +54,8 @@
    <sequence>
      <!--==========  Call preambule  =========-->
      <call function="'phasePreamble'">
      { 'phaseName' : 'installation' ,
        'fileFd'    : LOG_MAIN_FD }
      { 'phase'  : phase,
        'fileFd' : LOG_MAIN_FD }
      </call>
      
      <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
@@ -93,8 +98,8 @@
      <!--==========  Call postphase =========-->
      <call function="'phasePostamble'">
      {
        'phaseName' : 'installation',
        'fileFd'    : LOG_MAIN_FD
        'phase'  : phase,
        'fileFd' : LOG_MAIN_FD
      }
      </call>
      
opends/tests/system-tests/phases/log/log.xml
@@ -114,48 +114,36 @@
    </function-map-args>
    <sequence>
      <script>
        def writeSummaryTag(objPhase):
          if objPhase.getRun() == 'true':
            str = '&lt;phaseSummmary'
            str = '%s name=\"%s\"'       % (str,objPhase.getName())
            str = '%s errNum=\"%s\"'     % (str,objPhase.getErrNum())
            str = '%s percentage=\"%s\"' % (str,objPhase.getPercentage())
            str = '%s start=\"%s\"'      % (str,objPhase.getStartTime())
            str = '%s stop=\"%s\"'       % (str,objPhase.getStopTime())
            str = '%s/&gt;\n' % str
            fileFd.write(str)
        fileFd.write('&lt;summary&gt;\n')
        
        # write scenario informations into summary part
        str = '&lt;scenario name=\"%s\"' % scenario.getName()
        str = '%s duration=\"%s%s\" &gt;\n' % \
              (str,scenario.getDurationTime(),scenario.getDurationUnit())
        str = '%s %s \n&lt;/scenario&gt;' % \
        str = '%s %s \n&lt;/scenario&gt;\n' % \
              (str,scenario.getDescription())
        fileFd.write(str)
        
        if ERR_NUM_PARSER != '':
          str = '&lt;phaseSummmary name=\"parser\" result=\"%s\"/&gt;\n' % \
                ERR_NUM_PARSER
          fileFd.write(str)
        if ERR_NUM_INSTALL != '':
          str = '&lt;phaseSummmary name=\"installation\" result=\"%s\"/&gt;\n'%\
                ERR_NUM_INSTALL
          fileFd.write(str)
        if ERR_NUM_GEN_LDIF != '':
          str = '&lt;phaseSummmary name=\"generateLdif\" result=\"%s\"/&gt;\n'%\
                ERR_NUM_GEN_LDIF
          fileFd.write(str)
        if ERR_NUM_PRE_CONFIGURATION != '':
          str = '&lt;phaseSummmary name=\"preconfiguration\" result=\"%s\"/&gt;\n'%\
                ERR_NUM_PRE_CONFIGURATION
          fileFd.write(str)
        if ERR_NUM_CONFIGURATION != '':
          str = '&lt;phaseSummmary name=\"configuration\" result=\"%s\"/&gt;\n'%\
                ERR_NUM_CONFIGURATION
          fileFd.write(str)
        if ERR_NUM_POST_CONFIGURATION != '':
          str = '&lt;phaseSummmary name=\"postconfiguration\" result=\"%s\"/&gt;\n'%\
                ERR_NUM_POST_CONFIGURATION
          fileFd.write(str)
        if ERR_NUM_SCHEDULER != '':
          str = '&lt;phaseSummmary name=\"scheduler\" result=\"%s\"/&gt;\n' % \
                ERR_NUM_SCHEDULER
          fileFd.write(str)
        if ERR_NUM_VERDICT != '':
          str = '&lt;phaseSummmary name=\"verdict\" result=\"%s\"/&gt;\n' % \
                ERR_NUM_VERDICT
          fileFd.write(str)
        writeSummaryTag(PHASE_PARSER)
        writeSummaryTag(PHASE_INSTALLATION)
        writeSummaryTag(PHASE_GEN_LDIF)
        writeSummaryTag(PHASE_PRE_CONFIGURATION)
        writeSummaryTag(PHASE_CONFIGURATION)
        writeSummaryTag(PHASE_POST_CONFIGURATION)
        writeSummaryTag(PHASE_SCHEDULER)
        writeSummaryTag(PHASE_VERDICT)
        
        fileFd.write('&lt;/summary&gt;\n')
      </script>
opends/tests/system-tests/phases/main_run.xml
@@ -101,15 +101,7 @@
        DOMAIN[0]       = ''
        
        ERR_NUM = STAXGlobal([0])
        ERR_NUM_PARSER             = ''
        ERR_NUM_INSTALL            = ''
        ERR_NUM_GEN_LDIF           = ''
        ERR_NUM_PRE_CONFIGURATION  = ''
        ERR_NUM_CONFIGURATION      = ''
        ERR_NUM_POST_CONFIGURATION = ''
        ERR_NUM_SCHEDULER          = ''
        ERR_NUM_VERDICT            = ''
        ERR_NUM_TOTAL              = 0
        ERR_NUM_TOTAL   = 0
        
        SHARED_FUNC_DIR = '%s/phases/shared/functions' % TESTS_DIR
      </script>
@@ -181,6 +173,19 @@
        LOG_MAIN_FD.write(str)
      </script>
      
      <!-- ======= Create object for each phase ====================== -->
      <script>
        sys.path.append("%s/phases/parser" % TESTS_DIR )
        from parser import *
        PHASE_PARSER             = Phase('parser')
        PHASE_INSTALLATION       = Phase('installation')
        PHASE_GEN_LDIF           = Phase('generateldif')
        PHASE_PRE_CONFIGURATION  = Phase('preconfiguration')
        PHASE_CONFIGURATION      = Phase('configuration')
        PHASE_POST_CONFIGURATION = Phase('postconfiguration')
        PHASE_SCHEDULER          = Phase('scheduler')
        PHASE_VERDICT            = Phase('verdict')
      </script>
      
      <!-- ============ PARSER ======================================= -->
      <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
@@ -193,10 +198,11 @@
        suffix    = result[2]
        scheduler = result[3]
        scenario  = result[4]
        ERR_NUM_PARSER = ERR_NUM[0]
        PHASE_PARSER.setRun('true')
        PHASE_PARSER.setErrNum(ERR_NUM[0])
        ERR_NUM_TOTAL  = ERR_NUM_TOTAL + ERR_NUM[0]
      </script>
      <if expr="ERR_NUM_PARSER != 0">
      <if expr="PHASE_PARSER.getErrNum() != 0">
        <return/>
      </if>
      
@@ -223,13 +229,13 @@
            file="'%s/phases/installation/installation.xml' % (TESTS_DIR)"/>
          <call function="'installation'">
            {
              'phase'     : PHASE_INSTALLATION,
              'instances' : instances,
              'suffix'    : suffix
            }
          </call>
          <script>
            ERR_NUM_INSTALL = ERR_NUM[0]
            ERR_NUM_TOTAL   = ERR_NUM_TOTAL + ERR_NUM[0]
            ERR_NUM_TOTAL = ERR_NUM_TOTAL + ERR_NUM[0]
          </script>
        </sequence>
      </if>
@@ -249,15 +255,15 @@
              <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
                      file="'%s' % preConfigurationFile"/>
              <call function="'preConfiguration'">
              {
              {
                'phase'     : PHASE_PRE_CONFIGURATION,
                'instances' : instances,
                'suffix'    : suffix,
                'scheduler' : scheduler
              }
              </call>
              <script>
                ERR_NUM_PRE_CONFIGURATION = ERR_NUM[0]
                ERR_NUM_TOTAL             = ERR_NUM_TOTAL + ERR_NUM[0]
                ERR_NUM_TOTAL = ERR_NUM_TOTAL + ERR_NUM[0]
              </script>
            </sequence>
          <else>
@@ -281,11 +287,13 @@
          <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
            file="'%s/phases/generateLdif/generateLdif.xml' % (TESTS_DIR)"/>
          <call function="'generateLdif'">
            { 'suffix'       : suffix }
            {
              'phase'  : PHASE_GEN_LDIF,
              'suffix' : suffix
            }
          </call>
          <script>
            ERR_NUM_GEN_LDIF = ERR_NUM[0]
            ERR_NUM_TOTAL    = ERR_NUM_TOTAL + ERR_NUM[0]
            ERR_NUM_TOTAL = ERR_NUM_TOTAL + ERR_NUM[0]
          </script>
        </sequence>
      </if>
@@ -298,13 +306,13 @@
            file="'%s/phases/configuration/configuration.xml' % TESTS_DIR"/>
          <call function="'configuration'">
            {
              'phase'     : PHASE_CONFIGURATION,
              'instances' : instances ,
              'suffix'    : suffix
            }
          </call>
          <script>
            ERR_NUM_CONFIGURATION = ERR_NUM[0]
            ERR_NUM_TOTAL         = ERR_NUM_TOTAL + ERR_NUM[0]
            ERR_NUM_TOTAL = ERR_NUM_TOTAL + ERR_NUM[0]
          </script>
        </sequence>
      </if>
@@ -325,14 +333,14 @@
                      file="'%s' % postConfigurationFile"/>
              <call function="'postConfiguration'">
              { 
                'phase'     : PHASE_POST_CONFIGURATUON,
                'instances' : instances,
                'suffix'    : suffix,
                'scheduler' : scheduler
              }
              </call>
              <script>
                ERR_NUM_POST_CONFIGURATION = ERR_NUM[0]
                ERR_NUM_TOTAL              = ERR_NUM_TOTAL + ERR_NUM[0]
                ERR_NUM_TOTAL = ERR_NUM_TOTAL + ERR_NUM[0]
              </script>
            </sequence>
          <else>
@@ -365,6 +373,7 @@
            file="'%s/phases/scheduler/scheduler.xml' % (TESTS_DIR)"/>
          <call function="'scheduler'">
            {
              'phase'     : PHASE_SCHEDULER,
              'instances' : instances,
              'suffix'    : suffix,
              'scheduler' : scheduler,
@@ -372,8 +381,7 @@
            }
          </call>
          <script>
            ERR_NUM_SCHEDULER = ERR_NUM[0]
            ERR_NUM_TOTAL     = ERR_NUM_TOTAL + ERR_NUM[0]
            ERR_NUM_TOTAL = ERR_NUM_TOTAL + ERR_NUM[0]
          </script>
        </sequence>
      </if>
@@ -395,20 +403,21 @@
      <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
        file="'%s/phases/verdict/verdict.xml' % (TESTS_DIR)"/>
      <call function="'verdict'">
        { 'instances'        : instances,
        {
          'phase'            : PHASE_VERDICT,
          'instances'        : instances,
          'suffix'           : suffix,
          'runConfiguration' : runConfiguration,
          'runScheduler'     : runScheduler
        }
      </call>
      <script>
        ERR_NUM_VERDICT = ERR_NUM[0]
        ERR_NUM_TOTAL   = ERR_NUM_TOTAL + ERR_NUM[0]
        ERR_NUM_TOTAL = ERR_NUM_TOTAL + ERR_NUM[0]
      </script>
      
      <!-- ====== Write information phases to xml report ============ -->
      <!-- == Write phase summary == -->
      <!-- (this function is in log phase and use ERR_NUM_* variables) -->
      <!-- this function is in log/log.xml file -->
      <call function="'writeSummary'">
        {
          'scenario' : scenario,
@@ -424,9 +433,10 @@
        }
      </call>
      
    </sequence>
    
    </function>
  </function>
</stax>
opends/tests/system-tests/phases/parser/parser.py
@@ -54,6 +54,54 @@
#
# Class for phases
#
class Phase:
  "Describes the phase of a system test run"
  def __init__(self, name):
    self.name       = name
    self.run        = 'false'
    self.start      = NOT_DEFINED
    self.stop       = NOT_DEFINED
    self.errNum     = NOT_DEFINED
    self.percentage = NOT_DEFINED
  def getName(self):
    return self.name
  def setRun(self,run):
    self.run = run
  def getRun(self):
    return self.run
  def setStartTime(self,start):
    self.start = start
  def getStartTime(self):
    return self.start
  def setStopTime(self,stop):
    self.stop = stop
  def getStopTime(self):
    return self.stop
  def setErrNum(self,errNum):
    self.errNum = errNum
  def getErrNum(self):
    return self.errNum
  def setPercentage(self,percentage):
    self.percentage = percentage
  def getPercentage(self):
    return self.percentage
#
# Class for suffix
#
opends/tests/system-tests/phases/scheduler/scheduler.xml
@@ -33,6 +33,11 @@
  <!-- ************************************************************ -->
  <function name="scheduler" scope="local">
    <function-map-args>
      <function-arg-def name="phase" type="required">
        <function-arg-description>
          phase object
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="instances" type="required">
        <function-arg-description>
          instance object
@@ -64,9 +69,9 @@
        tagAttr.append(['duration',durationValue])
      </script>
      <call function="'phasePreamble'">
      { 'phaseName' : 'scheduler' ,
        'tagAttr'   : tagAttr,
        'fileFd'    : LOG_MAIN_FD }
      { 'phase'   : phase,
        'tagAttr' : tagAttr,
        'fileFd'  : LOG_MAIN_FD }
      </call>
      
      <!--==== Get the clients list from all modules ==============-->
@@ -85,20 +90,37 @@
            'suffix'    : suffix
          }
          </call>
          <!--==========  Merge files    ==========-->
          <!--============   Merge files      ===========-->
          <call function="'mergeClientsFiles'">
          {
            'scheduler' : scheduler,
            'fileFd'    : LOG_MAIN_FD
          }
          </call>
          <!--==== Calculate phase percentage  ==========-->
          <script>
            nbClients = len(clients)
            nbClientSuccess = 0
            percentageResult = 0
          </script>
          <iterate in="clients" var="client">
            <script>
              if client.getResult() == 'SUCCESS':
                nbClientSuccess += 1
            </script>
          </iterate>
          <script>
            percentageResult = nbClientSuccess * 100
            percentageResult = percentageResult / nbClients
            phase.setPercentage(percentageResult)
          </script>
        </sequence>
      </if>
      <!--==========  Call postphase =========-->
      <call function="'phasePostamble'">
      {
        'phaseName' : 'scheduler',
        'fileFd'    : LOG_MAIN_FD
        'phase'  : phase,
        'fileFd' : LOG_MAIN_FD
      }
      </call>
    </sequence>
@@ -417,6 +439,7 @@
      <else>
        <script>
          result = 'FAIL'
          ERR_NUM[0] += 1
        </script>
      </else>
      </if>
opends/tests/system-tests/phases/shared/functions/ldap.xml
@@ -262,6 +262,8 @@
            if instanceIndex != lastIndex:
              instance2 = instances[instanceIndex + 1]
      </script>
      <if expr="instance2 != NOT_DEFINED">
        <sequence>
          <call function="'writeStartTagStep'">
@@ -323,12 +325,12 @@
            ldapSearchRC = STAXResult[0]
          </script>
          
          <if expr="(ldapSearchRC == 0) or (ldapSearchRC == 4)">
          <if expr="ldapSearchRC != 0">
            <!-- == If the reference tree could not be retrieved,  == -->
            <!-- == return an error                                == -->
            <sequence>
              <call function="'writeEndTagStep'">{ 'fileFd' : fileFd}</call>
              <return> [1, None] </return>
              <return> [FALSE, None] </return>
            </sequence>
          </if>
          
@@ -354,7 +356,7 @@
            ldapSearchRC = STAXResult[0]
          </script>
          
          <if expr="(ldapSearchRC == 0) or (ldapSearchRC == 4)">
          <if expr="ldapSearchRC == 0">
            <sequence>
              <!-- == Check if file is empty == -->
              <call function="'isEmptyFile'">
opends/tests/system-tests/phases/shared/functions/opendstools.xml
@@ -100,7 +100,9 @@
          'fileFd'     : fileFd
        }
      </call>
      <script> _errNum += STAXResult[0] </script>
      <if expr="STAXResult[0] == FALSE">
        <script> _errNum += 1 </script>
      </if>
      
      
      <!--== Check error/access logs =========-->
@@ -113,6 +115,7 @@
      </call>
      <script> _errNum += STAXResult </script>
      
      <return> _errNum </return>
    </sequence>
  </function>
opends/tests/system-tests/phases/shared/functions/utils.xml
@@ -120,7 +120,10 @@
    </function-prolog>
    
    <function-map-args>
      <function-arg-def name="phaseName" type="required">
      <function-arg-def name="phase" type="required">
        <function-arg-description>
          phase object
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="tagAttr" type="optional" default='[]'>
        <function-arg-description>
@@ -134,23 +137,24 @@
    <sequence>
      <!-- Start time of test suite -->      
      <script>
        phaseStartTime=strftime("%Y%m%d@%H:%M:%S",localtime())
        phase.setStartTime(strftime("%Y%m%d@%H:%M:%S",localtime()))
        ERR_NUM[0] = 0
        if tagAttr == []:
          tagAttr = [['date',phaseStartTime]]
          tagAttr = [['date',phase.getStartTime()]]
        else:
          tagAttr.append(['date',phaseStartTime])
          tagAttr.append(['date',phase.getStartTime()])
      </script>
      
      <message log="1">''</message>
      <message log="1">
        '=================== START PHASE %s @ %s  ========================='\
        % (phaseName,phaseStartTime)
        % (phase.getName(),phase.getStartTime())
      </message>
      
      <call function="'writeStartTagPhase'">
      {
        'tagName' : phaseName ,
        'tagName' : phase.getName(),
        'tagAttr' : tagAttr,
        'fileFd'  : fileFd
      }
@@ -167,9 +171,9 @@
      Performs all the post operations for a phase
    </function-prolog>
    <function-map-args>
      <function-arg-def name="phaseName" type="required">
      <function-arg-def name="phase" type="required">
        <function-arg-description>
          Name of the phase
          phase object
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="fileFd" type="required">
@@ -181,25 +185,24 @@
    
    <sequence>
      
      <if expr="phaseName == 'verdict'">
        <message log="1">
          '== Found a TOTAL of %s Error(s)' % (ERR_NUM[0])
        </message>
      <else>
        <message log="1">
          '== Found %s Error(s) during this phase' % (ERR_NUM[0])
        </message>
      </else>
      </if>
      <script>
        phase.setRun('true')
        phase.setStopTime(strftime("%Y%m%d@%H:%M:%S",localtime()))
        phase.setErrNum(ERR_NUM[0])
      </script>
      <message log="1">
        '== Found %s Error(s) during this phase' % (phase.getErrNum())
      </message>
      <message log="1">
        '===================  STOP PHASE %s  ============================' \
        % (phaseName)
        % (phase.getName())
      </message>
      
      <call function="'writeTag'">
      {
        'tagName' : 'phaseResult',
        'tagAttr' : [['errNum',ERR_NUM[0]]] ,
        'tagAttr' : [['errNum',phase.getErrNum()]] ,
        'fileFd'  : LOG_MAIN_FD
      }
      </call>
opends/tests/system-tests/phases/verdict/verdict.xml
@@ -33,6 +33,11 @@
  <!-- ************************************************************ -->
  <function name="verdict" scope="local">
    <function-map-args>
      <function-arg-def name="phase" type="required">
        <function-arg-description>
          phase object
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="instances" type="required">
        <function-arg-description>
          list of instance objects
@@ -58,25 +63,56 @@
    <sequence>
      <!--==========  Call preambule  =========-->
      <call function="'phasePreamble'">
      { 'phaseName' : 'verdict',
        'fileFd'    : LOG_MAIN_FD }
      { 'phase'  : phase,
        'fileFd' : LOG_MAIN_FD }
      </call>
      
      <script>
        items = STAXGlobal([])
      </script>
      <!--== Check if previous phases raised some errors ==-->
      <if expr="ERR_NUM_INSTALL != 0 and ERR_NUM_INSTALL != ''">
        <script> ERR_NUM[0] += 1 </script>
      <!-- installation -->
      <call function="'checkPhaseResult'">
      { 'phase' : PHASE_INSTALLATION }
      </call>
      <if expr="STAXResult != []">
        <script> items.append(STAXResult) </script>
      </if>
      <if expr="ERR_NUM_GEN_LDIF != 0 and ERR_NUM_GEN_LDIF != ''">
        <script> ERR_NUM[0] += 1 </script>
      <!-- pre-configuration -->
      <call function="'checkPhaseResult'">
      { 'phase' : PHASE_PRE_CONFIGURATION }
      </call>
      <if expr="STAXResult != []">
        <script> items.append(STAXResult) </script>
      </if>
      <if expr="ERR_NUM_CONFIGURATION != 0 and ERR_NUM_CONFIGURATION != ''">
        <script> ERR_NUM[0] += 1 </script>
      <!-- gen-ldif -->
      <call function="'checkPhaseResult'">
      { 'phase' : PHASE_GEN_LDIF }
      </call>
      <if expr="STAXResult != []">
        <script> items.append(STAXResult) </script>
      </if>
      <if expr="ERR_NUM_SCHEDULER != 0 and ERR_NUM_SCHEDULER != ''">
        <script> ERR_NUM[0] += 1 </script>
      <!-- configuration -->
      <call function="'checkPhaseResult'">
      { 'phase' : PHASE_CONFIGURATION }
      </call>
      <if expr="STAXResult != []">
        <script> items.append(STAXResult) </script>
      </if>
      <!-- post-configuration -->
      <call function="'checkPhaseResult'">
      { 'phase' : PHASE_POST_CONFIGURATION }
      </call>
      <if expr="STAXResult != []">
        <script> items.append(STAXResult) </script>
      </if>
      <!-- scheduler -->
      <call function="'checkPhaseResult'">
      { 'phase' : PHASE_SCHEDULER }
      </call>
      <if expr="STAXResult != []">
        <script> items.append(STAXResult) </script>
      </if>
      
      <!--== If configuration/schedulers phases have been run ==-->
      <!--== then do some basic checks : isalive ==-->
@@ -136,6 +172,9 @@
                    'fileFd'    : cFileFd
                  }
                  </call>
                  <script>
                   items.append(['instance %s' % instance.getName(),STAXResult])
                  </script>
                </sequence>
              </if>
              
@@ -165,11 +204,30 @@
        </sequence>
      </if>
      
      <!--==== Calculate phase percentage  ==========-->
      <script>
        nbItems = len(items)
        nbItemSuccess = 0
        percentageResult = 0
      </script>
      <iterate in="items" var="item">
        <script>
          if item[1] == 0:
            nbItemSuccess += 1
        </script>
      </iterate>
      <script>
        percentageResult = nbItemSuccess * 100
        percentageResult = percentageResult / nbItems
        phase.setPercentage(percentageResult)
      </script>
      <!--==========  Call postphase =========-->
      <call function="'phasePostamble'">
      {
        'phaseName' : 'verdict',
        'fileFd'    : LOG_MAIN_FD
        'phase'  : phase,
        'fileFd' : LOG_MAIN_FD
      }
      </call>
      
@@ -179,6 +237,47 @@
  
  
  
  <!-- ************************************************************ -->
  <function name="checkPhaseResult" scope="local">
    <function-map-args>
      <function-arg-def name="phase" type="required">
        <function-arg-description>
          phase object
        </function-arg-description>
      </function-arg-def>
    </function-map-args>
    <sequence>
      <script>
        result = []
      </script>
      <if expr="phase.getRun() == 'true'">
        <sequence>
          <call function="'writeStartTagOperation'">
          { 'tagName' : 'checkPhaseResult',
            'fileFd'  : LOG_MAIN_FD }
          </call>
          <call function="'writeMessage'">
          { 'content' : 'Check number of error for %s phase' % phase.getName(),
            'fileFd'  : LOG_MAIN_FD }
          </call>
          <call function="'checkRC'">
          {
            'returncode' : phase.getErrNum(),
            'result'     : '',
            'fileFd'     : LOG_MAIN_FD
          }
          </call>
          <call function="'writeEndTagOperation'">
          {'fileFd'  : LOG_MAIN_FD}
          </call>
          <script>
            result = [ 'phase %s' % phase.getName() , phase.getErrNum() ]
          </script>
        </sequence>
      </if>
      <return> result </return>
    </sequence>
  </function>
  
  
</stax>
opends/tests/system-tests/report/clientDetails.xsl
@@ -20,6 +20,7 @@
      <xsl:apply-templates select="instance"/>
      <xsl:apply-templates select="operation"/>
      <xsl:apply-templates select="message"/>
      <xsl:apply-templates select="operationResult"/>
    </p>
    </body>
    </html>
opends/tests/system-tests/report/result.xsl
@@ -88,7 +88,7 @@
          <xsl:with-param name="phaseName" select="'Installation'" />
        </xsl:call-template>
      </xsl:when>
      <xsl:when test="$phaseName = 'generateLdif'">
      <xsl:when test="$phaseName = 'generateldif'">
        <a name="generateLdif"/>
        <xsl:call-template name="parsePhase">
          <xsl:with-param name="phaseName" select="'GenerateLdif'" />
@@ -169,18 +169,42 @@
    <a href="#{$name}"><xsl:value-of select="$name" /> </a>
  </td>
  <td>
    <xsl:variable name="result" select="normalize-space(@result)"/>
    <b>
    <xsl:variable name="percentage" select="normalize-space(@percentage)"/>
    <xsl:choose>
      <xsl:when test="$result='0'">
       <span class="pass">PASS</span>
      <!-- Display percentage first if exist else the number of error -->
      <xsl:when test="$percentage != 'ERROR_not_defined'">
        <xsl:choose>
          <xsl:when test="$percentage > '90'">
            <b>
              <span class="pass"><xsl:value-of select="$percentage"/>%</span>
            </b>
          </xsl:when>
          <xsl:otherwise>
            <b>
              <span class="fail"><xsl:value-of select="$percentage"/>%</span>
            </b>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:when>
      <!-- Display number of error -->
      <xsl:otherwise>
       <span class="fail">FAIL</span>
        <xsl:variable name="errNum" select="normalize-space(@errNum)"/>
        <b>
        <xsl:choose>
          <xsl:when test="$errNum='0'">
           <span class="pass">PASS</span>
          </xsl:when>
          <xsl:otherwise>
           <span class="fail">FAIL</span>
          </xsl:otherwise>
         </xsl:choose>
         </b>
      </xsl:otherwise>
     </xsl:choose>
     </b>
  </td></tr>
    </xsl:choose>
  </td>
  </tr>
</xsl:template>
opends/tests/system-tests/scenario/sample2/post_configuration.xml
@@ -31,6 +31,11 @@
  
  <function name="postConfiguration" scope="local">
    <function-map-args>
      <function-arg-def name="phase" type="required">
        <function-arg-description>
          phase object
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="instances" type="required">
        <function-arg-description>
          list of instances classes
@@ -57,8 +62,8 @@
    
    <!-- ================= Call preambule ======================== -->
      <call function="'phasePreamble'">
      { 'phaseName' : 'postconfiguration',
        'fileFd'    : LOG_MAIN_FD }
      { 'phase'  : phase,
        'fileFd' : LOG_MAIN_FD }
      </call>
      
      
@@ -149,8 +154,8 @@
      <!-- ================= Call postambule ======================= -->
      <call function="'phasePostamble'">
      {
        'phaseName' : 'postconfiguration',
        'fileFd'    : LOG_MAIN_FD
        'phase'  : phase,
        'fileFd' : LOG_MAIN_FD
      }
      </call>
    </sequence>
opends/tests/system-tests/scenario/sample2/pre_configuration.xml
@@ -31,6 +31,11 @@
  
  <function name="preConfiguration" scope="local">
    <function-map-args>
      <function-arg-def name="phase" type="required">
        <function-arg-description>
          phase object
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="instances" type="required">
        <function-arg-description>
          list of instances classes
@@ -51,8 +56,8 @@
    <sequence>
      <!-- ================= Call preambule ======================== -->
      <call function="'phasePreamble'">
      { 'phaseName' : 'preconfiguration',
        'fileFd'    : LOG_MAIN_FD }
      { 'phase'  : phase,
        'fileFd' : LOG_MAIN_FD }
      </call>
      
      
@@ -115,8 +120,8 @@
      <!-- ================= Call postambule ======================= -->
      <call function="'phasePostamble'">
      {
        'phaseName' : 'preconfiguration',
        'fileFd'    : LOG_MAIN_FD
        'phase'  : phase,
        'fileFd' : LOG_MAIN_FD
      }
      </call>