Giter Site home page Giter Site logo

qlik-oss / gopherciser Goto Github PK

View Code? Open in Web Editor NEW
20.0 4.0 3.0 7.42 MB

Gopherciser is used for load testing (that is, stress testing and performance measurement) in Qlik Sense environments.

License: MIT License

Dockerfile 0.04% Makefile 0.12% Go 98.99% Shell 0.84% Lua 0.01%

gopherciser's Introduction

Gopherciser

CircleCI

Gopherciser logo

Gopherciser is used for load testing (that is, stress testing and performance measurement) in Qlik Sense® Enterprise deployments. It is based on enigma-go, which is a library for communication with the Qlik® Associative Engine.

Gopherciser can run standalone, but is also included in the Qlik Sense Enterprise Scalability Tools (QSEST), which are available for download here.

More information on Gopherciser is available here:

Building Gopherciser

Prerequisites

Golang build environment

Gopherciser requires a Golang 1.13 build environment or later.

Installing tools

Note: Since Gopherciser uses Go modules, do not install tools using the go get command while inside the Gopherciser repository.

To install tools, use the cd command to leave the Gopherciser repository directory and then use go get.

Windows-specific prerequisites

If you use Git Bash, but do not have make.exe installed, do the following to install it:

  1. Go to ezwinports.
  2. Download make-4.x-y-without-guile-w32-bin.zip (make sure to get the version without guile).
  3. Extract the ZIP file.
  4. Copy the contents to the Git\mingw64\ directory (the default location of mingw64 is C:\Program Files\Git\mingw64), but do not overwrite or replace any existing files.

Building the documentation

The documentation can be generated from json with:

go generate

For more information, see Generating Gopherciser documentation.

Build commands

Full build

You can build Gopherciser locally using the make command:

make build

This produces Linux, Darwin and Microsoft Windows binaries in the build folder.

Quick build

make quickbuild

This leaves the build folders as-is before building (that is, no cleaning is done etc.) and produces a build for the local operating system only.

To do a cleaning before building, run make clean.

Test commands

Running normal tests

You can run tests using the make command:

make test

This runs all normal tests.

Running all tests

make alltests

This runs all tests with verbose output and without relying on cache.

Updating Gopherciser dependencies

Do the following:

  1. Update the modules:
    • go get -u: Update the modules to the most recent minor or patch version.
    • go get -u=patch: Update the modules to the latest patch for minor version.
    • go get github.com/some/[email protected]: Get a particular version.
  2. Run go mod tidy to remove any unused modules.
  3. Run go mod verify to add packages needed for test packages etc.

Pulling the Docker image

Unfortunately, the GitHub packages Docker repo is not very "public" (see this community thread). This means a Docker login is needed before the images can be pulled.

Do the following:

  1. Create a new token with the scope read:packages here.
  2. Save your token to, for example, a file (or use an environment variable or similar).
  3. Log in with Docker to docker.pkg.github.com.

Using a token stored in the file github.token:

docker login -u yourgithubusername --password=$(cat github.token) docker.pkg.github.com

Using the token in the environmental variable GITHUB_TOKEN:

docker login -u yourgithubusername --password=$GITHUB_TOKEN docker.pkg.github.com
  1. Pull the Docker image.

The latest master version:

docker pull docker.pkg.github.com/qlik-oss/gopherciser/gopherciser:latest

Specific released version:

docker pull docker.pkg.github.com/qlik-oss/gopherciser/gopherciser:0.4.10

Using the image in Kubernetes

To use the image in Kubernetes (for example, to perform executions as part of a Kubernetes job), credentials for the GitHub package registry need to be added the same way a private registry is used, see documentation here.

VSCode snippets for gopherciser development in VSCode

In the docs/vscode folder there is a file called gopherciser.code-snippets containing snippets which can be used with VSCode.

Installing the the snippets

Snippets can be "installed" 2 diffrent ways

  1. Copy the file gopherciser.code-snippets from the docs/vscode folder into the folder .vscode in the repo. This works on any OS.
  2. On *nix systems it's recommended to create a symbolic link instead of copying the file to have it automatically be kept up to date. In the main repo folder create the symbolic link with the command ln -s ../docs/vscode/gopherciser.code-snippets .vscode/gopherciser.code-snippets.

Using the template

Start writing the name of the snippet to and press enter.

action: Adds skeleton of a scenario action. This should be used the following way:

  1. Create an empty file in scenario folder with the name of the new action, e.g. dummy.go for the action dummy.
  2. Start writing action and press enter.
  3. Change the action struct name if necessary, then press tab to write a description.

gopherciser's People

Contributors

dnllrssn avatar renovate[bot] avatar atluq avatar sebbbe avatar alfinhaji avatar hvonp avatar carlcervin avatar qlikfrederic avatar pawel-fobka avatar dependabot[bot] avatar hairyhenderson avatar jonathansm1th avatar

Stargazers

Brian Kravec avatar Richard avatar  avatar  avatar Vishal Gupta avatar  avatar  avatar Yianni Ververis avatar Flyman avatar Daniel Ruiz avatar Łukasz Rżanek avatar  avatar Justin Donnelly avatar  avatar  avatar Jens Argentzell avatar  avatar  avatar Markus Wall avatar

Watchers

Matteo Redaelli avatar James Cloos avatar  avatar  avatar

gopherciser's Issues

ElasticExplore not finding spaceid that exists

Description

So looks like elasticexplore by spaceid isnt working. I suspect during elasticopenhub when we make the call to /api/v1/spaces?limit=100 we are storing the spaceid, but when we attempt to find it in the artifact it cant be found

https://github.com/qlik-oss/gopherciser/blob/master/session/artifactmap.go#L318

Example of scenario attached

Steps to Reproduce

  1. See attached scenario file, which runs against perf6.eu.qlik-stage.com. Run this scenario with traffic logs enabled and notice even though the space exists (response in previous /api/v1/spaces call during elasticopenhub, we still get space id not found.
    qcsTest.txt
Expected behavior

Space id should be found as it exists

Actual behavior

Space id not found

Environment

Operating system
QCS perf6.eu.qlik-stage.com tenant



Versions

  • Version of Go (go version):
  • [Other relevant versions]

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Error type: undefined. Note: this is a nested preset so please contact the preset author if you are unable to fix it yourself.

Update OpenHub

Gopherciser Version: v0.16.5
Validated in QlikSenseServer Version: 14.97.2
The following APIs require modification:

This API call GET /header/api/hub/v1/apps/stream/{streamId} should be replaced with: GET /header/api/hub/v1/apps/stream/myspace?cachebust={cacheId}

The cachebust parameters should be added to these requests:

GET /header/api/about/v1/language?cachebust=1668187417827
GET /header/api/hub/v1/privileges?cachebust=1668187417987
GET /header/api/hub/v1/apps/user?cachebust=1668187418326
GET /header/api/hub/v1/insight-advisor-chat/license?cachebust=1668187418936
GET /header/api/hub/v1/reports?cachebust=1668187418326
GET /header/api/hub/v1/user/info?cachebust=1668187418326
GET /header/api/hub/v1/qvdocuments?cachebust=1668187418326
GET /header/api/hub/v1/properties?cachebust=1668187418326
GET /header/api/hub/v1/desktoplink?cachebust=1668187418326
x2 GET /header/api/hub/v1/streams?cachebust=1668187418326
GET /header/api/hub/v1/insight-bot/config?cachebust=1668187418629
GET /header/api/hub/v1/apps/stream/myspace?cachebust=1668187418629

New API calls observed that are currently not in gopherciser for openHub:

GET /header/api/hub/v1/apps/favorites?cachebust=1668187418350
GET /header/api/hub/v1/custombannermessages?cachebust=1668187418643
GET /header/api/capability/v1/list?cachebust=1668187419037

qsest scheduler hangs indefinitely while using disabled events & depends on

scheduler hangs when both depends on & disabled events are used

Steps to Reproduce

  1. Create multiple scripts and have depends on for few events
  2. Disable a few scripts by unchecking the disable checkbox
  3. Run the test

Expected behavior
You will be able to stop the execution & disconnect the schedule

Actual behavior
stopping the executor didn't work. Even after completion of test execution user is connected back to the same instance saying that "connected to an instance of the executor already running on the machine"

Environment
QSEFW

Versions

  • Version of Go (go version): 0.6.17
  • QSEST v0.5.1 RC1

DisableEvents
Error

Documentation clarification

I am using the latest version of gopherciser. Have 3 questions :

  1. What are the Sent (bytes) and Received (Bytes) denote ?
  2. How can I get how much memory my app or sheet uses ?
  3. Is there a way to log cpu, memory, etc to a log file ?

Thanks !

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.