Description

The GMUS can modify any Scenario, in real-time, prior to its execution, by adding GenRocket API commands to the request payload.  The following Groovy method adds API sub-elements to the request payload to take the following actions on the loaded Scenario before execution:

  • scenarioClear
  • domainAdd
  • attributeAdd
  • generatorAdd
  • receiverAdd
  • domainSetLoopCount

The loading of the Scenario and running of the Scenario will be taken care of by GMUS.


def scenarioAPIQ() {
   Map response = [:]
   try {
     def hTTPBuilder = new AsyncHTTPBuilder(
         threadPool: Executors.newFixedThreadPool(5000),
         uri: "http://localhost:8070/rest/scenario",
         contentType: ContentType.JSON)

     hTTPBuilder.ignoreSSLIssues()

     hTTPBuilder.request(Method.POST, ContentType.JSON) {
       body = ["clientAppId" : "b13b53ba-487e-41e2-8245-d505b767576f",
               "clientUserId": "16aa678b-0777-426f-be33-ea0a930af0ae",
               "username"    : "jane.doe@gmail.com",
               "scenario"    : "UserScenario.grs",
               "scenarioPath": "/home/UserName/Downloads/output",
               "inMemory"    : false,
               "api"         : [
                   [methodName: "scenarioClear"],
                   [methodName: "domainAdd", parameters: [domainName: "User", primary: true]],

                   [methodName: "attributeAdd", parameters: [attributeName: "User.ssn"]],
                   [methodName: "generatorAdd", parameters: [attributeName              : "User.ssn",
                                                             generatorName              : "com.genRocket.generator.RangeConstantGen",
                                                             requiredGeneratorParameters: [suffix: "firstName", prefix: "#{User.id}"]]],

                   [methodName: "receiverAdd", parameters: [
                       domainName   : "User",
                       canonicalName: "com.genRocket.receiver.XMLFileReceiver",
                       receiverName : "XMLFileReceiver",
                       parameterMap : [
                           path    : '#{resource.output.directory}',
                           fileName: "User.xml".toString()
                       ]]],

                   [methodName: "domainSetLoopCount", parameters: [domainName: "User", loopCount: "100000".toString()]]
               ]
       ]

       response.success = { resp, json ->
         response = json
       }

       response.failure = { resp ->
         response = [message: "Request failed with status ${resp.status}"]
       }
     }

   } catch (Exception ex) {
     ex.printStackTrace()
     response = [message: ex.message]
   }
   
   return response
 }