From 2848f22821f36ea934e78ae583a7009ddc4b62f7 Mon Sep 17 00:00:00 2001
From: al_xipe <al_xipe@localhost>
Date: Thu, 13 Sep 2007 00:03:29 +0000
Subject: [PATCH] first draft of automated response time tests

---
 opendj-sdk/opends/tests/performance/response-time/opends.properties         |   23 +
 opendj-sdk/opends/tests/performance/response-time/build                     |    1 
 opendj-sdk/opends/tests/performance/response-time/build.bat                 |    1 
 opendj-sdk/opends/tests/performance/response-time/build.properties          |   11 
 opendj-sdk/opends/tests/performance/response-time/build.xml                 |  376 +++++++++++++++++++++++++++++++
 opendj-sdk/opends/tests/performance/response-time/proxy.xml                 |   24 ++
 opendj-sdk/opends/tests/performance/response-time/data/telco.template.stubs |  179 ++++++++++++++
 opendj-sdk/opends/tests/performance/response-time/data/98telco.ldif         |   77 ++++++
 8 files changed, 692 insertions(+), 0 deletions(-)

diff --git a/opendj-sdk/opends/tests/performance/response-time/build b/opendj-sdk/opends/tests/performance/response-time/build
new file mode 100755
index 0000000..0e1bb19
--- /dev/null
+++ b/opendj-sdk/opends/tests/performance/response-time/build
@@ -0,0 +1 @@
+ant/bin/ant ${*}
diff --git a/opendj-sdk/opends/tests/performance/response-time/build.bat b/opendj-sdk/opends/tests/performance/response-time/build.bat
new file mode 100644
index 0000000..730446e
--- /dev/null
+++ b/opendj-sdk/opends/tests/performance/response-time/build.bat
@@ -0,0 +1 @@
+ant\bin\ant %*
diff --git a/opendj-sdk/opends/tests/performance/response-time/build.properties b/opendj-sdk/opends/tests/performance/response-time/build.properties
new file mode 100644
index 0000000..66a86b3
--- /dev/null
+++ b/opendj-sdk/opends/tests/performance/response-time/build.properties
@@ -0,0 +1,11 @@
+# directory names
+install.dir=install
+product.dir=product
+tmp.dir=tmp
+data.dir=data
+
+# directory pathes
+install.path=${basedir}${file.separator}${install.dir}
+product.path=${install.path}${file.separator}${product.dir}
+data.path=${basedir}${file.separator}${data.dir}
+tmp.path=${basedir}${file.separator}${tmp.dir}
diff --git a/opendj-sdk/opends/tests/performance/response-time/build.xml b/opendj-sdk/opends/tests/performance/response-time/build.xml
new file mode 100644
index 0000000..2ac05b6
--- /dev/null
+++ b/opendj-sdk/opends/tests/performance/response-time/build.xml
@@ -0,0 +1,376 @@
+<project name="opends-perf-test" basedir="." default="usage">
+  <target name="usage">
+    <echo>Usage:
+    clean           : remove OpenDS instance and all temporary files
+    get-opends      : retrieve the latest weekly build
+    configure-opends: install and configures opends</echo>
+  </target>
+  <!-- declare the ant-contrib resource -->
+  <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
+  
+  <!-- load the properties -->
+  <property file="build.properties"                  />
+  <property file="opends.properties" prefix="opends" />
+  <property file="proxy.properties"  prefix="proxy"  />
+  
+  <!-- platform specific properties -->
+  <condition property="script.ext" value=".bat" else="">
+    <os family="windows" />
+  </condition>
+  <condition 
+    property="opends.bin.path" 
+    value="${product.path}${file.separator}bat"
+    else="${product.path}${file.separator}bin" >
+    <os family="windows" />
+  </condition>
+
+  <target name="clean-install">
+    <delete dir="${install.path}" />
+  </target>
+  <target name="clean"
+          description="Removes all temporary files and installed bits"
+          depends="clean-install" >
+    <delete dir="${tmp.path}" />
+  </target>
+  
+  
+  <target name="init">
+    <!-- create the temporary directory -->
+    <mkdir dir="${tmp.path}" />
+  </target>
+  
+  <target name="chk-pkg">
+    <available file="${dest}" 
+               property="already.downloaded"/>
+  </target>
+  
+  <target name="get-pkg" depends="chk-pkg" unless="already.downloaded">
+    <get src="${src}" dest="${dest}"/>
+  </target>
+  
+  <target name="get-opends-id" depends="init" unless="opends.manual.download">
+    <delete file="${tmp.path}${file.separator}${opends.url.file}" />
+    <condition property="opends.url" value="${opends.url.weekly}/${opends.url.file}">
+      <not>
+        <isset property="opends.url" />
+      </not>
+    </condition>
+    <antcall target="get-pkg">
+      <param name="src" value="${opends.url}"/>
+      <param name="dest" value="${tmp.path}${file.separator}${opends.url.file}"/>
+    </antcall>
+    <loadfile srcfile="${tmp.path}${file.separator}${opends.url.file}"
+              property="opends.build.name">
+      <filterchain>
+        <linecontainsregexp>
+          <regexp pattern="OpenDS-.*\.zip" />
+        </linecontainsregexp>
+        <replaceregex 
+          pattern="^.*&lt;A HREF=&quot;.*(OpenDS-.*)\.zip&quot;&gt;.*$" 
+          replace="\1" />
+        <striplinebreaks/>
+      </filterchain>
+    </loadfile>
+    <loadfile srcfile="${tmp.path}${file.separator}${opends.url.file}"
+              property="opends.package.url">
+      <filterchain>
+        <linecontainsregexp>
+          <regexp pattern="OpenDS-.*\.zip" />
+        </linecontainsregexp>
+        <replaceregex 
+          pattern="^.*&lt;A HREF=&quot;(.*)&quot;&gt;.*$" 
+          replace="\1" />
+        <striplinebreaks/>
+      </filterchain>
+    </loadfile>
+    <property name="opends.package.name" value="${opends.build.name}.zip" />
+  </target>
+  
+  <target name="get-opends" 
+          depends="init,get-opends-id" 
+          unless="opends.package.available">
+    <echo message="The latest weekly build of OpenDS is packaged as [${opends.package.name}]"/>
+    <condition property="opends.url" value="${opends.url.weekly}/${opends.url.file}">
+      <not>
+        <isset property="opends.url" />
+      </not>
+    </condition>
+    <antcall target="get-pkg">
+      <param name="src" value="${opends.url}${opends.package.url}"/>
+      <param name="dest" value="${tmp.path}${file.separator}${opends.package.name}"/>
+    </antcall>
+  </target>
+  
+  <target name="unpack-opends">
+    <if>
+      <available file="${product.path}" />
+      <then>
+        <echo message="OpenDS already unpacked." />
+      </then>
+      <else>
+        <mkdir dir="${install.path}" />
+        <unzip dest="${install.path}">
+          <fileset dir="${tmp.path}">
+              <include name="OpenDS-*.zip"/>
+          </fileset>
+          <mapper type="regexp" from="^OpenDS-.*?/(.*)$$" to="${product.dir}/\1"/>
+        </unzip>
+        <if>
+          <not>
+            <os family="windows" />
+          </not>
+          <then>
+            <chmod perm="755" >
+              <fileset dir="${product.path}">
+                <include name="setup" />
+                <include name="lib/*" />
+                <include name="bin/*" />
+              </fileset>
+            </chmod>
+          </then>
+        </if>
+      </else>
+    </if>
+  </target>
+  
+  <target name="configure-opends">
+    <if>
+      <available file="${product.path}" />
+      <then>
+        <echo message="Setting custom schema" />
+        <copy file="${data.path}${file.separator}${opends.schema.ldif}"
+              tofile="${product.path}${file.separator}config${file.separator}schema${file.separator}${opends.schema.ldif}" />
+        <echo message="Setting OpenDS up" />
+        <exec
+          executable="${product.path}${file.separator}setup${script.ext}">
+          <arg value="--cli"                         />
+          <arg value="--rootUserDN"                  />
+          <arg value="${opends.admin.dn}"            />
+          <arg line="--rootUserPassword"             />
+          <arg value="${opends.admin.pwd}"           />
+          <arg line="--ldapPort ${opends.port.ldap}" />
+          <arg value="--baseDN"                      />
+          <arg value="${opends.suffix}"              />
+          <arg value="--addBaseEntry"                />
+        </exec>
+        <echo message="Importing data" />
+        <exec
+          executable="${opends.bin.path}${file.separator}import-ldif${script.ext}">
+          <arg value="--ldifFile"      />
+          <arg value="${tmp.path}${file.separator}${opends.makeldif.ldif}" />
+          <arg line="--backendID"      />
+          <arg value="userRoot"        />
+          <env key="JAVA_ARGS" value="-Xms256M -Xmx1G" />
+        </exec>
+        <echo message="Tuning server settings" />
+      </then>
+      <else>
+        <echo message="OpenDS is not installed." />
+      </else>
+    </if>
+  </target>
+  
+  <target name="regenerate-template">
+    <delete file="${tmp.path}${file.separator}${opends.makeldif.template}" />
+    <antcall target="generate-template" />
+  </target>
+  
+  <target name="generate-template">
+    <if>
+      <available file="${tmp.path}${file.separator}${opends.makeldif.template}" />
+      <then>
+        <echo message="Template already generated."/>
+      </then>
+      <else>
+        <if>
+          <isset property="opends.makeldif.entries"/>
+          <then>
+            <property name="entries.total.input" value="${opends.makeldif.entries}" />
+          </then>
+          <else>
+            <input message="How many entries should the resulting template generate?"
+                 addproperty="entries.total.input" />
+          </else>
+        </if>
+        
+        <math result="modulo30" 
+              operand1="${entries.total.input}"
+              operation="%"
+              operand2="30"
+              datatype="long"/>
+        <if>
+          <equals arg1="${modulo30}" arg2="0" />
+          <then>
+            <echo message="Keeping ${entries.total.input} because it is divisable by 30"/>
+            <property name="entries.total" value="${entries.total.input}"/>
+          </then>
+          <else>
+            <math result="modulo30.adjust" 
+                  operand1="30"
+                  operation="-"
+                  operand2="${modulo30}"
+                  datatype="long"/>
+            <math result="entries.total" 
+                  operand1="${entries.total.input}"
+                  operation="+"
+                  operand2="${modulo30.adjust}"
+                  datatype="long"/>
+            <echo message="Increasing total entries to ${entries.total} to make it divisable by 30"/>
+          </else>
+        </if>
+        
+        <math result="entries.subscribers" 
+              operand1="${entries.total}"
+              operation="/"
+              operand2="3"/>
+        <math result="entries.devices"
+              operand1="${entries.subscribers}"
+              operation="*"
+              operand2="2"
+              datatype="long" />
+        <math result="entries.subscribers.4devices"
+              operand1="${entries.subscribers}"
+              operation="/"
+              operand2="10"
+              datatype="long" />
+        <math result="entries.subscribers.3devices"
+              operand1="${entries.subscribers.4devices}"
+              operation="*"
+              operand2="2"
+              datatype="long" />
+        <math result="entries.subscribers.2devices"
+              operand1="${entries.subscribers.4devices}"
+              operation="*"
+              operand2="3"
+              datatype="long" />
+        <math result="entries.subscribers.1device"
+              operand1="${entries.subscribers.4devices}"
+              operation="*"
+              operand2="4"
+              datatype="long" />
+        <property name="offset" value="1000000001"/>
+        <property name="subscribersStart" value="${offset}" />
+        <property name="devicesStart"     value="${offset}" />
+        <property name="subscribers1Start" value="${subscribersStart}" />
+        <math result="subscribers2Start"
+              operand1="${subscribers1Start}"
+              operation="+"
+              operand2="${entries.subscribers.1device}"
+              datatype="long" />
+        <math result="subscribers3Start"
+              operand1="${subscribers2Start}"
+              operation="+"
+              operand2="${entries.subscribers.2devices}"
+              datatype="long" />
+        <math result="subscribers4Start"
+              operand1="${subscribers3Start}"
+              operation="+"
+              operand2="${entries.subscribers.3devices}"
+              datatype="long" />
+        <math result="subscribers2aStart"
+              operand1="${subscribers1Start}"
+              operation="+"
+              operand2="${entries.subscribers.1device}"
+              datatype="long" />
+        <math result="subscribers2bStart"
+              operand1="${subscribers2aStart}"
+              operation="+"
+              operand2="${entries.subscribers.2devices}"
+              datatype="long" />
+        <math result="subscribers3aStart"
+              operand1="${subscribers2bStart}"
+              operation="+"
+              operand2="${entries.subscribers.2devices}" 
+              datatype="long" />
+        <math result="subscribers3bStart"
+              operand1="${subscribers3aStart}"
+              operation="+"
+              operand2="${entries.subscribers.3devices}"
+              datatype="long" />
+        <math result="subscribers3cStart"
+              operand1="${subscribers3bStart}"
+              operation="+"
+              operand2="${entries.subscribers.3devices}"
+              datatype="long" />
+        <math result="subscribers4aStart"
+              operand1="${subscribers3cStart}"
+              operation="+"
+              operand2="${entries.subscribers.3devices}"
+              datatype="long" />
+        <math result="subscribers4bStart"
+              operand1="${subscribers4aStart}"
+              operation="+"
+              operand2="${entries.subscribers.4devices}"
+              datatype="long" />
+        <math result="subscribers4cStart"
+              operand1="${subscribers4bStart}"
+              operation="+"
+              operand2="${entries.subscribers.4devices}"
+              datatype="long" />
+        <math result="subscribers4dStart"
+              operand1="${subscribers4cStart}"
+              operation="+"
+              operand2="${entries.subscribers.4devices}"
+              datatype="long" />
+        <copy file="${data.path}${file.separator}${opends.makeldif.stubs}"
+              tofile="${tmp.path}${file.separator}${opends.makeldif.template}">
+          <filterchain>
+            <expandproperties />
+          </filterchain>
+        </copy>
+      </else>
+    </if>
+  </target>
+  
+  <target name="regenerate-ldif">
+    <delete file="${tmp.path}${file.separator}${opends.makeldif.ldif}" />
+    <antcall target="generate-ldif" />
+  </target>
+  <target name="generate-ldif">
+    <if>
+      <or>
+        <available file="${tmp.path}${file.separator}${opends.makeldif.ldif}" />
+        <not>
+          <available file="${tmp.path}${file.separator}${opends.makeldif.template}" />
+        </not>
+        <not>
+          <available file="${product.path}"/>
+        </not>
+      </or>
+      <then>
+        <if>
+          <available file="${tmp.path}${file.separator}${opends.makeldif.ldif}" />
+          <then>
+            <echo message="LDIF data already generated."/>
+          </then>
+          <else>
+            <if>
+              <available file="${product.path}"/>
+              <then>
+                <echo message="Template not available. Use 'generate-template' target."/>
+              </then>
+              <else>
+                <echo message="OpenDS not installed. Use 'get-opends unpack-opends' targets."/>
+              </else>
+            </if>
+          </else>
+        </if>
+      </then>
+      <else>
+        <exec executable="${opends.bin.path}${file.separator}make-ldif${script.ext}">
+          <arg line="--randomSeed 0"        />
+          <arg value="--templateFile"       />
+          <arg value="${tmp.path}${file.separator}${opends.makeldif.template}" />
+          <arg value="--ldifFile"           />
+          <arg value="${tmp.path}${file.separator}${opends.makeldif.ldif}"     />
+        </exec>
+      </else>
+    </if>
+  </target>
+  
+  <target name="generate-opends-config">
+  </target>
+  
+  <target name="generate-slamd-config" >
+  </target>
+</project>
diff --git a/opendj-sdk/opends/tests/performance/response-time/data/98telco.ldif b/opendj-sdk/opends/tests/performance/response-time/data/98telco.ldif
new file mode 100644
index 0000000..cad87ec
--- /dev/null
+++ b/opendj-sdk/opends/tests/performance/response-time/data/98telco.ldif
@@ -0,0 +1,77 @@
+dn: cn=schema
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.18.1 NAME 'ntlRadiusChapPassword' DESC 'Equal to userPassword' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.18.2 NAME 'ntlRadiusStatus' DESC 'active' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (2.16.840.1.113730.3.1.692 NAME 'inetUserStatus' DESC 'active' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.18.4 NAME 'ntlRadiusGlobalProfileRef' DESC 'ntlRadiusGlobalProfileRef ' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.18.5 NAME 'ntlParentScopeRef' DESC 'ntlParentScopeRef' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.18.6 NAME 'portabilityState' DESC 'password change 1:initial system generated(non-portable) 2: userdefined password(portable) 3:reset system generated (non-portable)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.18.7 NAME 'nai' DESC 'nai' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.18.8 NAME 'subscriberId' DESC 'subscriber id or SubID can be used as it is done in VISION LDAP' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  ) 
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.18.9 NAME 'userprofileId' DESC 'user profile id' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE  )  
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.18.10 NAME 'esn' DESC 'ESN or uid can be used as it is done in VISION currently' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.19.1 NAME 'modelId' DESC 'Model Identifier' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.19.2 NAME 'dataCapableDevice3G' DESC 'Data Capable Device 3G' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.19.3 NAME 'smsCapableDevice2way' DESC 'SMS Capable Device 2way' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.19.4 NAME 'shortMailCapableDevice' DESC 'Short Mail Capable Device' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.19.5 NAME 'prePaidSubscriber' DESC 'Pre Paid Subscriber' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.19.6 NAME 'cameraCapableDevice' DESC 'Camera Capable Device' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.19.7 NAME 'mmsCapableDevice' DESC 'MMS Capable Device' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.19.8 NAME 'videoMailCapableDevice' DESC 'Video Mail Capable Device' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.19.9 NAME 'pushtype' DESC 'how to push a application to device' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.1 NAME 'mdn' DESC 'Mobile Dialed Number' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.2 NAME 'msid' DESC 'Mobile Station Identifier Number' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.4 NAME 'meid' DESC 'Mobile Equipment Identifier' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.5 NAME 'manufactureid' DESC 'Manufacturer Identifier' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )   
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.6 NAME 'productId' DESC 'Product Identifier' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE  )   
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.7 NAME 'routingMask' DESC 'Routing Mask 3Gsub | 2WSMS | Short Mail Compatible | Virgin | Reseller' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.8 NAME 'billingmask' DESC 'Billing Mask' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.9 NAME 'contentProviderMask' DESC 'Content Provider Mask Currently not in user' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.10 NAME 'picMailServiceName' DESC 'Picture Mail Service Name' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.11 NAME 'videoMailServiceName' DESC 'Video Mail Service Name' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )   
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.12 NAME 'effectiveDate' DESC 'Date/Time Stamp Mask' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  ) 
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.13 NAME 'blockinfo' DESC 'block info mdn,email or domain which will be blocked' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )   
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.14 NAME 'allowWeb' DESC 'Allow Web SMS message are allowed from web' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.15 NAME 'allowMail' DESC 'Allow Mail SMS message are allowed from Mail' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.16 NAME 'allowTap' DESC 'Allow Tap SMS message are allowed from TAP' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.17 NAME 'displayMask' DESC 'Display Mask FSB: From, Subject, Body display options' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.18 NAME 'deliveryOverride' DESC 'Delivery Overide' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.19 NAME 'smsPdrOcos' DESC 'Subscriber-level Outbound Class of Service' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.8.20.20 NAME 'resellerId' DESC 'Reseller Id' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.21 NAME 'winTriggerName' DESC 'winTriggerName' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.22 NAME 'smsSubscriberFilterMt' DESC 'Subscriber controlled block of MT' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.23 NAME 'smsWhitelist' DESC 'SMS Subscriber whitelist' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.24 NAME 'smsAllowMoMessaging' DESC 'MO Provisioning Indicator' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.25 NAME 'smsAllowMtMessaging' DESC 'MT Provisioning Indicator' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.26 NAME 'smsHotlined' DESC 'Hotlined indicator' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.27 NAME 'servBeginDate' DESC 'Service Begin Date' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.28 NAME 'servEndDate' DESC 'Service End Date' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.29 NAME 'archIndicator' DESC 'Archive Indicator' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.30 NAME 'caseNumber' DESC 'case Number' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.31 NAME 'lastmodifiedbyspm' DESC 'case Number' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.32 NAME 'evdo' DESC 'EVDO' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.33 NAME 'imsi' DESC 'imsi' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.34 NAME 'imei' DESC 'imei is also tied to a device and can be similar to ESN. This can be used to identity a device.' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.35 NAME 'ipaddress' DESC 'ipaddress tied to ptn handset' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.36 NAME 'mmsService' DESC 'Device is capable of mms service' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.37 NAME 'smsService' DESC 'Short Messaging Service' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.38 NAME 'twowayintlService' DESC 'subscriber is capable of international roaming' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.39 NAME 'boostService' DESC 'Subscriber has boost service' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.40 NAME 'premierService' DESC 'Subscriber has premier service' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.41 NAME 'basicService' DESC 'Subscriber has basic service' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.42 NAME 'arbalance' DESC 'Accounts Receiveable Balance for JavaCAPS' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+attributeTypes: (1.3.6.1.4.1.2792.2006.9.20.43 NAME 'arbalanced' DESC 'Accounts Receiveable Balance Date for JavaCAPS' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE  )
+objectClasses: ( 1.3.6.1.4.1.2792.2006.9.100.1 NAME 'subscriberinfo' DESC 'Subscriber Information objectclass' SUP top STRUCTURAL MAY (uid $ userPassword $ ntlRadiusChapPassword $ ntlRadiusStatus $ inetUserStatus $ ntlRadiusGlobalProfileRef $ ntlParentScopeRef $ portabilityState $ nai $ subscriberId $ userprofileId $ esn $ arbalance $ arbalanced)  )
+objectClasses: ( 1.3.6.1.4.1.2792.2006.9.100.2 NAME 'devicedetails' DESC 'Device details objectclass' SUP top STRUCTURAL MAY (modelId $ dataCapableDevice3G $ smsCapableDevice2way $ shortMailCapableDevice $ prePaidSubscriber $ cameraCapableDevice $ mmsCapableDevice $ videoMailCapableDevice $ pushtype)  )
+objectClasses: ( 1.3.6.1.4.1.2792.2006.9.100.3 NAME 'deviceinfo' DESC 'Subscriber Information for a Device objectclass' SUP top STRUCTURAL MAY (nai $ mdn $ msid $ esn $ meid $ manufactureId $ modelId $ productId $ routingMask $ billingMask $ contentProviderMask $ picMailServiceName $ videoMailServiceName $ effectiveDate $ blockInfo $ allowWeb $ allowMail $ allowTap $ displayMask $ deliveryOverride $ smsPdrOcos $ resellerId $ winTriggerName $ smsSubscriberFilterMt $ smsWhitelist $ smsAllowMoMessaging $ smsAllowMtMessaging $ smsHotlined $ servBeginDate $ servEndDate $ archIndicator $ caseNumber $ lastmodifiedbyspm $ evdo $ imsi $ imei $ ipaddress $ mmsService $ smsService $ twowayintlService $ boostService $ premierService $ basicService)  )
+attributeTypes: ( 1.3.6.1.4.1.42.2.27.9.1.501 NAME 'sun-fm-saml2-nameid-info'
+ DESC 'SAML 2.0 Name Identifier Information' SYNTAX 1.3.6.1.4.1.1466.115.121.
+ 1.15 X-ORIGIN ( 'Sun Java System Access Management' 'user defined' ) )
+attributeTypes: ( 1.3.6.1.4.1.42.2.27.9.1.500 NAME 'sun-fm-saml2-nameid-infoke
+ y' DESC 'SAML 2.0 Name Identifier Information Key' SYNTAX 1.3.6.1.4.1.1466.1
+ 15.121.1.15 X-ORIGIN ( 'Sun Java System Access Management' 'user defined' )
+ )
+objectClasses: ( 1.3.6.1.4.1.42.2.27.9.2.200 NAME 'sunFMSAML2NameIdentifier' D
+ ESC 'SAML 2.0 name identifier objectclass' SUP top AUXILIARY MAY ( sun-fm-sa
+ ml2-nameid-infokey $ sun-fm-saml2-nameid-info ) X-ORIGIN ( 'Sun Java System
+ Access Management' 'user defined' )
+
diff --git a/opendj-sdk/opends/tests/performance/response-time/data/telco.template.stubs b/opendj-sdk/opends/tests/performance/response-time/data/telco.template.stubs
new file mode 100644
index 0000000..4989a88
--- /dev/null
+++ b/opendj-sdk/opends/tests/performance/response-time/data/telco.template.stubs
@@ -0,0 +1,179 @@
+branch: ${opends.suffix}
+
+branch: uid=admin,${opends.suffix}
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Admin
+sn: User
+cn: Admin User
+userPassword: password
+
+branch: uid=default,${opends.suffix}
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Default
+sn: User
+cn: Default User
+userPassword: password
+
+branch: uid=proxy,${opends.suffix}
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Proxy
+sn: User
+cn: Proxy User
+userPassword: password
+
+branch: o=entries,${opends.suffix}
+
+branch: ou=subscriber,o=entries,${opends.suffix}
+subordinateTemplate: subscriberWithOneDevice:${entries.subscribers.1device}
+subordinateTemplate: subscriberWithTwoDevices:${entries.subscribers.2devices}
+subordinateTemplate: subscriberWithThreeDevices:${entries.subscribers.3devices}
+subordinateTemplate: subscriberWithFourDevices:${entries.subscribers.4devices}
+
+branch: ou=device,o=entries,${opends.suffix}
+subordinateTemplate: device:${entries.devices}
+
+branch: ou=devicedetails,o=entries,${opends.suffix}
+subordinateTemplate: deviceDetail:1000
+
+template: subscriberWithOneDevice
+rdnAttr: uid
+objectClass: top
+objectClass: subscriberInfo
+subscriberId: <sequential:${subscribers1Start}>
+uid: {subscriberId}
+userPassword: password
+ntlRadiusChapPassword: password
+ntlRadiusStatus: <list:Active;75:Suspended;25>
+ntlRadiusGlobalProfileRef: cn={uid},ou=profiles,ou=radius,ou=ip services,o=entries,${opends.suffix}
+ntlParentScopeRef: cn=scope<random:numeric:2>,ou=scopes,o=entries,${opends.suffix}
+inetUserStatus: {ntlRadiusStatus}
+portabilityState: <list:90;0:10;1>
+nai: {uid}\@${opends.domain}
+userProfileId: {uid}
+esn: <sequential:${subscribers1Start}>
+
+template: subscriberWithTwoDevices
+rdnAttr: uid
+objectClass: top
+objectClass: subscriberInfo
+subscriberId: <sequential:${subscribers2Start}>
+uid: {subscriberId}
+userPassword: password
+ntlRadiusChapPassword: password
+ntlRadiusStatus: <list:Active;75:Suspended;25>
+ntlRadiusGlobalProfileRef: cn={uid},ou=profiles,ou=radius,ou=ip services,o=entries,${opends.suffix}
+ntlParentScopeRef: cn=scope<random:numeric:2>,ou=scopes,o=entries,${opends.suffix}
+inetUserStatus: {ntlRadiusStatus}
+portabilityState: <list:90;0:10;1>
+nai: {uid}\@${opends.domain}
+userProfileId: {uid}
+esn: <sequential:${subscribers2aStart}>
+esn: <sequential:${subscribers2bStart}>
+
+template: subscriberWithThreeDevices
+rdnAttr: uid
+objectClass: top
+objectClass: subscriberInfo
+subscriberId: <sequential:${subscribers3Start}>
+uid: {subscriberId}
+userPassword: password
+ntlRadiusChapPassword: password
+ntlRadiusStatus: <list:Active;75:Suspended;25>
+ntlRadiusGlobalProfileRef: cn={uid},ou=profiles,ou=radius,ou=ip services,o=entries,${opends.suffix}
+ntlParentScopeRef: cn=scope<random:numeric:2>,ou=scopes,o=entries,${opends.suffix}
+inetUserStatus: {ntlRadiusStatus}
+portabilityState: <list:90;0:10;1>
+nai: {uid}\@${opends.domain}
+userProfileId: {uid}
+esn: <sequential:${subscribers3aStart}>
+esn: <sequential:${subscribers3bStart}>
+esn: <sequential:${subscribers3cStart}>
+
+template: subscriberWithFourDevices
+rdnAttr: uid
+objectClass: top
+objectClass: subscriberInfo
+subscriberId: <sequential:${subscribers4Start}>
+uid: {subscriberId}
+userPassword: password
+ntlRadiusChapPassword: password
+ntlRadiusStatus: <list:Active;75:Suspended;25>
+ntlRadiusGlobalProfileRef: cn={uid},ou=profiles,ou=radius,ou=ip services,o=entries,${opends.suffix}
+ntlParentScopeRef: cn=scope<random:numeric:2>,ou=scopes,o=entries,${opends.suffix}
+inetUserStatus: {ntlRadiusStatus}
+portabilityState: <list:90;0:10;1>
+nai: {uid}\@${opends.domain}
+userProfileId: {uid}
+esn: <sequential:${subscribers4aStart}>
+esn: <sequential:${subscribers4bStart}>
+esn: <sequential:${subscribers4cStart}>
+esn: <sequential:${subscribers4dStart}>
+
+template: device
+rdnAttr: esn
+objectClass: top
+objectClass: deviceInfo
+esn: <sequential:${devicesStart}>
+mdn: {esn}
+nai: {esn}\@${opends.domain}
+msid: {esn}
+meid: <random:hex:14>
+manufactureId: <random:numeric:3>
+modelId: <random:alpha:2><sequential:1000>
+routingMask: <random:hex:8>
+billingMask: <random:hex:8>
+contentProviderMask: 00
+picMailServiceName: 0
+videoMailServiceName: 0
+effectiveDate: 20060911031121
+blockInfo: <random:alphanumeric:8>\@<random:alphanumeric:14>.com
+allowWeb:  <list:1;90:0;10>
+allowMail:  <list:1;90:0;10>
+allowTap: <list:0;90:1;10>
+displayMask: <random:numeric:3>
+deliveryOverride: <random:alpha:1>
+smsPdrOcos: <random:numeric:1>
+resellerId: <random:alphanumeric:2>
+winTriggerName: <random:alphanumeric:4>
+smsSubscriberFilterMt: <list:0;90:1;10>
+smsWhitelist: <random:alphanumeric:14>\@<random:alphanumeric:13>.com
+smsAllowMoMessaging: <list:0;90:1;10>
+smsAllowMtMessaging: <list:0;90:1;10>
+smsHotlined: <list:0;90:1;10>
+servBeginDate: 20041011221521
+servEndDate: 20060410231521
+caseNumber: <random:alphanumeric:15>
+lastmodifiedbyspm: 20060311105019.9177
+evdo: <list:0;90:1;10>
+imsi: <random:numeric:15>
+imei: <random:numeric:15>
+ipaddress: <random:hex:8>
+mmsService: <list:0;90:1;10>
+smsService: <list:1;90:0;10>
+twowayintlService: <list:0;90:1;10>
+boostService: <list:0;90:1;10>
+premierService: <list:0;90:1;10>
+
+template: deviceDetail
+rdnAttr: modelId
+objectClass: top
+objectClass: deviceDetails
+modelId: <random:alpha:2><sequential:1000>
+dataCapableDevice3g: <list:0;90:1;10>
+smsCapableDevice2Way: <list:0;90:1;10>
+shortMailCapableDevice: <list:0;90:1;10>
+prePaidSubscriber: <list:0;90:1;10>
+cameraCapableDevice: <list:0;90:1;10>
+mmsCapableDevice: <list:0;90:1;10>
+videoMailCapableDevice: <list:0;90:1;10>
+pushType: <random:alpha:3>
+
diff --git a/opendj-sdk/opends/tests/performance/response-time/opends.properties b/opendj-sdk/opends/tests/performance/response-time/opends.properties
new file mode 100644
index 0000000..3445e4a
--- /dev/null
+++ b/opendj-sdk/opends/tests/performance/response-time/opends.properties
@@ -0,0 +1,23 @@
+# opends repository configuration
+url.file=index.html
+url.daily=http://builds.opends.org/daily-builds/latest/
+url.weekly=http://builds.opends.org/weekly-builds/latest/
+url=${url.daily}
+# opends instance configuration parameters
+admin.dn=uid=admin
+admin.pwd=P@55w0rd
+port.ldap=7389
+port.ldaps=7636
+port.jmx=7689
+company=telco
+domain=${company}.com
+suffix=o=${domain}
+
+# default number of entries for which to generate the make-ldif template
+makeldif.entries=1200
+makeldif.template=${company}.template
+makeldif.stubs=${company}.template.stubs
+makeldif.ldif=${company}.ldif
+
+# schema extensions
+schema.ldif=98${company}.ldif
diff --git a/opendj-sdk/opends/tests/performance/response-time/proxy.xml b/opendj-sdk/opends/tests/performance/response-time/proxy.xml
new file mode 100644
index 0000000..8d5eae1
--- /dev/null
+++ b/opendj-sdk/opends/tests/performance/response-time/proxy.xml
@@ -0,0 +1,24 @@
+<project name="opends-test-proxy" basedir="." default="usage">
+  <target name="check-proxy" unless="proxy.disabled">
+    <echo>Checking for proxy [${proxy.host}:${proxy.port}] as user [${proxy.user}].</echo>
+    <echo>Note: If these values do not match your environment, </echo>
+    <echo>      please use the 'configure' target</echo>
+    <condition property="proxy.enabled">
+      <and>
+        <not>
+          <http url="${deps.propono.url}"/>
+        </not>
+        <isreachable host="${proxy.host}" timeout="5"/>
+      </and>
+    </condition>
+  </target>
+  <target name="set-proxy" depends="check-proxy" if="proxy.enabled">
+    <echo>Proxy detected. Configuring.</echo>
+    <setproxy 
+      proxyhost="${proxy.host}" 
+      proxyport="${proxy.port}"
+      proxyuser="${proxy.user}" 
+      proxypassword="${proxy.password}"/>
+  </target>
+</project>
+

--
Gitblit v1.10.0