Bitcoin Forum
May 22, 2024, 07:18:12 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Poll
Question: How we can execute that ?
You can use this code - 0 (0%)
You can go through the provided link - 0 (0%)
Total Voters: 0

Pages: [1]
  Print  
Author Topic: API Example - Generate 10,000 Users  (Read 15 times)
Mariacosta (OP)
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
February 08, 2021, 09:31:54 AM
 #1

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
Java
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 credit card generator 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)
      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())
    }
  }
}
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!