Tutorial: Automation Scripting - Combinatorial Model

Learning Objectives:

This tutorial assumes that you are familiar with how to create a Combinatorial Data Model and have created a simple model with at least 2 variables named Field1 and Field2 and have generated the DataTable. Please refer to Combinatorial Data Modeling if you need assistance in creating the model.

Model scripting

Apache Groovy script is the scripting language for your models.

Groovy script is syntactically very similar to most of programming language that allows you to create classes, functions and basic logic and arithmetic operations.

Unlike scripting for State Model, you just write your script right in SCRIPT tab. In your script you would just loop through the rows in DataTable. Below is an example of script:

 $DATASET.notifyClient('Total number of rows in DataTable: ' + $DATASET.getDataRows().size());

Run the model, you should see following returned and displayed on IDE Execute tab:

 Total number of rows in DataTable: 10

Looping DataTable

To perform the testing on all rows in DataTable, you must loop through each row in DataTable ($DATASET.getDataRows()). You can do this with for loop:

 for (Map<String,String> row: $DATASET.getDataRows()) {

Activating Plugins

Just like scripting for State Model, you need to activate plugins to interact with AUT to perform the testing on each row in the DataTable.

For this tutorial, activate Random plugin, and modify the script to use $RANDOM.randNum(…) to determine the failure/success as below:

 for (Map<String,String> row: $DATASET.getDataRows()) {
    if ($RANDOM.randNum(0,10) > 5) {
       row._result = "Successful run on " + row.Field1 + ", " + row.Field2;
       row._status = true;
    else {
       row._result = "Failed run on " + row.Field1 + ", " + row.Field2;
       row._status = false;

Make changes to your script to incorporate the plugin function calls and re-run the model.

Exporting results

When running the model in IDE, you can export/download the execution results in IDE Execute tab.

After model execution completes, you can export the results by menu File / Export or .

Try the export and review the result file downloaded.

If you are running model remotely using REST api, you may specify the file location to save the execution results, see next section for details.

Remote Execution

You may run your data model remotely using REST api:

 curl -X POST "http://localhost:8888/api/v1/runtime/dataset/run/sync" -H  "accept: application/json" -H  "Content-Type: application/json" -d "{  \"modelName\": \"DEMO_Insurance_API\", \"path\": \"Demo_CombinatorialTesting\", \"outputFile\": \"myOutputFile.txt\"}"

Replace “modelName” and “path” with your values accordingly.

The output is written to “outputFile” in work folder if specified.