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

madiot
23.04.2008 15fe2f5024575a8ecda38c50feec3fe6a36bf694
making dsml functional test suuite's components remotable
3 files modified
160 ■■■■■ changed files
opends/tests/functional-tests/staf-installer.xml 2 ●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/dsml/dsml_setup.xml 44 ●●●●● patch | view | raw | blame | history
opends/tests/shared/functions/webcontainer.xml 114 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/staf-installer.xml
@@ -1052,7 +1052,7 @@
        <available file="${bits.download.dir}/${bits.stax.archive}" />
      </condition>
      <condition property="bits.tomcat.downloaded.before">
        <available file="${bits.download.dir}/${bits.tomcat.archive}"/>
        <available file="${bits.webcontainer.download.dir}/${bits.tomcat.archive}"/>
      </condition>
      <condition property="bits.all.downloaded.before">
        <and>
opends/tests/functional-tests/testcases/dsml/dsml_setup.xml
@@ -46,12 +46,12 @@
        <sequence>
          <!--- Test Case information
              #@TestMarker          setup
              #@TestName            setup: create DSML directory server
              #@TestName            setup: prepare DSML directory server
              #@TestIssue           none
              #@TestPurpose         Create the directory server necessary to the
              #@TestPurpose         Prepare the directory server necessary to the
                                    test suite.
              #@TestPreamble        none
              #@TestStep            Create Directory server as defined in config.py.
              #@TestStep            prepare dsml directory server instance
              #@TestPostamble       none
              #@TestResult          Success if  returns 0.
          -->
@@ -106,7 +106,7 @@
                'Start DS instance'
              </message>
              <call function="'StartDsWithScript'">
               { 'location'  : STAF_REMOTE_HOSTNAME }
               { 'location'  : DIRECTORY_INSTANCE_HOST }
              </call>
              <call function="'checktestRC'">
                {
@@ -170,7 +170,7 @@
                                     dsmlBaseDNs.get(baseDN)[1])
                  </script>
                  <stafcmd name="'create import temp directory'">
                    <location>'%s' % location</location>
                    <location>'%s' % DIRECTORY_INSTANCE_HOST</location>
                    <service>'fs'</service>
                    <request>' CREATE DIRECTORY %s' % (importTempDir)</request>
                  </stafcmd>
@@ -179,7 +179,7 @@
                      'result'     : STAXResult }
                  </call>
                  <stafcmd name="'create database directory'">
                    <location>'%s' % location</location>
                    <location>'%s' % DIRECTORY_INSTANCE_HOST</location>
                    <service>'fs'</service>
                    <request>' CREATE DIRECTORY %s' % (ldapDB)</request>
                  </stafcmd>
@@ -276,9 +276,7 @@
                'setup: deploy DSML gateway webapp as described in config.py'
              </message>
              <call function="'deployWebApplicationWAR'">
                { 'location'   : STAF_REMOTE_HOSTNAME ,
                'warFilePath' : '%s' % DSML_WARPATH,
                'destWarFileName' : 'dsml.war'}
                { 'warFilePath' : '%s' % DSML_WARPATH }
              </call>
              <call function="'checktestRC'">
                {
@@ -307,10 +305,7 @@
              <message>
                'setup: start webcontainer as described in config.py'
              </message>
              <call function="'startWebcontainerWithScript'">
                { 'location'   : STAF_REMOTE_HOSTNAME ,
                'wcPath' : '%s/%s-%s' % (WC_DIRECTORY,WC_TYPE,WC_VERSION) }
              </call>
              <call function="'startWebcontainerWithScript'"/>
              <call function="'checktestRC'">
                {
                'returncode' : RC ,
@@ -326,11 +321,24 @@
            </sequence>
          </testcase>
          <!--- Test Case information
              #@TestMarker          setup
              #@TestName            setup: configure DSML gateway DS port param
              #@TestIssue           none
              #@TestPurpose         Set the gateway web.xml param pointing to DS
              #@TestPreamble        none
              #@TestSteps           extract web.xml out of DSML war file locally
              #@TestSteps           substitute default port 389 with DIRECTORY_INSTANCE_PORT
              #@TestSteps           substitute default directory host localhost with DIRECTORY_INSTANCE_HOST
              #@TestSteps           overwrite the destination DSML gateway web.xml
              #@TestPostamble       none
              #@TestResult          Success if statWebcontainerWithScript returns 0.
          -->
          <testcase name="getTestCaseName('configure: dsml web.xml port')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <stafcmd name="'extract DSML gateway web.xml'">
                <location>'local'</location>
                <location>STAXServiceMachine</location>
                <service>'zip'</service>
                <request>'UNZIP ZIPFILE %s TODIRECTORY %s FILE WEB-INF/web.xml' % (DSML_WARPATH, TMPDIR)</request>
              </stafcmd>
@@ -338,15 +346,17 @@
                webXmlInput=open('%s/WEB-INF/web.xml' % TMPDIR,'r')
                import re
                portRegEx = re.compile('389')
                c=webXmlInput.read()
                content=portRegEx.sub(DIRECTORY_INSTANCE_PORT, c)
                hostRegEx = re.compile('localhost')
                c0=webXmlInput.read()
                c1=portRegEx.sub(DIRECTORY_INSTANCE_PORT, c0)
                content=hostRegEx.sub(DIRECTORY_INSTANCE_HOST, c1)
                webXmlInput.close()
                webXmlOutput=open('%s/WEB-INF/web.xml.out' % TMPDIR,'w')
                webXmlOutput.write(content)
                webXmlOutput.close()
              </script>
              <call function="'copyFile'">
                { 'location' : 'local',
                { 'location' : STAXServiceMachine,
                  'remotehost' : '%s' % location,
                  'srcfile' : '%s/WEB-INF/web.xml.out' % TMPDIR,
                  'destfile' : '%s/%s-%s/webapps/dsml/WEB-INF/web.xml' % (TMPDIR,WC_TYPE,WC_VERSION)
opends/tests/shared/functions/webcontainer.xml
@@ -27,30 +27,45 @@
! -->
<stax>
  
  <function name="createWebcontainer">
  <function name="createWebcontainer" scope="local">
    <function-prolog>
      This function creates a default webcontainer instance  
    </function-prolog>
    
    <function-map-args>
      <function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
      <function-arg-def name="wcPath" type="optional" default="'%s' % WC_DIRECTORY">
        <function-arg-description>
          Pathname to installation root
        </function-arg-description>
        <function-arg-property name="type" value="filepath"/>
      </function-arg-def>
    </function-map-args>
    <try>
      
      <sequence>
        
        <!-- Unzip webcontainer into temporary folder -->
        <message>
          'Extract temporary webcontainer zip archive to %s %s.' % (STAF_REMOTE_HOSTNAME,WC_DIRECTORY)
          'Extract temporary webcontainer zip archive to %s %s.' % (location, wcPath)
        </message>
        <call function="'unZipFile'">
          { 'location' : STAF_REMOTE_HOSTNAME,
          { 'location' : location,
          'zipfile'  : '%s/%s' % (WC_ZIPPATH,WC_ZIPNAME), 
          'unzipdir' : '%s' % WC_DIRECTORY }
          'unzipdir' : '%s' % wcPath }
        </call>
        <!-- chmod +x all the .sh file in tomcat bin directory -->
        <stafcmd name="'create import temp directory'">
          <location>'%s' % location</location>
          <service>'fs'</service>
          <request>' LIST DIRECTORY %s/%s-%s/bin EXT sh' % \
                   (WC_DIRECTORY, WC_TYPE, WC_VERSION)</request>
                   (wcPath, WC_TYPE, WC_VERSION)</request>
        </stafcmd>
        <script>
          shFilesRC=RC
@@ -61,7 +76,7 @@
          <location>'%s' % location</location>
          <command mode="'shell'">'chmod +x %s' % shFilesResult</command>
          <parms/>
          <workdir>'%s/%s-%s/bin' % (WC_DIRECTORY, WC_TYPE, WC_VERSION)</workdir>
          <workdir>'%s/%s-%s/bin' % (wcPath, WC_TYPE, WC_VERSION)</workdir>
          <envs>['PATH=/bin:/usr/bin']</envs>
          <stderr mode="'stdout'"/>
          <stdout/>
@@ -72,19 +87,30 @@
        <message>
          'Configure webcontainer ports HTTP %s / HTTPS %s' % (WC_PORT, WC_SSL_PORT)
        </message>
        <stafcmd name="'get tomcat configuration file'">
          <location>'%s' % location</location>
          <service>'fs'</service>
          <request>' GET FILE %s/%s-%s/conf/server.xml ' % \
                   (wcPath, WC_TYPE, WC_VERSION)</request>
        </stafcmd>
        <script>
          serverXmlInput=open('%s/%s-%s/conf/server.xml' % (WC_DIRECTORY,WC_TYPE,WC_VERSION),'r')
          serverXmlInput=STAFResult
          import re
          portRegEx = re.compile('8080')
          sslPortRegEx = re.compile('8443')
          c=serverXmlInput.read()
          ci=portRegEx.sub(WC_PORT, c)
          content=portRegEx.sub(WC_SSL_PORT, ci)
          serverXmlInput.close()
          serverXmlOutput=open('%s/%s-%s/conf/server.xml' % (WC_DIRECTORY,WC_TYPE,WC_VERSION),'w')
          content=portRegEx.sub(WC_PORT, serverXmlInput)
          content=sslPortRegEx.sub(WC_SSL_PORT, content)
          serverXmlOutput=open('%s/%s-%s-%s_server.xml' % \
                          (TMPDIR,STAF_REMOTE_HOSTNAME,WC_TYPE,WC_VERSION),'w')
          serverXmlOutput.write(content)
          serverXmlOutput.close()
        </script>
        <call function="'copyFile'">
          {'srcfile' : '%s/%s-%s-%s_server.xml' % (TMPDIR, STAF_REMOTE_HOSTNAME, WC_TYPE, WC_VERSION),
           'destfile' : '%s/%s-%s/conf/server.xml' % (wcPath, WC_TYPE, WC_VERSION),
           'remotehost' : '%s' % STAF_REMOTE_HOSTNAME
          }
        </call>
        
        <!-- configure webcontainer's SSL environement -->
        <message>
@@ -104,11 +130,11 @@
        <sequence>
          <message>'caught %s with %s' % (eType,eInfo)</message>
          <message>
            'Remove temporary webcontainer zip archive from %s %s' % (STAF_REMOTE_HOSTNAME,WC_DIRECTORY)
            'Remove temporary webcontainer zip archive from %s %s' % (location,wcPath)
          </message>
          <call function="'deleteFolder'">
            { 'location'   : STAF_REMOTE_HOSTNAME ,
            'foldername' : '%s' % WC_DIRECTORY }
            { 'location'   : location ,
            'foldername' : '%s' % wcPath }
          </call>
        </sequence>
      </catch>
@@ -117,7 +143,7 @@
    
  </function>
  
  <function name="deployWebApplicationWAR">
  <function name="deployWebApplicationWAR" scope="local">
    <function-prolog>
      This function deploys a Web Application War file
    </function-prolog>
@@ -129,6 +155,12 @@
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
      <function-arg-def  name="wcPath" type="optional" default="'%s' % WC_DIRECTORY">
        <function-arg-description>
          Pathname to installation root
        </function-arg-description>
        <function-arg-property name="type" value="filepath"/>
      </function-arg-def>
      <function-arg-def name="warFilePath" type="required" default="''">
        <function-arg-description>
          Web application war file path
@@ -145,20 +177,21 @@
    <sequence>
      
      <message>
        'setup: deploy web application %s to %s/%s-%s/webapps/%s' % (warFilePath, WC_DIRECTORY, WC_TYPE, WC_VERSION, destWarFileName)
        'setup: deploy web application %s to %s/%s-%s/webapps/%s' % (warFilePath, wcPath, WC_TYPE, WC_VERSION, destWarFileName)
      </message>
      <call function="'copyFile'">
        { 'location'   : STAF_REMOTE_HOSTNAME ,
        { 'location'   : STAXServiceMachine,
        'srcfile' : '%s' % warFilePath,
        'destfile' : '%s/%s-%s/webapps/%s' % (WC_DIRECTORY, WC_TYPE, WC_VERSION, destWarFileName) }
        'destfile' : '%s/%s-%s/webapps/%s' % (wcPath, WC_TYPE, WC_VERSION, destWarFileName),
        'remotehost' : location}
      </call>
      
    </sequence>
    
  </function>
  
  <function name="stopWebcontainerWithScript">
  <function name="stopWebcontainerWithScript" scope="local">
    <function-prolog>
      This function stops a webcontainer 
    </function-prolog>
@@ -184,7 +217,8 @@
        if wcPath:
          wcBinPath='%s/bin' % wcPath
          STAFCmd='%s/shutdown.sh' % wcBinPath
          STAFCmdEnv=['CATALINA_HOME=%s' % wcPath,'PATH=/bin:/usr/bin']
          STAFCmdEnv=['CATALINA_HOME=%s' % wcPath,'PATH=/bin:/usr/bin'\
                      'JAVA_HOME=%s' % JAVA_HOME]
      </script>
      
      <message>
@@ -213,9 +247,9 @@
    
  </function>
  
  <function name="startWebcontainerWithScript">
  <function name="startWebcontainerWithScript" scope="local">
    <function-prolog>
      This function starts a webcontainer
      This function start a webcontainer
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
@@ -224,7 +258,7 @@
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
      <function-arg-def name="wcPath" type="optional" default="'%s' % WC_DIRECTORY">
      <function-arg-def  name="wcPath" type="optional" default="'%s/%s-%s' % (WC_DIRECTORY, WC_TYPE, WC_VERSION)">
        <function-arg-description>
          Pathname to installation root
        </function-arg-description>
@@ -239,7 +273,8 @@
        if wcPath:
          wcBinPath='%s/bin' % wcPath
          STAFCmd='%s/startup.sh' % wcBinPath
          STAFCmdEnv=['CATALINA_HOME=%s' % wcPath,'PATH=/bin:/usr/bin']
          STAFCmdEnv=['CATALINA_HOME=%s' % wcPath,'PATH=/bin:/usr/bin' \
                      'JAVA_HOME=%s' % JAVA_HOME]
      </script>
      
      <message>
@@ -269,22 +304,37 @@
    
  </function>
  
  <function name="removeWebcontainer">
  <function name="removeWebcontainer" scope="local">
    <function-prolog>
      This function removes the webcontainer instance  
    </function-prolog>
    
    <function-map-args>
      <function-arg-def  name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
      <function-arg-def  name="wcPath" type="optional" default="'%s' % WC_DIRECTORY">
        <function-arg-description>
          Pathname to installation root
        </function-arg-description>
        <function-arg-property name="type" value="filepath"/>
      </function-arg-def>
    </function-map-args>
    <try>
      
      <sequence>
        
        <!-- Remove webcontainer directory -->
        <message>
          'Remove webcontainer from %s %s.' % (STAF_REMOTE_HOSTNAME,WC_DIRECTORY)
          'Remove webcontainer from %s %s.' % (location,wcPath)
        </message>
        <call function="'deleteFolder'">
          { 'location' : STAF_REMOTE_HOSTNAME,
          'foldername'  : '%s/%s-%s' % (WC_DIRECTORY, WC_TYPE, WC_VERSION) }
          { 'location' : location,
          'foldername'  : '%s/%s-%s' % (wcPath, WC_TYPE, WC_VERSION) }
        </call>
        
        <if expr="RC != 0">
@@ -297,11 +347,11 @@
        <sequence>
          <message>'caught %s with %s' % (eType,eInfo)</message>
          <message>
            'Remove temporary webcontainer zip archive from %s %s' % (STAF_REMOTE_HOSTNAME,WC_DIRECTORY)
            'Remove temporary webcontainer zip archive from %s %s' % (location,wcPath)
          </message>
          <call function="'deleteFolder'">
            { 'location'   : STAF_REMOTE_HOSTNAME ,
            'foldername' : '%s/%s-%s' % (WC_DIRECTORY, WC_TYPE, WC_VERSION) }
            { 'location'   : location ,
            'foldername' : '%s/%s-%s' % (wcPath, WC_TYPE, WC_VERSION) }
          </call>
        </sequence>
      </catch>