Integrating NeoLoad

The focus of this guide is how to integrate Akamas with Tricentis NeoLoad in order to leverage Neoload as a performance testing tool in an Akamas optimization.

Prerequisites

To be able to execute a test from Neoload and to collect the Neoload metrics you will need:

  • Neoload 7.0+

  • a valid Neoload license;

  • a working Neoload test script;

  • a fully working Neoload farm composed by:

    • NeoLoadWeb (saas or on-prem);

    • a Neoload "zone" composed of 1 controller and (at least) 1 loadgenerator;

  • URL (and port if it is not the default one) of the NeoLoadWeb server;

  • to whitelist the connections between:

    • Akamas server and NeoLoadWeb server over port 8080 and 8081 (if NeoLoadWeb is deployed on-premises);

    • Akamas server and internet if NeoLoadWeb is managed as a SaaS platform

  • A NeoLoadWeb user with a "tester" role ("guest" role cannot be used due to limitations in triggering test execution). For compatibility reasons, the user related to the generated token must belong to the default workspace.

  • A NeoLoadWeb API token created with the above user to inherit the same rights

Create Akamas entities

Component

At the component level, the NeoLoad integration is trivial and only requires specifying a single NeoLoad property at the Web Application component. These properties will be used during the telemetry phase to map the NeoLoad metrics (e.g. transactions response time, error rate, etc..) to the right Akamas component.

The overall configuration is described by the Integrating Neoload provider page.

The example below provides an example of a component definition with the appropriate NeoLoadWeb property:

name: konakart
description: konakart service layer component
componentType: Web Application
properties:
  neoloadweb: "true"

Telemetry instance

At the telemetry level, the NeoLoad integration relies on the NeoLoadWeb telemetry provider.

In case the NeoLoadWeb telemetry provider is not already installed on the Akamas server, please follow the instructions on the Setup NeoLoad telemetry provider page. After installing the telemetry provider, a NeoLoadWeb telemetry instance can be implemented following the instructions on Create NeoLoadWeb telemetry instance page.

The following is an example of a NeoLoad telemetry instance:

# NeoLoad Web Telemetry Provider Instance
provider: Neoload
config:
  neoloadApi: http://NeoLoadWeb-api.mydomain.com
  accountToken: XXXX

Workflow

At the workflow level, the NeoLoad integration requires implementing a dedicated task based on the NeoLoadWeb operator.

The operator configurations required by NeoLoad are described on the NeoLoad operator page.

The workflow configuration changes depending on your NeoLoadWeb deployment, since it could be Saas or on-premises.

For compatibility reasons, the user related to the generated token must belong to the default workspace.

How to retrieve the required configurations from NeoLoad

Some properties can be retrieved from the NeoLoad application or NeoLoadWeb.

PropertySteps

scenarioName

  • open project on NeoLoad

  • go to the runtime tab

  • pick a scenario from the "scenarios" multi-select

accountToken

  • access your NeoLoad Web platform

  • go to profile

  • hit "generate access token" or retrieve an existing one

Notice: for compatibility reasons, the user related to the generated token must belong to the default workspace.

You need to have a controller and at least one load generator in place in the zone you have configured in the workflow step

PropertySteps

lgZones controllerZoneId

  • access your NeoLoad Web platform

  • go to the Resources tab

  • pick the Zone id of an existing zone or create a new one

  • only for lgZones: append ":" as a suffix plus the number of load generators you are going to use during the test

Troubleshooting

You might want to use this docker container which can be useful for quickly troubleshooting your NeoLoad integration instead of building and running a full study on Akamas.

Assuming that the NeoLoad scripts are hosted on your instance (thus you didn’t upload them on NeoLoad Web) the following command will run the load test scripts deployed in folder neoload-project on your NeoLoad farm:

docker run --rm \
-v'/home/ubuntu/studyTroubleshooting/updatedArtifacts/neoload/altStudy:/neoload-project' \
-e NEOLOADWEB_TOKEN=xxxxxxxx \
-e CONTROLLER_ZONE_ID=iM7QB \
-e LG_ZONE_IDS=iM7QB:1 \
-e TEST_RESULT_NAME=myTestResult \
-e SCENARIO_NAME=10VU_5min \
neotys/neoload-web-test-launcher

where neoload-project is the name of the mount point that the container is expecting. Please do not change it. Docker will mount your project folder in an internal folder named neoload-project

The project folder can contain:

  • A NeoLoad project folder including .nlp, config.zip ...

  • A single zip file containing the NeoLoad project

  • A single YAML file containing the NeoLoad project as code

Problem Test file upload on NeoloadWeb fails with the following error:

Uploading project
Error code: 400
{"error": "UNAUTHORIZED_OPERATION"}
io.swagger.client.ApiException: Bad Request
        at io.swagger.client.ApiClient.handleResponse(ApiClient.java:924)
        at io.swagger.client.ApiClient.execute(ApiClient.java:840)
        at io.swagger.client.api.RuntimeApi.postUploadProjectWithHttpInfo(RuntimeApi.java:342)
        at io.swagger.client.api.RuntimeApi.postUploadProject(RuntimeApi.java:328)
        at com.neotys.nlweb.runtime.Launch.launchTest(Launch.java:241)
        at com.neotys.nlweb.runtime.Launch.main(Launch.java:59)

Solution The user related to the token you are using must belong to the default workspace.

Last updated