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..40c61a9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ *.iml .idea/* target/* - +results/ +src.zip +.DS_Store /gatling.log +*.zip diff --git a/src/test/resources/application.conf b/src/test/resources/application.conf index e6d4544..da23e72 100644 --- a/src/test/resources/application.conf +++ b/src/test/resources/application.conf @@ -75,18 +75,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 +94,7 @@ cnp_sprod { maxthinktime = 3 minWaitForNextIteration = 4 maxWaitForNextIteration = 5 - totalDuration = 2 + totalDuration = 1 reachRPSTarget = 20 reachRPSDuration = 10 reachRPSHoldForDuration = 60 @@ -104,21 +104,80 @@ cnp_sprod { 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" + prodSSCSIssue = "aggregated/caseworkers/176475/jurisdictions/SSCS/case-types/Benefit/cases?view=WORKBASKET&page=1&case.caseReference=test123456" +} + +cnp_sprod { + maxSimulationDurationMinutes = 99999 + maxResponseTime = 20000 + meanResponseTime = 1000 + minthinktime = 1 + maxthinktime = 2 + minWaitForNextIteration = 1 + maxWaitForNextIteration = 2 + totalDuration = 10 + reachRPSTarget = 100 + reachRPSDuration = 600 + reachRPSHoldForDuration = 300 + jumptoRPSTarget = 400 + jumptoRPSDuration = 900 + httpProxyHost = "proxyout.reform.hmcts.net" + httpProxyPort = "8080" + userCcdId = 560966 + userImportId = 445 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" + getCaseUrlV2 = "internal/cases/1541414842766302" + 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" + prodSSCSWorkBasket = "aggregated/caseworkers/560966/jurisdictions/SSCS/case-types/Benefit/cases?view=WORKBASKET&page=1&case.caseReference=test1234567" + prodSSCSPagination = "caseworkers/560966/jurisdictions/SSCS/case-types/Benefit/cases/pagination_metadata?case.caseReference=test123456" + prodDIVORCED8caseReference = "aggregated/caseworkers/560966/jurisdictions/DIVORCE/case-types/DIVORCE/cases?page=1&case.D8caseReference=EZ12D81234" + prodDIVORCED8caseReferencePagination = "caseworkers/560966/jurisdictions/DIVORCE/case-types/DIVORCE/cases/pagination_metadata?case.D8caseReference=EZ12D81234" + createCaseDIVUrl = "caseworkers/560966/jurisdictions/:jurisdictions_reference/case-types/:casetype_reference/cases" + createCaseSSCSUrl = "caseworkers/560966/jurisdictions/:jurisdictions_reference/case-types/:casetype_reference/cases" + createCaseCMCUrl = "caseworkers/565234/jurisdictions/:jurisdictions_reference/case-types/:casetype_reference/cases" + createCaseProbateGrantApplicationUrl = "caseworkers/560966/jurisdictions/:jurisdictions_reference/case-types/:casetype_reference/cases" } + cnp_aat { maxSimulationDurationMinutes = 99999 maxResponseTime = 20000 @@ -127,7 +186,7 @@ cnp_aat { maxthinktime = 2 minWaitForNextIteration = 1 maxWaitForNextIteration = 2 - totalDuration = 1000 + totalDuration = 2 reachRPSTarget = 50 reachRPSDuration = 10 reachRPSHoldForDuration = 60 @@ -152,6 +211,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..4217f62 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/uk/gov/hmcts/ccd/corecasedata/scenarios/CreateDIVCaseData.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CreateDIVCaseData.scala new file mode 100644 index 0000000..84001e6 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CreateDIVCaseData.scala @@ -0,0 +1,130 @@ +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 CreateDIVCaseDataKJ extends PerformanceTestsConfig { + + // val EventId = "applyForGrant" + private val rng: Random = new Random() + private def d8MarriagePetitionerName(): String = rng.alphanumeric.take(10).mkString + private def d8MarriageRespondentName(): String = rng.alphanumeric.take(10).mkString + private def d8PetitionerEmail(): String = rng.alphanumeric.take(10).mkString + private def d8caseReference(): Int = rng.nextInt(9999) + private def d8PetitionerPhoneNumber(): Int = rng.nextInt(99999999) + private def d8PetitionerFirstName(): String = rng.alphanumeric.take(10).mkString + private def d8PetitionerLastName(): String = rng.alphanumeric.take(10).mkString + private def d8RespondentFirstName(): String = rng.alphanumeric.take(10).mkString + private def d8RespondentLastName(): String = rng.alphanumeric.take(10).mkString + private def d8DerivedPetitionerCurrentFullName(): String = rng.alphanumeric.take(10).mkString + private def caseSummaryText(): String = rng.alphanumeric.take(20).mkString + private def caseDescriptionText(): String = rng.alphanumeric.take(30).mkString + private def burnid(): Int = rng.nextInt(99999999) + private def d8MarriageDate(): Int = rng.nextInt(999) + + // val EventId = "CREATE" + val randcaseType = new Random(System.currentTimeMillis()) + val caseEventTypeValue = Array("CREATE") + 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("createCaseDIVUrl")) + + println("create case url: " + CreateCaseUrl) + + val caseTypeValue = Array("DIVORCE") + //val caseTypeValue = Array("ATCASETYPE1","ATCASETYPE2","ATCASETYPE3","ATCASETYPE4") + val jurisdictionsValue = Array("DIVORCE") + + 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":{"D8legalProcess":"divorce","createdDate":"2018-10-10","D8ScreenHasMarriageBroken":"No","D8ScreenHasRespondentAddress":"Yes","D8ScreenHasMarriageCert":"No","D8ScreenHasPrinter":"Yes","D8DivorceWho":"husband","D8MarriageIsSameSexCouple":"No","D8InferredPetitionerGender":"male","D8InferredRespondentGender":"female","D8MarriedInUk":"Yes","D8CertificateInEnglish":"Yes","D8CertifiedTranslation":"No","D8MarriagePlaceOfMarriage":"London","D8CountryName":"UK","D8PetitionerNameDifferentToMarriageCert":"No","D8PetitionerPhoneNumber":"07${D8PetitionerPhoneNumber}","D8DerivedPetitionerCurrentFullName":"Robert Del monte ${D8DerivedPetitionerCurrentFullName}","D8PetitionerNameChangedHow":["marriageCertificate","deedPoll"],"D8PetitionerNameChangedHowOtherDetails":"Namechangedwithnoreason","D8PetitionerContactDetailsConfidential":"keep","D8PetitionerHomeAddress":{"AddressLine1":"14AvenueRoad","AddressLine2":"RevenueLane","AddressLine3":null,"PostCode":"W45XR","PostTown":"Chiswick","County":"Middlesex","Country":"UK"},"D8DerivedPetitionerHomeAddress":"Sameasabove","D8PetitionerCorrespondenceAddress":{"AddressLine1":null,"AddressLine2":null,"AddressLine3":null,"PostCode":null,"PostTown":null,"County":null,"Country":null},"D8DerivedPetitionerCorrespondenceAddr":"Sameasabove","D8PetitionerCorrespondenceUseHomeAddress":"Yes","D8RespondentNameAsOnMarriageCertificate":"Yes","D8DerivedRespondentCurrentName":"Dimarta","D8DerivedRespondentSolicitorDetails":"NotKnown","D8RespondentHomeAddress":{"AddressLine1":"15AvenueRoad","AddressLine2":"RevenueLane","AddressLine3":null,"PostCode":"W45XR","PostTown":"Chiswick","County":"Middlesex","Country":"UK"},"D8DerivedRespondentHomeAddress":"sameasabove","D8RespondentCorrespondenceAddress":{"AddressLine1":null,"AddressLine2":null,"AddressLine3":null,"PostCode":null,"PostTown":null,"County":null,"Country":null},"D8DerivedRespondentCorrespondenceAddr":"sameasabove","D8RespondentSolicitorName":"RickSick","D8RespondentSolicitorCompany":"DivorcedSolicitors","D8RespondentCorrespondenceSendToSol":"Yes","D8RespondentSolicitorAddress":{"AddressLine1":"16AvenueRoad","AddressLine2":"RevenueLane","AddressLine3":null,"PostCode":"W45XR","PostTown":"Chiswick","County":"Middlesex","Country":"UK"},"D8DerivedRespondentSolicitorAddr":"sameasabove","D8RespondentCorrespondenceUseHomeAddress":"Yes","D8RespondentKnowsHomeAddress":"Yes","D8RespondentLivesAtLastAddress":"No","D8LivingArrangementsTogetherSeparated":"Yes","D8LivingArrangementsLastLivedTogether":"No","D8LivingArrangementsLiveTogether":"Yes","D8LivingArrangementsLastLivedTogethAddr":{"AddressLine1":null,"AddressLine2":null,"AddressLine3":null,"PostCode":null,"PostTown":null,"County":null,"Country":null},"D8DerivedLivingArrangementsLastLivedAddr":"sameasabove","D8LegalProceedings":"No","D8LegalProceedingsRelated":["property","marriage"],"D8LegalProceedingsDetails":null,"D8ReasonForDivorce":"separation-2-years","D8DerivedStatementOfCase":null,"D8ReasonForDivorceBehaviourDetails":null,"D8ReasonForDivorceDesertionDate":"2019-12-12","D8ReasonForDivorceDesertionAgreed":"No","D8ReasonForDivorceDesertionDetails":null,"D8ReasonForDivorceSeperationDate":"2017-10-10","D8ReasonForDivorceAdultery3rdPartyFName":null,"D8ReasonForDivorceAdultery3rdPartyLName":null,"D8DerivedReasonForDivorceAdultery3dPtyNm":null,"D8ReasonForDivorceAdulteryDetails":"notknown","D8ReasonForDivorceAdulteryKnowWhen":"Yes","D8ReasonForDivorceAdulteryWishToName":"No","D8ReasonForDivorceAdulteryKnowWhere":"Yes","D8ReasonForDivorceAdulteryWhereDetails":"notknown","D8ReasonForDivorceAdulteryWhenDetails":"notknown","D8ReasonForDivorceAdulteryIsNamed":"Yes","D8ReasonForDivorceAdultery3rdAddress":{"AddressLine1":"17AvenueRoad","AddressLine2":"RevenueLane","AddressLine3":null,"PostCode":"W45XR","PostTown":"Chiswick","County":"Middlesex","Country":"UK"},"D8DerivedReasonForDivorceAdultery3rdAddr":"sameasabove","D8FinancialOrder":"No","D8FinancialOrderFor":["petitioner"],"D8HelpWithFeesAppliedForFees":"Yes","D8HelpWithFeesReferenceNumber":null,"D8PaymentMethod":"card","D8DivorceCostsClaim":"No","D8DivorceIsNamed":"No","D8DivorceClaimFrom":["respondent","correspondent"],"D8JurisdictionConfidentLegal":"Yes","D8JurisdictionConnection":["A","C","E","F"],"D8JurisdictionLastTwelveMonths":"Yes","D8JurisdictionPetitionerDomicile":"No","D8JurisdictionPetitionerResidence":"Yes","D8JurisdictionRespondentDomicile":"No","D8JurisdictionRespondentResidence":"Yes","D8JurisdictionHabituallyResLast6Months":"No","Payments":[],"D8DocumentsUploaded":[],"D8DocumentsGenerated":[],"D8StatementOfTruth":"No","D8Cohort":"onlineSubmissionPrivateBeta","AosLetterHolderId":null,"D8caseReference":"EZ12D8${D8caseReference}","D8DivorceUnit":"eastMidlands","D8MarriageDate":"1${D8MarriageDate}-10-10","D8MarriagePetitionerName":"Francis Dela Cruz ${D8MarriagePetitionerName}","D8MarriageRespondentName":"Cruz Dela Francis ${D8MarriageRespondentName}","D8PetitionerFirstName":"Della ${D8PetitionerFirstName}","D8PetitionerLastName":"Francis ${D8PetitionerLastName}","D8PetitionerEmail":"dela_${D8PetitionerEmail}@francis.com","D8RespondentFirstName":"Dimello ${D8RespondentFirstName}","D8RespondentLastName":"Best ${D8RespondentLastName}","D8HelpWithFeesNeedHelp":"Yes","dueDate":"2019-10-10","SolPaymentHowToPay":"feePayByAccount","burnID":"10${burnID}","receivedDate":"2019-01-10"},"event":{"id":"create","summary": "Performance Testing Event summary ${CaseSummaryText}","description": "Performance Testing Event description ${CaseDescriptionText}"},"event_token": """" + "${eventToken}" + """","ignore_warning":false,"draft_id":null}""") + + + val token = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl) + + + val CreateDIVCaseDataSCN = scenario("Create DIV Case Data").during(TotalRunDuration minutes) { + exec( + _.setAll( + ("D8MarriagePetitionerName", d8MarriagePetitionerName()), + ("D8MarriageRespondentName", d8MarriageRespondentName()), + ("D8caseReference", d8caseReference()), + ("D8PetitionerPhoneNumber",d8PetitionerPhoneNumber()), + ("D8PetitionerFirstName",d8PetitionerFirstName()), + ("D8PetitionerLastName",d8PetitionerLastName()), + ("D8DerivedPetitionerCurrentFullName",d8DerivedPetitionerCurrentFullName()), + ("CaseSummaryText",caseSummaryText()), + ("CaseDescriptionText",caseDescriptionText()), + ("D8PetitionerEmail", d8PetitionerEmail()), + ("burnID",burnid()), + ("D8RespondentFirstName",d8RespondentFirstName()), + ("D8RespondentLastName",d8RespondentLastName()), + ("PickCaseEventType",PickCaseType()), + ("D8MarriageDate", d8MarriageDate()) + ) + ).exec( + //http("get create case event token") + http("TX01_CCD_CreateCaseEndpoint_Divorce_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_Divorce_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/CreateSSCSCaseData.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CreateSSCSCaseData.scala new file mode 100644 index 0000000..56221de --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CreateSSCSCaseData.scala @@ -0,0 +1,132 @@ +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 CreateSSCSCaseDataKJ extends PerformanceTestsConfig { + + // val EventId = "applyForGrant" + private val rng: Random = new Random() + private def generatedSurname(): String = rng.alphanumeric.take(10).mkString + private def generatedNino(): Int = rng.nextInt(99999999) + private def caseReference(): Int = rng.nextInt(99999999) + private def generatedEmail(): String = rng.alphanumeric.take(10).mkString + private def generatedMobile(): Int = rng.nextInt(99999999) + private def generatedDOB(): Int = rng.nextInt(99) + private def caseSummaryText(): String = rng.alphanumeric.take(20).mkString + private def caseDescriptionText(): String = rng.alphanumeric.take(30).mkString + private def appellantfirstName(): String = rng.alphanumeric.take(10).mkString + private def appellantmiddleName(): String = rng.alphanumeric.take(10).mkString + private def appellantlastName(): String = rng.alphanumeric.take(10).mkString + private def appointeefirstName(): String = rng.alphanumeric.take(10).mkString + private def appointeemiddleName(): String = rng.alphanumeric.take(10).mkString + private def appointeelastName(): String = rng.alphanumeric.take(10).mkString + private def addressNumber(): Int = rng.nextInt(99) + + + // val EventId = "CREATE" + val randcaseType = new Random(System.currentTimeMillis()) + val caseEventTypeValue = Array("appealCreated") + 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("CreateSSCSCaseData caseTypeText Value " + EventId) + println("CreateSSCSCaseData caseTypeText Value " + PickCaseType()) + + var CreateCaseUrl = caseDataUrl(config.getString("createCaseSSCSUrl")) + + println("CreateSSCSCaseData create case url: " + CreateCaseUrl) + + val caseTypeValue = Array("Benefit") + //val caseTypeValue = Array("ATCASETYPE1","ATCASETYPE2","ATCASETYPE3","ATCASETYPE4") + val jurisdictionsValue = Array("SSCS") + + 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("CreateSSCSCaseData 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("CreateSSCSCaseData create case url: " + CreateCaseUrl) + println("CreateSSCSCaseData create case token url: " + CreateCaseTokenUrl) + + val EventBodyMain =StringBody("""{"data":{"appeal":{"receivedVia":"Online","mrnDetails":{"dwpIssuingOffice":"DWP101010","mrnDate":"2010-12-10","mrnLateReason":"Notknown","mrnMissingReason":"NoReason"},"appellant":{"name":{"title":"Mr","firstName":"Jooles ${AppellantfirstName}","middleName":"Rodriguez ${AppellantmiddleName}","lastName":"Fernandez ${AppellantlastName}"},"identity":{"dob":"19${GeneratedDOB}-11-11","nino":"SGD83241"},"address":{"line1":"${AddressNumber} AvenueRoad","line2":"RevenueLane","line3":null,"town":"Chiswick","county":"Middlesex","postcode":"W45XR","country":"UK"},"contact":{"phone":"77${GeneratedMobile}","mobile":"88${GeneratedMobile}","email":"noreason_${GeneratedEmail}@everyreason.com"},"isAppointee":"Yes","appointee":{"name":{"title":"Mrs","firstName":"Davis ${AppointeefirstName}","middleName":"Novis ${AppointeemiddleName}","lastName":"Data ${AppointeelastName}"},"identity":{"dob":"19${GeneratedDOB}-01-01","nino":"SH656437"},"address":{"line1":"${AddressNumber} AvenueRoad","line2":"RevenueLane","line3":null,"town":"Chiswick","county":"Middlesex","postcode":"W45XR","country":"UK"},"contact":{"phone":"09${GeneratedMobile}","mobile":"08${GeneratedMobile}","email":"revenue_${GeneratedEmail}@jas.com"}},"isAddressSameAsAppointee":"Yes"},"benefitType":{"code":"B0120202","description":"Benefit"},"hearingType":"domiciliary","hearingOptions":{"wantsToAttend":"Yes","wantsSupport":"Yes","languageInterpreter":"No","arrangements":["signLanguageInterpreter"],"scheduleHearing":"No","other":"Otherinformation","signLanguageType":"wer"},"appealReasons":{"reasons":[],"otherReasons":null},"supporter":{"name":{"title":"Mr","firstName":"Data","middleName":"less","lastName":"lastname"},"contact":{"phone":"09${GeneratedMobile}","mobile":"07${GeneratedMobile}","email":"house_${GeneratedEmail}@revenue.com"}},"rep":{"hasRepresentative":"No"},"signer":null},"regionalProcessingCenter":{"name":null,"address1":"${AddressNumber}AvenueRoad","address2":"RevenueRoad","address3":null,"address4":null,"postcode":"W45XR","city":"Chiswick","phoneNumber":"0902340982","faxNumber":"203480284"},"panel":{"assignedTo":"MrJudge","medicalMember":"Medico","disabilityQualifiedMember":"none"},"caseReference":"1${CaseReference}","caseCreated":"19${GeneratedDOB}-11-10","region":"London","generatedNino":"S1${GeneratedNino}","generatedSurname":"Bakerloo ${GeneratedSurname}","generatedEmail":"bakerrloo_${GeneratedEmail}@bakerloo.com","generatedMobile":"07${GeneratedMobile}","generatedDOB":"19${GeneratedDOB}-10-10","evidencePresent":"Yes"},"event":{"id":"appealCreated","summary":"Performance Testing SSCS summary ${CaseSummaryText}","description":"Performance Testing SSCS Event description ${CaseDescriptionText}"},"event_token":""""+"${eventToken}"+"""","ignore_warning":false,"draft_id":null}""") + + val token = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl) + + + val CreateSSCSCaseDataSCN = scenario("Create SSCS Case Data").during(TotalRunDuration minutes) { + exec( + _.setAll( + ("GeneratedSurname", generatedSurname()), + ("GeneratedNino", generatedNino()), + ("CaseReference", caseReference()), + ("GeneratedEmail",generatedEmail()), + ("GeneratedMobile",generatedMobile()), + ("GeneratedDOB",generatedDOB()), + ("CaseSummaryText",caseSummaryText()), + ("CaseDescriptionText",caseDescriptionText()), + ("AppellantfirstName", appellantfirstName()), + ("AppellantmiddleName", appellantmiddleName()), + ("AppellantlastName", appellantlastName()), + ("AppointeefirstName", appointeefirstName()), + ("AppointeemiddleName", appointeemiddleName()), + ("AppointeelastName", appointeelastName()), + ("AddressNumber",addressNumber()), + ("PickCaseEventType",PickCaseType()) + ) + ).exec( + //http("get create case event token") + http("TX21_CCD_CreateCaseEndpoint_SSCS_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("TX22_CCD_CreateCaseEndpoint_SSCS_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/CrossCaseTypeAliasFuzzySearchOnText.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CrossCaseTypeAliasFuzzySearchOnText.scala new file mode 100644 index 0000000..3f0c1e2 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CrossCaseTypeAliasFuzzySearchOnText.scala @@ -0,0 +1,54 @@ +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 CrossCaseTypeAliasFuzzySearchOnText extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch") + + println("Corss Case Type Elastic Search - Cross Case Type - Match Query on Text field PT - URL: " + url) + + val CrossCaseTypeAliasFuzzySearchOnTextPayload = StringBody( + """ + { + "_source":["alias.aText", "alias.aNumber", "alias.aPhoneUK", "alias.aEmail", "alias.aMoneyGBP", "alias.aTextArea", "alias.aDcoument","alias.aYesOrNo"], + "query": { + "fuzzy": { + "alias.aText": "performance" + } + }, + "size":20 + } + """ + ) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + + http("TX25_CCD_ElasticSearchEndpoint_CrossCaseType_FuzzyQuery_Text") + .post(url) + .queryParam("ctid", "ATCASETYPE1,ATCASETYPE2,ATCASETYPE3,ATCASETYPE4,AAT,CASETYPE2,CASETYPE3,CASETYPE4") + .body( + CrossCaseTypeAliasFuzzySearchOnTextPayload ).asJSON + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("CrossCaseTypeAliasFuzzySearchOnText: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val CrossCaseTypeAliasFuzzySearchOnTextSCN = scenario("Elastic Search CrossCaseTypeAliasFuzzySearchOnText Match Query on Text 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/CrossCaseTypeAliasMatchOnText.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CrossCaseTypeAliasMatchOnText.scala new file mode 100644 index 0000000..d02b172 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CrossCaseTypeAliasMatchOnText.scala @@ -0,0 +1,54 @@ +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 CrossCaseTypeAliasMatchOnText extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch") + + println("Elastic Search - Cross Case Type - Match Query on Text field PT - URL: " + url) + + val CrossCaseTypeAliasMatchOnTextPayload = StringBody( + """ + { + "_source":["alias.aText", "alias.aNumber", "alias.aPhoneUK", "alias.aEmail", "alias.aMoneyGBP", "alias.aTextArea", "alias.aDcoument","alias.aYesOrNo"], + "query": { + "wildcard": { + "alias.aText" : "*performance*" + } + }, + "size":20 + } + """ + ) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + + http("TX24_CCD_ElasticSearchEndpoint_CrossCaseType_MatchQuery_Text") + .post(url) + .queryParam("ctid", "ATCASETYPE1,ATCASETYPE2,ATCASETYPE3,ATCASETYPE4,AAT,CASETYPE2,CASETYPE3,CASETYPE4") + .body( + CrossCaseTypeAliasMatchOnTextPayload ).asJSON + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("CrossCaseTypeAliasMatchOnText: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val CrossCaseTypeAliasMatchOnTextSCN = scenario("Elastic Search CrossCaseTypeAliasMatchOnText Match Query on Text 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/CrossCaseTypeAliasMatchOnTextArea.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CrossCaseTypeAliasMatchOnTextArea.scala new file mode 100644 index 0000000..cba36de --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CrossCaseTypeAliasMatchOnTextArea.scala @@ -0,0 +1,54 @@ +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 CrossCaseTypeAliasMatchOnTextArea extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch") + + println("Elastic Search - Cross Case Type - Match Query on TextArea field PT - URL: " + url) + + val CrossCaseTypeAliasMatchOnTextAreaPayload = StringBody( + """ + { + "_source":["alias.aText", "alias.aNumber", "alias.aPhoneUK", "alias.aEmail", "alias.aMoneyGBP", "alias.aTextArea", "alias.aDcoument","alias.aYesOrNo"], + "query": { + "match": { + "alias.aTextArea" : "Performance Testing" + } + }, + "size":20 + } + """ + ) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + + http("TX23_CCD_ElasticSearchEndpoint_CrossCaseType_MatchQuery_TextArea") + .post(url) + .queryParam("ctid", "ATCASETYPE1,ATCASETYPE2,ATCASETYPE3,ATCASETYPE4,AAT,CASETYPE2,CASETYPE3,CASETYPE4") + .body( + CrossCaseTypeAliasMatchOnTextAreaPayload ).asJSON + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("CrossCaseTypeAliasMatchOnTextArea: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val CrossCaseTypeAliasMatchOnTextAreaSCN = scenario("Elastic Search CrossCaseTypeAliasMatchOnTextArea Match Query on Text Area 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/CrossCaseTypeAliasMatchYesOrNo.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CrossCaseTypeAliasMatchYesOrNo.scala new file mode 100644 index 0000000..d5901ac --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CrossCaseTypeAliasMatchYesOrNo.scala @@ -0,0 +1,54 @@ +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 CrossCaseTypeAliasMatchYesOrNo extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch") + + println("Elastic Search - Cross Case Type - Match Query on YesORNo field PT - URL: " + url) + + val CrossCaseTypeAliasMatchYesOrNoPayload = StringBody( + """ + { + "_source":["alias.aText", "alias.aNumber", "alias.aPhoneUK", "alias.aEmail", "alias.aMoneyGBP", "alias.aTextArea", "alias.aDcoument","alias.aYesOrNo"], + "query": { + "match": { + "alias.aYesOrNo" : "Yes" + } + }, + "size":20 + } + """ + ) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + + http("TX22_CCD_ElasticSearchEndpoint_CrossCaseType_MatchQuery_YesORNoField") + .post(url) + .queryParam("ctid", "ATCASETYPE1,ATCASETYPE2,ATCASETYPE3,ATCASETYPE4,AAT,CASETYPE2,CASETYPE3,CASETYPE4") + .body( + CrossCaseTypeAliasMatchYesOrNoPayload).asJSON + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("CrossCaseTypeAliasMatchYesOrNo: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val CrossCaseTypeAliasMatchYesOrNoSCN = scenario("Elastic Search CrossCaseTypeAliasMatchYesOrNo Match Query 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/CrossCaseTypeAliasfuzzyYesOrNo.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CrossCaseTypeAliasfuzzyYesOrNo.scala new file mode 100644 index 0000000..bade797 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/CrossCaseTypeAliasfuzzyYesOrNo.scala @@ -0,0 +1,53 @@ +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 CrossCaseTypeAliasfuzzyYesOrNo extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch") + println("Elastic Search - Cross Case Type Fuzzy Search on YesORNo field PT - URL: " + url) + + val CrossCaseTypeAliasFuzzyYesOrNoPayload = StringBody( + """ + { + "_source":["alias.aText", "alias.aNumber", "alias.aPhoneUK", "alias.aEmail", "alias.aMoneyGBP", "alias.aTextArea", "alias.aDcoument","alias.aYesOrNo"], + "query": { + "fuzzy": { + "alias.aYesOrNo" : "Yes" + } + }, + "size":20 + } + """ + ) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + + http("TX21_CCD_ElasticSearchEndpoint_CrossCaseType_FuzzyQuery_YesORNoField") + .post(url) + .queryParam("ctid", "ATCASETYPE1,ATCASETYPE2,ATCASETYPE3,ATCASETYPE4,AAT,CASETYPE2,CASETYPE3,CASETYPE4") + .body( + CrossCaseTypeAliasFuzzyYesOrNoPayload).asJSON + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("CrossCaseTypeAliasfuzzyYesOrNo: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val CrossCaseTypeAliasfuzzyYesOrNoSCN = scenario("Elastic Search CrossCaseTypeAliasfuzzyYesOrNo Fuzzy search 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/ESExactMatchONDate.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESExactMatchONDate.scala new file mode 100644 index 0000000..529c41d --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESExactMatchONDate.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 ESExactMatchONDate extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch") + println("Elastic Search exact match on date field PT - URL: " + url) + + val ESExactMatchONDateReqPayload = StringBody( + """ + { + "query":{ + "bool":{ + "filter":{ + "term":{ + "data.DateField":"2009-12-12" + } + } + } + } + } + """ + ) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + + http("TX15_CCD_ElasticSearchEndpoint_ExactMatchONDateField") + .post(url) + .queryParam("ctid", "AAT") + .body( + ESExactMatchONDateReqPayload).asJSON + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("ESExactMatchONDate: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val ESExactMatchONDateSCN = scenario("Elastic Search Exact Match ON Date 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/ESExactMatchYesOrNo.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESExactMatchYesOrNo.scala new file mode 100644 index 0000000..2431ea9 --- /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..516b9dc --- /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/ESSeachByEmailField.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachByEmailField.scala new file mode 100644 index 0000000..f87df35 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachByEmailField.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 ESSeachByEmailField extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch") + println("Elastic Search by Email field PT - URL: " + url) + + val ESSeachByEmailFieldReqPayload = StringBody( + """ + { + "query":{ + "bool":{ + "filter":{ + "term":{ + "data.EmailField":"confirmation@confirmation.com" + } + } + } + } + } + """ + ) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + + http("TX17_CCD_ElasticSearchEndpoint_SearchEmailField") + .post(url) + .queryParam("ctid", "AAT") + .body( + ESSeachByEmailFieldReqPayload).asJSON + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("ESSeachByEmailField: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val ESSeachByEmailFieldSCN = scenario("Elastic Search by email 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/ESSeachByPhoneUKField.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachByPhoneUKField.scala new file mode 100644 index 0000000..9be659b --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachByPhoneUKField.scala @@ -0,0 +1,53 @@ +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 ESSeachByPhoneUKField extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch") + println("Elastic Search by PhoneUK field PT - URL: " + url) + + val ESSeachByPhoneUKFieldReqPayload = StringBody( + """ + { + "query": { + "bool" : { + "filter": { + "match" : { "data.PhoneUKField" : "02020002002" } + } + } + } + } + """ + ) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + + http("TX18_CCD_ElasticSearchEndpoint_SearchByPhoneUKField") + .post(url) + .queryParam("ctid", "AAT") + .body( + ESSeachByPhoneUKFieldReqPayload).asJSON + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("ESSeachByPhoneUKField: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val ESSeachByPhoneUKFieldSCN = scenario("Elastic Search by PhoneUK 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/ESSeachONFixedList.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachONFixedList.scala new file mode 100644 index 0000000..aa0ae52 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachONFixedList.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 ESSeachONFixedList extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("ESSearch") + println("Elastic Search on fixed list field PT - URL: " + url) + + val ESSeachONFixedListReqPayload = StringBody( + """ + { + "query":{ + "bool":{ + "filter":{ + "term":{ + "data.FixedListField":"value1" + } + } + } + } + } + """ + ) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + + http("TX16_CCD_ElasticSearchEndpoint_SearchONFixedListField") + .post(url) + .queryParam("ctid", "AAT") + .body( + ESSeachONFixedListReqPayload).asJSON + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("ESSeachONFixedList: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val ESSeachONFixedListSCN = scenario("Elastic Search on Fixedlist 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/ESSeachONReferenceMetaData.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachONReferenceMetaData.scala new file mode 100644 index 0000000..1385663 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachONReferenceMetaData.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 ESSeachONReferenceMetaData extends PerformanceTestsConfig { + + 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":{ + "wildcard":{ + "reference":"1537*" + } + } + } + } + } + """ + ) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + + http("TX13_CCD_ElasticSearchEndpoint_ReferenceMetaDataSearch") + .post(url) + .queryParam("ctid", "AAT") + .body( + ESSearchONReferenceMetaDataReqPayload).asJSON + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("ESSeachONReferenceMetaData: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val ESSeachONReferenceMetaDataSCN = scenario("Elastic Search on Reference Metadata 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/ESSeachONTextArea.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ESSeachONTextArea.scala new file mode 100644 index 0000000..3052462 --- /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..78e8ce9 --- /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/GetCaseDataV2.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetCaseDataV2.scala new file mode 100644 index 0000000..72562fc --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetCaseDataV2.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 GetCaseDataV2 extends PerformanceTestsConfig { + + private val getCaseUrl = caseDataUrl(config.getString("getCaseUrlV2")) + println("Retrieving case with base url: " + getCaseUrl) + + def getCaseDataHttp() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(getCaseUrl) + //http("get case data") + http("TX01_CCD_GetCaseDataEndpoint_getcasedataV2") + .get(_ => url()) + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .header("Accept","application/vnd.uk.gov.hmcts.ccd-data-store-api.ui-case-view.v2+json") + .header("Experimental","true") + .check(status in (200)) + } + + def url(): String = { + val result: String = if(!getCaseUrl.contains(":case_reference")) { + getCaseUrl + } else { + resolveGetCaseUrl() + } +// println("Retrieving case: " + result) + result + } + + private def resolveGetCaseUrl(): String = { + getCaseUrl.replace(":case_reference", pickRandomReference().replaceAll("-", "")) + } + + println("GetCaseData: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + val GetCaseDataV2Scenarios = scenario("Get Case Data V2").during(TotalRunDuration minutes) { + exec( + getCaseDataHttp() + ) + .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/GetPrintableDocumentsForEvent.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetPrintableDocumentsForEvent.scala new file mode 100644 index 0000000..aaad80e --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/GetPrintableDocumentsForEvent.scala @@ -0,0 +1,31 @@ +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 GetPrintableDocumentsForEvent extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("getPrintableDocumentsForEvent") + println("Retrieving getPrintableDocumentsForEvent URL : " + url) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + http("TX09_CCD_GetPrintableDocumentsForEvent_getDocumentsForEvent") + .get(url) + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("WorkBasketInputDetails: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val getPrintableDocumentForEvents = scenario("Get Printable Document for Events").during(TotalRunDuration minutes) { + exec(httpRequest()) + .pause(MinThinkTime seconds, MaxThinkTime seconds) + } +} 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..862c99d 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("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 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/ProdDIVORCESearchD8caseReference.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ProdDIVORCESearchD8caseReference.scala new file mode 100644 index 0000000..8146d00 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ProdDIVORCESearchD8caseReference.scala @@ -0,0 +1,36 @@ +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 ProdDIVORCESearchD8caseReference extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("prodDIVORCED8caseReference") + println("url: " + url) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + //http("search cases") + http("TX03_CCD_DIVORCE_SearchCaseEndpoint_D8caseReference") + .get(url) + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("ProdDIVORCESearchD8caseReference: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val ProdDIVORCESearchD8caseReferenceSCN = scenario("ProdDIVORCESearchD8caseReference search 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/ProdDIVORCESearchD8caseReferencePagination.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ProdDIVORCESearchD8caseReferencePagination.scala new file mode 100644 index 0000000..b749b2a --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ProdDIVORCESearchD8caseReferencePagination.scala @@ -0,0 +1,36 @@ +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 ProdDIVORCESearchD8caseReferencePagination extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("prodDIVORCED8caseReferencePagination") + println("url: " + url) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + //http("search cases") + http("TX04_CCD_DIVORCE_SearchCaseEndpoint_D8caseReference_Pagination") + .get(url) + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("ProdDIVORCESearchD8caseReferencePagination: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val ProdDIVORCESearchD8caseReferencePaginationSCN = scenario("ProdDIVORCESearchD8caseReferencePagination search 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/ProdSSCSSearchPagination.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ProdSSCSSearchPagination.scala new file mode 100644 index 0000000..76fe9b9 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ProdSSCSSearchPagination.scala @@ -0,0 +1,36 @@ +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 ProdSSCSSearchPagination extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("prodSSCSPagination") + println("url: " + url) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + //http("search cases") + http("TX02_CCD_SSCS_SearchCaseEndpoint_Pagination_searchcases") + .get(url) + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("ProdSSCSSearchPagination: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val ProdSSCSSearchPaginationSCN = scenario("ProdSSCSSearchPagination search 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/ProdSSCSSearchWorkBasketIssue.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ProdSSCSSearchWorkBasketIssue.scala new file mode 100644 index 0000000..b502ed9 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ProdSSCSSearchWorkBasketIssue.scala @@ -0,0 +1,36 @@ +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 ProdSSCSSearchWorkBasketIssue extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("prodSSCSWorkBasket") + println("url: " + url) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + //http("search cases") + http("TX01_CCD_SSCS_SearchCaseEndpoint_WorkBasket_searchcases") + .get(url) + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("ProdSSCSSearchWorkBasketIssue: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val ProdSSCSSearchWorkBasketIssueSCN = scenario("ProdSSCSSearchWorkBasketIssue search 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/SearchInputDetails.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/SearchInputDetails.scala new file mode 100644 index 0000000..6eda2cf --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/SearchInputDetails.scala @@ -0,0 +1,33 @@ +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 SearchInputDetails extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("searchInputDetails") + println("Retrieving searchInputDetails URL : " + url) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + http("TX07_CCD_SearchInputDetails_searchInputDetails") + .get(url) + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("SearchInputDetails: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val getSearchInputDetails = scenario("Search Input Details").during(TotalRunDuration minutes) { + exec( + httpRequest() + ) + .pause(MinThinkTime seconds, MaxThinkTime seconds) + } +} diff --git a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ValidateCaseDetails.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ValidateCaseDetails.scala new file mode 100644 index 0000000..ecaa633 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/ValidateCaseDetails.scala @@ -0,0 +1,77 @@ +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 ValidateCaseDetails extends PerformanceTestsConfig { + + // val EventId = "applyForGrant" + val EventId = "CREATE" + val CreateCaseUrl = caseDataUrl(config.getString("validateCaseUrl")) + val CreateCaseTokenUrl = s"${CreateCaseUrl.replaceAll("cases", "")}event-triggers/$EventId/token" + println("create case url: " + CreateCaseUrl) + println("create case token url: " + CreateCaseTokenUrl) + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("validateCaseDetails") + println("Retrieving validateCaseDetails URL : " + url) + + val ReqPayload = StringBody(""" + { + "data": { + "TextField": "First Page", + "NumberField": "123", + "YesOrNoField": "Yes", + "PhoneUKField": "02920001002", + "EmailField": "confirmation@confirmation.com" + }, + "event": { + "id": "CREATE", + "summary": "", + "description": "" + }, + "event_token": "${eventToken}", + "ignore_warning": false + } + """) + + + def validateCaseDatahttp() = { + val token = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl) + exec( + //http("get create case event token") + http("TX10_CCD_ValidateCaseDataEndpoint_validatecasedata_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("TX11_CCD_CCD_ValidateCaseDataEndpoint_validatecasedata") + .post(url) + .body( + ReqPayload).asJSON + .header("ServiceAuthorization", token) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status is 200) + ) + } + + + println("ValidateCaseData: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val validateCaseData = scenario("Validate Case Data").during(TotalRunDuration minutes) { + exec( + validateCaseDatahttp() + ) + .pause(MinThinkTime seconds, MaxThinkTime seconds) + } + + val waitForNextIteration = pace(MinWaitForNextIteration seconds, MaxWaitForNextIteration seconds) +} + diff --git a/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/WorkBasketInputDetails.scala b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/WorkBasketInputDetails.scala new file mode 100644 index 0000000..28fcbb5 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/corecasedata/scenarios/WorkBasketInputDetails.scala @@ -0,0 +1,33 @@ +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 WorkBasketInputDetails extends PerformanceTestsConfig { + + private val url: String = config.getString("caseDataUrl") + "/" + config.getString("workbasketInputDetails") + println("Retrieving workbasketInputDetails URL : " + url) + + def httpRequest() = { + val s2sToken = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(url) + http("TX08_CCD_WorkBasketInputDetails_workbasketInputDetails") + .get(url) + .header("ServiceAuthorization", s2sToken) + .header("Authorization", userToken) + .header("Content-Type","application/json") + .check(status in (200)) + } + + println("WorkBasketInputDetails: Minimum think time " + MinThinkTime + " Maximum think time " + MaxThinkTime) + + val getWorkbasketInputDetails = scenario("Work Basket Input Details").during(TotalRunDuration minutes) { + exec( + httpRequest() + ) + .pause(MinThinkTime seconds, MaxThinkTime seconds) + } +} diff --git a/src/test/scala/uk/gov/hmcts/ccd/data/CreateCMCCaseData.scala b/src/test/scala/uk/gov/hmcts/ccd/data/CreateCMCCaseData.scala new file mode 100644 index 0000000..3176690 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/data/CreateCMCCaseData.scala @@ -0,0 +1,163 @@ +package uk.gov.hmcts.ccd.data + +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 CreateCMCCaseData extends PerformanceTestsConfig { + + // val EventId = "applyForGrant" + private val rng: Random = new Random() + private def submitterId(): Int = rng.nextInt(99999) + private def externalId(): Int = rng.nextInt(99999) + private def feeAmountInPennies(): Int = rng.nextInt(6) + private def sotSignerName(): Int = rng.nextInt(99999) + private def sotSignerRole(): Int = rng.nextInt(9999) + + private def claimNum1(): Int = rng.nextInt(999) + private def claimNum2(): Int = rng.nextInt(999) + + private def feeCode(): Int = rng.nextInt(999) + private def amountBreakDown(): Int = rng.nextInt(9999) + private def totalAmount(): Int = rng.nextInt(99999) + private def feeAccountNumber(): Int = rng.nextInt(99999) + private def defendantsPartyName(): String = rng.alphanumeric.take(10).mkString + private def caseSummaryText(): String = rng.alphanumeric.take(20).mkString + private def caseDescriptionText(): String = rng.alphanumeric.take(30).mkString + private def rejectionReason(): Int = rng.nextInt(99999999) + private def responseAmount(): Int = rng.nextInt(99999) + private def claimantsPartyName(): String = rng.alphanumeric.take(10).mkString + private def claimantsPartyEmail(): Int = rng.nextInt(99999) + private def representativeOrganisationName(): String = rng.alphanumeric.take(10).mkString + private def partyBusinessName(): String = rng.alphanumeric.take(10).mkString + private def partyContactPerson(): String = rng.alphanumeric.take(10).mkString + private def partyCompaniesHouseNumber(): Int = rng.nextInt(9999999) + private def subjectName(): String = rng.alphanumeric.take(10).mkString + private def paymentId(): Int = rng.nextInt(9999999) + private def paymentAmount(): Int = rng.nextInt(9999999) + private def paymentReference1(): Int = rng.nextInt(9999) + private def paymentReference2(): Int = rng.nextInt(9999) + private def paymentReference3(): Int = rng.nextInt(9999) + private def paymentReference4(): Int = rng.nextInt(9999) + + // val EventId = "CREATE" + val randcaseType = new Random(System.currentTimeMillis()) + val caseEventTypeValue = Array("IssueClaim") + 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("createCaseCMCUrl")) + + println("create case url: " + CreateCaseUrl) + + val caseTypeValue = Array("MoneyClaimCase") + //val caseTypeValue = Array("ATCASETYPE1","ATCASETYPE2","ATCASETYPE3","ATCASETYPE4") + val jurisdictionsValue = Array("CMC") + + 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)) + } + + val token = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl) + + 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": {"submitterId": "SubmitterID${SubmitterId}","externalId": "External${ExternalId}","referenceNumber": "${ClaimNum1}MC${ClaimNum2}","feeAmountInPennies": "${FeeAmountInPennies}","reason": "A strong sense of entitlement that would explain my reasons of the claim, that the Roof work and leaks that followed were done below ${CaseSummaryText} by the council inspecto","sotSignerName": "Statement of truth Signer Name ${SotSignerName}","sotSignerRole": "Statement of truth Signer Role ${SotSignerRole}","feeAccountNumber": "${FeeAccountNumber}","externalReferenceNumber": null,"preferredCourt": "London","feeCode": "FEE${FeeCode}","amountType": "BREAK_DOWN","amountLowerValue": "20","amountHigherValue": "50","amountBreakDown": [{"id": null,"value": {"reason": "Roof Fix & repairs to leak","amount": "${AmountBreakDown}"}}],"interestType": "NO_INTEREST","interestRate": "2","interestReason": "Reason for claiming interest 001","interestBreakDownAmount": "${FeeCode}","interestBreakDownExplanation": "25","interestSpecificDailyAmount": "25","interestDateType": "SUBMISSION","interestClaimStartDate": "2019-03-20","interestStartDateReason": "Reason for selecting the start date 001","interestEndDateType": "SUBMISSION","totalAmount": "${TotalAmount}","timeline": [{"id": null,"value": {"date": "01/10/2019","description": "The day the first bill was issued ${CaseDescriptionText}"}},{"id": null,"value": {"date": "26/03/2019","description": "A historic day with enormous importance ${CaseDescriptionText}"}},{"id": null,"value": {"date": "20/06/2019","description": "line to explain what happened and when ${CaseDescriptionText}"}}],"evidence": [],"housingDisrepairOtherDamages": "No Other Damages","housingDisrepairCostOfRepairDamages": "200","personalInjuryGeneralDamages": "100","issuedOn": "2019-03-20","submittedOn": "2019-03-20T11:20:32.000","submitterEmail": "Submitter${SubmitterId}@confirmation.com","id": null,"features": null,"defendants": [{"id": null,"value": {"partyName": "Mr Jon Clark ${DefendantsPartyName}","directionsQuestionnaireDeadline": "2019-02-20","responseSubmittedOn": "2019-02-20T11:30:33.000","responseDeadline": "2019-04-24","courtDetermination": {"courtIntention": {"paymentOption": "IMMEDIATELY","paymentDate": "2019-03-20","instalmentAmount": "150","firstPaymentDate": "2019-03-20","paymentLength": "12","completionDate": "2020-03-20","paymentSchedule": "EVERY_MONTH"},"courtDecision": {"paymentOption": "IMMEDIATELY","paymentDate": "2019-03-20","instalmentAmount": "150","firstPaymentDate": "2019-03-20","paymentLength": "12","completionDate": "2020-03-20","paymentSchedule": "EVERY_MONTH"},"rejectionReason": "Rejection Reason ${RejectionReason}","disposableIncome": null,"decisionType": "COURT"},"responseType": "FULL_ADMISSION","responseAmount": "${ResponseAmount}","paymentDeclarationPaidDate": "2019-03-20","paymentDeclarationExplanation": "Explanation 001234","defendantPaymentIntention": {"paymentOption": "IMMEDIATELY","paymentDate": "2019-03-20","instalmentAmount": "150","firstPaymentDate": "2019-03-20","paymentLength": "12","completionDate": "2020-03-20","paymentSchedule": "EVERY_MONTH"},"defendantTimeLineEvents": []}}],"claimants": [{"id": null,"value": {"partyType": "INDIVIDUAL","partyName": "Mary Richards ${ClaimantsPartyName}","partyPhone": "790010010","partyEmail": "Claimant${ClaimantsPartyEmail}@confirmation.com","partyAddress": {"AddressLine1": null,"AddressLine2": null,"AddressLine3": null,"PostTown": null,"County": null,"PostCode": null,"Country": null},"partyCorrespondenceAddress": {"AddressLine1": null,"AddressLine2": null,"AddressLine3": null,"PostTown": null,"County": null,"PostCode": null,"Country": null},"representativeOrganisationName": "representative Organisation Name Test Org ${RepresentativeOrganisationName}","representativeOrganisationAddress": {"AddressLine1": null,"AddressLine2": null,"AddressLine3": null,"PostTown": null,"County": null,"PostCode": null,"Country": null},"representativeOrganisationPhone": "790010010","representativeOrganisationDxAddress": null,"representativeOrganisationEmail": "Org${SubmitterId}@confirmation.com","partyTitle": "Mr","partyDateOfBirth": "2002-03-20","partyBusinessName": "Test Org ${PartyBusinessName}","partyContactPerson": "Test KJ ${PartyContactPerson}","partyCompaniesHouseNumber": "${PartyCompaniesHouseNumber}"}}],"subjectName": "Subject Name ${SubjectName}","subjectType": "CLAIMANT","paymentId": "${PaymentId}","paymentAmount": "${PaymentAmount}","paymentReference": "RC-${PaymentReference1}-${PaymentReference2}-${PaymentReference3}-${PaymentReference4}","paymentStatus": "Success","paymentDateCreated": "2019-03-20"},"event": {"id": "IssueClaim","summary": "4th Page Check your answers - Event summary ${CaseSummaryText}","description": "4th Page Check your answers - Event description ${CaseDescriptionText}"},"event_token": """"+ "${eventToken}" + """","ignore_warning": false,"draft_id": null}""") + + + + + val CreateCMCCaseDataSCN = scenario("Create CMC Case Data").during(TotalRunDuration minutes) { + exec( + _.setAll( + ("SubmitterId", submitterId()), + ("ExternalId", externalId()), + ("FeeAmountInPennies", feeAmountInPennies()), + ("SotSignerName",sotSignerName()), + ("SotSignerRole",sotSignerRole()), + ("ClaimNum1",claimNum1()), + ("ClaimNum2",claimNum2()), + ("FeeCode",feeCode()), + ("FeeAccountNumber",feeAccountNumber()), + ("CaseSummaryText",caseSummaryText()), + ("CaseDescriptionText",caseDescriptionText()), + ("AmountBreakDown", amountBreakDown()), + ("TotalAmount",totalAmount()), + ("DefendantsPartyName",defendantsPartyName()), + ("RejectionReason",rejectionReason()), + ("ResponseAmount",responseAmount()), + ("ClaimantsPartyName", claimantsPartyName()), + ("ClaimantsPartyEmail", claimantsPartyEmail()), + ("RepresentativeOrganisationName", representativeOrganisationName()), + ("PartyBusinessName", partyBusinessName()), + ("PartyContactPerson", partyContactPerson()), + ("PartyCompaniesHouseNumber", partyCompaniesHouseNumber()), + ("SubjectName", subjectName()), + ("PaymentId", paymentId()), + ("PaymentAmount", paymentAmount()), + ("PaymentReference1", paymentReference1()), + ("PaymentReference2", paymentReference2()), + ("PaymentReference3", paymentReference3()), + ("PaymentReference4", paymentReference4()) + ) + ).exec( + //http("get create case event token") + http("TX01_CCD_CreateCaseEndpoint_CMC_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_CMC_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/data/CreateDIVCaseData.scala b/src/test/scala/uk/gov/hmcts/ccd/data/CreateDIVCaseData.scala new file mode 100644 index 0000000..469d578 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/data/CreateDIVCaseData.scala @@ -0,0 +1,142 @@ +package uk.gov.hmcts.ccd.data + +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 CreateDIVCaseData extends PerformanceTestsConfig { + + + private val rng: Random = new Random() + private def d8MarriagePetitionerName(): String = rng.alphanumeric.take(10).mkString + private def d8MarriageRespondentName(): String = rng.alphanumeric.take(10).mkString + private def d8PetitionerEmail(): String = rng.alphanumeric.take(10).mkString + private def d8caseReference(): Int = rng.nextInt(9999) + private def d8PetitionerPhoneNumber(): Int = rng.nextInt(99999999) + private def d8PetitionerFirstName(): String = rng.alphanumeric.take(10).mkString + private def d8PetitionerLastName(): String = rng.alphanumeric.take(10).mkString + private def d8RespondentFirstName(): String = rng.alphanumeric.take(10).mkString + private def d8RespondentLastName(): String = rng.alphanumeric.take(10).mkString + private def d8DerivedPetitionerCurrentFullName(): String = rng.alphanumeric.take(10).mkString + private def caseSummaryText(): String = rng.alphanumeric.take(20).mkString + private def caseDescriptionText(): String = rng.alphanumeric.take(30).mkString + private def burnid(): Int = rng.nextInt(99999999) + private def d8MarriageDate(): Int = rng.nextInt(999) + + + val randcaseType = new Random(System.currentTimeMillis()) + + val caseEventTypeValue = Array("CREATE") + + val caseTypeValue_random_index = randcaseType.nextInt(caseEventTypeValue.length) + + val EventId = caseEventTypeValue(caseTypeValue_random_index) + + def PickCaseType(): String = EventId + + + println("caseTypeText Value " + EventId) + println("caseTypeText Value " + PickCaseType()) + + var CreateCaseUrl = caseDataUrl(config.getString("createCaseDIVUrl")) + + println("create case url: " + CreateCaseUrl) + + //val D8MarriageDateYear = Array("2000","1990","1995","1980","1985","1970","1975") + + //val d8MarriageDate_rand = new Random(System.currentTimeMillis()) + // val D8MarriageDateYear_random_index = d8MarriageDate_rand.nextInt(D8MarriageDateYear.length) + // val D8MarriageDateYearVal = D8MarriageDateYear(D8MarriageDateYear_random_index) + // def d8MarriageDate(): String = D8MarriageDateYearVal + + val caseTypeValue = Array("DIVORCE") + //val caseTypeValue = Array("ATCASETYPE1","ATCASETYPE2","ATCASETYPE3","ATCASETYPE4") + val jurisdictionsValue = Array("DIVORCE") + + + 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":{"D8legalProcess":"divorce","createdDate":"2018-10-10","D8ScreenHasMarriageBroken":"No","D8ScreenHasRespondentAddress":"Yes","D8ScreenHasMarriageCert":"No","D8ScreenHasPrinter":"Yes","D8DivorceWho":"husband","D8MarriageIsSameSexCouple":"No","D8InferredPetitionerGender":"male","D8InferredRespondentGender":"female","D8MarriedInUk":"Yes","D8CertificateInEnglish":"Yes","D8CertifiedTranslation":"No","D8MarriagePlaceOfMarriage":"London","D8CountryName":"UK","D8PetitionerNameDifferentToMarriageCert":"No","D8PetitionerPhoneNumber":"07${D8PetitionerPhoneNumber}","D8DerivedPetitionerCurrentFullName":"Robert Del monte ${D8DerivedPetitionerCurrentFullName}","D8PetitionerNameChangedHow":["marriageCertificate","deedPoll"],"D8PetitionerNameChangedHowOtherDetails":"Namechangedwithnoreason","D8PetitionerContactDetailsConfidential":"keep","D8PetitionerHomeAddress":{"AddressLine1":"14AvenueRoad","AddressLine2":"RevenueLane","AddressLine3":null,"PostCode":"W45XR","PostTown":"Chiswick","County":"Middlesex","Country":"UK"},"D8DerivedPetitionerHomeAddress":"Sameasabove","D8PetitionerCorrespondenceAddress":{"AddressLine1":null,"AddressLine2":null,"AddressLine3":null,"PostCode":null,"PostTown":null,"County":null,"Country":null},"D8DerivedPetitionerCorrespondenceAddr":"Sameasabove","D8PetitionerCorrespondenceUseHomeAddress":"Yes","D8RespondentNameAsOnMarriageCertificate":"Yes","D8DerivedRespondentCurrentName":"Dimarta","D8DerivedRespondentSolicitorDetails":"NotKnown","D8RespondentHomeAddress":{"AddressLine1":"15AvenueRoad","AddressLine2":"RevenueLane","AddressLine3":null,"PostCode":"W45XR","PostTown":"Chiswick","County":"Middlesex","Country":"UK"},"D8DerivedRespondentHomeAddress":"sameasabove","D8RespondentCorrespondenceAddress":{"AddressLine1":null,"AddressLine2":null,"AddressLine3":null,"PostCode":null,"PostTown":null,"County":null,"Country":null},"D8DerivedRespondentCorrespondenceAddr":"sameasabove","D8RespondentSolicitorName":"RickSick","D8RespondentSolicitorCompany":"DivorcedSolicitors","D8RespondentCorrespondenceSendToSol":"Yes","D8RespondentSolicitorAddress":{"AddressLine1":"16AvenueRoad","AddressLine2":"RevenueLane","AddressLine3":null,"PostCode":"W45XR","PostTown":"Chiswick","County":"Middlesex","Country":"UK"},"D8DerivedRespondentSolicitorAddr":"sameasabove","D8RespondentCorrespondenceUseHomeAddress":"Yes","D8RespondentKnowsHomeAddress":"Yes","D8RespondentLivesAtLastAddress":"No","D8LivingArrangementsTogetherSeparated":"Yes","D8LivingArrangementsLastLivedTogether":"No","D8LivingArrangementsLiveTogether":"Yes","D8LivingArrangementsLastLivedTogethAddr":{"AddressLine1":null,"AddressLine2":null,"AddressLine3":null,"PostCode":null,"PostTown":null,"County":null,"Country":null},"D8DerivedLivingArrangementsLastLivedAddr":"sameasabove","D8LegalProceedings":"No","D8LegalProceedingsRelated":["property","marriage"],"D8LegalProceedingsDetails":null,"D8ReasonForDivorce":"separation-2-years","D8DerivedStatementOfCase":null,"D8ReasonForDivorceBehaviourDetails":null,"D8ReasonForDivorceDesertionDate":"2019-12-12","D8ReasonForDivorceDesertionAgreed":"No","D8ReasonForDivorceDesertionDetails":null,"D8ReasonForDivorceSeperationDate":"2017-10-10","D8ReasonForDivorceAdultery3rdPartyFName":null,"D8ReasonForDivorceAdultery3rdPartyLName":null,"D8DerivedReasonForDivorceAdultery3dPtyNm":null,"D8ReasonForDivorceAdulteryDetails":"notknown","D8ReasonForDivorceAdulteryKnowWhen":"Yes","D8ReasonForDivorceAdulteryWishToName":"No","D8ReasonForDivorceAdulteryKnowWhere":"Yes","D8ReasonForDivorceAdulteryWhereDetails":"notknown","D8ReasonForDivorceAdulteryWhenDetails":"notknown","D8ReasonForDivorceAdulteryIsNamed":"Yes","D8ReasonForDivorceAdultery3rdAddress":{"AddressLine1":"17AvenueRoad","AddressLine2":"RevenueLane","AddressLine3":null,"PostCode":"W45XR","PostTown":"Chiswick","County":"Middlesex","Country":"UK"},"D8DerivedReasonForDivorceAdultery3rdAddr":"sameasabove","D8FinancialOrder":"No","D8FinancialOrderFor":["petitioner"],"D8HelpWithFeesAppliedForFees":"Yes","D8HelpWithFeesReferenceNumber":null,"D8PaymentMethod":"card","D8DivorceCostsClaim":"No","D8DivorceIsNamed":"No","D8DivorceClaimFrom":["respondent","correspondent"],"D8JurisdictionConfidentLegal":"Yes","D8JurisdictionConnection":["A","C","E","F"],"D8JurisdictionLastTwelveMonths":"Yes","D8JurisdictionPetitionerDomicile":"No","D8JurisdictionPetitionerResidence":"Yes","D8JurisdictionRespondentDomicile":"No","D8JurisdictionRespondentResidence":"Yes","D8JurisdictionHabituallyResLast6Months":"No","Payments":[],"D8DocumentsUploaded":[],"D8DocumentsGenerated":[],"D8StatementOfTruth":"No","D8Cohort":"onlineSubmissionPrivateBeta","AosLetterHolderId":null,"D8caseReference":"EZ12D8${D8caseReference}","D8DivorceUnit":"eastMidlands","D8MarriageDate":"1${D8MarriageDate}-10-10","D8MarriagePetitionerName":"Francis Dela Cruz ${D8MarriagePetitionerName}","D8MarriageRespondentName":"Cruz Dela Francis ${D8MarriageRespondentName}","D8PetitionerFirstName":"Della ${D8PetitionerFirstName}","D8PetitionerLastName":"Francis ${D8PetitionerLastName}","D8PetitionerEmail":"dela_${D8PetitionerEmail}@francis.com","D8RespondentFirstName":"Dimello ${D8RespondentFirstName}","D8RespondentLastName":"Best ${D8RespondentLastName}","D8HelpWithFeesNeedHelp":"Yes","dueDate":"2019-10-10","SolPaymentHowToPay":"feePayByAccount","burnID":"10${burnID}","receivedDate":"2019-01-10"},"event":{"id":"create","summary": "Performance Testing Event summary ${CaseSummaryText}","description": "Performance Testing Event description ${CaseDescriptionText}"},"event_token": """" + "${eventToken}" + """","ignore_warning":false,"draft_id":null}""") + + + val token = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl) + + + val CreateDIVCaseDataSCN = scenario("Create DIV Case Data").during(TotalRunDuration minutes) { + exec( + _.setAll( + ("D8MarriagePetitionerName", d8MarriagePetitionerName()), + ("D8MarriageRespondentName", d8MarriageRespondentName()), + ("D8caseReference", d8caseReference()), + ("D8PetitionerPhoneNumber",d8PetitionerPhoneNumber()), + ("D8PetitionerFirstName",d8PetitionerFirstName()), + ("D8PetitionerLastName",d8PetitionerLastName()), + ("D8DerivedPetitionerCurrentFullName",d8DerivedPetitionerCurrentFullName()), + ("CaseSummaryText",caseSummaryText()), + ("CaseDescriptionText",caseDescriptionText()), + ("D8PetitionerEmail", d8PetitionerEmail()), + ("burnID",burnid()), + ("D8RespondentFirstName",d8RespondentFirstName()), + ("D8RespondentLastName",d8RespondentLastName()), + ("PickCaseEventType",PickCaseType()), + ("D8MarriageDate", d8MarriageDate()) + ) + ).exec( + //http("get create case event token") + http("TX01_CCD_CreateCaseEndpoint_Divorce_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_Divorce_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/data/CreateProbateGrantCaseData.scala b/src/test/scala/uk/gov/hmcts/ccd/data/CreateProbateGrantCaseData.scala new file mode 100644 index 0000000..5069795 --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/data/CreateProbateGrantCaseData.scala @@ -0,0 +1,143 @@ +package uk.gov.hmcts.ccd.data + +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 CreateProbateGrantCaseData extends PerformanceTestsConfig { + + + private val rng: Random = new Random() + private def applicationFeePaperForm(): Int = rng.nextInt(9999999) + private def feeForCopiesPaperForm(): Int = rng.nextInt(99999) + private def totalFeePaperForm(): Int = rng.nextInt(99999999) + private def paymentReferenceNumberPaperform(): Int = rng.nextInt(99999999) + private def primaryApplicantForenamesTXT(): String = rng.alphanumeric.take(10).mkString + private def primaryApplicantForenames(): Int = rng.nextInt(99999999) + private def primaryApplicantSurnameTXT(): String = rng.alphanumeric.take(10).mkString + private def primaryApplicantSurname(): Int = rng.nextInt(99999999) + + private def primaryApplicantPhoneNumber(): Int = rng.nextInt(999999) + private def primaryApplicantSecondPhoneNumber(): Int = rng.nextInt(999999) + private def primaryApplicantEmailAddress(): Int = rng.nextInt(999999) + private def primaryApplicantAddress(): Int = rng.nextInt(9999) + private def deceasedForenames(): Int = rng.nextInt(999999) + private def deceasedSurname(): Int = rng.nextInt(999999) + private def deceasedAddress(): Int = rng.nextInt(9999) + private def ukEstateValue(): Int = rng.nextInt(99999999) + private def ihtGrossValue(): Int = rng.nextInt(99999999) + + + private def caseSummaryText(): String = rng.alphanumeric.take(20).mkString + private def caseDescriptionText(): String = rng.alphanumeric.take(30).mkString + + + val randcaseType = new Random(System.currentTimeMillis()) + val caseEventTypeValue = Array("applyForGrant") + 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("createCaseProbateGrantApplicationUrl")) + + println("create case url: " + CreateCaseUrl) + + val caseTypeValue = Array("GrantOfRepresentation") + + val jurisdictionsValue = Array("PROBATE") + + 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 CreateProbateGrantCaseDataEventBodyMain =StringBody("""{"data": {"registryLocation": "London","applicationType": "Personal","applicationSubmittedDate": "2018-12-12","caseType": "gop","extraCopiesOfGrant": "1","outsideUKGrantCopies": "1","applicationFeePaperForm": "${ApplicationFeePaperForm}","feeForCopiesPaperForm": "${FeeForCopiesPaperForm}","totalFeePaperForm": "${TotalFeePaperForm}","paperPaymentMethod": "debitOrCredit","paymentReferenceNumberPaperform": "PAYREF:${PaymentReferenceNumberPaperform}","primaryApplicantForenames": "PA application First Name ${PrimaryApplicantForenamesTXT} ${PrimaryApplicantForenames}","primaryApplicantSurname": "PA application Last Name ${PrimaryApplicantSurnameTXT} ${PrimaryApplicantSurname}","primaryApplicantPhoneNumber": "02920${PrimaryApplicantPhoneNumber}","primaryApplicantSecondPhoneNumber": "02020${PrimaryApplicantSecondPhoneNumber}","primaryApplicantEmailAddress": "PAApplicant${PrimaryApplicantEmailAddress}@confirmation.com","primaryApplicantAddress": {"AddressLine1": "${PrimaryApplicantAddress} Villa Road","AddressLine2": "","AddressLine3": "Stanway","PostTown": "Colchester","County": "","PostCode": "CO3 0RN","Country": "United Kingdom"},"primaryApplicantRelationshipToDeceased": "partner","primaryApplicantHasAlias": "No","primaryApplicantIsApplying": "Yes","otherExecutorExists": "No","notifiedApplicants": "No","adopted": "No","boDeceasedTitle": "Mr","deceasedForenames": "Deceased FirstName ${DeceasedForenames}","deceasedSurname": "Deceased Last ${DeceasedSurname}","boDeceasedHonours": "OBE","deceasedAddress": {"AddressLine1": "${DeceasedAddress} Landmark Place","AddressLine2": "Churchill Way","AddressLine3": "","PostTown": "Cardiff","County": "","PostCode": "CF10 2HT","Country": "United Kingdom"},"deceasedDateOfBirth": "1945-03-21","deceasedDateOfDeath": "2016-06-30","deceasedAnyOtherNames": "No","deceasedMartialStatus": "marriedCivilPartnership","foreignAsset": "No","willExists": "No","deceasedEnterMarriageOrCP": "No","dateOfDivorcedCPJudicially": "2018-12-12","courtOfDecree": "London","willGiftUnderEighteen": "Yes","spouseOrPartner": "Yes","applyingAsAnAttorney": "No","deceasedDomicileInEngWales": "No","domicilityCountry": "UK","ukEstate": [{"id": null,"value": {"item": "House","value": "${UkEstateValue}"}}],"domicilityIHTCert": "No","ihtFormCompletedOnline": "No","ihtFormId": "IHT205","ihtGrossValue": "${IhtGrossValue}","ihtNetValue": "${IhtGrossValue}"},"event": {"id": "applyForGrant","summary": "Performance Testing Event summary ${CaseSummaryText}","description": "Performance Testing Event description ${CaseDescriptionText}"},"event_token": """"+ "${eventToken}" + """","ignore_warning": false,"draft_id": null}""") + + + val token = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl) + + + val CreateProbateGrantCaseDataSCN = scenario("Create Probate Grant Application Case Data").during(TotalRunDuration minutes) { + exec( + _.setAll( + ("ApplicationFeePaperForm", applicationFeePaperForm()), + ("FeeForCopiesPaperForm", feeForCopiesPaperForm()), + ("TotalFeePaperForm", totalFeePaperForm()), + ("PaymentReferenceNumberPaperform",paymentReferenceNumberPaperform()), + ("PrimaryApplicantForenamesTXT",primaryApplicantForenamesTXT()), + ("PrimaryApplicantForenames",primaryApplicantForenames()), + ("PrimaryApplicantSurnameTXT",primaryApplicantSurnameTXT()), + ("PrimaryApplicantSurname",primaryApplicantSurname()), + ("CaseSummaryText",caseSummaryText()), + ("CaseDescriptionText",caseDescriptionText()), + ("PrimaryApplicantPhoneNumber", primaryApplicantPhoneNumber()), + ("PrimaryApplicantSecondPhoneNumber",primaryApplicantSecondPhoneNumber()), + ("PrimaryApplicantEmailAddress",primaryApplicantEmailAddress()), + ("PrimaryApplicantAddress",primaryApplicantAddress()), + ("PickCaseEventType",PickCaseType()), + ("DeceasedForenames", deceasedForenames()), + ("DeceasedSurname", deceasedSurname()), + ("DeceasedAddress", deceasedAddress()), + ("UkEstateValue", ukEstateValue()), + ("IhtGrossValue", ihtGrossValue()) + ) + ).exec( + //http("get create case event token") + http("TX01_CCD_CreateCaseEndpoint_Probate_ApplyGrantApplication_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_Probate_ApplyGrantApplication_createcasedata") + .post(CreateCaseUrl) + .body(CreateProbateGrantCaseDataEventBodyMain).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/data/CreateSSCSCaseData.scala b/src/test/scala/uk/gov/hmcts/ccd/data/CreateSSCSCaseData.scala new file mode 100644 index 0000000..dea03bf --- /dev/null +++ b/src/test/scala/uk/gov/hmcts/ccd/data/CreateSSCSCaseData.scala @@ -0,0 +1,132 @@ +package uk.gov.hmcts.ccd.data + +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 CreateSSCSCaseData extends PerformanceTestsConfig { + + // val EventId = "applyForGrant" + private val rng: Random = new Random() + private def generatedSurname(): String = rng.alphanumeric.take(10).mkString + private def generatedNino(): Int = rng.nextInt(99999999) + private def caseReference(): Int = rng.nextInt(99999999) + private def generatedEmail(): String = rng.alphanumeric.take(10).mkString + private def generatedMobile(): Int = rng.nextInt(99999999) + private def generatedDOB(): Int = rng.nextInt(99) + private def caseSummaryText(): String = rng.alphanumeric.take(20).mkString + private def caseDescriptionText(): String = rng.alphanumeric.take(30).mkString + private def appellantfirstName(): String = rng.alphanumeric.take(10).mkString + private def appellantmiddleName(): String = rng.alphanumeric.take(10).mkString + private def appellantlastName(): String = rng.alphanumeric.take(10).mkString + private def appointeefirstName(): String = rng.alphanumeric.take(10).mkString + private def appointeemiddleName(): String = rng.alphanumeric.take(10).mkString + private def appointeelastName(): String = rng.alphanumeric.take(10).mkString + private def addressNumber(): Int = rng.nextInt(99) + + + // val EventId = "CREATE" + val randcaseType = new Random(System.currentTimeMillis()) + val caseEventTypeValue = Array("appealCreated") + 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("CreateSSCSCaseData caseTypeText Value " + EventId) + println("CreateSSCSCaseData caseTypeText Value " + PickCaseType()) + + var CreateCaseUrl = caseDataUrl(config.getString("createCaseSSCSUrl")) + + println("CreateSSCSCaseData create case url: " + CreateCaseUrl) + + val caseTypeValue = Array("Benefit") + //val caseTypeValue = Array("ATCASETYPE1","ATCASETYPE2","ATCASETYPE3","ATCASETYPE4") + val jurisdictionsValue = Array("SSCS") + + 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("CreateSSCSCaseData 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("CreateSSCSCaseData create case url: " + CreateCaseUrl) + println("CreateSSCSCaseData create case token url: " + CreateCaseTokenUrl) + + val EventBodyMain =StringBody("""{"data":{"appeal":{"receivedVia":"Online","mrnDetails":{"dwpIssuingOffice":"DWP101010","mrnDate":"2010-12-10","mrnLateReason":"Notknown","mrnMissingReason":"NoReason"},"appellant":{"name":{"title":"Mr","firstName":"Jooles ${AppellantfirstName}","middleName":"Rodriguez ${AppellantmiddleName}","lastName":"Fernandez ${AppellantlastName}"},"identity":{"dob":"19${GeneratedDOB}-11-11","nino":"SGD83241"},"address":{"line1":"${AddressNumber} AvenueRoad","line2":"RevenueLane","line3":null,"town":"Chiswick","county":"Middlesex","postcode":"W45XR","country":"UK"},"contact":{"phone":"77${GeneratedMobile}","mobile":"88${GeneratedMobile}","email":"noreason_${GeneratedEmail}@everyreason.com"},"isAppointee":"Yes","appointee":{"name":{"title":"Mrs","firstName":"Davis ${AppointeefirstName}","middleName":"Novis ${AppointeemiddleName}","lastName":"Data ${AppointeelastName}"},"identity":{"dob":"19${GeneratedDOB}-01-01","nino":"SH656437"},"address":{"line1":"${AddressNumber} AvenueRoad","line2":"RevenueLane","line3":null,"town":"Chiswick","county":"Middlesex","postcode":"W45XR","country":"UK"},"contact":{"phone":"09${GeneratedMobile}","mobile":"08${GeneratedMobile}","email":"revenue_${GeneratedEmail}@jas.com"}},"isAddressSameAsAppointee":"Yes"},"benefitType":{"code":"B0120202","description":"Benefit"},"hearingType":"domiciliary","hearingOptions":{"wantsToAttend":"Yes","wantsSupport":"Yes","languageInterpreter":"No","arrangements":["signLanguageInterpreter"],"scheduleHearing":"No","other":"Otherinformation","signLanguageType":"wer"},"appealReasons":{"reasons":[],"otherReasons":null},"supporter":{"name":{"title":"Mr","firstName":"Data","middleName":"less","lastName":"lastname"},"contact":{"phone":"09${GeneratedMobile}","mobile":"07${GeneratedMobile}","email":"house_${GeneratedEmail}@revenue.com"}},"rep":{"hasRepresentative":"No"},"signer":null},"regionalProcessingCenter":{"name":null,"address1":"${AddressNumber}AvenueRoad","address2":"RevenueRoad","address3":null,"address4":null,"postcode":"W45XR","city":"Chiswick","phoneNumber":"0902340982","faxNumber":"203480284"},"panel":{"assignedTo":"MrJudge","medicalMember":"Medico","disabilityQualifiedMember":"none"},"caseReference":"1${CaseReference}","caseCreated":"19${GeneratedDOB}-11-10","region":"London","generatedNino":"S1${GeneratedNino}","generatedSurname":"Bakerloo ${GeneratedSurname}","generatedEmail":"bakerrloo_${GeneratedEmail}@bakerloo.com","generatedMobile":"07${GeneratedMobile}","generatedDOB":"19${GeneratedDOB}-10-10","evidencePresent":"Yes"},"event":{"id":"appealCreated","summary":"Performance Testing SSCS summary ${CaseSummaryText}","description":"Performance Testing SSCS Event description ${CaseDescriptionText}"},"event_token":""""+"${eventToken}"+"""","ignore_warning":false,"draft_id":null}""") + + val token = CcdTokenGenerator.generateGatewayS2SToken() + val userToken = CcdTokenGenerator.generateWebUserToken(CreateCaseUrl) + + + val CreateSSCSCaseDataSCN = scenario("Create SSCS Case Data").during(TotalRunDuration minutes) { + exec( + _.setAll( + ("GeneratedSurname", generatedSurname()), + ("GeneratedNino", generatedNino()), + ("CaseReference", caseReference()), + ("GeneratedEmail",generatedEmail()), + ("GeneratedMobile",generatedMobile()), + ("GeneratedDOB",generatedDOB()), + ("CaseSummaryText",caseSummaryText()), + ("CaseDescriptionText",caseDescriptionText()), + ("AppellantfirstName", appellantfirstName()), + ("AppellantmiddleName", appellantmiddleName()), + ("AppellantlastName", appellantlastName()), + ("AppointeefirstName", appointeefirstName()), + ("AppointeemiddleName", appointeemiddleName()), + ("AppointeelastName", appointeelastName()), + ("AddressNumber",addressNumber()), + ("PickCaseEventType",PickCaseType()) + ) + ).exec( + //http("get create case event token") + http("TX21_CCD_CreateCaseEndpoint_SSCS_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("TX22_CCD_CreateCaseEndpoint_SSCS_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/simulation/CCDPTSimulation.scala b/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDPTSimulation.scala index c10b0a6..5e778e6 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,8 @@ package uk.gov.hmcts.ccd.simulation import io.gatling.core.Predef._ import uk.gov.hmcts.ccd.corecasedata.scenarios._ +import uk.gov.hmcts.ccd.data._ + import scala.concurrent.duration._ @@ -13,12 +15,12 @@ class CCDPTSimulation extends CCDSimulation { 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)) + //CreateCMCCaseData.CreateCMCCaseDataSCN.inject(rampUsers(100) over(5 minutes)), + //CreateSSCSCaseData.CreateSSCSCaseDataSCN.inject(rampUsers(1) over(1 minutes)), + CreateDIVCaseData.CreateDIVCaseDataSCN.inject(rampUsers(1) over(1 minutes)) + //ProdSSCSSearchWorkBasketIssue.ProdSSCSSearchWorkBasketIssueSCN.inject(rampUsers(300) over(5 minutes)) ) + setup() -} +} \ No newline at end of file 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..610d0be 100644 --- a/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDSimulation.scala +++ b/src/test/scala/uk/gov/hmcts/ccd/simulation/CCDSimulation.scala @@ -32,12 +32,12 @@ abstract class CCDSimulation extends Simulation with PerformanceTestsConfig { def setup() = setUp(scenarios()) .protocols(getHttpConf()) - .throttle( - reachRps(ReachRPSTarget) in (ReachRPSDuration minutes), + /* .throttle( + reachRps(ReachRPSTarget) in (ReachRPSDuration seconds), 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/util/CcdTokenGenerator.scala b/src/test/scala/uk/gov/hmcts/ccd/util/CcdTokenGenerator.scala index b2f97d0..7968e7a 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,11 @@ object CcdTokenGenerator extends PerformanceTestsConfig with SpringApplicationCo } private def roleFor(url: String) = { - val result = "caseworker" + parseJurisdiction(url).map(j => s"-$j").getOrElse("") + // val result = "caseworker-cmc,caseworker,caseworker-cmc-loa1,caseworker-loa1" + parseJurisdiction(url).map(j => s"-$j").getOrElse("") + val result = "caseworker,caseworker-divorce,caseworker-probate,caseworker-autotest1,caseworker-sscs,caseworker-divorce-courtadmin,caseworker-loa1,caseworker-divorce-loa1,caseworker-autotest1-loa1,caseworker-sscs-loa1,caseworker-divorce-courtadmin-loa1" + 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("") + //val result = "caseworker,caseworker-autotest1,caseworker-autotest1-solicitor,,caseworker-autotest2,caseworker-autotest2-solicitor,caseworker,caseworker-loa1,caseworker-autotest1-loa1,caseworker-autotest1-solicitor-loa1,caseworker-loa1,caseworker,caseworker-autotest1,caseworker-autotest1-solicitor,,caseworker-autotest2,caseworker-autotest2-solicitor,caseworker,caseworker-loa1,caseworker-autotest1-loa1,caseworker-autotest1-solicitor-loa1,caseworker-loa1-loa0" + 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") }