false true false useNewTerminal TRUE = transactionIsOpened 0 = pollingRetries 1 = JWT_validFor 0 = JWT_expiresAt 0 = testRunTime ${__time(yyyy-MM-dd_HH-mm-ss)} = refreshToken FALSE = environment staging = staging OR AWS OR Frankfurt trnsTime 0 = terminalDeclinePercentage 2 = debug FALSE TRUE OR FALSE = terminalDecline FALSE = , UTF-8 C:/Jmeter/Data_Input/environment_${environment}.csv true false true shareMode.all false jwtServiceUrl,provisionerServiceUrl,paymentServiceUrl startnextloop false 1 1 1 false true groovy true import org.apache.jmeter.services.FileServer; String my_testPlanName = FileServer.getFileServer().getScriptName(); log.info("\n\n\n\n" + " Jmeter scripted used : " + my_testPlanName + "\n Debug set to " + vars.get("debug") + "\n Environment set to " + vars.get("environment") + "\n\n\n"); startnextloop false 3 3 1 false 4000 true ${useNewTerminal} false true , UTF-8 C:/Jmeter/Data_Input/devices_Lon.Fake.SV.csv true false true shareMode.group false deviceId groovy true vars.put("refreshToken", "TRUE"); vars.put("useNewTerminal", "FALSE"); def my_debug = vars.get("debug"); def My_deviceId = vars.get("deviceId"); def My_JWT_validFor = "${__Random(15,45)}"; vars.put("JWT_validFor", My_JWT_validFor); //Debug if(my_debug.equals("TRUE")){ log.info("YY JWT_ValidFor value for device Id " + My_deviceId + " is " + My_JWT_validFor ); } ${refreshToken} false true ${jwtServiceUrl} https token/${deviceId} GET true false true false idToken $.idToken 1 NOTFOUND false idToken idToken\": \"(.+?)\" $1$ NOTFOUND 1 200 Assertion.response_code false 8 $.idToken false false false true ${provisionerServiceUrl} https /session/start POST true false true false true Content-Type application/json Authorization Bearer ${idToken} false sessionId sessionID\":\"(.+?)\" $1$ NOTFOUND 1 false sessionSuccess success\":(.+?),\" $1$ NOTFOUND 1 sessionId $.sessionID $.sessionID false false false true 200 Assertion.response_code false 8 ${__setProperty(sessionId,${sessionID})} ${__setProperty(idToken,${idToken})} false 500 groovy true def my_debug = vars.get("debug"); //Debug - Start if(my_debug.equals("TRUE")){ log.info("YY Start session details for " + vars.get("deviceId") + " : response code : " + prev.getResponseCode() + " : Response Time is: " + prev.getTime().toString() + " : Connect Time is: " + prev.getConnectTime().toString() + " : Latency is: " + prev.getLatency().toString() + " : full response " + prev.getResponseDataAsString()); } //Debug - end ${__groovy(!"${sessionSuccess}".equals("true"))} false true groovy true def my_debug = vars.get("debug"); //Debug starts if(my_debug.equals("TRUE")){ log.info("YY ERR Initialize failed sessionSuccess = " + vars.get("sessionSuccess") + " for device " + vars.get("deviceId") ); } //Debug ends vars.put("refreshToken", "TRUE"); ctx.setRestartNextLoop(true); groovy false // To stop initialization on next iteration long My_JWT_expiresAt = ${__timeShift(,,PT${JWT_validFor}M,,)}; vars.put("JWT_expiresAt", My_JWT_expiresAt.toString()); vars.put("refreshToken", "FALSE"); def my_debug = vars.get("debug"); //Debug if(my_debug.equals("TRUE")){ def my_deviceId = vars.get("deviceId"); log.info("YY Intialization stage for :" + my_deviceId + "JWT_expiresAt = " + My_JWT_expiresAt ); } , UTF-8 C:/Jmeter/Data_Input/transactions.VisaCreditOnly.csv true false true shareMode.all false transactionAmount,additionalData,ksn,transaction false false ${paymentServiceUrl} https /transaction/start?sessionID=${sessionId} POST true false true false Content-Type application/json Authorization Bearer ${idToken} false transactionId transactionId\":\"(.+?)\" $1$ NOT_FOUND 1 200 Assertion.response_code false 8 false startTransactionStatus transactionStatus\":\"(.+?)\" $1$ NOT_FOUND 1 false startTrnMessage message\":\"(.+?)\" $1$ NOT_FOUND 1 300 groovy true def my_deviceId = vars.get("deviceId"); def my_startTrxStatus = vars.get("startTransactionStatus"); def my_debug = vars.get("debug"); if(!my_startTrxStatus.equals("initialised") && !my_startTrxStatus.equals("transaction-exists")){ log.info("\n YY ERR Star Trx was not initialised for : " + my_deviceId + "\n : response code was " + prev.getResponseCode() + " : Thread name : " + prev.getThreadName() + "\n : response message received was " + prev.getResponseDataAsString()); vars.put("refreshToken", "TRUE"); sleep(500); ctx.setRestartNextLoop(true); } //Debug - Start if(my_debug.equals("TRUE")){ log.info("YY Start trx details for " + my_deviceId + "\n : response code : " + prev.getResponseCode() + " : Response Time is: " + prev.getTime().toString() + " : Connect Time is: " + prev.getConnectTime().toString() + " : Latency is: " + prev.getLatency().toString() + " : Thread name : " + prev.getThreadName() + "\n : full response " + prev.getResponseDataAsString()); } //Debug - end ${__groovy("${startTransactionStatus}".equals("transaction-exists"))} false true ${paymentServiceUrl} https /transaction/${transactionId}?sessionID=${sessionId} DELETE true false true false Content-Type application/json Authorization Bearer ${idToken} true // Debug start def my_deviceId = vars.get("deviceId"); def my_delete_txn_response = prev.getResponseDataAsString(); log.info("YY ERR Deleted Open started trx for :" + my_deviceId + ": delete trx response was :" + my_delete_txn_response + ": going to sleep for 5 sec" + ": setting startTransactionStatus to \"null\""); // debug finish vars.put("startTransactionStatus","null") sleep(5000); vars.put("useNewTerminal", "FALSE"); ctx.setRestartNextLoop(true); groovy ${debug} false true false true false true false {"cashbackAmount":0,"gratuityAmount":0,"transactionAmount":${transactionAmount},"transactionType":"purchase", "additionalData":"${additionalData}","encrypted":true,"ksn":"${ksn}","paxEntryMode":2,"transaction":"${transaction}","transactionId":"${transactionId}"} = ${paymentServiceUrl} https /transaction/finish?sessionID=${sessionId} POST true false true false Content-Type application/json Authorization Bearer ${idToken} 200 408 204 Assertion.response_code true 40 finishTransactionStatus $.transactionStatus Transaction failure has occurred Assertion.response_data false 6 1 18 300 18 18 4500 false finishMessage message\":\"(.+?)\" £1£ NOT_FOUND 1 false def my_deviceId = vars.get("deviceId"); def my_debug = vars.get("debug"); String my_string = "${__time(yyyy-MM-dd)}" + "T" +"${__time(HH:mm:ss)}" + "Z" vars.put("trnsTime", my_string); if(my_debug.equals("TRUE")){ log.info("YY Terminal delete trnsTime for " + my_deviceId + " is " + my_string); } groovy groovy true def my_finishMessage = vars.get("finishMessage"); def my_debug = vars.get("debug"); def my_deviceId = vars.get("deviceId"); if(my_finishMessage.equals("Unauthorized")){ log.info("YY ERR finish trx was unaurthorized for TID :" + my_deviceId + "\n Response Code recieved " + prev.getResponseCode() + " : Thread name " + prev.getThreadName() + " : Response Time is: " + prev.getTime().toString() + " : Connect Time is: " + prev.getConnectTime().toString() + " : Latency is: " + prev.getLatency().toString() + "\n: going to sleep for 5 sec, restarting iteration and refreshing token" + " : response message received was " + prev.getResponseDataAsString() ); sleep(500); vars.put("refreshToken", "TRUE"); ctx.setRestartNextLoop(true); } //Something went wrong def my_responseCode = prev.getResponseCode(); if (my_responseCode.toInteger() > 299){ log.info("\n\n Bad response code for finish trx for " + my_deviceId + " : response code of " + prev.getResponseCode() + " : Response Time is: " + prev.getTime().toString() + " : Connect Time is: " + prev.getConnectTime().toString() + " : Latency is: " + prev.getLatency().toString() + "\n : and response was " + prev.getResponseDataAsString()); } // Debug start if( my_debug.equals("TRUE")){ def my_finishTransactionStatus = vars.get("finishTransactionStatus"); log.info("YY Finish trx details for " + my_deviceId + "\n with transactionStatus of " + my_finishTransactionStatus + " : response code of " + prev.getResponseCode() + " : Response Time is: " + prev.getTime().toString() + " : Connect Time is: " + prev.getConnectTime().toString() + " : Latency is: " + prev.getLatency().toString() + "\n : and response was " + prev.getResponseDataAsString()); } // Debug finish sleep(500); groovy true def my_terminalDeclinePercentage = vars.get("terminalDeclinePercentage"); def my_random = Math.random()*100; def my_randomInteger = my_random.round(); def my_debug = vars.get("debug"); if(my_terminalDeclinePercentage.toInteger() > my_randomInteger.toInteger()){ if(my_debug.equals("TRUE")){ log.info("YY Setting doTerminalDecline to TRUE, terminal Decline Percentage was " + my_terminalDeclinePercentage + " random Integer was " + my_randomInteger ); } vars.put("terminalDecline", "TRUE"); } ${terminalDecline} false true true false {"transaction_type":"purchase","reason_code":"coe:cardremoved","terminal_time":"${trnsTime}"} = ${paymentServiceUrl} https /transaction/terminaldecline/${transactionId}?sessionID=${sessionId} POST true false true false Content-Type application/json Authorization Bearer ${idToken} 200 408 204 Assertion.response_code true 40 transactionStatus $.transactionStatus Transaction failure has occurred Assertion.response_data false 6 true def my_debug = vars.get("debug"); def my_deviceId = vars.get("deviceId"); vars.put("finishTransactionStatus", "complete"); vars.put("terminalDecline", "FALSE"); //Debug start if(my_debug.equals("TRUE")){ log.info("YY Completed declined transaction for" + my_deviceId); } //Debug finished groovy true def My_string = vars.get("finishTransactionStatus"); if (My_string.equals("complete")) { vars.put("transactionIsOpened", "0"); }else{ vars.put("transactionIsOpened", "1"); } groovy ${__groovy( ${transactionIsOpened} == 1 && ${pollingRetries} < 60) } false true ${paymentServiceUrl} https /transaction/${transactionId}/result?sessionID=${sessionId} GET true false true false used after Complete Transaction Async Content-Type application/json Authorization Bearer ${idToken} 500 Transaction failure has occurred Assertion.response_data false 6 transactionStatus $.transactionStatus false foundPollingError Transaction failure has occurred $1$ NOT_FOUND 1 true def My_string = vars.get("transactionStatus"); def my_debug = vars.get("debug"); def my_deviceId = vars.get("deviceId"); def my_pollingRetries = vars.get("pollingRetries"); def My_number = vars.get("pollingRetries").toInteger(); //convert to int type def Increment = My_number + 1; if (My_string.equals("complete")) { vars.put("transactionIsOpened", "0"); vars.put("pollingRetries", "0"); }else{ vars.put("transactionIsOpened", "1"); } vars.put("pollingRetries", Increment.toString()); if(my_debug.equals("TRUE")){ log.info("YY Entered polling for deviceID " + my_deviceId + " current polling attempt is " + my_pollingRetries); } groovy ${__groovy("${foundPollingError}".equals("Transaction failure has occurred"))} false true groovy true // Debug Start log.info("YY ERR found during polling " + vars.get("deviceId") + " response code was " + prev.getResponseCode() + " response was " + prev.getResponseDataAsString()); //Debug End vars.put("transactionIsOpened", "0"); vars.put("refreshToken", "TRUE"); ctx.setRestartNextLoop(true); ${__groovy(${pollingRetries} == 60)} false true groovy true // Debug start log.info("YY ERR Reached 60 polling retries for " + vars.get("deviceId") + " response code was " + prev.getResponseCode() + " response was " + prev.getResponseDataAsString()); // Debug finished vars.put("transactionIsOpened", "0"); vars.put("refreshToken", "TRUE"); ctx.setRestartNextLoop(true); true vars.put("pollingRetries", "0"); vars.put("useNewTerminal", "FALSE"); groovy ${debug} false true false true false ${__groovy( ${__time()} > ${JWT_expiresAt})} false true groovy true vars.put("refreshToken", "TRUE"); //Debug log.info("YY JWT has expired for = " + vars.get("deviceId")); 6 30000 30000 false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true C:\Jmeter\Data_Output\\TodayTest\\AdditionalReports\\${testRunTime}_AggReport.csv false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true C:\Jmeter\Data_Output\\TodayTest\\AdditionalReports\\${testRunTime}_ResultTable.csv false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true C:\Jmeter\Data_Output\\TodayTest\\AdditionalReports\\${testRunTime}_SummaryReport.csv false saveConfig true true true true true true true false true false true true true true true true false true 0 true true true true true C:\Jmeter\Data_Output\\TodayTest\\AdditionalReports\\${testRunTime}_ResultsTree.csv