From a9f53a39717e818e63d8bbb65e103ca7a7b04d68 Mon Sep 17 00:00:00 2001
From: andrug <andrug@localhost>
Date: Tue, 08 Apr 2008 15:33:21 +0000
Subject: [PATCH] allow java tuning for OpenDS instance

---
 opendj-sdk/opends/tests/system-tests/phases/installation/installation_opends.xml   |    4 
 opendj-sdk/opends/tests/system-tests/phases/parser/parser.py                       |  127 ++++++++++++++++++++++++++++++-
 opendj-sdk/opends/tests/system-tests/phases/parser/parser.xml                      |   32 ++++++++
 opendj-sdk/opends/tests/system-tests/phases/shared/functions/opendsadm.xml         |   24 +++++
 opendj-sdk/opends/tests/system-tests/scenario/conf.dtd                             |   23 ++++-
 opendj-sdk/opends/tests/system-tests/phases/configuration/configuration_opends.xml |    7 +
 6 files changed, 201 insertions(+), 16 deletions(-)

diff --git a/opendj-sdk/opends/tests/system-tests/phases/configuration/configuration_opends.xml b/opendj-sdk/opends/tests/system-tests/phases/configuration/configuration_opends.xml
index ccd2ebc..08eafa0 100755
--- a/opendj-sdk/opends/tests/system-tests/phases/configuration/configuration_opends.xml
+++ b/opendj-sdk/opends/tests/system-tests/phases/configuration/configuration_opends.xml
@@ -87,9 +87,10 @@
           
           <if expr="isAliveResult == FALSE">
             <call function="'StartDsWithScript'">
-              { 'location'  : instance.getHost(),
-                 'dsPath'   : instance.getInstallDir(),
-                 'fileFd'   : cFileFd
+              { 'location' : instance.getHost(),
+                'instance' : instance,
+                'dsPath'   : instance.getInstallDir(),
+                'fileFd'   : cFileFd
               }
             </call>
           </if>
diff --git a/opendj-sdk/opends/tests/system-tests/phases/installation/installation_opends.xml b/opendj-sdk/opends/tests/system-tests/phases/installation/installation_opends.xml
index 6c740e6..8a01e4e 100755
--- a/opendj-sdk/opends/tests/system-tests/phases/installation/installation_opends.xml
+++ b/opendj-sdk/opends/tests/system-tests/phases/installation/installation_opends.xml
@@ -267,7 +267,7 @@
       
       
       <!--== Setup product ==-->
-      <if expr="instance.isSslEnabled() == 'false'">
+      <if expr="instance.getIsSslEnabled() == 'false'">
         <call function="'SetUpDsWithScript'">
           { 
             'location'         : instance.getHost(), 
@@ -293,7 +293,7 @@
             'dsBindPwd'        : DIRECTORY_INSTANCE_PSWD,
             'dsBaseDN'         : suffixDn,
             'dsDoNotStart'     : 'true',
-            'dsEnableStartTLS' : instance.isStartTlsEnabled(),
+            'dsEnableStartTLS' : instance.getIsStartTlsEnabled(),
             'dsCertificate'    : instance.getCertificate(),
             'fileFd'           : fileFd
           }
diff --git a/opendj-sdk/opends/tests/system-tests/phases/parser/parser.py b/opendj-sdk/opends/tests/system-tests/phases/parser/parser.py
index e1bcc81..96b4815 100755
--- a/opendj-sdk/opends/tests/system-tests/phases/parser/parser.py
+++ b/opendj-sdk/opends/tests/system-tests/phases/parser/parser.py
@@ -186,6 +186,70 @@
   def getLdifFile(self):
     return self.ldifFile
 
+
+#
+# Class for opendsTuning 
+#
+
+###########################
+class OpendsTuning:
+  "Describes tuning informations for OpenDS instance"
+  def __init__(self,isJava,xms,xmx,xxNewSize,xxMaxNewSize,\
+               xxSurvivorRatio,xxPermSize,xxMaxPermSize,xxUseConcMarkSweepGC,\
+               isDataBase,databaseCachePercentage):
+    self.isJava                  = isJava
+    self.javaArgs                = NOT_DEFINED
+    self.xms                     = xms
+    self.xmx                     = xmx
+    self.xxNewSize               = xxNewSize
+    self.xxMaxNewSize            = xxMaxNewSize
+    self.xxSurvivorRatio         = xxSurvivorRatio
+    self.xxPermSize              = xxPermSize
+    self.xxMaxPermSize           = xxMaxPermSize
+    self.xxUseConcMarkSweepGC    = xxUseConcMarkSweepGC
+    self.isDataBase              = isDataBase
+    self.databaseCachePercentage = databaseCachePercentage
+    
+  def getIsJava(self):
+    return self.isJava
+    
+  def getJavaArgs(self):
+    return self.javaArgs
+    
+  def setJavaArgs(self,javaArgs):
+    self.javaArgs = javaArgs
+    
+  def getXms(self):
+    return self.xms
+    
+  def getXmx(self):
+    return self.xmx
+    
+  def getXxNewSize(self):
+    return self.xxNewSize
+    
+  def getXxMaxNewSize(self):
+    return self.xxMaxNewSize
+    
+  def getXxSurvivorRatio(self):
+    return self.xxSurvivorRatio
+    
+  def getXxPermSize(self):
+    return self.xxPermSize
+    
+  def getXxMaxPermSize(self):
+    return self.xxMaxPermSize
+    
+  def getXxUseConcMarkSweepGC(self):
+    return self.xxUseConcMarkSweepGC
+    
+  def getIsDataBase(self):
+    return self.isDataBase
+    
+  def getDatabaseCachePercentage(self):
+    return self.databaseCachePercentage
+    
+
 #
 # Class for instance 
 #
@@ -274,7 +338,8 @@
   "Describes an opends Instance"
   def __init__(self, iid, name, product, role, host, installDir, tarball, \
                portLDAP, portLDAPS, portJMX, portREPL, \
-               sslEnabled, certificate, startTlsEnabled):
+               sslEnabled, certificate, startTlsEnabled, \
+               tuning):
     # from instance object
     self.iid             = iid
     self.name            = name
@@ -292,6 +357,7 @@
     self.sslEnabled      = sslEnabled
     self.certificate     = certificate
     self.startTlsEnabled = startTlsEnabled
+    self.tuning          = tuning
     
   def getLDAPSPort(self):
     return self.portLDAPS
@@ -308,15 +374,17 @@
   def setJavaVersion(self,javaVersion):
     self.javaVersion = javaVersion
     
-  def isSslEnabled(self):
+  def getIsSslEnabled(self):
     return self.sslEnabled
     
   def getCertificate(self):
     return self.certificate
     
-  def isStartTlsEnabled(self):
+  def getIsStartTlsEnabled(self):
     return self.startTlsEnabled
-
+    
+  def getTuning(self):
+    return self.tuning
 
 #
 # Class for client
@@ -592,6 +660,17 @@
   cSslEnabled      = 'false'
   cCertificate     = NOT_DEFINED
   cStartTlsEnabled = 'false'
+  cIsJava          = 'false'
+  cXms             = NOT_DEFINED
+  cXmx             = NOT_DEFINED
+  cXxNewSize       = NOT_DEFINED
+  cXxMaxNewSize    = NOT_DEFINED
+  cXxSurvivorRatio = NOT_DEFINED
+  cXxPermSize      = NOT_DEFINED
+  cXxMaxPermSize   = NOT_DEFINED
+  cXxUseConcMarkSweepGC = NOT_DEFINED
+  cIsDataBase      = 'false'
+  cDatabaseCachePercentage = NOT_DEFINED
   
   #
   # Parsing second level : host,ports,...
@@ -649,6 +728,35 @@
         cStartTlsEnabled = _getAttributeNode(thisSubChild,'startTlsEnabled')
         
       
+      elif (thisSubChild.getNodeType() == Node.ELEMENT_NODE and
+          thisSubChild.getNodeName() == 'tuning'):
+          
+        # Get tuning values
+        if thisSubChild.hasChildNodes():
+          tuningList = thisSubChild.getChildNodes()
+          for k in range(tuningList.getLength()):
+            thisTuning = tuningList.item(k)
+            if (thisTuning.getNodeType() == Node.ELEMENT_NODE and
+                thisTuning.getNodeName() == 'java'):
+              cIsJava = 'true'
+              cXms = _getAttributeNode(thisTuning,'xms')
+              cXmx = _getAttributeNode(thisTuning,'xmx')
+              cXxNewSize = _getAttributeNode(thisTuning,'xxNewSize')
+              cXxMaxNewSize = _getAttributeNode(thisTuning,'xxMaxNewSize')
+              cXxSurvivorRatio = _getAttributeNode(thisTuning,
+                                                   'xxSurvivorRatio')
+              cXxPermSize = _getAttributeNode(thisTuning,'xxPermSize')
+              cXxMaxPermSize = _getAttributeNode(thisTuning,'xxMaxPermSize')
+              cXxUseConcMarkSweepGC = _getAttributeNode(thisTuning,
+                                                        'xxUseConcMarkSweepGC')
+              
+            elif (thisTuning.getNodeType() == Node.ELEMENT_NODE and
+                thisTuning.getNodeName() == 'databaseCache'):
+              cIsDataBase = 'true'
+              cDatabaseCachePercentage = _getAttributeNode(thisTuning,
+                                                     'percentage')
+              
+              
       # must be at the end of the if case
       elif (thisSubChild.getNodeType() == Node.TEXT_NODE or
             thisSubChild.getNodeType() == Node.COMMENT_NODE):
@@ -666,11 +774,20 @@
     msg = '%s\n ERROR: instance %s : no children for instance node' % \
           (msg,cName)
   
+  
+  cOpendsTuning = OpendsTuning(cIsJava,cXms,cXmx,cXxNewSize,cXxMaxNewSize,\
+                              cXxSurvivorRatio,cXxPermSize,cXxMaxPermSize,\
+                              cXxUseConcMarkSweepGC,\
+                              cIsDataBase,cDatabaseCachePercentage)
+  
   cInstallDir = '%s/%s/%s' % (cInstallDir,cName,opendsName)
   return [msg,OpendsInstance(cId,cName,cProduct,cRole,cHost,cInstallDir,\
                              opendsZip,\
                              cPortLDAP,cPortLDAPS,cPortJMX,cPortREPL,\
-                             cSslEnabled,cCertificate,cStartTlsEnabled)]
+                             cSslEnabled,cCertificate,cStartTlsEnabled,\
+                             cOpendsTuning)]
+
+
 
 
 #============================================================================
diff --git a/opendj-sdk/opends/tests/system-tests/phases/parser/parser.xml b/opendj-sdk/opends/tests/system-tests/phases/parser/parser.xml
index 266e03e..864b4ef 100755
--- a/opendj-sdk/opends/tests/system-tests/phases/parser/parser.xml
+++ b/opendj-sdk/opends/tests/system-tests/phases/parser/parser.xml
@@ -102,6 +102,38 @@
           <script>
             instance.setLogDir('%s/%s' % (LOG_DIR,instance.getName()))
           </script>
+          <!-- Set javaArgs tuning property -->
+          <script>
+            
+            tuning = instance.getTuning()
+            if tuning.getIsJava() == 'true':
+              if tuning.getXms() != NOT_DEFINED:
+                c1 = '-Xms%s' % tuning.getXms()
+                
+              if tuning.getXmx() != NOT_DEFINED:
+                c2 = '-Xmx%s' % tuning.getXmx()
+                
+              if tuning.getXxNewSize() != NOT_DEFINED:
+                c3 = '-XX&#58;NewSize=%s' % tuning.getXxNewSize()
+                
+              if tuning.getXxMaxNewSize() != NOT_DEFINED:
+                c4 = '-XX&#58;MaxNewSize=%s' % tuning.getXxMaxNewSize()
+                
+              if tuning.getXxSurvivorRatio() != NOT_DEFINED:
+                c5 = '-XX&#58;SurvivorRatio=%s' % tuning.getXxSurvivorRatio()
+                
+              if tuning.getXxPermSize() != NOT_DEFINED:
+                c6 = '-XX&#58;PermSize=%s' % tuning.getXxPermSize()
+                
+              if tuning.getXxMaxPermSize() != NOT_DEFINED:
+                c7 = '-XX&#58;MaxPermSize=%s' % tuning.getXxMaxPermSize()
+                
+              if tuning.getXxUseConcMarkSweepGC() == 'true':
+                c8 = '-XX&#58;+UseConcMarkSweepGC'
+              
+              tuning.setJavaArgs('%s %s %s %s %s %s %s %s' % \
+                                (c1,c2,c3,c4,c5,c6,c7,c8))
+          </script>
         </sequence>
       </paralleliterate>
       
diff --git a/opendj-sdk/opends/tests/system-tests/phases/shared/functions/opendsadm.xml b/opendj-sdk/opends/tests/system-tests/phases/shared/functions/opendsadm.xml
index fec23b3..59a9a54 100755
--- a/opendj-sdk/opends/tests/system-tests/phases/shared/functions/opendsadm.xml
+++ b/opendj-sdk/opends/tests/system-tests/phases/shared/functions/opendsadm.xml
@@ -207,6 +207,12 @@
         </function-arg-description>
         <function-arg-property name="type" value="hostname"/>
       </function-arg-def>
+      <function-arg-def name="instance" type="optional">
+        <function-arg-description>
+          instance object of the instance
+        </function-arg-description>
+        <function-arg-property name="type" value="option"/>
+      </function-arg-def>
      <function-arg-def name="dsPath" type="required">
         <function-arg-description>
           Pathname to installation root
@@ -279,12 +285,28 @@
         STAFCmdParams=' '.join(STAFCmdParamsList)
       </script>
       
+      <!-- define environment variables -->
+      <script>
+        env = []
+        env.append('PATH=/bin:/usr/bin:%s' % dsBinPath)
+        env.append('JAVA_HOME=%s' % JAVA_HOME)
+        env.append('OPENDS_JAVA_HOME=%s' % JAVA_HOME)
+        
+        if instance:
+          sys.path.append("%s/phases/parser" % TESTS_DIR )
+          from parser import *
+          tuning = instance.getTuning()
+          if tuning.getJavaArgs() != NOT_DEFINED:
+            env.append('OPENDS_JAVA_ARGS=%s' % tuning.getJavaArgs())
+      </script>
       <call function="'runCommand'">
-        { 'name'      : 'StartDsWithScript',
+        { 'name'      : 'StartDs %s:%s' % \
+                        (instance.getName(),instance.getLDAPPort()),
           'location'  : location,
           'command'   : STAFCmd,
           'arguments' : STAFCmdParams,
           'path'      : dsBinPath,
+          'env'       : env,
           'fileFd'    : fileFd
         }
       </call>
diff --git a/opendj-sdk/opends/tests/system-tests/scenario/conf.dtd b/opendj-sdk/opends/tests/system-tests/scenario/conf.dtd
index ecedfd5..3f9ae0a 100755
--- a/opendj-sdk/opends/tests/system-tests/scenario/conf.dtd
+++ b/opendj-sdk/opends/tests/system-tests/scenario/conf.dtd
@@ -40,7 +40,7 @@
   <!ELEMENT domain (#PCDATA)>
 
 <!-- ========== INSTANCE NODE ========================= -->
-<!ELEMENT instance (host,installDir,ports?,security?)>
+<!ELEMENT instance (host,installDir,ports?,security?,tuning?)>
 <!ATTLIST instance 
     name NMTOKEN #REQUIRED 
     product NMTOKEN #REQUIRED
@@ -54,10 +54,23 @@
     <!ELEMENT jmx (#PCDATA)>
     <!ELEMENT replicationServer (#PCDATA)>
   <!ELEMENT security EMPTY>
-  <!ATTLIST security 
-      sslEnabled ( true | false ) "true" 
-      certificate ( generateSelfSigned ) "generateSelfSigned"
-      startTlsEnabled ( true | false) "false">
+  <!ATTLIST security
+        sslEnabled ( true | false ) "false"
+        certificate ( generateSelfSigned ) "generateSelfSigned"
+        startTlsEnabled ( true | false ) "false">
+  <!ELEMENT tuning (java?,databaseCache?)>
+    <!ELEMENT java EMPTY>
+    <!ATTLIST java
+        xms NMTOKEN #IMPLIED
+        xmx NMTOKEN #IMPLIED
+        xxNewSize NMTOKEN #IMPLIED
+        xxMaxNewSize NMTOKEN #IMPLIED
+        xxSurvivorRatio NMTOKEN #IMPLIED
+        xxPermSize NMTOKEN #IMPLIED
+        xxMaxPermSize NMTOKEN #IMPLIED
+        xxUseConcMarkSweepGC NMTOKEN #IMPLIED>
+    <!ELEMENT databaseCache EMPTY>
+    <!ATTLIST databaseCache percentage NMTOKEN #REQUIRED>
 
 
 <!-- ========== SUFFIX NODE ========================= -->

--
Gitblit v1.10.0