This a Groovy code example that shows how to use the GenRocket API to build a scenario from scratch to generate a 10,000 Users and output to an XML file.
Activity Diagram
The activity diagram defines the steps and API calls necessary to load, modify and run the Scenario.
Groovy Source Code Example
package com.genRocket.engine.examples
import com.genRocket.GenRocketException
import com.genRocket.engine.EngineAPI
import com.genRocket.engine.EngineManual
import com.genRocket.generator.*
import com.genRocket.receiver.DelimitedFileReceiver
import com.genRocket.receiver.JSONFileReceiver
import com.genRocket.receiver.SQLFileInsertReceiver
import com.genRocket.receiver.XMLFileReceiver
/**
* Created by Hycel Taylor on 12/29/16.
*
* This a Groovy code example that shows how to use the GenRocket API to build
* a scenario from scratch to generate a 10,000 Users and output to four different
* file formats:
* <ul>
* <li>XML</li>
* <li>Tab-Delimited</li>
* <li>JSON</li>
* <li>SQL</li>
* </ul>
*
* The User Domain shall contain the following Attributes:
* <ul>
* <li>id</li>
* <li>lastName</li>
* <li>firstName</li>
* <li>middleInitial</li>
* <li>userName</li>
* <li>emailAddress</li>
* <li>password</li>
* <li>ssn</li>
* <li>creditCard</li>
* <li>phoneNumber</li>
* </ul>
*/
class Scenario10000Users {
public static void main(String[] args) {
String scenario = '/home/userName/anyScenario.grs'
String domainName = 'User'
String attributeName = null
Map<String, String> parameters = [:]
Boolean setLoop = false
EngineAPI api = new EngineManual()
try {
// Initialize Scenario
api.scenarioLoad(scenario)
api.scenarioClear()
// Add Domain and Attributes
api.domainAdd(domainName, true)
api.domainSetLoopCount(domainName, 10000.toString())
// Add Attribute, lastName
attributeName = "${domainName}.lastName"
api.attributeAdd(attributeName)
parameters = ['nameType': 'lastName', 'caseType': 'capitalize', 'sortOrder': 'random', 'waitAmount': '1']
api.generatorAdd(attributeName, NameGen.canonicalName, setLoop, parameters)
// Add Attribute, firstName
attributeName = "${domainName}.firstName"
api.attributeAdd(attributeName)
parameters = ['nameType': 'firstName', 'caseType': 'capitalize', 'sortOrder': 'random', 'waitAmount': '1']
api.generatorAdd(attributeName, NameGen.canonicalName, setLoop, parameters)
// Add Attribute, middleInitial
attributeName = "${domainName}.middleInitial"
api.attributeAdd(attributeName)
parameters = ['randomize': 'true']
api.generatorAdd(attributeName, AlphabetGen.canonicalName, setLoop, parameters)
// Add Attribute, username
attributeName = "${domainName}.username"
api.attributeAdd(attributeName)
parameters = ['prefix': 'User', 'reference': '#{User.id}']
api.generatorAdd(attributeName, UsernameGen.canonicalName, setLoop, parameters)
// Add Attribute, emailAddress
attributeName = "${domainName}.emailAddress"
api.attributeAdd(attributeName)
parameters = ['prefix': 'User', 'reference': '#{User.id}', 'suffix': 'email', 'extension': 'com']
api.generatorAdd(attributeName, EmailGen.canonicalName, setLoop, parameters)
// Add Attribute, password
attributeName = "${domainName}.password"
api.attributeAdd(attributeName)
parameters = ['textToEncrypt': '#{User.id}', 'algorithm': 'SHA-256']
api.generatorAdd(attributeName, EncryptGen.canonicalName, setLoop, parameters)
// Add Attribute, ssn
attributeName = "${domainName}.ssn"
api.attributeAdd(attributeName)
parameters = ['increment': '0', 'generationType': 'sequential', 'initArea': '001', 'initGroup': '01', 'initSerial': '0001']
api.generatorAdd(attributeName, SSNGen.canonicalName, setLoop, parameters)
// Add Attribute, creditCard
attributeName = "${domainName}.creditCard"
api.attributeAdd(attributeName)
parameters = ['visa16': 'true', 'masterCard': 'true']
api.generatorAdd(attributeName, CreditCardGen.canonicalName, setLoop, parameters)
// Add Attribute, phoneNumber
attributeName = "${domainName}.phoneNumber"
api.attributeAdd(attributeName)
parameters = ['useAreaCode': 'true', 'uniqueNumbers': 'true']
api.generatorAdd(attributeName, RandomPhoneNumberGen.canonicalName, setLoop, parameters)
// *** Receivers must be added after Domains ***
// Add XMLFileReceiver
String receiverName = 'XMLFileReceiver'
parameters = [
path: '#{resource.output.directory}',
fileName:"${domainName}.xml"
]
api.receiverAdd(domainName, XMLFileReceiver.canonicalName, receiverName, parameters)
// Add DelimitedFileReceiver
receiverName = 'DelimitedFileReceiver'
parameters = [
path: '#{resource.output.directory}',
fileName:"${domainName}.txt"
]
api.receiverAdd(domainName, DelimitedFileReceiver.canonicalName, receiverName, parameters)
// Add JSONFileReceiver
receiverName = 'JSONFileReceiver'
parameters = [
path: '#{resource.output.directory}',
fileName:"${domainName}.json"
]
api.receiverAdd(domainName, JSONFileReceiver.canonicalName, receiverName, parameters)
// Add SQLFileInsertReceiver
receiverName = 'SQLFileInsertReceiver'
parameters = [
path: '#{resource.output.directory}',
fileName:"${domainName}.sql",
tableName: 'user'
]
api.receiverAdd(domainName, SQLFileInsertReceiver.canonicalName, receiverName, parameters)
// Run Scenario
api.scenarioRun()
} catch (GenRocketException e) {
println(e.getMessage())
}
}
}
Java