Skip to content

Commit 8b77955

Browse files
author
zkofiro
committed
Merge branch 'master' into zkofiro/SRE-33601
2 parents be84b75 + 8dad027 commit 8b77955

File tree

21 files changed

+320
-126
lines changed

21 files changed

+320
-126
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ tank_vmManager/settings.xml
4242
tank.mwb
4343
agent/http_client_3/settings.xml
4444
agent/http_client_4/settings.xml
45-
agent/ok_http_client/settings.xml
45+
agent/http_client_jdk/settings.xml
4646

4747
# Byte-compiled / optimized / DLL files
4848
__pycache__/

agent/agent_common/src/main/java/com/intuit/tank/http/BaseResponse.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,22 @@ public String getLogMsg() {
7474
}
7575
this.responseLogMsg = sb.toString();
7676
} catch (Exception ex) {
77-
LOG.error("Error processing response: " + ex.getMessage(), ex);
77+
LOG.error("Error processing response: {}", ex.getMessage(), ex);
7878
}
7979
return responseLogMsg;
8080
}
8181

82+
public String convertToCSV() {
83+
StringBuilder sb = new StringBuilder();
84+
sb.append(this.httpCode).append(",");
85+
sb.append(this.rspMessage).append(",");
86+
sb.append(responseTime).append(",");
87+
sb.append(getResponseSize()).append(",");
88+
headers.forEach((key, value) -> sb.append(key).append(" = ").append(value.replace(",", "")).append(","));
89+
cookies.forEach((key, value) -> sb.append(key).append(" = ").append(value).append(","));
90+
return sb.toString();
91+
}
92+
8293
/**
8394
* Common codes are 200 OK, 202 accepted, 204 no content, 400 bad request,
8495
* 404 not found, 500 internal server error, 503 Service Unavailable
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#!/bin/sh
22
vm_arguments="-Dnetworkaddress.cache.ttl=5 -Dnetworkaddress.cache.negative.ttl=0";
3-
java -cp apiharness-1.0-all.jar $2 $vm_arguments com.intuit.tank.harness.APITestHarness $1
3+
java -cp apiharness-1.0-all.jar "${@:2}" $vm_arguments com.intuit.tank.harness.APITestHarness $1
44
echo DONE

agent/http_client_4/src/main/java/com/intuit/tank/httpclient4/TankHttpClient4.java

+1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ public Object createHttpClient() {
9595
UserTokenHandler userTokenHandler = (httpContext) -> httpContext.getAttribute(HttpClientContext.USER_TOKEN);
9696
// default this implementation will create no more than than 2 concurrent connections per given route and no more 20 connections in total
9797
return HttpClients.custom()
98+
.setConnectionManagerShared(true)
9899
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
99100
.setUserTokenHandler(userTokenHandler)
100101
.evictIdleConnections(1L, TimeUnit.MINUTES)

api/src/main/resources/settings.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,11 @@
212212

213213
<!-- used to set agent instnces and calculate costs. -->
214214
<instance-types type="amazon">
215-
<type name="c5.large" cost=".085" users="500" cpus="2" ecus="8" mem="4" jvmArgs="-Xms2g -Xmx2g -XX:+UseG1GC" />
216-
<type name="c5.xlarge" cost=".17" users="2000" cpus="4" ecus="16" mem="8" default="true" jvmArgs="-Xms5g -Xmx5g -XX:+UseG1GC" />
217-
<type name="c5.2xlarge" cost=".34" users="4000" cpus="8" ecus="31" mem="16" jvmArgs="-Xms10g -Xmx10g -XX:+UseG1GC" />
218-
<type name="c5.4xlarge" cost=".68" users="8000" cpus="16" ecus="61" mem="32" jvmArgs="-Xms25g -Xmx25g -XX:+UseG1GC" />
219-
<type name="c5.9xlarge" cost="1.53" users="16000" cpus="36" ecus="139" mem="72" jvmArgs="-Xms50g -Xmx50g -XX:+UseG1GC" />
215+
<type name="m8g.large" cost=".0898" users="500" cpus="2" ecus="8" mem="8" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
216+
<type name="m8g.xlarge" cost=".1795" users="2000" cpus="4" ecus="16" mem="16" default="true" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
217+
<type name="m8g.2xlarge" cost=".3590" users="4000" cpus="8" ecus="31" mem="32" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
218+
<type name="m8g.4xlarge" cost=".7181" users="8000" cpus="16" ecus="61" mem="64" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
219+
<type name="m8g.9xlarge" cost="1.436" users="16000" cpus="36" ecus="139" mem="128" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
220220
</instance-types>
221221

222222

api/src/test/resources/settings.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,11 @@
212212

213213
<!-- used to set agent instnces and calculate costs. -->
214214
<instance-types type="amazon">
215-
<type name="c5.large" cost=".085" users="500" cpus="2" ecus="8" mem="4" jvmArgs="-Xms2g -Xmx2g -XX:+UseG1GC" />
216-
<type name="c5.xlarge" cost=".17" users="2000" cpus="4" ecus="16" mem="8" default="true" jvmArgs="-Xms5g -Xmx5g -XX:+UseG1GC" />
217-
<type name="c5.2xlarge" cost=".34" users="4000" cpus="8" ecus="31" mem="16" jvmArgs="-Xms10g -Xmx10g -XX:+UseG1GC" />
218-
<type name="c5.4xlarge" cost=".68" users="8000" cpus="16" ecus="61" mem="32" jvmArgs="-Xms25g -Xmx25g -XX:+UseG1GC" />
219-
<type name="c5.9xlarge" cost="1.53" users="16000" cpus="36" ecus="139" mem="72" jvmArgs="-Xms50g -Xmx50g -XX:+UseG1GC" />
215+
<type name="m8g.large" cost=".0898" users="500" cpus="2" ecus="8" mem="8" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
216+
<type name="m8g.xlarge" cost=".1795" users="2000" cpus="4" ecus="16" mem="16" default="true" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
217+
<type name="m8g.2xlarge" cost=".3590" users="4000" cpus="8" ecus="31" mem="32" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
218+
<type name="m8g.4xlarge" cost=".7181" users="8000" cpus="16" ecus="61" mem="64" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
219+
<type name="m8g.9xlarge" cost="1.436" users="16000" cpus="36" ecus="139" mem="128" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
220220
</instance-types>
221221

222222

assets/settings-all-in-one.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,11 @@
163163

164164
<!-- used to set agent instnces and calculate costs. -->
165165
<instance-types type="amazon">
166-
<type name="c5.large" cost=".085" users="500" cpus="2" ecus="8" mem="4" jvmArgs="-Xms2g -Xmx2g -XX:+UseG1GC" />
167-
<type name="c5.xlarge" cost=".17" users="2000" cpus="4" ecus="16" mem="8" default="true" jvmArgs="-Xms5g -Xmx5g -XX:+UseG1GC" />
168-
<type name="c5.2xlarge" cost=".34" users="4000" cpus="8" ecus="31" mem="16" jvmArgs="-Xms10g -Xmx10g -XX:+UseG1GC" />
169-
<type name="c5.4xlarge" cost=".68" users="8000" cpus="16" ecus="61" mem="32" jvmArgs="-Xms25g -Xmx25g -XX:+UseG1GC" />
170-
<type name="c5.9xlarge" cost="1.53" users="16000" cpus="36" ecus="139" mem="72" jvmArgs="-Xms50g -Xmx50g -XX:+UseG1GC" />
166+
<type name="m8g.large" cost=".0898" users="500" cpus="2" ecus="8" mem="8" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
167+
<type name="m8g.xlarge" cost=".1795" users="2000" cpus="4" ecus="16" mem="16" default="true" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
168+
<type name="m8g.2xlarge" cost=".3590" users="4000" cpus="8" ecus="31" mem="32" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
169+
<type name="m8g.4xlarge" cost=".7181" users="8000" cpus="16" ecus="61" mem="64" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
170+
<type name="m8g.9xlarge" cost="1.436" users="16000" cpus="36" ecus="139" mem="128" jvmArgs="-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UseG1GC" />
171171
</instance-types>
172172

173173

aws-config/tank_agent.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Parameters:
1111
InstanceType:
1212
Description: Amazon EC2 instance type
1313
Type: 'String'
14-
Default: 'c5.large'
14+
Default: 'm8g.large'
1515
KeyName:
1616
Type: 'AWS::EC2::KeyPair::KeyName'
1717
Description: Amazon EC2 Key Pair

pom.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
<cert.p12>self_signed_tank.p12</cert.p12>
3131

3232
<version.hibernate>6.5.1.Final</version.hibernate>
33-
<version.software.amazon.awssdk>2.25.56</version.software.amazon.awssdk>
34-
<version.aws-xray-sdk-bom>2.15.3</version.aws-xray-sdk-bom>
33+
<version.software.amazon.awssdk>2.29.35</version.software.amazon.awssdk>
34+
<version.aws-xray-sdk-bom>2.18.2</version.aws-xray-sdk-bom>
3535

36-
<version.tomcat>11.0.1</version.tomcat>
36+
<version.tomcat>11.0.2</version.tomcat>
3737
<weld.version>5.1.3.Final</weld.version>
3838
<cdi.version>4.1.0</cdi.version>
3939

proxy-parent/owasp-proxy/pom.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@
3232
<dependencies>
3333
<dependency>
3434
<groupId>org.bouncycastle</groupId>
35-
<artifactId>bcprov-jdk15on</artifactId>
36-
<version>1.47</version>
35+
<artifactId>bcprov-jdk18on</artifactId>
36+
<version>1.79</version>
3737
</dependency>
3838

3939
<dependency>
4040
<groupId>org.bouncycastle</groupId>
41-
<artifactId>bcpkix-jdk15on</artifactId>
42-
<version>1.47</version>
41+
<artifactId>bcpkix-jdk18on</artifactId>
42+
<version>1.79</version>
4343
</dependency>
4444
<dependency>
4545
<groupId>org.apache.httpcomponents</groupId>
@@ -48,7 +48,7 @@
4848
<dependency>
4949
<groupId>org.springframework</groupId>
5050
<artifactId>spring-jdbc</artifactId>
51-
<version>2.5.6</version>
51+
<version>6.2.0</version>
5252
<scope>compile</scope>
5353
<exclusions>
5454
<exclusion>

proxy-parent/owasp-proxy/src/main/java/org/owasp/proxy/http/dao/JdbcMessageDAO.java

+26-37
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@
4242
import org.springframework.dao.DataAccessException;
4343
import org.springframework.dao.EmptyResultDataAccessException;
4444
import org.springframework.jdbc.core.JdbcTemplate;
45+
import org.springframework.jdbc.core.RowMapper;
4546
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
4647
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport;
47-
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
48-
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
48+
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
4949
import org.springframework.jdbc.support.GeneratedKeyHolder;
5050
import org.springframework.jdbc.support.KeyHolder;
5151

@@ -66,11 +66,11 @@ public class JdbcMessageDAO extends NamedParameterJdbcDaoSupport implements
6666
private static final String RESPONSE_HEADER_TIME = "headerTime";
6767
private static final String RESPONSE_CONTENT_TIME = "contentTime";
6868

69-
private static final ParameterizedRowMapper<MutableBufferedRequest> REQUEST_MAPPER = new RequestMapper();
70-
private static final ParameterizedRowMapper<MutableBufferedResponse> RESPONSE_MAPPER = new ResponseMapper();
71-
private static final ParameterizedRowMapper<byte[]> CONTENT_MAPPER = new ContentMapper();
72-
private static final ParameterizedRowMapper<Integer> ID_MAPPER = new IdMapper();
73-
private static final ParameterizedRowMapper<Conversation> CONVERSATION_MAPPER = new ConversationMapper();
69+
private static final RowMapper<MutableBufferedRequest> REQUEST_MAPPER = new RequestMapper();
70+
private static final RowMapper<MutableBufferedResponse> RESPONSE_MAPPER = new ResponseMapper();
71+
private static final RowMapper<byte[]> CONTENT_MAPPER = new ContentMapper();
72+
private static final RowMapper<Integer> ID_MAPPER = new IdMapper();
73+
private static final RowMapper<Conversation> CONVERSATION_MAPPER = new ConversationMapper();
7474

7575
private final static String INSERT_CONTENT = "INSERT INTO contents (content, size) VALUES (:content, :size)";
7676

@@ -188,9 +188,8 @@ public Collection<Integer> listConversationsSince(int id)
188188
MapSqlParameterSource params = new MapSqlParameterSource();
189189
try {
190190
params.addValue(ID, id, Types.INTEGER);
191-
SimpleJdbcTemplate template = new SimpleJdbcTemplate(
192-
getNamedParameterJdbcTemplate());
193-
return template.query(SELECT_CONVERSATIONS, ID_MAPPER, params);
191+
NamedParameterJdbcTemplate template = getNamedParameterJdbcTemplate();
192+
return template.query(SELECT_CONVERSATIONS, params, ID_MAPPER);
194193
} catch (EmptyResultDataAccessException erdae) {
195194
return Collections.emptyList();
196195
}
@@ -205,9 +204,8 @@ public int getMessageContentId(int headerId) throws DataAccessException {
205204
try {
206205
MapSqlParameterSource params = new MapSqlParameterSource();
207206
params.addValue(ID, headerId, Types.INTEGER);
208-
SimpleJdbcTemplate template = new SimpleJdbcTemplate(
209-
getNamedParameterJdbcTemplate());
210-
return template.queryForInt(SELECT_CONTENT_ID, params);
207+
NamedParameterJdbcTemplate template = getNamedParameterJdbcTemplate();
208+
return template.queryForObject(SELECT_CONTENT_ID, params, Integer.class);
211209
} catch (EmptyResultDataAccessException erdae) {
212210
return -1;
213211
}
@@ -222,9 +220,8 @@ public int getMessageContentSize(int id) throws DataAccessException {
222220
try {
223221
MapSqlParameterSource params = new MapSqlParameterSource();
224222
params.addValue(ID, id, Types.INTEGER);
225-
SimpleJdbcTemplate template = new SimpleJdbcTemplate(
226-
getNamedParameterJdbcTemplate());
227-
return template.queryForInt(SELECT_CONTENT_SIZE, params);
223+
NamedParameterJdbcTemplate template = getNamedParameterJdbcTemplate();
224+
return template.queryForObject(SELECT_CONTENT_SIZE, params, Integer.class);
228225
} catch (EmptyResultDataAccessException erdae) {
229226
return -1;
230227
}
@@ -239,10 +236,8 @@ public Conversation getConversation(int id) throws DataAccessException {
239236
try {
240237
MapSqlParameterSource params = new MapSqlParameterSource();
241238
params.addValue(ID, id, Types.INTEGER);
242-
SimpleJdbcTemplate template = new SimpleJdbcTemplate(
243-
getNamedParameterJdbcTemplate());
244-
return template.queryForObject(SELECT_SUMMARY, CONVERSATION_MAPPER,
245-
params);
239+
NamedParameterJdbcTemplate template = getNamedParameterJdbcTemplate();
240+
return template.queryForObject(SELECT_SUMMARY, params, CONVERSATION_MAPPER);
246241
} catch (EmptyResultDataAccessException erdae) {
247242
return null;
248243
}
@@ -286,10 +281,8 @@ public byte[] loadMessageContent(int id) throws DataAccessException {
286281
try {
287282
MapSqlParameterSource params = new MapSqlParameterSource();
288283
params.addValue(ID, id, Types.INTEGER);
289-
SimpleJdbcTemplate template = new SimpleJdbcTemplate(
290-
getNamedParameterJdbcTemplate());
291-
return template.queryForObject(SELECT_CONTENT, CONTENT_MAPPER,
292-
params);
284+
NamedParameterJdbcTemplate template = getNamedParameterJdbcTemplate();
285+
return template.queryForObject(SELECT_CONTENT, params, CONTENT_MAPPER);
293286
} catch (EmptyResultDataAccessException erdae) {
294287
return null;
295288
}
@@ -319,10 +312,8 @@ public RequestHeader loadRequestHeader(int id) throws DataAccessException {
319312
MapSqlParameterSource params = new MapSqlParameterSource();
320313
try {
321314
params.addValue(ID, id, Types.INTEGER);
322-
SimpleJdbcTemplate template = new SimpleJdbcTemplate(
323-
getNamedParameterJdbcTemplate());
324-
return template.queryForObject(SELECT_REQUEST, REQUEST_MAPPER,
325-
params);
315+
NamedParameterJdbcTemplate template = getNamedParameterJdbcTemplate();
316+
return template.queryForObject(SELECT_REQUEST, params, REQUEST_MAPPER);
326317
} catch (EmptyResultDataAccessException erdae) {
327318
return null;
328319
}
@@ -354,10 +345,8 @@ public MutableResponseHeader loadResponseHeader(int id)
354345
try {
355346
MapSqlParameterSource params = new MapSqlParameterSource();
356347
params.addValue(ID, id, Types.INTEGER);
357-
SimpleJdbcTemplate template = new SimpleJdbcTemplate(
358-
getNamedParameterJdbcTemplate());
359-
return template.queryForObject(SELECT_RESPONSE, RESPONSE_MAPPER,
360-
params);
348+
NamedParameterJdbcTemplate template = getNamedParameterJdbcTemplate();
349+
return template.queryForObject(SELECT_RESPONSE, params, RESPONSE_MAPPER);
361350
} catch (EmptyResultDataAccessException erdae) {
362351
return null;
363352
}
@@ -478,7 +467,7 @@ private void saveMessageHeader(MutableMessageHeader header, int contentId) {
478467
}
479468

480469
private static class RequestMapper implements
481-
ParameterizedRowMapper<MutableBufferedRequest> {
470+
RowMapper<MutableBufferedRequest> {
482471

483472
public MutableBufferedRequest mapRow(ResultSet rs, int rowNum)
484473
throws SQLException {
@@ -504,7 +493,7 @@ public MutableBufferedRequest mapRow(ResultSet rs, int rowNum)
504493
}
505494

506495
private static class ResponseMapper implements
507-
ParameterizedRowMapper<MutableBufferedResponse> {
496+
RowMapper<MutableBufferedResponse> {
508497

509498
public MutableBufferedResponse mapRow(ResultSet rs, int rowNum)
510499
throws SQLException {
@@ -529,22 +518,22 @@ public MutableBufferedResponse mapRow(ResultSet rs, int rowNum)
529518
}
530519

531520
private static class ContentMapper implements
532-
ParameterizedRowMapper<byte[]> {
521+
RowMapper<byte[]> {
533522

534523
public byte[] mapRow(ResultSet rs, int rowNum) throws SQLException {
535524
return rs.getBytes(CONTENT);
536525
}
537526
}
538527

539-
private static class IdMapper implements ParameterizedRowMapper<Integer> {
528+
private static class IdMapper implements RowMapper<Integer> {
540529

541530
public Integer mapRow(ResultSet rs, int rowNum) throws SQLException {
542531
return Integer.valueOf(rs.getInt(ID));
543532
}
544533
}
545534

546535
private static class ConversationMapper implements
547-
ParameterizedRowMapper<Conversation> {
536+
RowMapper<Conversation> {
548537

549538
public Conversation mapRow(ResultSet rs, int rowNum)
550539
throws SQLException {

proxy-parent/owasp-proxy/src/main/java/org/owasp/proxy/util/BouncyCastleCertificateUtils.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,10 @@
3434

3535
import javax.security.auth.x500.X500Principal;
3636

37-
import org.bouncycastle.asn1.x509.BasicConstraints;
38-
import org.bouncycastle.asn1.x509.ExtendedKeyUsage;
39-
import org.bouncycastle.asn1.x509.KeyPurposeId;
40-
import org.bouncycastle.asn1.x509.X509Extensions;
37+
import org.bouncycastle.asn1.x509.*;
4138
import org.bouncycastle.jce.X509KeyUsage;
4239
import org.bouncycastle.x509.X509V3CertificateGenerator;
4340
import org.bouncycastle.x509.extension.AuthorityKeyIdentifierStructure;
44-
import org.bouncycastle.x509.extension.SubjectKeyIdentifierStructure;
4541

4642
@SuppressWarnings("deprecation")
4743
public class BouncyCastleCertificateUtils {
@@ -116,7 +112,7 @@ private static void addCertificateExtensions(PublicKey pubKey,
116112
// new SubjectKeyIdentifierExtension(new KeyIdentifier(pubKey)
117113
// .getIdentifier()));
118114
certGen.addExtension(X509Extensions.SubjectKeyIdentifier, false,
119-
new SubjectKeyIdentifierStructure(pubKey));
115+
SubjectKeyIdentifier.getInstance(pubKey));
120116
//
121117
// ext.set(AuthorityKeyIdentifierExtension.NAME,
122118
// new AuthorityKeyIdentifierExtension(

rest-mvc/impl/src/main/java/com/intuit/tank/rest/mvc/rest/controllers/JobController.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public ResponseEntity<JobContainer> getJobsByProject(@PathVariable @Parameter(de
8989
" - passing only projectName creates jobs named: '{projectName}_{total_users}\\_users\\_{timestamp}' \n\n" +
9090
" - rampTime and simulationTime are accepted as time strings i.e 60s, 12m, 24h \n\n" +
9191
" - stopBehavior is matched against accepted values ( END_OF_STEP, END_OF_SCRIPT, END_OF_SCRIPT_GROUP, END_OF_TEST ) \n\n" +
92-
" - vmInstance matches against AWS EC2 Instance Types i.e c5.large, c5.xlarge, etc \n\n"+
92+
" - vmInstance matches against AWS EC2 Instance Types i.e m8g.large, m8g.xlarge, etc \n\n"+
9393
" - workloadType can be set to increasing (linear workload) or standard (nonlinear workload) \n\n"+
9494
" - targetRampRate, targetRatePerAgent, and jobRegions.percentage fields apply to standard workloadType jobs (nonlinear) \n\n"+
9595
" - projectId, userIntervalIncrement and numUsersPerAgent are accepted as integers \n\n" +

tools/agent_debugger/src/main/java/com/intuit/tank/tools/debugger/ActionComponents.java

+2
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ private void createToolBar(JComboBox testPlanChooser, JComboBox<TankClientChoice
185185
toolBar.add(new JLabel(" "));
186186
toolBar.add(actions.getPauseAction());
187187
toolBar.addSeparator();
188+
toolBar.add(actions.getCSVAction());
189+
toolBar.addSeparator();
188190

189191
toolBar.add(actions.getClearBookmarksAction());
190192
toolBar.add(new JLabel(" "));

0 commit comments

Comments
 (0)