diff --git a/.DS_Store b/.DS_Store
index 5008ddf..814898c 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/.gitignore b/.gitignore
index 223366e..c62246f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
*.iml
.idea/*
target/*
-
+results/
+src.zip
+.DS_Store
/gatling.log
diff --git a/pom.xml b/pom.xml
index 840cefa..0e96be6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,9 +8,9 @@
UTF-8
- 2.3.1
- 2.2.4
- 3.3.1
+ 3.0.3
+ 3.0.1
+ 3.4.4
@@ -32,12 +32,12 @@
1.4.4.RELEASE
-
- io.netty
- netty-handler
- 4.0.56.Final
- runtime
-
+
+
+
+
+
+
io.gatling.highcharts
gatling-charts-highcharts
@@ -94,78 +94,95 @@
+ src/main/scala
+ src/test/scala
net.alchim31.maven
scala-maven-plugin
${scala-maven-plugin.version}
-
-
- scala-compile-first
- process-resources
-
- add-source
- compile
-
-
-
- scala-test-compile
- process-test-resources
-
- testCompile
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
-
- compile
-
-
-
+
+ 2.12.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
io.gatling
gatling-maven-plugin
${gatling-plugin.version}
+ src/test/resources
src/test/scala
true
+
+ -Xmx4096m
+
+
+ -Xmx2048m
+
+ true
+
+ true
+ true
+ true
-
-
- CaseData
-
- execute
-
-
- uk.gov.hmcts.ccd.simulation.CaseDataSimulation
-
-
-
- UserProfile
-
- execute
-
-
- uk.gov.hmcts.ccd.simulation.UserProfileSimulation
-
-
-
- CaseDefinition
-
- execute
-
-
- uk.gov.hmcts.ccd.simulation.CaseDefinitionSimulation
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
org.apache.maven.plugins
diff --git a/src/test/resources/application.conf b/src/test/resources/application.conf
index e6d4544..180cd38 100644
--- a/src/test/resources/application.conf
+++ b/src/test/resources/application.conf
@@ -23,6 +23,18 @@ getUserProfileUrl = "caseworkers/538/profile"
localhost {
maxSimulationDurationMinutes = 99999
+ maxResponseTime = 20000
+ meanResponseTime = 1000
+ minthinktime = 1
+ maxthinktime = 2
+ minWaitForNextIteration = 1
+ maxWaitForNextIteration = 2
+ totalDuration = 1
+ reachRPSTarget = 20
+ reachRPSDuration = 10
+ reachRPSHoldForDuration = 60
+ jumptoRPSTarget = 50
+ jumptoRPSDuration = 900
userCcdId = 538
userImportId = 1
userProfileUrl = "http://localhost:4453"
@@ -30,8 +42,8 @@ localhost {
caseDefinitionUrl = "http://localhost:4451"
idamS2SUrl = "http://localhost:4502"
idamUserTokenUrl = "http://localhost:4501"
- dataStoreS2STokenGeneratorSecret = "${IDAM_KEY_CCD_DATA_STORE}"
- gatewayS2STokenGeneratorSecret = "${IDAM_KEY_CCD_GATEWAY}"
+ dataStoreS2STokenGeneratorSecret = "AAAAAAAAAAAAAAAB"
+ gatewayS2STokenGeneratorSecret = "AAAAAAAAAAAAAAAC"
cases = ["1519742486891285", "1519742533143128", "1519742539447358", "1519742543506512", "1519742552469933", "1519904309069941", "1519904309386295", "1519904309753528"]
getCaseUrl = "caseworkers/"${userCcdId}"/jurisdictions/PROBATE/case-types/GrantOfRepresentation/cases/:case_reference"
@@ -50,8 +62,8 @@ localhostDocker {
caseDefinitionUrl = "http://localhost:4451"
idamS2SUrl = "http://localhost:4502"
idamUserTokenUrl = "http://localhost:4501"
- dataStoreS2STokenGeneratorSecret = "${IDAM_KEY_CCD_DATA_STORE}"
- gatewayS2STokenGeneratorSecret = "${IDAM_KEY_CCD_GATEWAY}"
+ dataStoreS2STokenGeneratorSecret = "AAAAAAAAAAAAAAAB"
+ gatewayS2STokenGeneratorSecret = "AAAAAAAAAAAAAAAC"
}
test {
@@ -75,18 +87,18 @@ cnp_sanbox {
httpProxyPort = "8080"
userCcdId = 6687
userImportId = 445
- idamS2SUrl = "http://betaDevBccidamS2SLB.reform.hmcts.net"
+ idamS2SUrl = "http://rpe-service-auth-provider-sandbox.service.core-compute-sandbox.internal"
idamUserTokenUrl = "http://betaDevBccidamAppLB.reform.hmcts.net"
userProfileUrl = "https://ccd-user-profile-api-sandbox.service.core-compute-sandbox.internal"
caseDataUrl = "https://ccd-data-store-api-sandbox.service.core-compute-sandbox.internal"
caseDefinitionUrl = "https://ccd-definition-store-api-sandbox.service.core-compute-sandbox.internal"
dataStoreS2STokenGeneratorSecret = "${IDAM_KEY_CCD_DATA_STORE}"
gatewayS2STokenGeneratorSecret = "${IDAM_KEY_CCD_GATEWAY}"
- getCaseUrl = "caseworkers/6687/jurisdictions/DIVORCE/case-types/DIVORCE/cases/1512470862480575"
+ getCaseUrl = "caseworkers/6687/jurisdictions/DIVORCE/case-types/DIVORCE/cases/1537538269434386"
createCaseUrl = "caseworkers/6687/jurisdictions/PROBATE/case-types/GrantOfRepresentation/cases"
}
-cnp_sprod {
+cnp_sandbox {
maxSimulationDurationMinutes = 99999
maxResponseTime = 20000
meanResponseTime = 1000
@@ -94,7 +106,47 @@ cnp_sprod {
maxthinktime = 3
minWaitForNextIteration = 4
maxWaitForNextIteration = 5
- totalDuration = 2
+ totalDuration = 1
+ reachRPSTarget = 20
+ reachRPSDuration = 10
+ reachRPSHoldForDuration = 60
+ jumptoRPSTarget = 50
+ jumptoRPSDuration = 900
+ httpProxyHost = "proxyout.reform.hmcts.net"
+ httpProxyPort = "8080"
+ userCcdId = 176475
+ userImportId = 445
+ idamS2SUrl = "http://rpe-service-auth-provider-sandbox.service.core-compute-sandbox.internal"
+ idamUserTokenUrl = "http://betaDevBccidamAppLB.reform.hmcts.net"
+ userProfileUrl = "https://ccd-user-profile-api-sandbox.service.core-compute-sandbox.internal"
+ caseDataUrl = "https://ccd-data-store-api-sandbox.service.core-compute-sandbox.internal"
+ caseDefinitionUrl = "https://ccd-definition-store-api-sandbox.service.core-compute-sandbox.internal"
+ dataStoreS2STokenGeneratorSecret = "${IDAM_KEY_CCD_DATA_STORE}"
+ gatewayS2STokenGeneratorSecret = "${IDAM_KEY_CCD_GATEWAY}"
+ getCaseUrl = "aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases/1537782078866335"
+ createCaseUrl = "caseworkers/176475/jurisdictions/:jurisdictions_reference/case-types/:casetype_reference/cases"
+ validateCaseUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases"
+ getUserProfileUrl = "caseworkers/176475/profile"
+ searchCases = "aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases?state=CaseCreated"
+ getPaginationMetadataUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases/pagination_metadata?state=CaseCreated"
+ saveEventUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/CASETYPE2/cases/1531207599597587/events"
+ searchInputDetails = "aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/inputs"
+ workbasketInputDetails = "/aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/work-basket-inputs"
+ getPrintableDocumentsForEvent = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/CASETYPE2/cases/1531207599597587/documents"
+ validateCaseDetails = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/validate"
+ docStoreBashURL = "https://dm-store-sprod.service.core-compute-sprod.internal"
+ ESSearch = "searchCases"
+}
+
+cnp_sprod {
+ maxSimulationDurationMinutes = 99999
+ maxResponseTime = 20000
+ meanResponseTime = 1000
+ minthinktime = 1
+ maxthinktime = 2
+ minWaitForNextIteration = 1
+ maxWaitForNextIteration = 2
+ totalDuration = 1
reachRPSTarget = 20
reachRPSDuration = 10
reachRPSHoldForDuration = 60
@@ -107,16 +159,65 @@ cnp_sprod {
idamS2SUrl = "http://rpe-service-auth-provider-sprod.service.core-compute-sprod.internal"
idamUserTokenUrl = "http://betaDevBccidamAppLB.reform.hmcts.net"
userProfileUrl = "https://ccd-user-profile-api-sprod.service.core-compute-sprod.internal"
+ escaseDataUrl = "https://ccd-api-gateway-web-sprod.service.core-compute-sprod.internal"
caseDataUrl = "https://ccd-data-store-api-sprod.service.core-compute-sprod.internal"
caseDefinitionUrl = "https://ccd-definition-store-api-sprod.service.core-compute-sprod.internal"
dataStoreS2STokenGeneratorSecret = "${IDAM_KEY_CCD_DATA_STORE}"
gatewayS2STokenGeneratorSecret = "${IDAM_KEY_CCD_GATEWAY}"
- getCaseUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases/1525778314235511"
- createCaseUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases"
+ getCaseUrl = "aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases/1532983170361929"
+ createCaseUrl = "caseworkers/176475/jurisdictions/:jurisdictions_reference/case-types/:casetype_reference/cases"
+ validateCaseUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases"
getUserProfileUrl = "caseworkers/176475/profile"
- searchCases = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases?state=CaseCreated"
+ searchCases = "aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases?state=CaseCreated"
getPaginationMetadataUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases/pagination_metadata?state=CaseCreated"
- saveEventUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases/1525778314235511/events"
+ saveEventUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/CASETYPE2/cases/1531207599597587/events"
+ searchInputDetails = "aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/inputs"
+ workbasketInputDetails = "/aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/work-basket-inputs"
+ getPrintableDocumentsForEvent = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/CASETYPE2/cases/1531207599597587/documents"
+ validateCaseDetails = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/validate"
+ docStoreBashURL = "https://dm-store-sprod.service.core-compute-sprod.internal"
+ ESSearch = "searchCases"
+}
+
+cnp_saat {
+ maxSimulationDurationMinutes = 99999
+ maxResponseTime = 20000
+ meanResponseTime = 1000
+ minthinktime = 1
+ maxthinktime = 2
+ minWaitForNextIteration = 1
+ maxWaitForNextIteration = 2
+ totalDuration = 1
+ reachRPSTarget = 20
+ reachRPSDuration = 10
+ reachRPSHoldForDuration = 60
+ jumptoRPSTarget = 50
+ jumptoRPSDuration = 900
+ httpProxyHost = "proxyout.reform.hmcts.net"
+ httpProxyPort = "8080"
+ userCcdId = 176475
+ userImportId = 445
+ idamS2SUrl = "http://rpe-service-auth-provider-saat.service.core-compute-saat.internal"
+ idamUserTokenUrl = "http://betaDevBccidamAppLB.reform.hmcts.net"
+ userProfileUrl = "https://ccd-user-profile-api-saat.service.core-compute-saat.internal"
+ escaseDataUrl = "https://ccd-api-gateway-web-saat.service.core-compute-saat.internal"
+ caseDataUrl = "https://ccd-data-store-api-saat.service.core-compute-saat.internal"
+ caseDefinitionUrl = "https://ccd-definition-store-api-saat.service.core-compute-saat.internal"
+ dataStoreS2STokenGeneratorSecret = "${IDAM_KEY_CCD_DATA_STORE}"
+ gatewayS2STokenGeneratorSecret = "${IDAM_KEY_CCD_GATEWAY}"
+ getCaseUrl = "aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases/1532983170361929"
+ createCaseUrl = "caseworkers/176475/jurisdictions/:jurisdictions_reference/case-types/:casetype_reference/cases"
+ validateCaseUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases"
+ getUserProfileUrl = "caseworkers/176475/profile"
+ searchCases = "aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases?state=CaseCreated"
+ getPaginationMetadataUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases/pagination_metadata?state=CaseCreated"
+ saveEventUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/CASETYPE2/cases/1531207599597587/events"
+ searchInputDetails = "aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/inputs"
+ workbasketInputDetails = "/aggregated/caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/work-basket-inputs"
+ getPrintableDocumentsForEvent = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/CASETYPE2/cases/1531207599597587/documents"
+ validateCaseDetails = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/validate"
+ docStoreBashURL = "https://dm-store-saat.service.core-compute-saat.internal"
+ ESSearch = "searchCases"
}
cnp_aat {
@@ -127,7 +228,7 @@ cnp_aat {
maxthinktime = 2
minWaitForNextIteration = 1
maxWaitForNextIteration = 2
- totalDuration = 1000
+ totalDuration = 2
reachRPSTarget = 50
reachRPSDuration = 10
reachRPSHoldForDuration = 60
@@ -152,6 +253,7 @@ cnp_aat {
cases = ["1521477620166395", "1521-4779-1892-1964", "1521477967979301", "1521477963778319", "1521-4779-6301-4715", "1521-4779-5350-7637", "1521-4779-4876-0499", "1521-4779-4365-6189"]
getCaseUrl = "caseworkers/18/jurisdictions/SSCS/case-types/Benefit/cases/:case_reference"
saveEventUrl = "caseworkers/6687/jurisdictions/PROBATE/case-types/GrantOfRepresentation/cases/1520505513296274/events"
+ createCaseUrl = "caseworkers/176475/jurisdictions/AUTOTEST1/case-types/AAT/cases?ignore-warning=false"
createCaseUrl = "caseworkers/6687/jurisdictions/PROBATE/case-types/GrantOfRepresentation/cases"
getPaginationMetadataUrl = "caseworkers/6687/jurisdictions/PROBATE/case-types/GrantOfRepresentation/cases/pagination_metadata?state=CaseCreated"
searchCases = "caseworkers/6687/jurisdictions/PROBATE/case-types/GrantOfRepresentation/cases?state=CaseCreated"
diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml
index c66dc9c..a4d57ec 100644
--- a/src/test/resources/logback-test.xml
+++ b/src/test/resources/logback-test.xml
@@ -1,16 +1,12 @@
-
- true
-
-
-
+
gatling.log
@@ -21,22 +17,19 @@
-
-
-
+
+
-
-
-
-
-
-
-
+
+
-
+
+
+
+
\ No newline at end of file
diff --git a/src/test/scala/Engine.scala b/src/test/scala/Engine.scala
index e25e917..b61c9ea 100644
--- a/src/test/scala/Engine.scala
+++ b/src/test/scala/Engine.scala
@@ -3,11 +3,11 @@ import io.gatling.core.config.GatlingPropertiesBuilder
object Engine extends App {
- val props = new GatlingPropertiesBuilder
- props.dataDirectory(Helper.dataDirectory.toString)
- props.resultsDirectory(Helper.resultsDirectory.toString)
- props.bodiesDirectory(Helper.bodiesDirectory.toString)
- props.binariesDirectory(Helper.mavenBinariesDirectory.toString)
-
- Gatling.fromMap(props.build)
-}
\ No newline at end of file
+// val props = new GatlingPropertiesBuilder
+// props.dataDirectory(Helper.dataDirectory.toString)
+// props.resultsDirectory(Helper.resultsDirectory.toString)
+// props.bodiesDirectory(Helper.bodiesDirectory.toString)
+// props.binariesDirectory(Helper.mavenBinariesDirectory.toString)
+//
+// Gatling.fromMap(props.build)
+}
diff --git a/src/test/scala/Recorder.scala b/src/test/scala/Recorder.scala
index 5627527..a12d650 100644
--- a/src/test/scala/Recorder.scala
+++ b/src/test/scala/Recorder.scala
@@ -3,10 +3,10 @@ import io.gatling.recorder.config.RecorderPropertiesBuilder
object Recorder extends App {
- val props = new RecorderPropertiesBuilder
- props.simulationOutputFolder(Helper.recorderOutputDirectory.toString)
- props.simulationPackage("uk.gov.hmcts.ccd.scenarios")
- props.bodiesFolder(Helper.bodiesDirectory.toString)
-
- GatlingRecorder.fromMap(props.build, Some(Helper.recorderConfigFile))
-}
\ No newline at end of file
+// val props = new RecorderPropertiesBuilder
+// props.simulationOutputFolder(Helper.recorderOutputDirectory.toString)
+// props.simulationPackage("uk.gov.hmcts.ccd.scenarios")
+// props.bodiesFolder(Helper.bodiesDirectory.toString)
+//
+// GatlingRecorder.fromMap(props.build, Some(Helper.recorderConfigFile))
+}
diff --git a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESExactMatchYesOrNo.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESExactMatchYesOrNo.scala
new file mode 100644
index 0000000..c791ea6
--- /dev/null
+++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESExactMatchYesOrNo.scala
@@ -0,0 +1,55 @@
+package uk.gov.hmcts.ccd.corecasedata.scenarios
+
+import io.gatling.core.Predef._
+import io.gatling.http.Predef._
+import uk.gov.hmcts.ccd.util.{CcdTokenGenerator, PerformanceTestsConfig}
+
+import scala.concurrent.duration._
+
+object ESExactMatchYesOrNo extends PerformanceTestsConfig {
+
+ private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch")
+ println("Elastic Search Exact Match on YesORNo field PT - URL: " + url)
+
+ val ESExactMatchYesOrNoReqPayload = StringBody(
+ """
+ {
+ "query":{
+ "bool":{
+ "filter":{
+ "match":{
+ "data.YesOrNoField":"Yes"
+ }
+ }
+ }
+ }
+ }
+ """
+ )
+
+ def httpRequest() = {
+ val s2sToken = CcdTokenGenerator.generateGatewayS2SToken()
+ val userToken = CcdTokenGenerator.generateWebUserToken(url)
+
+ http("TX12_CCD_ElasticSearchEndpoint_ExactMatch_YesORNoField")
+ .post(url)
+ .queryParam("ctid", "AAT")
+ .body(
+ ESExactMatchYesOrNoReqPayload).asJson
+ .header("ServiceAuthorization", s2sToken)
+ .header("Authorization", userToken)
+ .header("Content-Type","application/json")
+ .check(status in (200))
+ }
+
+ println("ESExactMatchYesOrNo: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime)
+
+ val ESExactMatchYesOrNoSCN = scenario("Elastic Search Exact Match on YesORNo Field").during(TotalRunDuration minutes) {
+ exec(
+ httpRequest()
+ )
+ .pause(MinThinkTime seconds, MaxThinkTime seconds)
+ }
+
+ val waitForNextIteration = pace(MinWaitForNextIteration seconds, MaxWaitForNextIteration seconds)
+}
diff --git a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESMatchAllCases.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESMatchAllCases.scala
new file mode 100644
index 0000000..3003140
--- /dev/null
+++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESMatchAllCases.scala
@@ -0,0 +1,50 @@
+package uk.gov.hmcts.ccd.corecasedata.scenarios
+
+import io.gatling.core.Predef._
+import io.gatling.http.Predef._
+import uk.gov.hmcts.ccd.util.{CcdTokenGenerator, PerformanceTestsConfig}
+
+import scala.concurrent.duration._
+
+object ESMatchAllCases extends PerformanceTestsConfig {
+
+ private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch")
+ println("Elastic Search Match All & return 50 PT - URL: " + url)
+
+ val ReqPayload = StringBody(
+ """
+ {
+ "query": {
+ "match_all": {}
+ },
+ "size": 50
+ }
+ """
+ )
+
+ def httpRequest() = {
+ val s2sToken = CcdTokenGenerator.generateGatewayS2SToken()
+ val userToken = CcdTokenGenerator.generateWebUserToken(url)
+
+ http("TX11_CCD_ElasticSearchEndpoint_MatchAll_Return50Cases")
+ .post(url)
+ .queryParam("ctid", "AAT")
+ .body(
+ ReqPayload).asJson
+ .header("ServiceAuthorization", s2sToken)
+ .header("Authorization", userToken)
+ .header("Content-Type","application/json")
+ .check(status in (200))
+ }
+
+ println("ESMatchAllCases: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime)
+
+ val ESMatchAll_Return50Cases = scenario("Elastic Search Match all and return 50 cases").during(TotalRunDuration minutes) {
+ exec(
+ httpRequest()
+ )
+ .pause(MinThinkTime seconds, MaxThinkTime seconds)
+ }
+
+ val waitForNextIteration = pace(MinWaitForNextIteration seconds, MaxWaitForNextIteration seconds)
+}
diff --git a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachONTextArea.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachONTextArea.scala
new file mode 100644
index 0000000..b9b1409
--- /dev/null
+++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachONTextArea.scala
@@ -0,0 +1,57 @@
+package uk.gov.hmcts.ccd.corecasedata.scenarios
+
+import io.gatling.core.Predef._
+import io.gatling.http.Predef._
+import uk.gov.hmcts.ccd.util.{CcdTokenGenerator, PerformanceTestsConfig}
+
+import scala.concurrent.duration._
+
+object ESSeachONTextArea extends PerformanceTestsConfig {
+
+ private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch")
+ println("Elastic Search on text area field PT - URL: " + url)
+
+ val ESSeachONTextAreaReqPayload = StringBody(
+ """
+ {
+ "query":{
+ "match_phrase_prefix":{
+ "data.TextAreaField":"Performance Testing "
+ }
+ },
+ "sort":[
+ {
+ "last_modified":"desc"
+ },
+ "_score"
+ ]
+ }
+ """
+ )
+
+ def httpRequest() = {
+ val s2sToken = CcdTokenGenerator.generateGatewayS2SToken()
+ val userToken = CcdTokenGenerator.generateWebUserToken(url)
+
+ http("TX14_CCD_ElasticSearchEndpoint_SearchONTextAreaField")
+ .post(url)
+ .queryParam("ctid", "AAT")
+ .body(
+ ESSeachONTextAreaReqPayload).asJson
+ .header("ServiceAuthorization", s2sToken)
+ .header("Authorization", userToken)
+ .header("Content-Type","application/json")
+ .check(status in (200))
+ }
+
+ println("ESSeachONTextArea: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime)
+
+ val ESSeachONTextAreaSCN = scenario("Elastic Search on TextArea Field").during(TotalRunDuration minutes) {
+ exec(
+ httpRequest()
+ )
+ .pause(MinThinkTime seconds, MaxThinkTime seconds)
+ }
+
+ val waitForNextIteration = pace(MinWaitForNextIteration seconds, MaxWaitForNextIteration seconds)
+}
diff --git a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESStdTest.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESStdTest.scala
new file mode 100644
index 0000000..934465c
--- /dev/null
+++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESStdTest.scala
@@ -0,0 +1,208 @@
+package uk.gov.hmcts.ccd.corecasedata.scenarios
+
+import io.gatling.core.Predef._
+import io.gatling.http.Predef._
+import uk.gov.hmcts.ccd.util.{CcdTokenGenerator, PerformanceTestsConfig}
+
+import scala.concurrent.duration._
+import scala.util.Random
+
+
+object ESStdTest extends PerformanceTestsConfig {
+
+ // val EventId = "applyForGrant"
+ private val rng: Random = new Random()
+ private def firstpageText(): String = rng.alphanumeric.take(10).mkString
+ private def firstpageNumberField(): Int = rng.nextInt(999999999)
+ private def firstpageEmailRandNumber(): Int = rng.nextInt(999999)
+ private def firstpageMoneyField(): Int = rng.nextInt(9999999)
+ private def secondpageText(): String = rng.alphanumeric.take(15).mkString
+ private def thirdpageText(): String = rng.alphanumeric.take(15).mkString
+ private def thirdpageNestedNumberField(): Int = rng.nextInt(99999999)
+ private def caseSummaryText(): String = rng.alphanumeric.take(20).mkString
+ private def caseDescriptionText(): String = rng.alphanumeric.take(30).mkString
+
+ // val EventId = "CREATE"
+ val randcaseType = new Random(System.currentTimeMillis())
+ val caseEventTypeValue = Array("CREATE","CREATEASPROG","CREATEASDONE")
+ val caseTypeValue_random_index = randcaseType.nextInt(caseEventTypeValue.length)
+ val EventId = caseEventTypeValue(caseTypeValue_random_index)
+ def PickCaseType(): String = EventId
+ //def PickCaseType(): String = caseEventTypeValue(randcaseType.nextInt(caseEventTypeValue.length))
+
+ println("ES caseTypeText Value " + EventId)
+ println("ES caseTypeText Value " + PickCaseType())
+
+ var CreateCaseUrl = caseDataUrl(config.getString("createCaseUrl"))
+
+ println("ES create case url: " + CreateCaseUrl)
+
+ //val caseTypeValue = Array("AAT","CASETYPE2","CASETYPE3","CASETYPE4")
+ //val caseTypeValue = Array("ATCASETYPE1","ATCASETYPE2","ATCASETYPE3","ATCASETYPE4")
+ val caseTypeValue = Array("AAT")
+ val jurisdictionsValue = Array("AUTOTEST1")
+
+ val rand = new Random(System.currentTimeMillis())
+ val caseType_random_index = rand.nextInt(caseTypeValue.length)
+
+ val jurisdictions_random_index = rand.nextInt(jurisdictionsValue.length)
+
+ if(!CreateCaseUrl.contains(":casetype_reference"))
+ {
+ CreateCaseUrl
+ }
+ else{
+ CreateCaseUrl = CreateCaseUrl.replace(":casetype_reference", caseTypeValue(caseType_random_index))
+ }
+
+ println("create case url: " + CreateCaseUrl)
+
+ if(!CreateCaseUrl.contains(":jurisdictions_reference"))
+ {
+ CreateCaseUrl
+ }
+ else{
+ CreateCaseUrl = CreateCaseUrl.replace(":jurisdictions_reference", jurisdictionsValue(jurisdictions_random_index))
+ }
+
+ println("create case url: " + CreateCaseUrl)
+ val CreateCaseTokenUrl = s"${CreateCaseUrl.replaceAll("cases", "")}event-triggers/$EventId/token"
+
+
+ println("create case url: " + CreateCaseUrl)
+ println("create case token url: " + CreateCaseTokenUrl)
+
+
+
+ //val EventBodyMain = StringBody("""{"data": {"TextField": "Performance Testing First Page Text ${FirstpageText}","NumberField": "${FirstpageNumberField}","YesOrNoField": "Yes","PhoneUKField": "02020002002","EmailField": "confirmation${FirstpageEmailRandNumber}@confirmation.com","MoneyGBPField": "${FirstpageMoneyField}","DateField": "2018-06-12","TextAreaField": "Performance Testing Second page TextArea ${SecondpageText}","FixedListField": "","MultiSelectListField": [],"ComplexField": {"ComplexTextField": "Performance Testing Third page Text - Third page Text ${ThirdpageText}","ComplexFixedListField": "","ComplexNestedField": {"NestedNumberField": "${ThirdpageNestedNumberField}","NestedCollectionTextField": []}}},"event": {"id": "CREATE","summary": "4th Page Check your answers - Performance Testing Event summary ${CaseSummaryText}","description": "4th Page Check your answers - Performance Testing Event description ${CaseDescriptionText}"},"event_token": """" + "${eventToken}" + """","ignore_warning": false}""")
+ val EventBodyMain = StringBody("""{"data": {"TextField": "Performance Testing First Page Text ${FirstpageText}","NumberField": "${FirstpageNumberField}","YesOrNoField": "Yes","PhoneUKField": "02020002002","EmailField": "confirmation${FirstpageEmailRandNumber}@confirmation.com","MoneyGBPField": "${FirstpageMoneyField}","DateField": "2018-06-12","TextAreaField": "Performance Testing Second page TextArea ${SecondpageText}","FixedListField": "","MultiSelectListField": [],"ComplexField": {"ComplexTextField": "Performance Testing Third page Text - Third page Text ${ThirdpageText}","ComplexFixedListField": "","ComplexNestedField": {"NestedNumberField": "${ThirdpageNestedNumberField}","NestedCollectionTextField": []}}},"event": {"id": "${PickCaseEventType}","summary": "4th Page Check your answers - Performance Testing Event summary ${CaseSummaryText}","description": "4th Page Check your answers - Performance Testing Event description ${CaseDescriptionText}"},"event_token": """" + "${eventToken}" + """","ignore_warning": false}""")
+
+
+
+ val token = CcdTokenGenerator.generateGatewayS2SToken()
+ val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl)
+
+
+ /* def createCaseDatahttp() = {
+ val token = CcdTokenGenerator.generateGatewayS2SToken()
+ val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl)
+ exec(
+ //http("get create case event token")
+ http("TX02_CCD_CreateCaseEndpoint_createcase_eventtoken")
+ .get(CreateCaseTokenUrl)
+ .header("ServiceAuthorization", token)
+ .header("Authorization", userToken)
+ .header("Content-Type","application/json")
+ .check(status.is(200),jsonPath("$.token").saveAs("eventToken"))
+ ).exec(
+ //http("create case data")
+ http("TX02_CCD_CreateCaseEndpoint_createcasedata")
+ .post(CreateCaseUrl)
+ /*.body(
+ EventBody).asJson*/
+ .body(EventBodyMain).asJson
+ .header("ServiceAuthorization", token)
+ .header("Authorization", userToken)
+ .header("Content-Type","application/json")
+ .check(status is 201)
+ )
+ }
+
+
+ println("PostCaseData: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime)
+
+ val createCaseData = scenario("Create Case Data").during(TotalRunDuration minutes) {
+ exec(
+ _.setAll(
+ ("FirstpageText", firstpageText()),
+ ("FirstpageNumberField", firstpageNumberField()),
+ ("FirstpageEmailRandNumber", firstpageEmailRandNumber()),
+ ("FirstpageMoneyField",firstpageMoneyField()),
+ ("SecondpageText",secondpageText()),
+ ("ThirdpageText",thirdpageText()),
+ ("ThirdpageNestedNumberField",thirdpageNestedNumberField()),
+ ("CaseSummaryText",caseSummaryText()),
+ ("CaseDescriptionText",caseDescriptionText()),
+ ("PickCaseEventType",PickCaseType())
+ )
+ ).exec(
+ createCaseDatahttp()
+ )
+ .pause(MinThinkTime seconds, MaxThinkTime seconds)
+ }
+*/
+ private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch")
+ println("Elastic Search on reference metadata PT - URL: " + url)
+
+ val ESSearchONReferenceMetaDataReqPayload = StringBody(
+ """
+ {
+ "query":{
+ "bool":{
+ "filter":{
+ "match":{
+ "reference":"${ESNew_Case_Id}"
+ }
+ }
+ }
+ }
+ }
+ """
+ )
+
+ val ESStdTEST = scenario("CCD Create Case Data").during(TotalRunDuration minutes) {
+ exec(
+ _.setAll(
+ ("FirstpageText", firstpageText()),
+ ("FirstpageNumberField", firstpageNumberField()),
+ ("FirstpageEmailRandNumber", firstpageEmailRandNumber()),
+ ("FirstpageMoneyField",firstpageMoneyField()),
+ ("SecondpageText",secondpageText()),
+ ("ThirdpageText",thirdpageText()),
+ ("ThirdpageNestedNumberField",thirdpageNestedNumberField()),
+ ("CaseSummaryText",caseSummaryText()),
+ ("CaseDescriptionText",caseDescriptionText()),
+ ("PickCaseEventType",PickCaseType())
+ )
+ ).exec(
+ //http("get create case event token")
+ http("TX02_CCD_CreateCaseEndpoint_createcase_eventtoken")
+ .get(CreateCaseTokenUrl)
+ .header("ServiceAuthorization", token)
+ .header("Authorization", userToken)
+ .header("Content-Type","application/json")
+ .check(status.is(200),jsonPath("$.token").saveAs("eventToken"))
+ ).exec(
+ //http("create case data")
+ http("TX02_CCD_CreateCaseEndpoint_createcasedata")
+ .post(CreateCaseUrl)
+ .body(EventBodyMain).asJson
+ .header("ServiceAuthorization", token)
+ .header("Authorization", userToken)
+ .header("Content-Type","application/json")
+ .check(jsonPath("$.id").saveAs("ESNew_Case_Id"))
+ .check(status is 201)
+ )
+
+ .pause(MinThinkTime seconds, MaxThinkTime seconds)
+
+ .exec(
+ http("TX13_CCD_ElasticSearchEndpoint_ReferenceMetaDataSearch")
+ .post(url)
+ .queryParam("ctid", "AAT")
+ .body(
+ ESSearchONReferenceMetaDataReqPayload).asJson
+ // .body(StringBody("""{"query": {"bool": {"filter": {"wildcard": {"reference": """" + "${ESNew_Case_Id}" + """""}}}}""")).asJson
+ .header("ServiceAuthorization", token)
+ .header("Authorization", userToken)
+ .header("Content-Type","application/json")
+ .check(status in (200))
+ )
+
+ .pause(MinThinkTime seconds, MaxThinkTime seconds)
+ }
+
+
+ val waitForNextIteration = pace(MinWaitForNextIteration seconds, MaxWaitForNextIteration seconds)
+}
+
diff --git a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetPaginationMetaData.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetPaginationMetaData.scala
index b579650..bb6c939 100644
--- a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetPaginationMetaData.scala
+++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetPaginationMetaData.scala
@@ -3,6 +3,7 @@ package uk.gov.hmcts.ccd.corecasedata.scenarios
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import uk.gov.hmcts.ccd.util.{CcdTokenGenerator, PerformanceTestsConfig}
+import scala.concurrent.duration._
object GetPaginationMetaData extends PerformanceTestsConfig {
@@ -12,7 +13,7 @@ object GetPaginationMetaData extends PerformanceTestsConfig {
def httpRequest() = {
val s2sToken = CcdTokenGenerator.generateGatewayS2SToken()
val userToken = CcdTokenGenerator.generateWebUserToken(url)
- http("get pagination metadata data")
+ http("TX06_CCD_GetPaginationMetadataData")
.get(url)
.header("ServiceAuthorization", s2sToken)
.header("Authorization", userToken)
@@ -20,6 +21,9 @@ object GetPaginationMetaData extends PerformanceTestsConfig {
.check(status in (200))
}
- val getPaginationMetaData = scenario("Get Pagination Metadata")
- .exec(httpRequest())
+ println("GetCaseData: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime)
+
+ val getPaginationMetaData = scenario("Get Pagination Metadata").during(TotalRunDuration minutes) {
+ exec(httpRequest())
+ }
}
diff --git a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetUserProfile.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetUserProfile.scala
index c2a2f63..305600a 100644
--- a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetUserProfile.scala
+++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetUserProfile.scala
@@ -13,6 +13,7 @@ object GetUserProfile extends PerformanceTestsConfig {
def call() = {
val s2sToken = CcdTokenGenerator.generateGatewayS2SToken()
val userToken = CcdTokenGenerator.generateWebUserToken(endpointUrl)
+ println("s2sToken: " + s2sToken + " userToken " + userToken)
//http("get user profile")
http("TX05_CCD_GetUserProfileEndpoint_getuserprofile")
.get(_ => endpointUrl)
diff --git a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/PostCaseData.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/PostCaseData.scala
index a1eaca7..79e65c6 100644
--- a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/PostCaseData.scala
+++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/PostCaseData.scala
@@ -3,103 +3,88 @@ package uk.gov.hmcts.ccd.corecasedata.scenarios
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import uk.gov.hmcts.ccd.util.{CcdTokenGenerator, PerformanceTestsConfig}
+
import scala.concurrent.duration._
+import java.text.SimpleDateFormat
+
+import scala.util.Random
+
object PostCaseData extends PerformanceTestsConfig {
// val EventId = "applyForGrant"
- val EventId = "CREATE"
- val CreateCaseUrl = caseDataUrl(config.getString("createCaseUrl"))
+ private val rng: Random = new Random()
+ private def firstpageText(): String = rng.alphanumeric.take(10).mkString
+ private def firstpageNumberField(): Int = rng.nextInt(999999999)
+ private def firstpageEmailRandNumber(): Int = rng.nextInt(999999)
+ private def firstpageMoneyField(): Int = rng.nextInt(9999999)
+ private def secondpageText(): String = rng.alphanumeric.take(15).mkString
+ private def thirdpageText(): String = rng.alphanumeric.take(15).mkString
+ private def thirdpageNestedNumberField(): Int = rng.nextInt(99999999)
+ private def caseSummaryText(): String = rng.alphanumeric.take(20).mkString
+ private def caseDescriptionText(): String = rng.alphanumeric.take(30).mkString
+
+ // val EventId = "CREATE"
+ val randcaseType = new Random(System.currentTimeMillis())
+ val caseEventTypeValue = Array("CREATE","CREATEASPROG","CREATEASDONE")
+ val caseTypeValue_random_index = randcaseType.nextInt(caseEventTypeValue.length)
+ val EventId = caseEventTypeValue(caseTypeValue_random_index)
+ def PickCaseType(): String = EventId
+ //def PickCaseType(): String = caseEventTypeValue(randcaseType.nextInt(caseEventTypeValue.length))
+
+ println("caseTypeText Value " + EventId)
+ println("caseTypeText Value " + PickCaseType())
+
+ var CreateCaseUrl = caseDataUrl(config.getString("createCaseUrl"))
+
+ println("create case url: " + CreateCaseUrl)
+
+ //val caseTypeValue = Array("AAT","CASETYPE2","CASETYPE3","CASETYPE4")
+ val caseTypeValue = Array("ATCASETYPE1","ATCASETYPE2","ATCASETYPE3","ATCASETYPE4")
+ val jurisdictionsValue = Array("AUTOTEST2")
+
+ val rand = new Random(System.currentTimeMillis())
+ val caseType_random_index = rand.nextInt(caseTypeValue.length)
+
+ val jurisdictions_random_index = rand.nextInt(jurisdictionsValue.length)
+
+ if(!CreateCaseUrl.contains(":casetype_reference"))
+ {
+ CreateCaseUrl
+ }
+ else{
+ CreateCaseUrl = CreateCaseUrl.replace(":casetype_reference", caseTypeValue(caseType_random_index))
+ }
+
+ println("create case url: " + CreateCaseUrl)
+
+ if(!CreateCaseUrl.contains(":jurisdictions_reference"))
+ {
+ CreateCaseUrl
+ }
+ else{
+ CreateCaseUrl = CreateCaseUrl.replace(":jurisdictions_reference", jurisdictionsValue(jurisdictions_random_index))
+ }
+
+ println("create case url: " + CreateCaseUrl)
val CreateCaseTokenUrl = s"${CreateCaseUrl.replaceAll("cases", "")}event-triggers/$EventId/token"
+
+
println("create case url: " + CreateCaseUrl)
println("create case token url: " + CreateCaseTokenUrl)
- val EventBody = StringBody(s"""
- {
- "event": {
- "description": "case automatically created by performance test",
- "id": "${EventId}",
- "summary": "Performance testing"
- },
- "event_token": """" + "${eventToken}" + """",
- "data": {
- "willDate": "2013-01-01",
- "amountPaid": "120000",
- "willExists": "Yes",
- "declaration": "Declaration text does here and it is long and long that means it goes on ffor a very long time and then im going to cop and paste a few times to make it long. Hope ok with youDeclaration text does here and it is long and long that means it goes on ffor a very long time and then im going to cop and paste a few times to make it long. Hope ok with youDeclaration text does here and it is long and long that means it goes on ffor a very long time and then im going to cop and paste a few times to make it long. Hope ok with youDeclaration text does here and it is long and long that means it goes on ffor a very long time and then im going to cop and paste a few times to make it long. Hope ok with you",
- "ihtNetValue": "120000",
- "ihtGrossValue": "120000",
- "legalStatement": "Legal Statement is just as long and again I am going to copy and paste a number time so I dont have ti type too much. Legal Statement is just as long and again I am going to copy and paste a number time so I dont have ti type too much. Legal Statement is just as long and again I am going to copy and paste a number time so I dont have ti type too much. Legal Statement is just as long and again I am going to copy and paste a number time so I dont have ti type too much. Legal Statement is just as long and again I am going to copy and paste a number time so I dont have ti type too much. Legal Statement is just as long and again I am going to copy and paste a number time so I dont have ti type too much. Legal Statement is just as long and again I am going to copy and paste a number time so I dont have ti type too much. Legal Statement is just as long and again I am going to copy and paste a number time so I dont have ti type too much. Legal Statement is just as long and again I am going to copy and paste a number time so I dont have ti type too much. Legal Statement is just as long and again I am going to copy and paste a number time so I dont have ti type too much.",
- "deceasedAddress": "5 Death Road\nFake Town",
- "deceasedSurname": "Plummer",
- "willHasCodicils": "No",
- "willIsAnOriginal": "Yes",
- "deceasedForenames": "Bella",
- "numberOfExecutors": "3",
- "extraCopiesOfGrant": "0",
- "ihtReferenceNumber": "250",
- "numberOfApplicants": "0",
- "deceasedDateOfBirth": "1970-01-01",
- "deceasedDateOfDeath": "2018-02-02",
- "executorsNotApplying": [
- {
- "id": "ef68c99a-ea40-4000-af62-974081f2cd02",
- "value": {
- "notApplyingExecutorName": "Mr Other Exec Plummer",
- "notApplyingExecutorReason": "DiedBefore",
- "notApplyingExecutorNotified": "No",
- "notApplyingExecutorNameOnWill": "Mr Other Exec Plummer",
- "notApplyingExecutorNameDifferenceComment": "None"
- }
- },
- {
- "id": "35110c98-7fcf-4d4c-8c57-b8810407443d",
- "value": {
- "notApplyingExecutorName": "Mr Third Exec Plummer",
- "notApplyingExecutorReason": "DiedAfter",
- "notApplyingExecutorNotified": "Yes",
- "notApplyingExecutorNameOnWill": "Mr Third Exec Plummer",
- "notApplyingExecutorNameDifferenceComment": "None"
- }
- }
- ],
- "outsideUKGrantCopies": "0",
- "willNumberOfCodicils": "1",
- "deceasedAliasNameList": [
- {
- "id": "8c46923a-8b1a-407d-aae1-ee85c297d0ca",
- "value": {
- "LastName": "Plummer",
- "Forenames": "Alias Bella",
- "AppearOnGrant": "Yes"
- }
- },
- {
- "id": "282c0413-4247-4f30-840c-06fc44a261ed",
- "value": {
- "LastName": "Plummer",
- "Forenames": "B",
- "AppearOnGrant": "No"
- }
- }
- ],
- "willLatestCodicilDate": "2016-01-01",
- "ihtFormCompletedOnline": "Yes",
- "paymentReferenceNumber": "PaymentRef1111111",
- "primaryApplicantAddress": "5 Fake road,\nFake Town",
- "primaryApplicantSurname": "Plummer",
- "willLatestCodicilHasDate": "No",
- "primaryApplicantForenames": "Rex",
- "deceasedDomicileInEngWales": "",
- "primaryApplicantIsExecutor": "Yes",
- "primaryApplicantPhoneNumber": "080909090909",
- "primaryApplicantEmailAddress": "fake@gmail.com"
- }
- }
- """)
-
-
- def createCaseDatahttp() = {
+
+
+ //val EventBodyMain = StringBody("""{"data": {"TextField": "Performance Testing First Page Text ${FirstpageText}","NumberField": "${FirstpageNumberField}","YesOrNoField": "Yes","PhoneUKField": "02020002002","EmailField": "confirmation${FirstpageEmailRandNumber}@confirmation.com","MoneyGBPField": "${FirstpageMoneyField}","DateField": "2018-06-12","TextAreaField": "Performance Testing Second page TextArea ${SecondpageText}","FixedListField": "","MultiSelectListField": [],"ComplexField": {"ComplexTextField": "Performance Testing Third page Text - Third page Text ${ThirdpageText}","ComplexFixedListField": "","ComplexNestedField": {"NestedNumberField": "${ThirdpageNestedNumberField}","NestedCollectionTextField": []}}},"event": {"id": "CREATE","summary": "4th Page Check your answers - Performance Testing Event summary ${CaseSummaryText}","description": "4th Page Check your answers - Performance Testing Event description ${CaseDescriptionText}"},"event_token": """" + "${eventToken}" + """","ignore_warning": false}""")
+ val EventBodyMain = StringBody("""{"data": {"TextField": "Performance Testing First Page Text ${FirstpageText}","NumberField": "${FirstpageNumberField}","YesOrNoField": "Yes","PhoneUKField": "02020002002","EmailField": "confirmation${FirstpageEmailRandNumber}@confirmation.com","MoneyGBPField": "${FirstpageMoneyField}","DateField": "2018-06-12","TextAreaField": "Performance Testing Second page TextArea ${SecondpageText}","FixedListField": "","MultiSelectListField": [],"ComplexField": {"ComplexTextField": "Performance Testing Third page Text - Third page Text ${ThirdpageText}","ComplexFixedListField": "","ComplexNestedField": {"NestedNumberField": "${ThirdpageNestedNumberField}","NestedCollectionTextField": []}}},"event": {"id": "${PickCaseEventType}","summary": "4th Page Check your answers - Performance Testing Event summary ${CaseSummaryText}","description": "4th Page Check your answers - Performance Testing Event description ${CaseDescriptionText}"},"event_token": """" + "${eventToken}" + """","ignore_warning": false}""")
+
+
+
+ val token = CcdTokenGenerator.generateGatewayS2SToken()
+ val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl)
+
+
+ /* def createCaseDatahttp() = {
val token = CcdTokenGenerator.generateGatewayS2SToken()
val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl)
exec(
@@ -114,8 +99,9 @@ object PostCaseData extends PerformanceTestsConfig {
//http("create case data")
http("TX02_CCD_CreateCaseEndpoint_createcasedata")
.post(CreateCaseUrl)
- .body(
- EventBody).asJSON
+ /*.body(
+ EventBody).asJson*/
+ .body(EventBodyMain).asJson
.header("ServiceAuthorization", token)
.header("Authorization", userToken)
.header("Content-Type","application/json")
@@ -127,11 +113,62 @@ object PostCaseData extends PerformanceTestsConfig {
println("PostCaseData: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime)
val createCaseData = scenario("Create Case Data").during(TotalRunDuration minutes) {
- exec(
+ exec(
+ _.setAll(
+ ("FirstpageText", firstpageText()),
+ ("FirstpageNumberField", firstpageNumberField()),
+ ("FirstpageEmailRandNumber", firstpageEmailRandNumber()),
+ ("FirstpageMoneyField",firstpageMoneyField()),
+ ("SecondpageText",secondpageText()),
+ ("ThirdpageText",thirdpageText()),
+ ("ThirdpageNestedNumberField",thirdpageNestedNumberField()),
+ ("CaseSummaryText",caseSummaryText()),
+ ("CaseDescriptionText",caseDescriptionText()),
+ ("PickCaseEventType",PickCaseType())
+ )
+ ).exec(
createCaseDatahttp()
)
.pause(MinThinkTime seconds, MaxThinkTime seconds)
}
+*/
+
+ val createCaseData = scenario("Create Case Data").during(TotalRunDuration minutes) {
+ exec(
+ _.setAll(
+ ("FirstpageText", firstpageText()),
+ ("FirstpageNumberField", firstpageNumberField()),
+ ("FirstpageEmailRandNumber", firstpageEmailRandNumber()),
+ ("FirstpageMoneyField",firstpageMoneyField()),
+ ("SecondpageText",secondpageText()),
+ ("ThirdpageText",thirdpageText()),
+ ("ThirdpageNestedNumberField",thirdpageNestedNumberField()),
+ ("CaseSummaryText",caseSummaryText()),
+ ("CaseDescriptionText",caseDescriptionText()),
+ ("PickCaseEventType",PickCaseType())
+ )
+ ).exec(
+ //http("get create case event token")
+ http("TX02_CCD_CreateCaseEndpoint_createcase_eventtoken")
+ .get(CreateCaseTokenUrl)
+ .header("ServiceAuthorization", token)
+ .header("Authorization", userToken)
+ .header("Content-Type","application/json")
+ .check(status.is(200),jsonPath("$.token").saveAs("eventToken"))
+ ).exec(
+ //http("create case data")
+ http("TX02_CCD_CreateCaseEndpoint_createcasedata")
+ .post(CreateCaseUrl)
+ .body(EventBodyMain).asJson
+ .header("ServiceAuthorization", token)
+ .header("Authorization", userToken)
+ .header("Content-Type","application/json")
+ .check(status is 201)
+ )
+
+ .pause(MinThinkTime seconds, MaxThinkTime seconds)
+ }
+
val waitForNextIteration = pace(MinWaitForNextIteration seconds, MaxWaitForNextIteration seconds)
}
diff --git a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/PostEvent.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/PostEvent.scala
index 2c73617..e43ad5b 100644
--- a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/PostEvent.scala
+++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/PostEvent.scala
@@ -43,7 +43,7 @@ object PostEvent extends PerformanceTestsConfig {
http("TX04_CCD_SaveEventEndpoint")
.post(SaveEventUrl)
.body(
- EventBody).asJSON
+ EventBody).asJson
.header("ServiceAuthorization", token)
.header("Authorization", userToken)
.header("Content-Type","application/json")
diff --git a/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDPTSimulation.scala b/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDPTSimulation.scala
index c10b0a6..98eec7b 100644
--- a/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDPTSimulation.scala
+++ b/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDPTSimulation.scala
@@ -2,6 +2,9 @@ package uk.gov.hmcts.ccd.simulation
import io.gatling.core.Predef._
import uk.gov.hmcts.ccd.corecasedata.scenarios._
+import uk.gov.hmcts.ccd.casedefinition.scenarios._
+import uk.gov.hmcts.ccd.corecasedata.scenarios._
+
import scala.concurrent.duration._
@@ -12,13 +15,91 @@ class CCDPTSimulation extends CCDSimulation {
val baseHttpUrl: String = config.getString("caseDataUrl")
+ /*
+ val scenarios = List(
+ GetCaseData.scenarios.inject(
+ atOnceUsers(1)),
+ PostCaseData.createCaseData.inject(
+ atOnceUsers(1)),
+ SearchCases.searchCases.inject(
+ atOnceUsers(10)),
+ PostEvent.saveEventData.inject(
+ atOnceUsers(1)),
+ GetUserProfile.scenarios.inject(
+ atOnceUsers(1))
+ )
+ */
+
+
+ /*
+ User Concurrency Stress Test
+ minthinktime = 2
+ maxthinktime = 3
+ minWaitForNextIteration = 4
+ maxWaitForNextIteration = 5
+ totalDuration = 1000
+
+
+
+ val scenarios = List(
+ GetCaseData.scenarios.inject(splitUsers(1000) into(rampUsers(10) over(5 minutes)) separatedBy(5 minutes)),
+ PostCaseData.createCaseData.inject(splitUsers(1000) into(rampUsers(10) over(5 minutes)) separatedBy(5 minutes)),
+ SearchCases.searchCases.inject(splitUsers(1000) into(rampUsers(10) over(5 minutes)) separatedBy(5 minutes)),
+ PostEvent.saveEventData.inject(splitUsers(1000) into(rampUsers(10) over(5 minutes)) separatedBy(5 minutes)),
+ GetUserProfile.scenarios.inject(splitUsers(1000) into(rampUsers(10) over(5 minutes)) separatedBy(5 minutes))
+ )
+*/
+
+
+
+ /* Single User Test
+ minthinktime = 2
+ maxthinktime = 3
+ minWaitForNextIteration = 4
+ maxWaitForNextIteration = 5
+ totalDuration = 2
+
+
+*/
+
+ val scenarios = List(
+ ESMatchAllCases.ESMatchAll_Return50Cases.inject(atOnceUsers(1))
+ )
+
+
+
+ /*
+ CCD Stress Test - RPS
+
+ jurisdiction = "autotest1"
+ maxSimulationDurationMinutes = 99999
+ maxResponseTime = 20000
+ meanResponseTime = 1000
+ minthinktime = 1
+ maxthinktime = 2
+ minWaitForNextIteration = 1
+ maxWaitForNextIteration = 2
+ totalDuration = 1000
+ reachRPSTarget = 150
+ reachRPSDuration = 10
+ reachRPSHoldForDuration = 60
+ jumptoRPSTarget = 200
+ jumptoRPSDuration = 900
+
+ Data Volume
+ reachRPSTarget = 25
+ jumptoRPSTarget = 50
+
+
+
val scenarios = List(
- GetCaseData.scenarios.inject(rampUsers(2) over(1 minutes)),
- PostCaseData.createCaseData.inject(rampUsers(50) over(5 minutes)),
- SearchCases.searchCases.inject(rampUsers(2) over(1 minutes)),
- PostEvent.saveEventData.inject(rampUsers(2) over(1 minutes)),
- GetUserProfile.scenarios.inject(rampUsers(2) over(1 minutes))
+ // GetCaseData.scenarios.inject(rampUsers(2) over(1 minutes)),
+ CreateDocument.createDocumentData.inject(rampUsers(10) over(5 minutes))
+ // SearchCases.searchCases.inject(rampUsers(2) over(1 minutes)),
+ // PostEvent.saveEventData.inject(rampUsers(2) over(1 minutes)),
+ // GetUserProfile.scenarios.inject(rampUsers(2) over(1 minutes))
)
+*/
setup()
}
diff --git a/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDSimulation.scala b/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDSimulation.scala
index 43b0216..27a4d56 100644
--- a/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDSimulation.scala
+++ b/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDSimulation.scala
@@ -14,7 +14,7 @@ abstract class CCDSimulation extends Simulation with PerformanceTestsConfig {
val baseHttpUrl: String
- val httpConf = http.baseURL(baseHttpUrl).headers(Headers.commonHeaders)
+ val httpConf = http.baseUrl(baseHttpUrl).headers(Headers.commonHeaders)
def getProxiedHttpConf(): Option[HttpProtocolBuilder] = {
val proxyHostOptional = config.getOptionalString("httpProxyHost")
@@ -32,12 +32,12 @@ abstract class CCDSimulation extends Simulation with PerformanceTestsConfig {
def setup() = setUp(scenarios())
.protocols(getHttpConf())
- .throttle(
+ /* .throttle(
reachRps(ReachRPSTarget) in (ReachRPSDuration minutes),
holdFor(ReachRPSHoldForDuration minutes),
jumpToRps(JumptoRPSTarget),
holdFor(JumptoRPSDuration minutes)
- )
+ )*/
.assertions(
global.responseTime.mean.lt(config.getInt("meanResponseTime"))
diff --git a/src/test/scala/uk/gov/hmcts/ccd/userprofile/scenarios/PostUserProfile.scala b/src/test/scala/uk/gov/hmcts/ccd/userprofile/scenarios/PostUserProfile.scala
index 3058b6d..b62f95f 100644
--- a/src/test/scala/uk/gov/hmcts/ccd/userprofile/scenarios/PostUserProfile.scala
+++ b/src/test/scala/uk/gov/hmcts/ccd/userprofile/scenarios/PostUserProfile.scala
@@ -20,7 +20,10 @@ object PostUserProfile extends PerformanceTestsConfig {
exec(
http("create a user profile")
.post(url)
- .body(StringBody("""{ "id":"""" + "${userEmailprefix}" + """@perftest.com", "jurisdictions":[{"id":"DIVORCE"}],"work_basket_default_case_type":"Case1", "work_basket_default_jurisdiction":"DIVORCE","work_basket_default_state":"state1" }""")).asJSON
+ .body(StringBody("""{ "id":"""" + "${userEmailprefix}" +
+ """@perftest.com", "jurisdictions":[{"id":"DIVORCE"}],
+ |"work_basket_default_case_type":"Case1", "work_basket_default_jurisdiction":"DIVORCE","work_basket_default_state":"state1" }"""
+ .stripMargin)).asJson
.header("ServiceAuthorization", token)
.header("Authorization", CcdTokenGenerator.generateWebUserToken(url))
.check(status is 201)
diff --git a/src/test/scala/uk/gov/hmcts/ccd/userprofile/scenarios/PutUserProfiles.scala b/src/test/scala/uk/gov/hmcts/ccd/userprofile/scenarios/PutUserProfiles.scala
index ab56b84..517f08d 100644
--- a/src/test/scala/uk/gov/hmcts/ccd/userprofile/scenarios/PutUserProfiles.scala
+++ b/src/test/scala/uk/gov/hmcts/ccd/userprofile/scenarios/PutUserProfiles.scala
@@ -12,7 +12,9 @@ object PutUserProfiles extends PerformanceTestsConfig {
http("update a user profile")
.put(s"$UserProfileUrl/user-profile/users")
- .body(StringBody("""[{ "id": "3@perftest.com", "jurisdictions":[{"id":"DIVORCE"}],"work_basket_default_case_type":"Case1", "work_basket_default_jurisdiction":"DIVORCE","work_basket_default_state":"state1" }]""")).asJSON
+ .body(StringBody(
+ """[{ "id": "3@perftest.com", "jurisdictions":[{"id":"DIVORCE"}],"work_basket_default_case_type":"Case1",
+ |"work_basket_default_jurisdiction":"DIVORCE","work_basket_default_state":"state1" }]""".stripMargin)).asJson
.header("ServiceAuthorization", token)
.check(status is 201)
}
@@ -20,4 +22,4 @@ object PutUserProfiles extends PerformanceTestsConfig {
val updateUsers = scenario("Update A User Profile")
.exec(updateUsersHttp())
-}
\ No newline at end of file
+}
diff --git a/src/test/scala/uk/gov/hmcts/ccd/util/CcdTokenGenerator.scala b/src/test/scala/uk/gov/hmcts/ccd/util/CcdTokenGenerator.scala
index b2f97d0..e190d33 100644
--- a/src/test/scala/uk/gov/hmcts/ccd/util/CcdTokenGenerator.scala
+++ b/src/test/scala/uk/gov/hmcts/ccd/util/CcdTokenGenerator.scala
@@ -37,7 +37,7 @@ object CcdTokenGenerator extends PerformanceTestsConfig with SpringApplicationCo
}
private def roleFor(url: String) = {
- val result = "caseworker" + parseJurisdiction(url).map(j => s"-$j").getOrElse("")
+ val result = "caseworker,caseworker-autotest1,caseworker-autotest1-junior,caseworker-autotest1-senior,caseworker-autotest1-manager,caseworker-autotest2,caseworker-loa1,caseworker-autotest1-loa1,caseworker-autotest1-junior-loa1,caseworker-autotest1-senior-loa1,caseworker-autotest1-manager-loa1,caseworker-autotest2-loa1" + parseJurisdiction(url).map(j => s"-$j").getOrElse("")
println(s"role used for user token generation: $result")
result
}
diff --git a/src/test/scala/uk/gov/hmcts/ccd/util/SpringApplicationContext.scala b/src/test/scala/uk/gov/hmcts/ccd/util/SpringApplicationContext.scala
index d816ae6..ca3855f 100644
--- a/src/test/scala/uk/gov/hmcts/ccd/util/SpringApplicationContext.scala
+++ b/src/test/scala/uk/gov/hmcts/ccd/util/SpringApplicationContext.scala
@@ -8,6 +8,7 @@ trait SpringApplicationContext {
def S2SAuthUrl(): String
// val applicationContext = SpringApplication.run(classOf[CCDPerformanceTestsApplication], s"--idam.s2s-auth.url=${s2sAuthUrl()}", "--logging.level.org.springframework=DEBUG");
+ //val applicationContext = SpringApplication.run(classOf[PerformanceTestsApplication], s"--idam.s2s-auth.url=$S2SAuthUrl")
val applicationContext = SpringApplication.run(classOf[PerformanceTestsApplication], s"--idam.s2s-auth.url=$S2SAuthUrl")
}