> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flexagon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# runV3 (utPLSQL)

> Executes utPLSQL v3 test cases using ut.run(options). utPLSQL version 3.0+ only. Target Properties Property Name Property Code Required Description ut

Executes utPLSQL v3 test cases using ut.run(options). **utPLSQL version 3.0+ only.**

# Target Properties

<table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>**Property Name**</th><th>**Property Code**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>utPLSQL Database User</td><td>`FDUTPLSQL_DB_USER`</td><td>Yes</td><td>User/Schema used to connect to the Database for utPLSQL testing.</td></tr><tr><td>utPLSQL Database Password</td><td>`FDUTPLSQL_DB_PASSWORD`</td><td>Yes</td><td>Password for the User used to connect to the Database for utPLSQL testing.</td></tr><tr><td>Oracle Database URL</td><td>`FDORA_URL`</td><td>Yes</td><td>The JDBC URL for the target Oracle database.Connecting to Oracle Autonomous DatabaseYou will need client credential zip file (wallet) to connect with Oracle Autonomous Database on Oracle cloud. You can download wallet zip file from Oracle Cloud, you will need admin userid and password to perform this download. See [Download Client Credentials (Wallets)](https://docs.oracle.com/en-us/iaas/autonomous-database/doc/download-client-credentials.html) for more details on how to download wallet file.<ul><li>**Since FlexDeploy 9.0.0.9 with Oracle Wallet Credential Type :** Instead of maintaining the wallet zip file under the file system, you can now store the wallet zip as an Oracle Credential Type in FlexDeploy. This allows for secure storage and use of the wallet.<ul><li>Use the URL syntax in the following format: `jdbc:oracle:thin:@service_low?TNS_ADMIN={{FDORACLE_WALLET_FILE}}` is replaced with the temporary wallet folder path during execution. Once execution is completed, the temporary file is cleaned up automatically.</li></ul></li><li>**Before FlexDeploy 9.0.0.9**<ul><li>You must make sure that only authorized users have access to these wallet files. Unzip the client credentials zip file (**wallet\_*****databasename*****.zip**) on FlexDeploy server and/or endpoint where it will be used. For example, /home/flexdeploy/.wallets/\<**wallet\_*****databasename***> is folder where specific wallet file was unzipped. Make sure to secure this folder to FlexDeploy and/or Endpoint user, so that it is not readable by all users.</li><li>We recommend using Oracle Wallet Credential Type for better security and easier management of Wallet usage.</li><li>**Database URL Syntax **: jdbc:oracle:thin:@service\_high?TNS\_ADMIN=/home/flexdeploy/.wallets/\<**wallet\_*****databasename***><ul><li>service\_high is one of the entries in the tnsnames.ora file where client credentials zip file was unzipped. See [Predefined Database Service Names for Autonomous Database](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/connect-predefined-generic.html) for details on services.</li><li>TNS\_ADMIN value in URL points to the location of the **unzipped client credentials zip file**.</li></ul></li><li>**Database URL Long Connection String Format Syntax **: `jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=<hostname>))(connect_data=(service_name=<serice_name>))(security=(ssl_server_cert_dn="CN=<hostname>,OU=Oracle BMCS US,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))`<ul><li>Examples for the same can be found [here](https://www.oracle.com/database/technologies/java-connectivity-to-atp.html).</li></ul></li></ul></li></ul>If using the Oracle Database Plugin with ADW or ATP databases , use the \_low connection. The \_medium and \_high connections can sometimes throw error** ORA-12839: cannot modify an object in parallel after modifying it.**</td></tr><tr><td>Oracle Wallet File</td><td>`FDORACLE_WALLET_FILE`</td><td>No</td><td>**Since 9.0.0.9** - Provide the Oracle Wallet file, see[Credential Type - Oracle Wallet](https://docs.flexagon.com/flexdeploy-9-0-documentation/flexdeploy-users-guide/administration/credentials/credential-types/credential-type-oracle-wallet.md) for more details.</td></tr><tr><td>Target JDBC Driver Path</td><td>`FDORA_DRIVER_PATH`</td><td>Yes</td><td>Path containing JDBC driver for target database connection.</td></tr></tbody></table>

# Inputs

<table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>**Input Name**</th><th>**Input Code**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>Suite Path</td><td>`FDUTPLSQL_INP_RUN_PATH`</td><td>No</td><td>A suite path or a comma separated list of suite paths for unit test to be executed. This can be a schema, package, procedure, function, etc... If only schema is provided, then all suites owned by that schema are executed. If not set, then the current schema is used. IE: 'hr' or 'hr:com.my\_org.my\_project' or 'hr.test\_apply\_bonus,customers'</td></tr><tr><td>Reporters</td><td>`FDUTPLSQL_INP_REPORTERS`</td><td>No</td><td>Select output reporting format(s). UT\_JUNIT\_REPORTER is always added, therefore, is not in the list. For each reporter selected the corresponding file will be exported to the reports tab on the project workflow execution.Available reporters include UT\_COVERAGE\_COBERTURA\_REPORTER, UT\_COVERAGE\_HTML\_REPORTER, UT\_COVERAGE\_SONAR\_REPORTER, UT\_COVERALLS\_REPORTER, UT\_DEBUG\_REPORTER, UT\_DOCUMENTATION\_REPORTER, UT\_REALTIME\_REPORTER, UT\_SONAR\_TEST\_REPORTER, UT\_TEAMCITY\_REPORTER, UT\_TFS\_JUNIT\_REPORTER[Read more](http://utplsql.org/utPLSQL/v3.1.8/userguide/reporters.html) about the different reporter types.</td></tr><tr><td>Tags</td><td>`FDUTPLSQL_INP_TAGS`</td><td>No</td><td>A comma separated list of tags to run. IE: 'suite1' or 'suite1,suite2' or '-suite1'. Filtering the tests to be run is in addition to any suite paths defined. The framework applies **OR** logic to all specified tags so any test / suite that matches at least one tag will be included in the test run. You can also exclude specific tags by adding a `-` (dash) in front of the tag.</td></tr><tr><td>Coverage Schemes</td><td>`FDUTPLSQL_INP_COVERAGE_SCHEMES`</td><td>No</td><td>A comma separated list of schemas on which coverage should be gathered. Only applicable to coverage reporters.</td></tr><tr><td>Fail on Errors</td><td>`FDUTPLSQL_INP_FAIL_ON_ERRORS`</td><td>No</td><td>Force workflow execution to fail if UTPLSQL run fails any tests. When set to false UTPLSQL run always exits with a success status. Defaults to false.</td></tr><tr><td>Skip Compatibility Check</td><td>`FDUTPLSQL_INP_SKIP_COMPATIBILITY_CHECK`</td><td>No</td><td>Skips the compatibility check with the version of the database framework. If you skip compatibility check, CLI will expect the latest framework version.</td></tr><tr><td>Random Test Order</td><td>`FDUTPLSQL_INP_RANDOM_TEST_ORDER`</td><td>No</td><td>Enables random order of test executions.</td></tr><tr><td>Random Test Order Seed</td><td>`FDUTPLSQL_INP_RANDOM_TEST_ORDER_SEED`</td><td>No</td><td>Sets the seed to use for random test execution order. If set, Random Test Order is set to true.</td></tr><tr><td>Include Objects</td><td>`FDUTPLSQL_INP_INCLUDE_OBJECTS`</td><td>No</td><td>Comma-separated object list to include in the coverage report. Only applicable to coverage reporters.</td></tr><tr><td>Exclude Objects</td><td>`FDUTPLSQL_INP_EXCLUDE_OBJECTS`</td><td>No</td><td>Comma-separated object list to exclude in the coverage report. Only applicable to coverage reporters.</td></tr><tr><td>Source File Mapping</td><td>`FDUTPLSQL_INP_SOURCE_FILE_MAPPING_JSON`</td><td>No</td><td>JSON for path to project source files with options to enable custom type mappings. Map database object names to project files. Keys must be spelled as shown in the example below and "file\_paths" is the only required JSON field.**JSON Example**<pre>\{
"file\_paths": \[\{"path": "sources"}],
"type\_mapping": \[\{"key": "packages\_bodies", "value": "PACKAGE BODY"}, \{"key": "types\_bodies", "value": "TYPE BODY"}],
"owner": "code\_owner",
"regex\_expression": "((\w+)/)?(\w+).(\w\{3})$",
	"owner_subexpression": 2,
    "name_subexpression": 3,
    "type_subexpression": 4
\}</pre></div></div><p><a class="external-link" href="http://utplsql.org/utPLSQL/latest/userguide/coverage.html" rel="nofollow">Read more</a> about custom type mappings under the Project based Coverage section.</p></td></tr><tr><td class="confluenceTd"><p>Test File Mapping</p></td><td class="confluenceTd"><p><code>FDUTPLSQL_INP_TEST_FILE_MAPPING_JSON</code></p></td><td class="confluenceTd"><p>No</p></td><td class="confluenceTd"><p>JSON for path to project test files with options to enable custom type mappings. Map database object names to test files.&nbsp;Keys must be spelled as shown in the example below and "file_paths" is the only required JSON field.</p><h5 id="runV3(utPLSQL)-JSONExample.1"><strong>JSON Example</strong></h5><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"><pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: text; gutter: false; theme: Confluence" data-theme="Confluence">\{ 
    "file_paths": [\{"path": "hr"\}, \{"path": "customers"\}],
    "type_mapping": [\{"key": "functions", "value": "FUNCTION"\}, \{"key": "triggers", "value": "TRIGGER"\}],
    "owner": "tests_owner",
    "regex_expression": "(\w+)/(\w+)(\w+)\..\{3\}$",
"owner\_subexpression": 2,
"name\_subexpression": 3,
"type\_subexpression": 4
}</pre>[Read more](http://utplsql.org/utPLSQL/latest/userguide/coverage.html) about custom type mappings under the Project based Coverage section.</td></tr></tbody></table>

# Artifacts

This operation doesn’t consume or produce any artifacts.

# Endpoint Selection

This operation will select all available endpoints associated to the Target.

# Endpoint Execution 

This operation will execute on any one of the selected endpoints and will be random in the determination of which one.

# Special Considerations

This operation is not backward compatible with utPLSQL version 2.  It can only be run against v3 test cases.
