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

andrug
29.30.2008 8d36f0422557e54763966f7a4903070654e235e3
QA: System Test: Review: Add new dedicated jython object to manage external tools
6 files modified
282 ■■■■ changed files
opends/tests/system-tests/phases/configuration/configuration_opends.xml 2 ●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/main_run.xml 13 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/main_run_lib.xml 24 ●●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/parser/parser.py 137 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/parser/parser.xml 96 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/scenario/conf.dtd 10 ●●●● patch | view | raw | blame | history
opends/tests/system-tests/phases/configuration/configuration_opends.xml
@@ -1001,7 +1001,7 @@
              
              <call function="'copyFile'">
              {
                'srcFile'    : scenario.getJdmkrtPath(),
                'srcFile'    : externalTools.getJdmkrtPath(),
                'destFile'   : jdmkrt,
                'location'   : STAXServiceMachine,
                'remoteHost' : instance.getHost(),
opends/tests/system-tests/phases/main_run.xml
@@ -192,12 +192,13 @@
        file="'%s/phases/parser/parser.xml' % (TESTS_DIR)"/>
      <call function="'parser'">configurationFile</call>
      <script>
        result    = STAXResult
        msg       = result[0]
        instances = result[1]
        suffix    = result[2]
        scheduler = result[3]
        scenario  = result[4]
        result        = STAXResult
        msg           = result[0]
        instances     = result[1]
        suffix        = result[2]
        scheduler     = result[3]
        scenario      = result[4]
        externalTools = result[5]
        PHASE_PARSER.setRun('true')
        PHASE_PARSER.setErrNum(ERR_NUM[0])
        ERR_NUM_TOTAL  = ERR_NUM_TOTAL + ERR_NUM[0]
opends/tests/system-tests/phases/main_run_lib.xml
@@ -350,16 +350,20 @@
      <!-- Set path to clients -->
      <!-- set local client by default if exist in the scenario -->
      <!-- else get the shared client if exist -->
      <call function="'getEnabledClients'">{'scheduler':scheduler}</call>
      <script>clients = STAXResult </script>
      <if expr="len(clients) > 0">
        <paralleliterate in="clients" var="client">
          <sequence>
            <call function="'clientSetPath'">
            { 'client' : client }
            </call>
          </sequence>
        </paralleliterate>
      <if expr="runScheduler == 'true'">
        <sequence>
          <call function="'getEnabledClients'">{'scheduler':scheduler}</call>
          <script>clients = STAXResult </script>
          <if expr="len(clients) > 0">
            <paralleliterate in="clients" var="client">
              <sequence>
                <call function="'clientSetPath'">
                { 'client' : client }
                </call>
              </sequence>
            </paralleliterate>
          </if>
        </sequence>
      </if>
      
      
opends/tests/system-tests/phases/parser/parser.py
@@ -100,6 +100,35 @@
    return self.percentage
#
# Class for external tools
#
###########################
class ExtTools:
  "Describes all the external tools needed"
  def __init__(self):
    self.jdmkrtPath     = NOT_DEFINED
    self.jcommonPath    = NOT_DEFINED
    self.jfreechartPath = NOT_DEFINED
  def getJdmkrtPath(self):
    return self.jdmkrtPath
  def setJdmkrtPath(self,jdmkrtPath):
    self.jdmkrtPath = jdmkrtPath
  def getJcommonPath(self):
    return self.jcommonPath
  def setJcommonPath(self,jcommonPath):
    self.jcommonPath = jcommonPath
  def getJfreechartPath(self):
    return self.jfreechartPath
  def setJfreechartPath(self,jfreechartPath):
    self.jfreechartPath = jfreechartPath
#
# Class for suffix
@@ -635,9 +664,10 @@
      
      result = parseGlobalParameters(thisChild)
      msg = '%s \n %s' % (msg,result[0])
      scenario   = result[1]
      opendsZip  = result[2]
      domain     = result[3]
      scenario      = result[1]
      opendsZip     = result[2]
      domain        = result[3]
      externalTools = result[4]
    
    #
    # Parsing instance node
@@ -725,7 +755,8 @@
      if cInstance.getName() == cSuffixInstance.getName():
        cSuffixInstance.setInstanceRef(cInstance)
      
  return [msg,instances,suffix,phases,scenario,domain]
  return [msg,instances,suffix,phases,scenario,externalTools,domain]
  # end of main function  
  
  
@@ -1290,9 +1321,7 @@
  scenario        = NOT_DEFINED
  opendsZip       = NOT_DEFINED
  domain          = NOT_DEFINED
  cJdmkrtPath     = NOT_DEFINED
  cJcommonPath    = NOT_DEFINED
  cJfreeChartPath = NOT_DEFINED
  externalTools   = ExtTools()
  
  #
  # Parsing second level
@@ -1320,16 +1349,10 @@
        msg = '%s\n%s' % (msg,cResult[0])
      
      elif (thisSubChild.getNodeType() == Node.ELEMENT_NODE and
          thisSubChild.getNodeName() == 'jdmkrt'):
        cJdmkrtPath = _getPropValue(thisSubChild)
      elif (thisSubChild.getNodeType() == Node.ELEMENT_NODE and
          thisSubChild.getNodeName() == 'jfreechart'):
        cJfreeChartPath = _getPropValue(thisSubChild)
      elif (thisSubChild.getNodeType() == Node.ELEMENT_NODE and
          thisSubChild.getNodeName() == 'jcommon'):
        cJcommonPath = _getPropValue(thisSubChild)
          thisSubChild.getNodeName() == 'externalTools'):
        cResult = parseExternalTools(thisSubChild)
        externalTools = cResult[1]
        msg = '%s\n%s' % (msg,cResult[0])
      
      # must be at the end of the if case
      elif (thisSubChild.getNodeType() == Node.TEXT_NODE or
@@ -1349,16 +1372,9 @@
    
  if (opendsZip == NOT_DEFINED):
    msg = '%s\n ERROR: parseGlobalParameters() : opendsZip not defined' % (msg)
  if (cJdmkrtPath != NOT_DEFINED):
    scenario.setJdmkrtPath(cJdmkrtPath)
  if (cJfreeChartPath != NOT_DEFINED):
    scenario.setJfreechartPath(cJfreeChartPath)
  if (cJcommonPath != NOT_DEFINED):
    scenario.setJcommonPath(cJcommonPath)
  return [msg,scenario,opendsZip,domain]
  return [msg,scenario,opendsZip,domain,externalTools]
@@ -1367,11 +1383,11 @@
# Parse global parameters node 
#
def parseScenario(thisChild):
  preMsg      = 'ERROR: parseGlobalParameters():'
  preMsg      = 'ERROR: parseScenario():'
  msg         = ''
  result      = []
  name        = NOT_DEFINED
  description = NOT_DEFINED
  cJdmkrtPath     = NOT_DEFINED
  cJcommonPath    = NOT_DEFINED
  cJfreeChartPath = NOT_DEFINED
  
  #
  # Parsing second level
@@ -1399,8 +1415,8 @@
        # text node information,skip, no need
        continue
      else:
        msg = '%s\n ERROR: parseGlobalParameters(): unknown node named %s' % \
              (msg, thisSubChild.getNodeName())
        msg = '%s\n %s: unknown node named %s' % \
              (msg, preMsg, thisSubChild.getNodeName())
        
  #
  # no subchildren for globalParameters node
@@ -1417,4 +1433,63 @@
  return [msg,Scenario(name,description)]
#============================================================================
#
# Parse global parameters node
#
def parseExternalTools(thisChild):
  preMsg          = 'ERROR: parseExternalTools():'
  msg             = ''
  cJdmkrtPath     = NOT_DEFINED
  cJcommonPath    = NOT_DEFINED
  cJfreeChartPath = NOT_DEFINED
  cExtTools       = ExtTools()
  #
  # Parsing second level
  #
  if thisChild.hasChildNodes():
    subChildren = thisChild.getChildNodes()
    for j in range(subChildren.getLength()):
      thisSubChild = subChildren.item(j)
      if (thisSubChild.getNodeType() == Node.ELEMENT_NODE and
          thisSubChild.getNodeName() == 'jdmkrt'):
        cJdmkrtPath = _getPropValue(thisSubChild)
      elif (thisSubChild.getNodeType() == Node.ELEMENT_NODE and
          thisSubChild.getNodeName() == 'jfreechart'):
        cJfreeChartPath = _getPropValue(thisSubChild)
      elif (thisSubChild.getNodeType() == Node.ELEMENT_NODE and
          thisSubChild.getNodeName() == 'jcommon'):
        cJcommonPath = _getPropValue(thisSubChild)
      # must be at the end of the if case
      elif (thisSubChild.getNodeType() == Node.TEXT_NODE or
            thisSubChild.getNodeType() == Node.COMMENT_NODE):
        # text node information,skip, no need
        continue
      else:
        msg = '%s\n %s: unknown node named %s' % \
              (msg, preMsg, thisSubChild.getNodeName())
  #
  # no subchildren for globalParameters node
  #
  else:
    msg = '%s\n %s no child for this node' % (preMsg,msg)
  if (cJdmkrtPath != NOT_DEFINED):
    cExtTools.setJdmkrtPath(cJdmkrtPath)
  if (cJfreeChartPath != NOT_DEFINED):
    cExtTools.setJfreechartPath(cJfreeChartPath)
  if (cJcommonPath != NOT_DEFINED):
    cExtTools.setJcommonPath(cJcommonPath)
  return [msg,cExtTools]
opends/tests/system-tests/phases/parser/parser.xml
@@ -56,17 +56,17 @@
        
        sys.path.append("%s/phases/parser" % TESTS_DIR )
        from parser import *
        parserResult = main(STAXResult)
        msg          = parserResult[0]
        instances    = parserResult[1]
        suffix       = parserResult[2]
        scheduler    = parserResult[3]
        scenario     = parserResult[4]
        if (parserResult[5] != NOT_DEFINED):
          DOMAIN[0]  = '.%s' % parserResult[5]
        parserResult  = main(STAXResult)
        msg           = parserResult[0]
        instances     = parserResult[1]
        suffix        = parserResult[2]
        scheduler     = parserResult[3]
        scenario      = parserResult[4]
        externalTools = parserResult[5]
        if (parserResult[6] != NOT_DEFINED):
          DOMAIN[0]  = '.%s' % parserResult[6]
      </script>
      
      <!--=================================================================-->
      <!--========  Set some attributes to add in instance objects   ======-->
      <paralleliterate in="instances" var="instance">
@@ -140,7 +140,7 @@
          </script>
          <!-- Check jdmk dependcy if snmp is enabled -->
          <if expr="instance.getSNMPPort() != NOT_DEFINED 
                    and scenario.getJdmkrtPath() == NOT_DEFINED">
                    and externalTools.getJdmkrtPath() == NOT_DEFINED">
            <sequence>
              <message>
                'ERROR, jdmkrt path not defined, needed for instance %s' % \
@@ -174,15 +174,15 @@
            <script>
              merr = ''
              if client.getName() == 'monitoring':
                if scenario.getJdmkrtPath() == NOT_DEFINED:
                if externalTools.getJdmkrtPath() == NOT_DEFINED:
                  merr = '%s\nERROR, jdmkrt path not defined,' % merr
                  merr = '%s needed for monitoring client' % merr
                  ERR_NUM[0] += 1
                if scenario.getJcommonPath() == NOT_DEFINED:
                if externalTools.getJcommonPath() == NOT_DEFINED:
                  merr = '%s\nERROR, jcommon path not defined,' % merr
                  merr = '%s needed for monitoring client' % merr
                  ERR_NUM[0] += 1
                if scenario.getJfreechartPath() == NOT_DEFINED:
                if externalTools.getJfreechartPath() == NOT_DEFINED:
                  merr = '%s\nERROR, jfreechart path not defined,' % merr
                  merr = '%s needed for monitoring client' % merr
                  ERR_NUM[0] += 1
@@ -202,7 +202,75 @@
      
      
      <!--=================================================================-->
      <!--========  Basic configuration checks       ======-->
      <!--========  Basic checks for extTools object                 ======-->
      <!-- check jdmk jar file exists -->
      <if expr="externalTools.getJdmkrtPath() != NOT_DEFINED">
        <sequence>
          <call function="'isFile'">
          {
            'location' : STAXServiceMachine,
            'fileName' : externalTools.getJdmkrtPath()
          }
          </call>
          <script>
            fileExist = STAXResult
          </script>
          <if expr="fileExist == FALSE">
            <script>
              msg = '%s\nERROR : canf find file %s' % \
                    (msg,externalTools.getJdmkrtPath())
            </script>
          </if>
        </sequence>
      </if>
      <!-- check jcommon jar file exists -->
      <if expr="externalTools.getJcommonPath() != NOT_DEFINED">
        <sequence>
          <call function="'isFile'">
          {
            'location' : STAXServiceMachine,
            'fileName' : externalTools.getJcommonPath()
          }
          </call>
          <script>
            fileExist = STAXResult
          </script>
          <if expr="fileExist == FALSE">
            <script>
              msg = '%s\nERROR : canf find file %s' % \
                    (msg,externalTools.getJcommonPath())
            </script>
          </if>
        </sequence>
      </if>
      <!-- check jfreechart jar file exists -->
      <if expr="externalTools.getJfreechartPath() != NOT_DEFINED">
        <sequence>
          <call function="'isFile'">
          {
            'location' : STAXServiceMachine,
            'fileName' : externalTools.getJfreechartPath()
          }
          </call>
          <script>
            fileExist = STAXResult
          </script>
          <if expr="fileExist == FALSE">
            <script>
              msg = '%s\nERROR : canf find file %s' % \
                    (msg,externalTools.getJfreechartPath())
            </script>
          </if>
        </sequence>
      </if>
      <!--=================================================================-->
      <!--========  Basic configuration checks                       ======-->
      
      <!-- replace localhost by real host name -->
      <script>
opends/tests/system-tests/scenario/conf.dtd
@@ -29,8 +29,7 @@
<!-- ========== GLOBAL PARAMETERS NODE ========================= -->
<!ELEMENT globalParameters (scenario,opendsZip,directoryManagerDn?,
                            directoryManagerPswd?,domain?,
                            jdmkrt?,jfreechart?,jcommon?)>
                            directoryManagerPswd?,domain?,externalTools?)>
  <!ELEMENT scenario (name,description)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT description (#PCDATA)>
@@ -38,9 +37,10 @@
  <!ELEMENT directoryManagerDn (#PCDATA)>
  <!ELEMENT directoryManagerPswd (#PCDATA)>
  <!ELEMENT domain (#PCDATA)>
  <!ELEMENT jdmkrt (#PCDATA)>
  <!ELEMENT jfreechart (#PCDATA)>
  <!ELEMENT jcommon (#PCDATA)>
  <!ELEMENT externalTools (jdmkrt?,jfreechart?,jcommon?)>
    <!ELEMENT jdmkrt (#PCDATA)>
    <!ELEMENT jfreechart (#PCDATA)>
    <!ELEMENT jcommon (#PCDATA)>
<!-- ========== INSTANCE NODE ========================= -->
<!ELEMENT instance (host,installDir,ports?,security?,tuning?)>