Skip to content

Commit

Permalink
Update ReadMe and normalize test plan.
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrew Woods committed Jun 6, 2013
1 parent 6235b10 commit e9ec804
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 73 deletions.
59 changes: 7 additions & 52 deletions README.md
@@ -1,67 +1,24 @@
# Test harness for exercising Fedora Futures candiates
# Test harness for exercising Fedora4 and Fedora3

- JBoss ModeShape
- Fedora 3.x (baseline)
- Databank
- Lily


## 1. Expand the fixtures

The fixtures directory is linked into this project as a git submodule. First, you need to get that data:

```bash
$ git submodule init
$ git submodule update
```

One of the dependencies of the fixtures project is the python bagit client:

```bash
$ pip install bagit
```

Then, grab the digital corpora data:

```bash
$ cd fixtures
$ BAGIT_PY=./path/to/bagit.py ./get-digitalcorpora-corpus.sh #this may take some time.
```


## 2. Launch the candidate applications

### JBoss Modeshape:

```bash
pushd jetty ; java -jar start.jar ; popd
```
## 1. Launch the candidate applications

### Fedora 3.x:

```bash
$ pushd hydra-jetty; java -Djetty.port=8983 -Dsolr.solr.home=`pwd`/solr -Xmx256m -XX:MaxPermSize=128m -jar start.jar; popd
$ ...
```

### Databank
### Fedora 4.x:

```bash
```

### Lily
Deploy fedora-kitchen-sink webapp

```bash
$ curl -O http://lilyproject.org/release/1.3/lily-1.3.tar.gz
$ tar -xvzf lily-1.3.tar.gz
$ cd lily-1.3; bin/launch-test-lily
```

## Launch JMeter

Add JMeter to your PATH a la:

```bash
export PATH=$PATH:~/jmeter/bin
export PATH=$PATH:./jmeter/bin
```

You can open JMeter's GUI and load the script to run it interactively (see colored graphs!) or tinker with it. Run JMeter via:
Expand All @@ -73,15 +30,13 @@ jmeter
Toggle on and off the various threadgroups you want to run. They'll run in parallel (and crunch through the whole data set). IMPORTANT NOTE: Make sure you have enough disk space available to make N copies of the fixtures data.



### Headless JMeter

You can also run JMeter in headless mode.

```
meter -Jnumthreads=[number-of-threads-defaults-to-1] -n -t ModeShapeMadness.jmx -l [where-you-want-the-general-logfile]
meter -n -t ${BASE}/plans/fedora.jmx -Jfedora_4_server=${HOST} -Jfedora_4_context='fcrepo/rest' -Jnum_threads=${THREADS} -Jloop_count=${LOOPS} -Jfilesize_mean=${FILE_SIZE} -Jfilesize_stddev=${STD_DEV}
```

It will finish with several logs. The most interesting are nodecreate.log, which describes the creation of JCR nodes, and binaryload.log, which describes how binary content got loaded.


57 changes: 36 additions & 21 deletions plans/fedora.jmx
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="2.4" jmeter="2.9 r1437961">
<jmeterTestPlan version="1.2" properties="2.3" jmeter="2.8 r1393162">
<hashTree>
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Fedora Profiling" enabled="true">
<stringProp name="TestPlan.comments">Exercising Fedora&apos;s REST API</stringProp>
Expand Down Expand Up @@ -54,7 +54,7 @@
</elementProp>
<elementProp name="FEDORA_4_SERVER_CONTEXT" elementType="Argument">
<stringProp name="Argument.name">FEDORA_4_SERVER_CONTEXT</stringProp>
<stringProp name="Argument.value">${__property(fedora_4_context,,rest)}</stringProp>
<stringProp name="Argument.value">${__property(fedora_4_context,,f4/rest)}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="SEED" elementType="Argument">
Expand Down Expand Up @@ -137,7 +137,7 @@
<stringProp name="TestPlan.comments">Authenticate to Fedora 4 Server</stringProp>
</AuthManager>
<hashTree/>
<SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="Authenticate" enabled="true">
<SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="Authenticate" enabled="false">
<stringProp name="ThreadGroup.on_sample_error">stoptest</stringProp>
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
<boolProp name="LoopController.continue_forever">false</boolProp>
Expand Down Expand Up @@ -367,7 +367,7 @@ if(!dir.exists()) {
</ModuleController>
<hashTree/>
</hashTree>
<SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="Create Fixtures" enabled="true">
<SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="Create Fixtures" enabled="false">
<stringProp name="TestPlan.comments">Creates the fixtures to be used by all thread groups</stringProp>
<stringProp name="ThreadGroup.on_sample_error">stoptest</stringProp>
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
Expand Down Expand Up @@ -536,7 +536,7 @@ file.close();</stringProp>
</ResultCollector>
<hashTree/>
</hashTree>
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Fedora 4" enabled="true">
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Fedora 4" enabled="false">
<stringProp name="ThreadGroup.on_sample_error">stoptest</stringProp>
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
<boolProp name="LoopController.continue_forever">false</boolProp>
Expand Down Expand Up @@ -613,12 +613,12 @@ file.close();</stringProp>
<bytes>true</bytes>
</value>
</objProp>
<stringProp name="filename">${LOG_DIRECTORY}/jmeter-fedora4-${FILE_SIZE_MEAN}mean-${FILE_SIZE_STD_DEV}stddev-${NUM_THREADS}threads.csv</stringProp>
<stringProp name="filename">${LOG_DIRECTORY}/jmeter-fedora4-${FILE_SIZE_MEAN}-mean-${FILE_SIZE_STD_DEV}-stddev-${NUM_THREADS}-threads.csv</stringProp>
</ResultCollector>
<hashTree/>
</hashTree>
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Fedora4 Create objects" enabled="false">
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Fedora4 Create New Objects" enabled="true">
<stringProp name="ThreadGroup.on_sample_error">stoptest</stringProp>
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
<boolProp name="LoopController.continue_forever">false</boolProp>
<stringProp name="LoopController.loops">${LOOP_COUNT}</stringProp>
Expand All @@ -632,26 +632,41 @@ file.close();</stringProp>
<stringProp name="ThreadGroup.delay"></stringProp>
</ThreadGroup>
<hashTree>
<CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="PID" enabled="true">
<stringProp name="CounterConfig.start">1</stringProp>
<stringProp name="CounterConfig.end"></stringProp>
<stringProp name="CounterConfig.incr">1</stringProp>
<stringProp name="CounterConfig.name">pid</stringProp>
<stringProp name="CounterConfig.format">test-create-</stringProp>
<boolProp name="CounterConfig.per_user">false</boolProp>
</CounterConfig>
<hashTree/>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Object" enabled="true">
<ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments"/>
</elementProp>
<stringProp name="HTTPSampler.domain">${FEDORA_4_SERVER_NAME}</stringProp>
<stringProp name="HTTPSampler.port">${FEDORA_4_SERVER_PORT}</stringProp>
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
<stringProp name="HTTPSampler.response_timeout"></stringProp>
<stringProp name="HTTPSampler.protocol">http</stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.path"></stringProp>
<stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
<stringProp name="TestPlan.comments">Defaults for Fedora 4 HTTP requests (Must have HttpClient3.1 for authentication to work)</stringProp>
<stringProp name="HTTPSampler.concurrentPool">4</stringProp>
</ConfigTestElement>
<hashTree/>
<BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="Set Context" enabled="true">
<stringProp name="scriptLanguage">javascript</stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="filename"></stringProp>
<stringProp name="script">vars.put(&apos;FEDORA_SERVER_CONTEXT&apos;, vars.get(&apos;FEDORA_4_SERVER_CONTEXT&apos;));
</stringProp>
</BSFPreProcessor>
<hashTree/>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New Object" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments"/>
</elementProp>
<stringProp name="HTTPSampler.domain"></stringProp>
<stringProp name="HTTPSampler.port"></stringProp>
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
<stringProp name="HTTPSampler.response_timeout"></stringProp>
<stringProp name="HTTPSampler.protocol"></stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.path">${FEDORA_4_SERVER_CONTEXT}/objects/fcr:new</stringProp>
<stringProp name="HTTPSampler.path">${FEDORA_SERVER_CONTEXT}/objects/fcr:new</stringProp>
<stringProp name="HTTPSampler.method">POST</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
Expand Down Expand Up @@ -690,11 +705,11 @@ file.close();</stringProp>
<bytes>true</bytes>
</value>
</objProp>
<stringProp name="filename">${LOG_DIRECTORY}/jmeter-fedora4-create-object-${NUM_THREADS}threads.csv</stringProp>
<stringProp name="filename">${LOG_DIRECTORY}/jmeter-fedora4-newobject-${NUM_THREADS}-threads.csv</stringProp>
</ResultCollector>
<hashTree/>
</hashTree>
<PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="Destroy Fixtures" enabled="true">
<PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="Destroy Fixtures" enabled="false">
<stringProp name="ThreadGroup.on_sample_error">stoptest</stringProp>
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
<boolProp name="LoopController.continue_forever">false</boolProp>
Expand Down

0 comments on commit e9ec804

Please sign in to comment.