Skip to content

Commit 0d7cd66

Browse files
Merge pull request #56 from tkuebler/master
Mac compiled with EVSERVER - better performance
2 parents edd8c91 + 59046ac commit 0d7cd66

File tree

9 files changed

+487
-247
lines changed

9 files changed

+487
-247
lines changed

BINARIES/MacChatScript

2.98 MB
Binary file not shown.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Load Testing Chatsript With Apache JMeter
2+
3+
## Requirements
4+
5+
Apache JMeter 3.1 or above
6+
7+
## Running the tests
8+
9+
Open up the WorkBench.jmx file from inside apache jmeter. You should see a test plan populated with a basic tcp sampler run by a thread group. Edit the TCP Sampler to reflect the host and port that your ChatScript server is running on.
10+
11+
The basic test in this file simply generates a single request using a unique username and queries the default bot harry. This test plan could be a lot more complex, but for now it can give a rough baseline.
12+
13+
## Example results
14+
15+
### Mac results - 1000 concurrent users, 5 iterations
16+
<table>
17+
<tr>
18+
<th># Samples</th><th>Average</th><th>Min</th><th>Max</th><th>Std. Dev.</th><th>Error %</th><th>Throughput</th>
19+
</tr>
20+
<tr>
21+
<td>5000</td><td>2</td><td>1</td><td>32</td><td>2.32</td><td>0.000%</td><td>339.51246</td>
22+
</tr>
23+
</table>
24+
25+
### Linux results - 1000 concurrent users, 5 iterations
26+
<table>
27+
<tr>
28+
<th># Samples</th><th>Average</th><th>Min</th><th>Max</th><th>Std. Dev.</th><th>Error %</th><th>Throughput</th>
29+
</tr>
30+
<tr>
31+
<td>5000</td><td>0</td><td>0</td><td>29</td><td>0.84</td><td>0.000%</td><td>354.15781</td>
32+
</tr>
33+
</table>
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<jmeterTestPlan version="1.2" properties="3.1" jmeter="3.1 r1770033">
3+
<hashTree>
4+
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
5+
<stringProp name="TestPlan.comments"></stringProp>
6+
<boolProp name="TestPlan.functional_mode">false</boolProp>
7+
<boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
8+
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
9+
<collectionProp name="Arguments.arguments">
10+
<elementProp name="NUL" elementType="Argument">
11+
<stringProp name="Argument.name">NUL</stringProp>
12+
<stringProp name="Argument.value">%00</stringProp>
13+
<stringProp name="Argument.metadata">=</stringProp>
14+
</elementProp>
15+
</collectionProp>
16+
</elementProp>
17+
<stringProp name="TestPlan.user_define_classpath"></stringProp>
18+
</TestPlan>
19+
<hashTree>
20+
<BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
21+
<stringProp name="filename"></stringProp>
22+
<stringProp name="parameters"></stringProp>
23+
<boolProp name="resetInterpreter">false</boolProp>
24+
<stringProp name="script">String result = URLDecoder.decode(vars.get(&quot;NUL&quot;),&quot;ASCII&quot;);
25+
vars.put(&quot;NUL&quot;,result);</stringProp>
26+
</BeanShellPreProcessor>
27+
<hashTree/>
28+
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
29+
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
30+
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
31+
<boolProp name="LoopController.continue_forever">false</boolProp>
32+
<stringProp name="LoopController.loops">5</stringProp>
33+
</elementProp>
34+
<stringProp name="ThreadGroup.num_threads">1000</stringProp>
35+
<stringProp name="ThreadGroup.ramp_time">10</stringProp>
36+
<longProp name="ThreadGroup.start_time">1485567933000</longProp>
37+
<longProp name="ThreadGroup.end_time">1485567933000</longProp>
38+
<boolProp name="ThreadGroup.scheduler">false</boolProp>
39+
<stringProp name="ThreadGroup.duration">10</stringProp>
40+
<stringProp name="ThreadGroup.delay">1</stringProp>
41+
</ThreadGroup>
42+
<hashTree>
43+
<GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
44+
<stringProp name="ConstantTimer.delay">300</stringProp>
45+
<stringProp name="RandomTimer.range">100.0</stringProp>
46+
</GaussianRandomTimer>
47+
<hashTree/>
48+
<TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true">
49+
<stringProp name="TCPSampler.server">127.0.0.1</stringProp>
50+
<boolProp name="TCPSampler.reUseConnection">false</boolProp>
51+
<stringProp name="TCPSampler.port">1024</stringProp>
52+
<boolProp name="TCPSampler.nodelay">false</boolProp>
53+
<stringProp name="TCPSampler.timeout"></stringProp>
54+
<stringProp name="TCPSampler.request">${__RandomString(10,abcdefghijklmnopqrstuvwxyz)}:HARRY${NUL}${NUL}Hi there. What&apos;s going on?${NUL}</stringProp>
55+
<boolProp name="TCPSampler.closeConnection">true</boolProp>
56+
<stringProp name="TCPSampler.EolByte">00</stringProp>
57+
<stringProp name="ConfigTestElement.username"></stringProp>
58+
<stringProp name="ConfigTestElement.password"></stringProp>
59+
</TCPSampler>
60+
<hashTree>
61+
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
62+
<boolProp name="ResultCollector.error_logging">false</boolProp>
63+
<objProp>
64+
<name>saveConfig</name>
65+
<value class="SampleSaveConfiguration">
66+
<time>true</time>
67+
<latency>true</latency>
68+
<timestamp>true</timestamp>
69+
<success>true</success>
70+
<label>true</label>
71+
<code>true</code>
72+
<message>true</message>
73+
<threadName>true</threadName>
74+
<dataType>true</dataType>
75+
<encoding>false</encoding>
76+
<assertions>true</assertions>
77+
<subresults>true</subresults>
78+
<responseData>false</responseData>
79+
<samplerData>false</samplerData>
80+
<xml>false</xml>
81+
<fieldNames>true</fieldNames>
82+
<responseHeaders>false</responseHeaders>
83+
<requestHeaders>false</requestHeaders>
84+
<responseDataOnError>false</responseDataOnError>
85+
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
86+
<assertionsResultsToSave>0</assertionsResultsToSave>
87+
<bytes>true</bytes>
88+
<sentBytes>true</sentBytes>
89+
<threadCounts>true</threadCounts>
90+
<idleTime>true</idleTime>
91+
<connectTime>true</connectTime>
92+
</value>
93+
</objProp>
94+
<stringProp name="filename"></stringProp>
95+
</ResultCollector>
96+
<hashTree/>
97+
<ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="false">
98+
<boolProp name="ResultCollector.error_logging">false</boolProp>
99+
<objProp>
100+
<name>saveConfig</name>
101+
<value class="SampleSaveConfiguration">
102+
<time>true</time>
103+
<latency>true</latency>
104+
<timestamp>true</timestamp>
105+
<success>true</success>
106+
<label>true</label>
107+
<code>true</code>
108+
<message>true</message>
109+
<threadName>true</threadName>
110+
<dataType>true</dataType>
111+
<encoding>false</encoding>
112+
<assertions>true</assertions>
113+
<subresults>true</subresults>
114+
<responseData>false</responseData>
115+
<samplerData>false</samplerData>
116+
<xml>false</xml>
117+
<fieldNames>true</fieldNames>
118+
<responseHeaders>false</responseHeaders>
119+
<requestHeaders>false</requestHeaders>
120+
<responseDataOnError>false</responseDataOnError>
121+
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
122+
<assertionsResultsToSave>0</assertionsResultsToSave>
123+
<bytes>true</bytes>
124+
<sentBytes>true</sentBytes>
125+
<threadCounts>true</threadCounts>
126+
<idleTime>true</idleTime>
127+
<connectTime>true</connectTime>
128+
</value>
129+
</objProp>
130+
<stringProp name="filename"></stringProp>
131+
</ResultCollector>
132+
<hashTree/>
133+
<ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
134+
<boolProp name="ResultCollector.error_logging">false</boolProp>
135+
<objProp>
136+
<name>saveConfig</name>
137+
<value class="SampleSaveConfiguration">
138+
<time>true</time>
139+
<latency>true</latency>
140+
<timestamp>true</timestamp>
141+
<success>true</success>
142+
<label>true</label>
143+
<code>true</code>
144+
<message>true</message>
145+
<threadName>true</threadName>
146+
<dataType>true</dataType>
147+
<encoding>false</encoding>
148+
<assertions>true</assertions>
149+
<subresults>true</subresults>
150+
<responseData>false</responseData>
151+
<samplerData>false</samplerData>
152+
<xml>false</xml>
153+
<fieldNames>true</fieldNames>
154+
<responseHeaders>false</responseHeaders>
155+
<requestHeaders>false</requestHeaders>
156+
<responseDataOnError>false</responseDataOnError>
157+
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
158+
<assertionsResultsToSave>0</assertionsResultsToSave>
159+
<bytes>true</bytes>
160+
<sentBytes>true</sentBytes>
161+
<threadCounts>true</threadCounts>
162+
<idleTime>true</idleTime>
163+
<connectTime>true</connectTime>
164+
</value>
165+
</objProp>
166+
<stringProp name="filename"></stringProp>
167+
</ResultCollector>
168+
<hashTree/>
169+
</hashTree>
170+
</hashTree>
171+
</hashTree>
172+
</hashTree>
173+
</jmeterTestPlan>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Label,# Samples,Average,Min,Max,Std. Dev.,Error %,Throughput,Received KB/sec,Sent KB/sec,Avg. Bytes
2+
TCP Sampler,5000,0,0,29,0.84,0.000%,354.15781,8.99,0.00,26.0
3+
TOTAL,5000,0,0,29,0.84,0.000%,354.15781,8.99,0.00,26.0
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Label,# Samples,Average,Min,Max,Std. Dev.,Error %,Throughput,Received KB/sec,Sent KB/sec,Avg. Bytes
2+
TCP Sampler,5000,2,1,32,2.32,0.000%,339.51246,8.62,0.00,26.0
3+
TOTAL,5000,2,1,32,2.32,0.000%,339.51246,8.62,0.00,26.0

NON-WINDOWS NON-C/MAC/compile-on-osx.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
#compile on osx
2+
3+
note: Please read the 'ChatScript on a Mac' for more options, including xcode and make.
4+
5+
16
Make sure that cURL is installed on your machine:
27
```bash
38
curl --version

0 commit comments

Comments
 (0)