Trigger and monitor a performance test in an OpenText Enterprise Performance Engineering server
581
This repository is used to build Docker image providing a CI/CD-friendly plugin for triggering, monitoring, and collecting results from OpenText Enterprise Performance Engineering (formerly LoadRunner Enterprise).
The docker image is designed to run non-interactively inside CI/CD pipelines (Harness, GitHub Actions, GitLab CI, Jenkins, Kubernetes jobs, etc.) using environment variables for configuration and outputs.
At runtime, the container:
This behavior allows the plugin to be used as a pipeline quality gate.
All configuration is provided exclusively via environment variables.
| Variable | Description |
|---|---|
| PLUGIN_LRE_SERVER | Server, port (when not mentionned, default is 80 or 433 for secured) and tenant (when not mentionned, default is ?tenant=fa128c06-5436-413d-9cfa-9f04bb738df3). e.g.: myserver.mydomain.com:81/?tenant=fa128c06-5436-413d-9cfa-9f04bb738df3' |
| PLUGIN_LRE_USERNAME | Username (or ID part of token) |
| PLUGIN_LRE_PASSWORD | Password (or secret part of token) |
| PLUGIN_LRE_DOMAIN | Domain (case-sensitive) |
| PLUGIN_LRE_PROJECT | Project (case-sensitive) |
| PLUGIN_LRE_TEST | Test ID or relative path to a YAML file defining a new test |
* Either username/password or token authentication must be used.
| Environment Variable | Description | Default |
|---|---|---|
| PLUGIN_LRE_ACTION | Action to execute. Currently supported: ExecuteLreTest | ExecuteLreTest |
| PLUGIN_LRE_DESCRIPTION | Description displayed in console logs | |
| PLUGIN_LRE_HTTPS_PROTOCOL | Use secured protocol for connecting to the server (true / false) | false |
| PLUGIN_LRE_AUTHENTICATE_WITH_TOKEN | Use token authentication (required for SSO). (true / false) | false |
| PLUGIN_LRE_TEST_INSTANCE | AUTO or specific instance ID | AUTO |
| PLUGIN_LRE_TIMESLOT_DURATION_HOURS | Timeslot duration (hours) | 0 |
| PLUGIN_LRE_TIMESLOT_DURATION_MINUTES | Timeslot duration (minutes) | 30 |
| PLUGIN_LRE_POST_RUN_ACTION | Collate Results, Collate and Analyze, Do Not Collate | Do Not Collate |
| PLUGIN_LRE_VUDS_MODE | Use VUDS licenses (true / false) | false |
| PLUGIN_LRE_TREND_REPORT | ASSOCIATED - the trend report defined in the test design will be used', Valid report ID - Report ID will be used for trend, No value or not defined - no trend monitoring. | |
| PLUGIN_LRE_SEARCH_TIMESLOT | Experimental: Search for matching timeslot instead of creating a new timeslot (true / false) | false |
| PLUGIN_LRE_STATUS_BY_SLA | Report success based on SLA (true / false) | false |
| PLUGIN_LRE_PROXY_OUT_URL | Proxy URL | |
| PLUGIN_LRE_USERNAME_PROXY | Proxy username | |
| PLUGIN_LRE_PASSWORD_PROXY | Proxy password | |
| PLUGIN_LRE_ENABLE_STACKTRACE | Print stacktrace on errors (true / false) | false |
| Path | Purpose |
|---|---|
| PLUGIN_LRE_OUTPUT_DIR | Result files and summarized outputs |
| PLUGIN_LRE_WORKSPACE_DIR | Workspace for logs, reports, and checkout |
These directories must be writable and are typically mounted volumes in CI environments.
During execution, the condole logs provides the progression (waiting for run to finish, analysis report generation, ...) After execution, the plugin writes:
results<timestamp>.xml – summarized test resultsLreResult/*.* – execution logs (lre_run_test__.log)PLUGIN_LRE_POST_RUN_ACTION is Collate and Analyze (under LreResult/LreReports/HtmlReport)0 indicates success; any non-zero value indicates failure.Assuming the operating systen can pull docker images and run them as linux container.
create a ps1 file with the following content (provide valid values to environment variables) and run it:
$imageBase = "danieldanan/opentext-enterprise-performance-engineering-test"
$imageVersion = "latest"
$imageName = "${imageBase}:${imageVersion}"
docker run -it --rm `
-v C:/temp/harness/output:/harness/output `
-v C:/temp/harness/workspace:/harness/workspace `
-e PLUGIN_LRE_ACTION="ExecuteLreTest" `
-e PLUGIN_LRE_DESCRIPTION="running new test" `
-e PLUGIN_LRE_SERVER="http://<Server>/?tenant=<tenant-id>" `
-e PLUGIN_LRE_USERNAME="<username>" `
-e PLUGIN_LRE_PASSWORD="<password>" `
-e PLUGIN_LRE_DOMAIN="<domain>" `
-e PLUGIN_LRE_PROJECT="<project>" `
-e PLUGIN_LRE_TEST="<testid>" `
-e PLUGIN_LRE_POST_RUN_ACTION="Collate and Analyze" `
-e PLUGIN_LRE_OUTPUT_DIR="/harness/output" `
-e PLUGIN_LRE_WORKSPACE_DIR="/harness/workspace" `
$imageName
create a testImage.py file with following content (provide valid values to parameters in env_vars) and run it.
import subprocess
from pathlib import Path
# -----------------------------
# Configurable environment variables
# -----------------------------
image_base = "danieldanan/opentext-enterprise-performance-engineering-test"
image_version = "latest"
image_name = f"{image_base}:{image_version}"
# Test-specific environment variables
env_vars = {
"PLUGIN_LRE_ACTION": "ExecuteLreTest",
"PLUGIN_LRE_DESCRIPTION": "running new test",
"PLUGIN_LRE_SERVER": "http://<Server>/?tenant=<tenant-id>",
"PLUGIN_LRE_HTTPS_PROTOCOL": "false",
"PLUGIN_LRE_AUTHENTICATE_WITH_TOKEN": "false",
"PLUGIN_LRE_USERNAME": "<username>",
"PLUGIN_LRE_PASSWORD": "<password>",
"PLUGIN_LRE_DOMAIN": "<domain>",
"PLUGIN_LRE_PROJECT": "<project>",
"PLUGIN_LRE_TEST": "<testid>",
"PLUGIN_LRE_TEST_INSTANCE": "",
"PLUGIN_LRE_TIMESLOT_DURATION_HOURS": "0",
"PLUGIN_LRE_TIMESLOT_DURATION_MINUTES": "30",
"PLUGIN_LRE_POST_RUN_ACTION": "Collate and Analyze",
"PLUGIN_LRE_VUDS_MODE": "false",
"PLUGIN_LRE_TREND_REPORT": "5",
"PLUGIN_LRE_SEARCH_TIMESLOT": "false",
"PLUGIN_LRE_STATUS_BY_SLA": "false",
"PLUGIN_LRE_OUTPUT_DIR": "/harness/output",
"PLUGIN_LRE_WORKSPACE_DIR": "/harness",
"PLUGIN_LRE_ENABLE_STACKTRACE": "false",
}
def windows_path_for_docker(path: str) -> str:
"""Convert Windows path to Docker-friendly forward slash path"""
return Path(path).resolve().as_posix()
def run_test_container():
print(f"Beginning running a test using container of image {image_name} ...")
# Docker volume mappings
volumes = [
f"{path_for_docker('./harness/output')}:{env_vars['PLUGIN_LRE_OUTPUT_DIR']}",
f"{path_for_docker('./harness/workspace')}:{env_vars['PLUGIN_LRE_WORKSPACE_DIR']}",
]
# Build docker run command
cmd = ["docker", "run", "-it", "--rm"]
# Add volume mappings
for vol in volumes:
cmd += ["-v", vol]
# Add environment variables
for key, value in env_vars.items():
cmd += ["-e", f"{key}={value}"]
# Add image name
cmd.append(image_name)
# Run the docker command
print("> Running Docker container...")
subprocess.run(cmd, shell=True, check=True)
print(f"Finished running a test using container of image {image_name} ...")
if __name__ == "__main__":
run_test_container()
Harness users expect YAML as step (the value of connectorRef should be customized to your harness configuation). values can be stored as secrets in harness and referenced.
...
steps:
- step:
type: Run
name: Run_1
identifier: Run_1
spec:
connectorRef: DockerRegistry1
image: danieldanan/opentext-enterprise-performance-engineering-test:latest
shell: Sh
envVariables:
PLUGIN_LRE_ACTION: ExecuteLreTest
PLUGIN_LRE_DESCRIPTION: running new test
PLUGIN_LRE_SERVER: <+secrets.getValue("lre_server")>
PLUGIN_LRE_HTTPS_PROTOCOL: "true"
PLUGIN_LRE_AUTHENTICATE_WITH_TOKEN: "false"
PLUGIN_LRE_USERNAME: <+secrets.getValue("lre_username")>
PLUGIN_LRE_PASSWORD: <+secrets.getValue("lre_password")>
PLUGIN_LRE_DOMAIN: <+secrets.getValue("lre_domain")>
PLUGIN_LRE_PROJECT: <+secrets.getValue("lre_project")>
PLUGIN_LRE_TEST: <+secrets.getValue("lre_test")>
PLUGIN_LRE_TIMESLOT_DURATION_HOURS: "0"
PLUGIN_LRE_TIMESLOT_DURATION_MINUTES: "30"
PLUGIN_LRE_POST_RUN_ACTION: Collate and Analyze
PLUGIN_LRE_VUDS_MODE: "false"
PLUGIN_LRE_TREND_REPORT: "5"
PLUGIN_LRE_SEARCH_TIMESLOT: "false"
PLUGIN_LRE_STATUS_BY_SLA: "false"
PLUGIN_LRE_OUTPUT_DIR: /harness/output
PLUGIN_LRE_WORKSPACE_DIR: /harness
PLUGIN_LRE_ENABLE_STACKTRACE: "false"
...
All configuration is provided using environment variables.
The plugin writes execution logs and result files to:
$PLUGIN_LRE_OUTPUT_DIR$PLUGIN_LRE_WORKSPACE_DIRSupported authentication modes:
PLUGIN_LRE_ENABLE_STACKTRACE=true
This plugin uses the same core logic and configuration model as:
Github repository: Opentext Enterprise Performance Engineering CI plugin
Content type
Image
Digest
sha256:9a065f9b7…
Size
110.7 MB
Last updated
8 months ago
docker pull danieldanan/opentext-enterprise-performance-engineering-test