04.04 - Context parameters

Squash-TA framework 1.8.0 introduce the context parameters feature. The idea is:
  • First: to provide parameters (list of key/value) at execution through json data ( at script or at global level )
{
    "test" : [{
            "script" : "pathToMyscript1",              
            "param" : {                                         // Script context parameters
                "my_cuf" : "value1",
                "property2" : "value2"
            }
        }
    ],
    "param" : {                                                 // Global context parameters
        "property2" : "value13",
        "property6" : "value14"
    }
}
  • Second: to transform the parameters as a TA resource of type properties.
    • For script context parameters the resource is available in the test under the name context_script_params
    • For global context parameters the resource is available in the test under the name context_global_params 
  • Third: to use the created TA resources in test scripts through from file to file (using param) converter 
    • Created TA resource could be used in the converter USING clause like other classical resources with the same rule
In the sample below, in processedCommandFile ${my_cuf} is replaced by "value1"

{
    "test" : [{
            "script" : "pathToMyscript1",              
            "param" : {                                         
                "my_cuf" : "value1",
                "property2" : "value2"
            }
        }
    ],
    "param" : {                                                 
        "property2" : "value13",
        "property6" : "value14"
    }
}
_________________________________________________________________________________________________________________

DEFINE $(monShell.sh -param1=${my_cuf}) AS commandFile
CONVERT commandFile TO file(param) USING context_script_params AS processedCommandFile

CONVERT processedCommandFile TO query.shell (query) AS commandLine

EXECUTE local WITH commandLine AS result


context_script_params and context_global_params could be used together. The priority rules are the classical rules of the file to file (param) converter. In the sample below, if simple-script.sah contains ${property2}, then it would be replace by the converter by value2:

{
    "test" : [{
            "script" : "pathToMyscript1",              
            "param" : {                                         
                "my_cuf" : "value1",
                "property2" : "value2"
            }
        }
    ],
    "param" : {                                                 
        "property2" : "value13",
        "property6" : "value14"
    }
}
_________________________________________________________________________________________________________________

LOAD sahi/placeholder.properties AS placeholder.file
CONVERT placeholder.file TO properties(structured) AS placeholder.properties

LOAD sahi/main/simple-script.sah AS sahiFile
CONVERT sahiFile TO file(param) USING placeholder.properties, context_global_params, context_script_params AS processedSahiFile

CONVERT processedSahiFile TO script.sahi(script) AS suite



Note: context_script_params and context_global_params are now reserved context TA resource name. The framework doesn't prevent you to define your own TA resource with those context name, BUT in this case they hide context parameters. In the sample below context_script_params correspond to sample.properties.
LOAD sample.properties AS sample.file
CONVERT sample.file TO properties(structured) AS context_script_params

LOAD sahi/main/simple-script.sah AS sahiFile
CONVERT sahiFile TO file(param) USING context_script_params AS processedSahiFile

CONVERT processedSahiFile TO script.sahi(script) AS suite