<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.open-xchange.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zap23</id>
	<title>Open-Xchange - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.open-xchange.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zap23"/>
	<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Special:Contributions/Zap23"/>
	<updated>2026-06-30T21:29:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=21815</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=21815"/>
		<updated>2016-04-11T07:16:24Z</updated>

		<summary type="html">&lt;p&gt;Zap23: Replaced content with &amp;quot;This page has been moved to repository https://git.open-xchange.com/git/wd/testing/performance.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been moved to repository https://git.open-xchange.com/git/wd/testing/performance.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Updating_To_Guard_PGP&amp;diff=19604</id>
		<title>AppSuite:Updating To Guard PGP</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Updating_To_Guard_PGP&amp;diff=19604"/>
		<updated>2015-05-19T10:54:08Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Step 1: Test installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guard Update =&lt;br /&gt;
&lt;br /&gt;
Starting with Guard 2.0, the proprietary Guard format is discontinued in favor of PGP encryption.  The proprietary format is still supported for decoding/reading, but all future encryption will be done with PGP compliant encryption.&lt;br /&gt;
&lt;br /&gt;
The upgrade from 1.2 to 2.0 requires database modification and data population.  During the update, Guard 1.2 servers can continue to operate.  During the alter tables, no additional Guard members can be added, but users can continue to encrypt and decode items.  After the alter table is complete, a data population phase begins.  During this phase, lookup tables are created for the existing PGP public keys.  Depending on the number of users, this may take a while, but there will be no impact on the functioning Guard 1.2 servers.&lt;br /&gt;
&lt;br /&gt;
The database upgrade is required for Guard 2.0 to function, but Guard 1.2 will function without issue on the updated database.&lt;br /&gt;
&lt;br /&gt;
== Guard Upgrade Process ==&lt;br /&gt;
&lt;br /&gt;
Install Guard 2.0 on the server you would like to do the upgrade.  The guard.properties file should reflect all of the database and REST API settings as before.  There have been some changes in the guard.properties file (addressed below), but there are no changes required for the update process&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Test installation ===&lt;br /&gt;
&lt;br /&gt;
Once the installation is complete, it is often best to test that Guard is configured properly and able to communiate with the OX backend.  Use an email address that is a user on the OX system...for this example, we'll use john@doe.com&lt;br /&gt;
&lt;br /&gt;
On command line:&lt;br /&gt;
 /opt/open-xchange/guard/sbin/guard test john@doe.com&lt;br /&gt;
&lt;br /&gt;
Guard should return a result similar to &lt;br /&gt;
  Response received.  Testing JSON&lt;br /&gt;
  {&amp;quot;john@doe.com&amp;quot;:{&amp;quot;uid&amp;quot;:13,&amp;quot;user&amp;quot;:{&amp;quot;language&amp;quot;:&amp;quot;en_US&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;John Smith&amp;quot;},&amp;quot;cid&amp;quot;:10}}&lt;br /&gt;
  User id 13&lt;br /&gt;
  Context 10&lt;br /&gt;
  Language en_US&lt;br /&gt;
  Name John Smith&lt;br /&gt;
  Success&lt;br /&gt;
&lt;br /&gt;
If you do not get a &amp;quot;Success&amp;quot;, then check the logs and guard.properties file for a configuration issue.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Upgrade ===&lt;br /&gt;
&lt;br /&gt;
Once the installation is verified, the upgrade process can begin.&lt;br /&gt;
&lt;br /&gt;
On command line:&lt;br /&gt;
 /opt/open-xchange/sbin/guard upgradePGP&lt;br /&gt;
&lt;br /&gt;
This will begin the upgrade process.  First, the required database alter function are performed.  This is the only stage that locks the tables.  During this process, no additional Guard users can be created.&lt;br /&gt;
&lt;br /&gt;
Once this is done, then the lookup tables are populated.  Progress will be written to the console.  &lt;br /&gt;
&lt;br /&gt;
Once complete, the database upgrade is finished.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configuration File ===&lt;br /&gt;
&lt;br /&gt;
There are some minor changes to the Guard backend's guard.properties file.  This file will have to be altered on each of the Guard servers when they are each updated.&lt;br /&gt;
&lt;br /&gt;
==== PGP lookup ====&lt;br /&gt;
&lt;br /&gt;
When a user tries to send a PGP email to a recipient, Guard will check configured public key servers for the recipients PGP Public key.  You can configure which servers are used in a comma deliminated list.&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.publicPGPDirectory = hkp://keys.gnupg.net:11371, hkp://pgp.mit.edu:11371&lt;br /&gt;
&lt;br /&gt;
==== External Email URL ====&lt;br /&gt;
&lt;br /&gt;
The URL for the external guest reader has been changed.  The value can now be configured through the configuration cascade so that a custom domain can be used for each context.  The guard.properties file contains the default value if the configuration cascade is not present&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.externalReaderPath=example.com/appsuite/api/oxguard/reader/reader.html&lt;br /&gt;
&lt;br /&gt;
This value will be used as the default unless over-written by cascade value&lt;br /&gt;
com.openexchange.guard.externalReaderURL&lt;br /&gt;
&lt;br /&gt;
Finally, each PGP email is also sent with a help file that explains what PGP is, and how to log onto Appsuite to view the email.  The domain for appsuite should be configured here&lt;br /&gt;
 com.openexchange.guard.externalEmailURL=example.com&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Start ===&lt;br /&gt;
&lt;br /&gt;
Start Guard 2.0 using (Debian)&lt;br /&gt;
 /etc/init.d/open-xchange-guard start&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18940</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18940"/>
		<updated>2014-11-29T00:22:13Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Getting Performance Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ git checkout develop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ port install sbt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ brew install sbt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ sbt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display all available projects:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt projects&lt;br /&gt;
[info] Loading project definition from ~/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
[info] In file:~/performance/com.openexchange.test.performance.gatling/&lt;br /&gt;
[info] 	   project-ajax&lt;br /&gt;
[info] 	   project-common&lt;br /&gt;
[info] 	   project-drive&lt;br /&gt;
[info] 	   project-guard&lt;br /&gt;
[info] 	   project-in8&lt;br /&gt;
[info] 	   project-jolokia&lt;br /&gt;
[info] 	   project-usm&lt;br /&gt;
[info] 	 * root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to a specific project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
root&amp;gt; project project-ajax&lt;br /&gt;
[info] Set current project to project-ajax (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
project-ajax&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To execute all tests in the project just enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
project-ajax&amp;gt; gatling:test&lt;br /&gt;
[info] Formatting 21 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-common(test) ...&lt;br /&gt;
[info] Formatting 66 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-ajax(test) ...&lt;br /&gt;
[info] Compiling 21 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-common/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/gatling-classes...&lt;br /&gt;
Simulation com.openexchange.test.performance.gatling.simulations.QAPerfOX6 started...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt 'project-ajax/gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ sbt &amp;quot;project project-ajax&amp;quot; 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from ~/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18939</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18939"/>
		<updated>2014-11-29T00:21:13Z</updated>

		<summary type="html">&lt;p&gt;Zap23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ git clone https://git.open-xchange.com/git/wd/testing/performance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ git checkout develop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ port install sbt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ brew install sbt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ sbt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display all available projects:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt projects&lt;br /&gt;
[info] Loading project definition from ~/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
[info] In file:~/performance/com.openexchange.test.performance.gatling/&lt;br /&gt;
[info] 	   project-ajax&lt;br /&gt;
[info] 	   project-common&lt;br /&gt;
[info] 	   project-drive&lt;br /&gt;
[info] 	   project-guard&lt;br /&gt;
[info] 	   project-in8&lt;br /&gt;
[info] 	   project-jolokia&lt;br /&gt;
[info] 	   project-usm&lt;br /&gt;
[info] 	 * root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to a specific project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
root&amp;gt; project project-ajax&lt;br /&gt;
[info] Set current project to project-ajax (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
project-ajax&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To execute all tests in the project just enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
project-ajax&amp;gt; gatling:test&lt;br /&gt;
[info] Formatting 21 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-common(test) ...&lt;br /&gt;
[info] Formatting 66 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-ajax(test) ...&lt;br /&gt;
[info] Compiling 21 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-common/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/gatling-classes...&lt;br /&gt;
Simulation com.openexchange.test.performance.gatling.simulations.QAPerfOX6 started...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt 'project-ajax/gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ sbt &amp;quot;project project-ajax&amp;quot; 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from ~/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18938</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18938"/>
		<updated>2014-11-28T23:49:57Z</updated>

		<summary type="html">&lt;p&gt;Zap23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ git checkout develop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ port install sbt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ brew install sbt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ sbt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display all available projects:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt projects&lt;br /&gt;
[info] Loading project definition from ~/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
[info] In file:~/performance/com.openexchange.test.performance.gatling/&lt;br /&gt;
[info] 	   project-ajax&lt;br /&gt;
[info] 	   project-common&lt;br /&gt;
[info] 	   project-drive&lt;br /&gt;
[info] 	   project-guard&lt;br /&gt;
[info] 	   project-in8&lt;br /&gt;
[info] 	   project-jolokia&lt;br /&gt;
[info] 	   project-usm&lt;br /&gt;
[info] 	 * root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to a specific project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
root&amp;gt; project project-ajax&lt;br /&gt;
[info] Set current project to project-ajax (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
project-ajax&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To execute all tests in the project just enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
project-ajax&amp;gt; gatling:test&lt;br /&gt;
[info] Formatting 21 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-common(test) ...&lt;br /&gt;
[info] Formatting 66 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-ajax(test) ...&lt;br /&gt;
[info] Compiling 21 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-common/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/gatling-classes...&lt;br /&gt;
Simulation com.openexchange.test.performance.gatling.simulations.QAPerfOX6 started...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt 'project-ajax/gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ sbt &amp;quot;project project-ajax&amp;quot; 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from ~/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18937</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18937"/>
		<updated>2014-11-28T23:47:01Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Getting Performance Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;$ git checkout develop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ port install sbt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ brew install sbt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt update&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display all available projects:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt projects&lt;br /&gt;
[info] Loading project definition from ~/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
[info] In file:~/performance/com.openexchange.test.performance.gatling/&lt;br /&gt;
[info] 	   project-ajax&lt;br /&gt;
[info] 	   project-common&lt;br /&gt;
[info] 	   project-drive&lt;br /&gt;
[info] 	   project-guard&lt;br /&gt;
[info] 	   project-in8&lt;br /&gt;
[info] 	   project-jolokia&lt;br /&gt;
[info] 	   project-usm&lt;br /&gt;
[info] 	 * root&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to a specific project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root&amp;gt; project project-ajax&lt;br /&gt;
[info] Set current project to project-ajax (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
project-ajax&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To execute all tests in the project just enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
project-ajax&amp;gt; gatling:test&lt;br /&gt;
[info] Formatting 21 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-common(test) ...&lt;br /&gt;
[info] Formatting 66 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-ajax(test) ...&lt;br /&gt;
[info] Compiling 21 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-common/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/gatling-classes...&lt;br /&gt;
Simulation com.openexchange.test.performance.gatling.simulations.QAPerfOX6 started...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt 'project-ajax/gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt &amp;quot;project project-ajax&amp;quot; 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from ~/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18925</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18925"/>
		<updated>2014-11-26T08:20:20Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Build and execute the tests with the SBT-Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ git checkout develop&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ port install sbt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ brew install sbt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt update&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display all available projects:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt projects&lt;br /&gt;
[info] Loading project definition from ~/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
[info] In file:~/performance/com.openexchange.test.performance.gatling/&lt;br /&gt;
[info] 	   project-ajax&lt;br /&gt;
[info] 	   project-common&lt;br /&gt;
[info] 	   project-drive&lt;br /&gt;
[info] 	   project-guard&lt;br /&gt;
[info] 	   project-in8&lt;br /&gt;
[info] 	   project-jolokia&lt;br /&gt;
[info] 	   project-usm&lt;br /&gt;
[info] 	 * root&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to a specific project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root&amp;gt; project project-ajax&lt;br /&gt;
[info] Set current project to project-ajax (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
project-ajax&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To execute all tests in the project just enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
project-ajax&amp;gt; gatling:test&lt;br /&gt;
[info] Formatting 21 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-common(test) ...&lt;br /&gt;
[info] Formatting 66 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-ajax(test) ...&lt;br /&gt;
[info] Compiling 21 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-common/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/gatling-classes...&lt;br /&gt;
Simulation com.openexchange.test.performance.gatling.simulations.QAPerfOX6 started...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt 'project-ajax/gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt &amp;quot;project project-ajax&amp;quot; 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from ~/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18924</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18924"/>
		<updated>2014-11-25T14:27:11Z</updated>

		<summary type="html">&lt;p&gt;Zap23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ git checkout develop&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ port install sbt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ brew install sbt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt update&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display all available projects:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt projects&lt;br /&gt;
[info] Loading project definition from ~/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
[info] In file:~/performance/com.openexchange.test.performance.gatling/&lt;br /&gt;
[info] 	   project-ajax&lt;br /&gt;
[info] 	   project-common&lt;br /&gt;
[info] 	   project-drive&lt;br /&gt;
[info] 	   project-guard&lt;br /&gt;
[info] 	   project-in8&lt;br /&gt;
[info] 	   project-jolokia&lt;br /&gt;
[info] 	   project-usm&lt;br /&gt;
[info] 	 * root&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to a specific project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root&amp;gt; project project-ajax&lt;br /&gt;
[info] Set current project to project-ajax (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
project-ajax&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To execute all tests in the project just enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
project-ajax&amp;gt; gatling:test&lt;br /&gt;
[info] Formatting 21 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-common(test) ...&lt;br /&gt;
[info] Formatting 66 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-ajax(test) ...&lt;br /&gt;
[info] Compiling 21 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-common/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/gatling-classes...&lt;br /&gt;
Simulation com.openexchange.test.performance.gatling.simulations.QAPerfOX6 started...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt 'project-ajax/gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt &amp;quot;project project-ajax&amp;quot; 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from ~/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18923</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18923"/>
		<updated>2014-11-25T14:26:16Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Getting Performance Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;source lang=bash&amp;quot;&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;source lang=bash&amp;quot;&amp;gt;$ git checkout develop&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt update&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display all available projects:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt projects&lt;br /&gt;
[info] Loading project definition from ~/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
[info] In file:~/performance/com.openexchange.test.performance.gatling/&lt;br /&gt;
[info] 	   project-ajax&lt;br /&gt;
[info] 	   project-common&lt;br /&gt;
[info] 	   project-drive&lt;br /&gt;
[info] 	   project-guard&lt;br /&gt;
[info] 	   project-in8&lt;br /&gt;
[info] 	   project-jolokia&lt;br /&gt;
[info] 	   project-usm&lt;br /&gt;
[info] 	 * root&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to a specific project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root&amp;gt; project project-ajax&lt;br /&gt;
[info] Set current project to project-ajax (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
project-ajax&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To execute all tests in the project just enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
project-ajax&amp;gt; gatling:test&lt;br /&gt;
[info] Formatting 21 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-common(test) ...&lt;br /&gt;
[info] Formatting 66 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-ajax(test) ...&lt;br /&gt;
[info] Compiling 21 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-common/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/gatling-classes...&lt;br /&gt;
Simulation com.openexchange.test.performance.gatling.simulations.QAPerfOX6 started...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt 'project-ajax/gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt &amp;quot;project project-ajax&amp;quot; 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from ~/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18922</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18922"/>
		<updated>2014-11-25T14:24:26Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Build and execute the tests with the SBT-Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt update&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display all available projects:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt projects&lt;br /&gt;
[info] Loading project definition from ~/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
[info] In file:~/performance/com.openexchange.test.performance.gatling/&lt;br /&gt;
[info] 	   project-ajax&lt;br /&gt;
[info] 	   project-common&lt;br /&gt;
[info] 	   project-drive&lt;br /&gt;
[info] 	   project-guard&lt;br /&gt;
[info] 	   project-in8&lt;br /&gt;
[info] 	   project-jolokia&lt;br /&gt;
[info] 	   project-usm&lt;br /&gt;
[info] 	 * root&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to a specific project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root&amp;gt; project project-ajax&lt;br /&gt;
[info] Set current project to project-ajax (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
project-ajax&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To execute all tests in the project just enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
project-ajax&amp;gt; gatling:test&lt;br /&gt;
[info] Formatting 21 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-common(test) ...&lt;br /&gt;
[info] Formatting 66 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-ajax(test) ...&lt;br /&gt;
[info] Compiling 21 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-common/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/gatling-classes...&lt;br /&gt;
Simulation com.openexchange.test.performance.gatling.simulations.QAPerfOX6 started...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt 'project-ajax/gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt &amp;quot;project project-ajax&amp;quot; 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.simulations.QAPerfOX6&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from ~/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18921</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18921"/>
		<updated>2014-11-25T14:20:37Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Build and execute the tests with the SBT-Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt update&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display all available projects:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt projects&lt;br /&gt;
[info] Loading project definition from ~/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
[info] In file:~/performance/com.openexchange.test.performance.gatling/&lt;br /&gt;
[info] 	   project-ajax&lt;br /&gt;
[info] 	   project-common&lt;br /&gt;
[info] 	   project-drive&lt;br /&gt;
[info] 	   project-guard&lt;br /&gt;
[info] 	   project-in8&lt;br /&gt;
[info] 	   project-jolokia&lt;br /&gt;
[info] 	   project-usm&lt;br /&gt;
[info] 	 * root&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to a specific project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root&amp;gt; project project-ajax&lt;br /&gt;
[info] Set current project to project-ajax (in build file:~/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
project-ajax&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To execute all tests in the project just enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
project-ajax&amp;gt; gatling:test&lt;br /&gt;
[info] Formatting 21 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-common(test) ...&lt;br /&gt;
[info] Formatting 66 Scala sources {file:~/performance/com.openexchange.test.performance.gatling/}project-ajax(test) ...&lt;br /&gt;
[info] Compiling 21 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-common/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/test-classes...&lt;br /&gt;
[info] Compiling 66 Scala sources to ~/performance/com.openexchange.test.performance.gatling/project-ajax/target/scala-2.10/gatling-classes...&lt;br /&gt;
Simulation com.openexchange.test.performance.gatling.simulations.QAPerfOX6 started...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sbt 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from ~/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18920</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18920"/>
		<updated>2014-11-25T14:01:20Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Importing Project into IntelliJ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from ~/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:~/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18919</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18919"/>
		<updated>2014-11-25T13:56:58Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Development Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
&lt;br /&gt;
==== Create project files ====&lt;br /&gt;
To create the Idea project files please use the sbt task '''gen-idea'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd ~/git/performance/com.openexchange.test.performance.gatling&lt;br /&gt;
&lt;br /&gt;
$ sbt gen-idea&lt;br /&gt;
[info] Loading project definition from /home/git/performance/com.openexchange.test.performance.gatling/project&lt;br /&gt;
[info] Set current project to root (in build file:/home/git/performance/com.openexchange.test.performance.gatling/)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This task will resolve all project dependencies and create the IDEA modules accordingly.&lt;br /&gt;
&lt;br /&gt;
==== Import project ====&lt;br /&gt;
# Start IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18918</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18918"/>
		<updated>2014-11-25T13:38:05Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Installing sbt on Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
# Open IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18917</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18917"/>
		<updated>2014-11-25T13:37:39Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Installing sbt on Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [https://dl.bintray.com/sbt/rpm/sbt-0.13.7.rpm RPM] package&lt;br /&gt;
* [https://dl.bintray.com/sbt/debian/sbt-0.13.7.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
# Open IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18197</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18197"/>
		<updated>2014-07-30T07:56:28Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Configurable Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
# Open IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18196</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18196"/>
		<updated>2014-07-30T07:55:11Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Configurable Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
# Open IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; gatling_protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_port: Which port to use. ''Possible values are: '''&amp;quot;80&amp;quot;''', '''&amp;quot;8009&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
; gatling_user: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_time: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_duration_unit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_user_feeder: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_user: The user name of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; gatling_basic_auth_pass: The password of the basic access authentication.&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18195</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18195"/>
		<updated>2014-07-29T14:54:58Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Development Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute/debug the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
&lt;br /&gt;
=== IntelliJ IDEA ===&lt;br /&gt;
Download and install the [http://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition]&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
&lt;br /&gt;
Since there are a few problems with the Scala IDE for eclipse we recommend to use IntelliJ which works out of the box.&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into IntelliJ ===&lt;br /&gt;
# Open IntelliJ&lt;br /&gt;
# Click on Import Project...&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
# Import project from external model → SBT Project → Finish&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18194</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18194"/>
		<updated>2014-07-29T14:30:28Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Build and execute the tests with the SBT-Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18193</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18193"/>
		<updated>2014-07-29T14:28:33Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Build and execute the tests with the SBT-Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following command line script will execute the Gatling OX6 Performance test with some &lt;br /&gt;
sbt 'set javaOptions ++=Seq(&amp;quot;-Dgatling_host=10.0.0.1&amp;quot;, &amp;quot;-Dgatling_protocol=http&amp;quot;, &amp;quot;-Dgatling_port=80&amp;quot;, &amp;quot;-Dgatling_user=100&amp;quot;, &amp;quot;-Dgatling_duration_time=120&amp;quot;, &amp;quot;-Dgatling_duration_unit=SECONDS&amp;quot;)' clean &amp;quot;com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18192</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18192"/>
		<updated>2014-07-29T14:18:49Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Snippet from the -section in the pom.xml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18191</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18191"/>
		<updated>2014-07-29T14:18:38Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Snippet from the -section in the pom.xml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18190</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18190"/>
		<updated>2014-07-29T14:17:04Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Build and execute the tests with the SBT-Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if a command takes arguments, you need to quote the entire argument path, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt 'gatling:testOnly com.openexchange.test.performance.gatling.tests.QAPerfOX6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18189</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18189"/>
		<updated>2014-07-29T14:15:06Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Building with SBT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Build and execute the tests with the SBT-Plugin ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SBT can be used both as a command line script and as a build console. Most of the commands can be run standalone by passing the command as an argument to SBT, e.g.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sbt update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18188</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18188"/>
		<updated>2014-07-29T14:01:02Z</updated>

		<summary type="html">&lt;p&gt;Zap23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Building with SBT ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18187</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18187"/>
		<updated>2014-07-29T13:59:49Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Building with SBT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Building with SBT ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
The precompiled version is available here:&lt;br /&gt;
https://jenkins.open-xchange.com/view/QA/job/qaPerformanceGatlingTests/lastSuccessfulBuild/artifact/performance/com.openexchange.test.performance.gatling/target/&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18186</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18186"/>
		<updated>2014-07-29T13:54:59Z</updated>

		<summary type="html">&lt;p&gt;Zap23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
Since we use the Gatling-SBT plugin, which allows us to use Gatling as a testing framework, we'll need to install SBT first.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Building with SBT ==&lt;br /&gt;
After SBT has been successfully installed we can switch to the project's directory:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ cd ~/performance/com.openexchange.test.performance.gatling&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
The precompiled version is available here:&lt;br /&gt;
https://jenkins.open-xchange.com/view/QA/job/qaPerformanceGatlingTests/lastSuccessfulBuild/artifact/performance/com.openexchange.test.performance.gatling/target/&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18185</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18185"/>
		<updated>2014-07-29T13:42:24Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Install SBT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt manually ===&lt;br /&gt;
* [http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html Manual] instructions&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
The precompiled version is available here:&lt;br /&gt;
https://jenkins.open-xchange.com/view/QA/job/qaPerformanceGatlingTests/lastSuccessfulBuild/artifact/performance/com.openexchange.test.performance.gatling/target/&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18184</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18184"/>
		<updated>2014-07-29T13:40:36Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Install SBT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Linux ===&lt;br /&gt;
* [http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm RPM] package&lt;br /&gt;
* [http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb DEB] package&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
The precompiled version is available here:&lt;br /&gt;
https://jenkins.open-xchange.com/view/QA/job/qaPerformanceGatlingTests/lastSuccessfulBuild/artifact/performance/com.openexchange.test.performance.gatling/target/&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18183</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18183"/>
		<updated>2014-07-29T13:38:42Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Install SBT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Windows ===&lt;br /&gt;
* Download the [http://dl.bintray.com/sbt/native-packages/sbt/0.13.5/sbt-0.13.5.msi msi installer] and install it.&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
The precompiled version is available here:&lt;br /&gt;
https://jenkins.open-xchange.com/view/QA/job/qaPerformanceGatlingTests/lastSuccessfulBuild/artifact/performance/com.openexchange.test.performance.gatling/target/&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18182</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18182"/>
		<updated>2014-07-29T13:37:02Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Installing sbt on Mac */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;$ brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
The precompiled version is available here:&lt;br /&gt;
https://jenkins.open-xchange.com/view/QA/job/qaPerformanceGatlingTests/lastSuccessfulBuild/artifact/performance/com.openexchange.test.performance.gatling/target/&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18181</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18181"/>
		<updated>2014-07-29T13:36:34Z</updated>

		<summary type="html">&lt;p&gt;Zap23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* [http://macports.org Macports]&lt;br /&gt;
  &amp;lt;code&amp;gt;port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mxcl.github.com/homebrew Homebrew]&lt;br /&gt;
  &amp;lt;code&amp;gt;brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
The precompiled version is available here:&lt;br /&gt;
https://jenkins.open-xchange.com/view/QA/job/qaPerformanceGatlingTests/lastSuccessfulBuild/artifact/performance/com.openexchange.test.performance.gatling/target/&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18180</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18180"/>
		<updated>2014-07-29T13:34:33Z</updated>

		<summary type="html">&lt;p&gt;Zap23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT &lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SBT ==&lt;br /&gt;
&lt;br /&gt;
=== Installing sbt on Mac ===&lt;br /&gt;
* Macports&lt;br /&gt;
  &amp;lt;code&amp;gt;port install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Homebrew&lt;br /&gt;
  &amp;lt;code&amp;gt;brew install sbt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
The precompiled version is available here:&lt;br /&gt;
https://jenkins.open-xchange.com/view/QA/job/qaPerformanceGatlingTests/lastSuccessfulBuild/artifact/performance/com.openexchange.test.performance.gatling/target/&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18179</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18179"/>
		<updated>2014-07-29T13:15:57Z</updated>

		<summary type="html">&lt;p&gt;Zap23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse or IntelliJ IDEA then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin] &lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
The precompiled version is available here:&lt;br /&gt;
https://jenkins.open-xchange.com/view/QA/job/qaPerformanceGatlingTests/lastSuccessfulBuild/artifact/performance/com.openexchange.test.performance.gatling/target/&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18178</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=18178"/>
		<updated>2014-07-29T13:10:08Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Software Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
* SBT&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
The precompiled version is available here:&lt;br /&gt;
https://jenkins.open-xchange.com/view/QA/job/qaPerformanceGatlingTests/lastSuccessfulBuild/artifact/performance/com.openexchange.test.performance.gatling/target/&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17531</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17531"/>
		<updated>2014-05-20T13:18:00Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Configurable Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17530</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17530"/>
		<updated>2014-05-20T13:06:25Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Test Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;cd /GIT_REPO/performance/com.openexchange.test.performance.gatling/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you can start the performance tests either by using the default values from the pom.xml,&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or by temporarily passing system properties:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;mvn clean gatling:execute -Dhost=localhost -Dcsv_users=ox_user_credentials.csv -Dusers=5 -DdurationTime=20 -DdurationUnit=MINUTES -Dgatling.simulationClass=com.openexchange.test.performance.gatling.tests.QAPerfOX6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17529</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17529"/>
		<updated>2014-05-20T12:59:27Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Test Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
=== Execute the gatling tests via maven plugin ===&lt;br /&gt;
* Switch to the root directory of the gatling project&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17528</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17528"/>
		<updated>2014-05-20T12:32:46Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Pre-compiled version of the gatling tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfOXDrive&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfEAS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17456</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17456"/>
		<updated>2014-04-16T10:45:28Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Pre-compiled version of the gatling tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17439</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17439"/>
		<updated>2014-04-11T20:07:07Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Pre-Requisites for the Open-Xchange Groupware Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Resources/Data ====&lt;br /&gt;
In the data folder you can find an sample csv file which is used to perform a login. If you want to use your own CSV-File place it into the data directory.&lt;br /&gt;
&lt;br /&gt;
* Structure of the csv file:&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
  username,password&lt;br /&gt;
  user1,secret&lt;br /&gt;
  user2,secret&lt;br /&gt;
  user3,secret&lt;br /&gt;
  ...&lt;br /&gt;
  user998,secret&lt;br /&gt;
  user999,secret&lt;br /&gt;
  user1000,secret&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfContacts&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfAppointments&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17417</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17417"/>
		<updated>2014-04-11T13:27:37Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Pre-compiled version of the gatling tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;code&amp;gt;exec &amp;quot;$JAVACMD&amp;quot; $JAVA_OPTS -Dprotocol=http -Dhost=10.0.0.1 -Dcsv_users=ox_user_credentials.csv -Dusers=100 -DdurationTime=120 -DdurationUnit=SECONDS \&lt;br /&gt;
  -classpath &amp;quot;$CLASSPATH&amp;quot; \&lt;br /&gt;
  -Dapp.name=&amp;quot;ox-gatling&amp;quot; \&lt;br /&gt;
  -Dapp.pid=&amp;quot;$$&amp;quot; \&lt;br /&gt;
  -Dapp.repo=&amp;quot;$REPO&amp;quot; \&lt;br /&gt;
  -Dapp.home=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  -Dbasedir=&amp;quot;$BASEDIR&amp;quot; \&lt;br /&gt;
  io.gatling.app.Gatling \&lt;br /&gt;
  &amp;quot;$@&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfContacts&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfAppointments&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17416</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17416"/>
		<updated>2014-04-11T13:24:17Z</updated>

		<summary type="html">&lt;p&gt;Zap23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, e.g. ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, e.g. contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
  protocol = http&lt;br /&gt;
  host = 10.0.0.1&lt;br /&gt;
  users = 100&lt;br /&gt;
  durationTime = 120&lt;br /&gt;
  durationUnit = SECONDS&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfContacts&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfAppointments&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17415</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17415"/>
		<updated>2014-04-11T13:15:10Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Pre-compiled version of the gatling tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, for example ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, for example contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
  protocol = http&lt;br /&gt;
  host = 10.0.0.1&lt;br /&gt;
  users = 100&lt;br /&gt;
  durationTime = 120&lt;br /&gt;
  durationUnit = SECONDS&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ /bin/bash bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfContacts&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfAppointments&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17414</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17414"/>
		<updated>2014-04-11T13:13:13Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Pre-compiled version of the gatling tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, for example ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, for example contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs. Example:&lt;br /&gt;
** The following example will stress the server with the ''IP 10.0.0.1'' for ''120 seconds'' and hold the load with permanently ''100 user'':&lt;br /&gt;
*** protocol = http&lt;br /&gt;
*** host = 10.0.0.1&lt;br /&gt;
*** users = 100&lt;br /&gt;
*** durationTime = 120&lt;br /&gt;
*** durationUnit = SECONDS&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ bin/ox-gatling.sh&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfContacts&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfAppointments&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17413</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17413"/>
		<updated>2014-04-11T13:03:34Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Pre-compiled version of the gatling tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, for example ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, for example contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ bin/ox-gatling.sh&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Choose a simulation number:&lt;br /&gt;
     [0] com.openexchange.test.performance.gatling.tests.QAPerfOX6&lt;br /&gt;
     [1] com.openexchange.test.performance.gatling.tests.QAPerfOXAppSuite&lt;br /&gt;
     [2] com.openexchange.test.performance.gatling.tests.QAPerfContacts&lt;br /&gt;
     [3] com.openexchange.test.performance.gatling.tests.QAPerfAppointments&lt;br /&gt;
     [4] com.openexchange.test.performance.gatling.tests.QAPerfUSM&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17412</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17412"/>
		<updated>2014-04-11T13:01:43Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Test Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, for example ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, for example contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server ===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled version of the gatling tests ===&lt;br /&gt;
Execute the gatling tests via bash script (Linux) or batch file (Windows).&lt;br /&gt;
&lt;br /&gt;
* Unzip ox-gatling-*-bin.zip&lt;br /&gt;
* Change working directory&lt;br /&gt;
  $ cd Downloads/ox-gatling-1.0.0-SNAPSHOT&lt;br /&gt;
* Please '''adjust''' the ''JAVA_OPTS'' in the scripts ''bin/box-gatling.sh'' or ''bin/ox-gatling.bat'' to match your needs.&lt;br /&gt;
* Execute the script&lt;br /&gt;
  $ bin/ox-gatling.sh&lt;br /&gt;
&lt;br /&gt;
Now you will see some output of the compilation process but finally you should be able to start the simulation by entering a number.&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17411</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17411"/>
		<updated>2014-04-11T12:40:19Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Pre-Requisites for the Open-Xchange Groupware Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, for example ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, for example contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server===&lt;br /&gt;
==== Disabling rate limitation ====&lt;br /&gt;
* Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17410</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17410"/>
		<updated>2014-04-11T12:38:15Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Pre-Requisites for the Open-Xchange Groupware Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, for example ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, for example contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server===&lt;br /&gt;
* Disabling rate limitation&lt;br /&gt;
** Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
** Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17409</id>
		<title>AppSuite:Load Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Load_Tests&amp;diff=17409"/>
		<updated>2014-04-11T12:37:35Z</updated>

		<summary type="html">&lt;p&gt;Zap23: /* Pre-Requisites for the OX Groupware Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software Requirements ==&lt;br /&gt;
* Java SE JDK6 or JDK7&lt;br /&gt;
* Git&lt;br /&gt;
&lt;br /&gt;
== Getting Performance Repository ==&lt;br /&gt;
* Cloning Repository&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git clone https://git.open-xchange.com/git/wd/testing/performance&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Checkout a branch, for example ''develop''&lt;br /&gt;
  &amp;lt;code&amp;gt;$ git checkout develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
If you want to execute the tests via an IDE like Eclipse then you will also need to install the following software:&lt;br /&gt;
* [https://www.eclipse.org Eclipse 4.2] or later&lt;br /&gt;
* [http://scala-ide.org Scala IDE plugin]&lt;br /&gt;
* Maven integration from the default update site '''m2e'''&lt;br /&gt;
* [http://alchim31.free.fr/m2e-scala/update-site m2e-scala]&lt;br /&gt;
* [http://maven.apache.org/ Apache Maven]&lt;br /&gt;
&lt;br /&gt;
=== Importing Project into Eclipse ===&lt;br /&gt;
# Open Eclipse&lt;br /&gt;
# Click on File → Import... → Maven → Existing Maven Project&lt;br /&gt;
# Select the gatling folder within the performance repository&lt;br /&gt;
&lt;br /&gt;
== Configurable Parameters ==&lt;br /&gt;
List of all available System-Properties and JVM-Arguments:&lt;br /&gt;
&lt;br /&gt;
; protocol: Which protocol to use. ''Possible values are: '''&amp;quot;http&amp;quot;''' or '''&amp;quot;https&amp;quot;'''. Default value: '''&amp;quot;http&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; host: Which host to use. ''Possible values are: '''&amp;quot;localhost&amp;quot;''', '''&amp;quot;10.0.0.1&amp;quot;''' or if you want to stress several groupware servers, to bypass a loadbalancer for example, then you can use comma-separated IPs or hostnames '''&amp;quot;10.0.0.1,10.0.0.2,localhost&amp;quot;'''. Default value: '''&amp;quot;localhost&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; users: How many concurrent users to simulate. ''Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationTime: Duration time of the simulation. ''Default value: '''&amp;quot;30&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; durationUnit: The Unit of the durationTime. ''Possible values are: '''&amp;quot;SECONDS&amp;quot;''', '''&amp;quot;MINUTES&amp;quot;''', '''&amp;quot;HOURS&amp;quot;''' or '''&amp;quot;DAYS&amp;quot;'''. Default value: '''&amp;quot;SECONDS&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; successpercent: Successful responses in percentage. ''Default value: '''&amp;quot;100&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; reqpersec: Mean number of requests per second (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; resptime: Mean response time (lower bound). ''Default value: '''&amp;quot;0&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; csv_users: Name of the CSV-File for feeding the requests. ''Default value: '''&amp;quot;ox_user_credentials.csv&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; syncmsgmax: How many objects to synchronize. ''Relevant only for '''QAPerfUSM'''. Default value: '''&amp;quot;50&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
; pimObjects: How many PIM Objects, for example contacts, should be created. ''Relevant only for PIM-Simulations like '''QAPerfContacts''' or '''QAPerfAppointments'''. Default value: '''&amp;quot;5&amp;quot;'''.''&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;properties&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;80&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;users&amp;gt;5&amp;lt;/users&amp;gt;&lt;br /&gt;
    &amp;lt;durationTime&amp;gt;30&amp;lt;/durationTime&amp;gt;&lt;br /&gt;
    &amp;lt;durationUnit&amp;gt;SECONDS&amp;lt;/durationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;successpercent&amp;gt;100&amp;lt;/successpercent&amp;gt;&lt;br /&gt;
    &amp;lt;reqpersec&amp;gt;0&amp;lt;/reqpersec&amp;gt;&lt;br /&gt;
    &amp;lt;resptime&amp;gt;0&amp;lt;/resptime&amp;gt;&lt;br /&gt;
    &amp;lt;csv_users&amp;gt;ox_user_credentials.csv&amp;lt;/csv_users&amp;gt;&lt;br /&gt;
    &amp;lt;syncmsgmax&amp;gt;50&amp;lt;/syncmsgmax&amp;gt;&lt;br /&gt;
    &amp;lt;pimObjects&amp;gt;5&amp;lt;/pimObjects&amp;gt;&lt;br /&gt;
  &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Snippet from the &amp;lt;jvmArgs&amp;gt;-section in the pom.xml ===&lt;br /&gt;
  &amp;lt;jvmArgs&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dprotocol=${protocol}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dhost=${host}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dport=${port}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dcsv_users=${csv_users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dusers=${users}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationTime=${durationTime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DdurationUnit=${durationUnit}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsuccesspercent=${successpercent}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dreqpersec=${reqpersec}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dresptime=${resptime}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-Dsyncmsgmax=${syncmsgmax}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
    &amp;lt;jvmArg&amp;gt;-DpimObjects=${pimObjects}&amp;lt;/jvmArg&amp;gt;&lt;br /&gt;
  &amp;lt;/jvmArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-Requisites for the Open-Xchange Groupware Server===&lt;br /&gt;
* Disabling rate limitation&lt;br /&gt;
** Modify the parameter maxRateLenientClients @server.properties:&lt;br /&gt;
  $ vim /opt/etc/open-xchange/etc/server.properties&lt;br /&gt;
* Specify a new User-Agent which is excluded from rate limit checks&lt;br /&gt;
  &amp;quot;GATLING*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Practical hints and tips ==&lt;br /&gt;
* If you want to run tests for more than 24h, uncomment the &amp;quot;timeOut&amp;quot; → &amp;quot;simulation&amp;quot; property at gatling.conf and define a value of more than 24h (in seconds).&lt;br /&gt;
* If you experience OutOfMemory issues when generating charts, adjust &amp;quot;charting&amp;quot; → &amp;quot;accuracy&amp;quot; to a higher value. This will lower the accuracy of the generated graphs. Especially for long-running tests, this could be set to 100ms.&lt;/div&gt;</summary>
		<author><name>Zap23</name></author>
	</entry>
</feed>