Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( Actions = map[string]common.DocEntry{ "applybookmark": { Description: "## ApplyBookmark action\n\nApply a bookmark in the current app.\n\n**Note:** Specify *either* `title` *or* `id`, not both.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"applybookmark\",\n \"settings\": {\n \"title\": \"My bookmark\"\n }\n}\n```\n", }, "changesheet": { Description: "## ChangeSheet action\n\nChange to a new sheet, unsubscribe to the currently subscribed objects, and subscribe to all objects on the new sheet.\n\nThe action supports getting data from the following objects:\n\n* Listbox\n* Filter pane\n* Bar chart\n* Scatter plot\n* Map (only the first layer)\n* Combo chart\n* Table\n* Pivot table\n* Line chart\n* Pie chart\n* Tree map\n* Text-Image\n* KPI\n* Gauge\n* Box plot\n* Distribution plot\n* Histogram\n* Auto chart (including any support generated visualization from this list)\n* Waterfall chart\n", Examples: "### Example\n\n```json\n{\n \"label\": \"Change Sheet Dashboard\",\n \"action\": \"ChangeSheet\",\n \"settings\": {\n \"id\": \"TFJhh\"\n }\n}\n```\n", }, "clearall": { Description: "## ClearAll action\n\nClear all selections in an app.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"clearall\",\n \"label\": \"Clear all selections (1)\"\n}\n```\n", }, "clickactionbutton": { Description: "## ClickActionButton action\n\nA `ClickActionButton`-action simulates clicking an _action-button_. An _action-button_ is a sheet item which, when clicked, executes a series of actions. The series of actions contained by an action-button begins with any number _generic button-actions_ and ends with an optional _navigation button-action_.\n\n### Supported button-actions\n#### Generic button-actions\n- Apply bookmark\n- Move backward in all selections\n- Move forward in all selections\n- Lock all selections\n- Clear all selections\n- Lock field\n- Unlock field\n- Select all in field\n- Select alternatives in field\n- Select excluded in field\n- Select possible in field\n- Select values matching search criteria in field\n- Clear selection in field\n- Toggle selection in field\n- Set value of variable\n\n#### Navigation button-actions\n- Change to first sheet\n- Change to last sheet\n- Change to previous sheet\n- Change sheet by name\n- Change sheet by ID", Examples: "### Examples\n\n```json\n{\n \"label\": \"ClickActionButton\",\n \"action\": \"ClickActionButton\",\n \"settings\": {\n \"id\": \"951e2eee-ad49-4f6a-bdfe-e9e3dddeb2cd\"\n }\n}\n```\n", }, "createbookmark": { Description: "## CreateBookmark action\n\nCreate a bookmark from the current selection and selected sheet.\n\n**Note:** Both `title` and `id` can be used to identify the bookmark in subsequent actions. \n", Examples: "### Example\n\n```json\n{\n \"action\": \"createbookmark\",\n \"settings\": {\n \"title\": \"my bookmark\",\n \"description\": \"This bookmark contains some interesting selections\"\n }\n}\n```\n", }, "createsheet": { Description: "## CreateSheet action\n\nCreate a new sheet in the current app.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"createsheet\",\n \"settings\": {\n \"title\" : \"Generated sheet\"\n }\n}\n```\n", }, "deletebookmark": { Description: "## DeleteBookmark action\n\nDelete one or more bookmarks in the current app.\n\n**Note:** Specify *either* `title` *or* `id`, not both.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"deletebookmark\",\n \"settings\": {\n \"mode\": \"single\",\n \"title\": \"My bookmark\"\n }\n}\n```\n", }, "deletedata": { Description: "## DeleteData action\n\nDelete a data file from the Data manager.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"DeleteData\",\n \"settings\": {\n \"filename\": \"data.csv\",\n \"path\": \"MyDataFiles\"\n }\n}\n```\n", }, "deleteodag": { Description: "## DeleteOdag action\n\nDelete all user-generated on-demand apps for the current user and the specified On-Demand App Generation (ODAG) link.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"DeleteOdag\",\n \"settings\": {\n \"linkname\": \"Drill to Template App\"\n }\n}\n```\n", }, "deletesheet": { Description: "## DeleteSheet action\n\nDelete one or more sheets in the current app.\n\n**Note:** Specify *either* `title` *or* `id`, not both.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"deletesheet\",\n \"settings\": {\n \"mode\": \"matching\",\n \"title\": \"Test sheet\"\n }\n}\n```\n", }, "disconnectapp": { Description: "## DisconnectApp action\n\nDisconnect from an already connected app.\n", Examples: "### Example\n\n```json\n{\n \"label\": \"Disconnect from server\",\n \"action\" : \"disconnectapp\"\n}\n```\n", }, "disconnectelastic": { Description: "## DisconnectElastic action\n\nDisconnect from a QSEoK environment. This action will disconnect open websockets towards sense and events. The action is not needed for most scenarios, however if a scenario mixes \"elastic\" environments with QSEoW or uses custom actions towards another type of environment, it should be used directly after the last action towards the elastic environment.\n\nSince the action also disconnects any open websocket to Sense apps, it does not need to be preceeded with a `disconnectapp` action.\n", Examples: "### Example\n\n```json\n{\n \"label\": \"Disconnect from elastic environment\",\n \"action\" : \"disconnectelastic\"\n}\n```\n", }, "duplicatesheet": { Description: "## DuplicateSheet action\n\nDuplicate a sheet, including all objects.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"duplicatesheet\",\n \"label\": \"Duplicate sheet1\",\n \"settings\":{\n \"id\" : \"mBshXB\",\n \"save\": true,\n \"changesheet\": true\n }\n}\n```\n", }, "elasticcreateapp": { Description: "## ElasticCreateApp action\n\nCreate an app in a QSEoK deployment. The app will be private to the user who creates it.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"ElasticCreateApp\",\n \"label\": \"Create new app\",\n \"settings\": {\n \"title\": \"Created by script\",\n \"stream\": \"Everyone\",\n \"groups\": [\"Everyone\", \"cool kids\"]\n }\n}\n```\n", }, "elasticcreatecollection": { Description: "## ElasticCreateCollection action\n\nCreate a collection in a QSEoK deployment.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"ElasticCreateCollection\",\n \"label\": \"Create collection\",\n \"settings\": {\n \"name\": \"Collection {{.Session}}\",\n \"private\": false\n }\n}\n```\n", }, "elasticdeleteapp": { Description: "## ElasticDeleteApp action\n\nDelete an app from a QSEoK deployment.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"ElasticDeleteApp\",\n \"label\": \"delete app myapp\",\n \"settings\": {\n \"mode\": \"single\",\n \"appmode\": \"name\",\n \"app\": \"myapp\"\n }\n}\n```\n", }, "elasticdeletecollection": { Description: "## ElasticDeleteCollection action\n\nDelete a collection in a QSEoK deployment.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"ElasticDeleteCollection\",\n \"label\": \"Delete collection\",\n \"settings\": {\n \"name\": \"MyCollection\",\n \"deletecontents\": true\n }\n}\n```\n", }, "elasticdeleteodag": { Description: "## ElasticDeleteOdag action\n\nDelete all user-generated on-demand apps for the current user and the specified On-Demand App Generation (ODAG) link.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"ElasticDeleteOdag\",\n \"settings\": {\n \"linkname\": \"Drill to Template App\"\n }\n}\n```\n", }, "elasticduplicateapp": { Description: "## ElasticDuplicateApp action\n\nDuplicate an app in a QSEoK deployment.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"ElasticDuplicateApp\",\n \"settings\": {\n \"appmode\": \"name\",\n \"app\": \"myapp\",\n \"title\": \"duplicated app {{.Session}}\"\n }\n}\n```\n", }, "elasticexplore": { Description: "## ElasticExplore action\n\nExplore the hub for apps and fill the artifact map with apps to be used by other actions in the script (for example, the `openapp` action with `appmode` set to `random` or `round`).\n", Examples: "### Examples\n\nThe following example shows how to clear the artifact map and fill it with apps having the tag \"mytag\" from the first page in the hub.\n\n```json\n{\n \"action\": \"ElasticExplore\",\n \"label\": \"\",\n \"settings\": {\n \"keepcurrent\": false,\n \"tags\": [\"mytag\"]\n }\n}\n```\n\nThe following example shows how to clear the artifact map, fill it with all apps from the space \"myspace\" and then add all apps from the space \"circles\".\n\n```json\n{\n \"action\": \"ElasticExplore\",\n \"label\": \"\",\n \"settings\": {\n \"keepcurrent\": false,\n \"space\": \"myspace\",\n \"paging\": true\n }\n},\n{\n \"action\": \"ElasticExplore\",\n \"label\": \"\",\n \"settings\": {\n \"keepcurrent\": true,\n \"space\": \"circles\",\n \"paging\": true\n }\n}\n```\n\nThe following example shows how to clear the artifact map and fill it with the apps from the first page of the space \"spaceX\". The apps must have the tag \"tag\" or \"team\" or a tag with id \"15172f9c-4a5f-4ee9-ae35-34c1edd78f8d\", but not be created by the simulated user. In addition, the apps are sorted by the time of modification.\n\n```json\n{\n \"action\": \"ElasticExplore\",\n \"label\": \"\",\n \"settings\": {\n \"keepcurrent\": false,\n \"space\": \"spaceX\",\n \"tags\": [\"tag\", \"team\"],\n \"tagids\": [\"15172f9c-4a5f-4ee9-ae35-34c1edd78f8d\"],\n \"owner\": \"others\",\n \"sorting\": \"updated\",\n \"paging\": false\n }\n}\n```\n", }, "elasticexportapp": { Description: "## ElasticExportApp action\n\nExport an app and, optionally, save it to file.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"elasticexportapp\",\n \"label\": \"Export My App\",\n \"settings\": {\n \"appmode\": \"name\",\n \"app\": \"My App\",\n \"nodata\": false,\n \"savetofile\": false\n }\n}\n```\n", }, "elasticgenerateodag": { Description: "## ElasticGenerateOdag action\n\nGenerate an on-demand app from an existing On-Demand App Generation (ODAG) link.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"ElasticGenerateOdag\",\n \"settings\": {\n \"linkname\": \"Drill to Template App\"\n }\n}\n```\n", }, "elastichubsearch": { Description: "## ElasticHubSearch action\n\nSearch the hub in a QSEoK deployment.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"ElasticHubSearch\",\n \"settings\": {\n \"searchfor\": \"apps\",\n \"querysource\": \"fromfile\",\n \"queryfile\": \"/MyQueries/Queries.txt\"\n }\n}\n```\n", }, "elasticmoveapp": { Description: "## ElasticMoveApp action\n\nMove an app from its existing space into the specified destination space.\n\n**Note:** Specify *either* `destinationspacename` *or* `destinationspaceid`, not both.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"elasticmoveapp\",\n \"settings\": {\n \"app\": \"AppForEveryone\",\n \"appmode\": \"name\",\n \"destinationspacename\": \"everyone\"\n }\n}\n```\n", }, "elasticopenhub": { Description: "## ElasticOpenHub action\n\nOpen the hub in a QSEoK deployment.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"ElasticOpenHub\",\n \"label\": \"Open cloud hub with YourCollection and MyCollection\"\n}\n```\n", }, "elasticpublishapp": { Description: "## ElasticPublishApp action\n\nPublish an app to a managed space.\n\n**Note:** Specify *either* `destinationspacename` *or* `destinationspaceid`, not both.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"elasticpublishapp\",\n \"settings\": {\n \"app\": \"Sales\",\n \"appmode\": \"name\",\n \"destinationspacename\": \"Finance\",\n \"cleartags\": false\n }\n}\n```\n", }, "elasticreload": { Description: "## ElasticReload action\n\nReload an app by simulating selecting **Reload** in the app context menu in the hub.\n", Examples: "### Example\n\n```json\n{\n \"label\": \"Reload MyApp\",\n \"action\": \"elasticreload\",\n \"settings\": {\n \"appmode\": \"name\",\n \"app\": \"MyApp\"\n }\n}\n```\n", }, "elasticuploadapp": { Description: "## ElasticUploadApp action\n\nUpload an app to a QSEoK deployment.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"ElasticUploadApp\",\n \"label\": \"Upload myapp.qvf\",\n \"settings\": {\n \"title\": \"coolapp\",\n \"filename\": \"/home/root/myapp.qvf\",\n \"stream\": \"Everyone\",\n \"spaceid\": \"2342798aaefcb23\",\n }\n}\n```\n", }, "generateodag": { Description: "## GenerateOdag action\n\nGenerate an on-demand app from an existing On-Demand App Generation (ODAG) link.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"GenerateOdag\",\n \"settings\": {\n \"linkname\": \"Drill to Template App\"\n }\n}\n```\n", }, "iterated": { Description: "## Iterated action\n\nLoop one or more actions.\n\n**Note:** This action does not require an app context (that is, it does not have to be prepended with an `openapp` action).\n", Examples: "### Example\n\n```json\n//Visit all sheets twice\n{\n \"action\": \"iterated\",\n \"label\": \"\",\n \"settings\": {\n \"iterations\" : 2,\n \"actions\" : [\n {\n \"action\": \"sheetchanger\"\n },\n {\n \"action\": \"thinktime\",\n \"settings\": {\n \"type\": \"static\",\n \"delay\": 5\n }\n }\n ]\n }\n}\n```\n", }, "listboxselect": { Description: "## ListBoxSelect action\n\nPerform list object specific selectiontypes in listbox.\n\n", Examples: "### Examples\n\n```json\n{\n \"label\": \"ListBoxSelect\",\n \"action\": \"ListBoxSelect\",\n \"settings\": {\n \"id\": \"951e2eee-ad49-4f6a-bdfe-e9e3dddeb2cd\",\n \"type\": \"all\",\n \"wrap\": true,\n \"accept\": true\n }\n}\n```\n", }, "openapp": { Description: "## OpenApp action\n\nOpen an app.\n\n**Note:** If the app name is used to specify which app to open, this action cannot be the first action in the scenario. It must be preceded by an action that can populate the artifact map, such as `openhub`, `elasticopenhub` or `elasticexplore`.\n", Examples: "### Examples\n\n```json\n{\n \"label\": \"OpenApp\",\n \"action\": \"OpenApp\",\n \"settings\": {\n \"appmode\": \"guid\",\n \"app\": \"7967af99-68b6-464a-86de-81de8937dd56\"\n }\n}\n```\n```json\n{\n \"label\": \"OpenApp\",\n \"action\": \"OpenApp\",\n \"settings\": {\n \"appmode\": \"randomguidfromlist\",\n \"list\": [\"7967af99-68b6-464a-86de-81de8937dd56\", \"ca1a9720-0f42-48e5-baa5-597dd11b6cad\"]\n }\n}\n```\n", }, "openhub": { Description: "## OpenHub action\n\nOpen the hub in a QSEoW environment.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"OpenHub\",\n \"label\": \"Open the hub\"\n}\n```\n", }, "productversion": { Description: "## ProductVersion action\n\nRequest the product version from the server and, optionally, save it to the log. This is a lightweight request that can be used as a keep-alive message in a loop.\n", Examples: "### Example\n\n```json\n//Keep-alive loop\n{\n \"action\": \"iterated\",\n \"settings\" : {\n \"iterations\" : 10,\n \"actions\" : [\n {\n \"action\" : \"productversion\"\n },\n {\n \"action\": \"thinktime\",\n \"settings\": {\n \"type\": \"static\",\n \"delay\": 30\n }\n }\n ]\n }\n}\n```\n", }, "publishbookmark": { Description: "## PublishBookmark action\n\nPublish a bookmark.\n\n**Note:** Specify *either* `title` *or* `id`, not both.\n", Examples: "### Example\n\nPublish the bookmark with `id` \"bookmark1\" that was created earlier on in the script.\n\n```json\n{\n \"label\" : \"Publish bookmark 1\",\n \"action\": \"publishbookmark\",\n \"disabled\" : false,\n \"settings\" : {\n \"id\" : \"bookmark1\"\n }\n}\n```\n\nPublish the bookmark with the `title` \"bookmark of testuser\", where \"testuser\" is the username of the simulated user.\n\n```json\n{\n \"label\" : \"Publish bookmark 2\",\n \"action\": \"publishbookmark\",\n \"disabled\" : false,\n \"settings\" : {\n \"title\" : \"bookmark of {{.UserName}}\"\n }\n}\n```\n", }, "publishsheet": { Description: "## PublishSheet action\n\nPublish sheets in the current app.\n", Examples: "### Example\n```json\n{\n \"label\": \"PublishSheets\",\n \"action\": \"publishsheet\",\n \"settings\": {\n \"mode\": \"sheetids\",\n \"sheetIds\": [\"qmGcYS\", \"bKbmgT\"]\n }\n}\n```\n", }, "randomaction": { Description: "## RandomAction action\n\nRandomly select other actions to perform. This meta-action can be used as a starting point for your testing efforts, to simplify script authoring or to add background load.\n\n`randomaction` accepts a list of action types between which to randomize. An execution of `randomaction` executes one or more of the listed actions (as determined by the `iterations` parameter), randomly chosen by a weighted probability. If nothing else is specified, each action has a default random mode that is used. An override is done by specifying one or more parameters of the original action.\n\nEach action executed by `randomaction` is followed by a customizable `thinktime`.\n\n**Note:** The recommended way to use this action is to prepend it with an `openapp` and a `changesheet` action as this ensures that a sheet is always in context.\n", Examples: "### Random action defaults\n\nThe following default values are used for the different actions:\n\n* `thinktime`: Mirrors the configuration of `thinktimesettings`\n* `sheetobjectselection`:\n\n```json\n{\n \"settings\": \n {\n \"id\": <UNIFORMLY RANDOMIZED>,\n \"type\": \"RandomFromAll\",\n \"min\": 1,\n \"max\": 2,\n \"accept\": true\n }\n}\n```\n\n* `changesheet`:\n\n```json\n{\n \"settings\": \n {\n \"id\": <UNIFORMLY RANDOMIZED>\n }\n}\n```\n\n* `clearall`:\n\n```json\n{\n \"settings\": \n {\n }\n}\n```\n\n### Examples\n\n#### Generating a background load by executing 5 random actions\n\n```json\n{\n \"action\": \"RandomAction\",\n \"settings\": {\n \"iterations\": 5,\n \"actions\": [\n {\n \"type\": \"thinktime\",\n \"weight\": 1\n },\n {\n \"type\": \"sheetobjectselection\",\n \"weight\": 3\n },\n {\n \"type\": \"changesheet\",\n \"weight\": 5\n },\n {\n \"type\": \"clearall\",\n \"weight\": 1\n }\n ],\n \"thinktimesettings\": {\n \"type\": \"uniform\",\n \"mean\": 10,\n \"dev\": 5\n }\n }\n}\n```\n\n#### Making random selections from excluded values\n\n```json\n{\n \"action\": \"RandomAction\",\n \"settings\": {\n \"iterations\": 1,\n \"actions\": [\n {\n \"type\": \"sheetobjectselection\",\n \"weight\": 1,\n \"overrides\": {\n \"type\": \"RandomFromExcluded\",\n \"min\": 1,\n \"max\": 5\n }\n }\n ],\n \"thinktimesettings\": {\n \"type\": \"static\",\n \"delay\": 1\n }\n }\n}\n```\n", }, "reload": { Description: "## Reload action\n\nReload the current app by simulating selecting **Load data** in the Data load editor. To select an app, preceed this action with an `openapp` action.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"reload\",\n \"settings\": {\n \"mode\" : \"default\",\n \"partial\": false\n }\n}\n```\n", }, "select": { Description: "## Select action\n\nSelect random values in an object.\n\nSee the [Limitations](README.md#limitations) section in the README.md file for limitations related to this action.\n ", Examples: "### Example\n\n```json\n//Select Listbox RandomFromAll\n{\n \"label\": \"ListBox Year\",\n \"action\": \"Select\",\n \"settings\": {\n \"id\": \"RZmvzbF\",\n \"type\": \"RandomFromAll\",\n \"accept\": true,\n \"wrap\": false,\n \"min\": 1,\n \"max\": 3,\n \"dim\": 0\n }\n}\n```\n", }, "setscript": { Description: "## SetScript action\n\nSet the load script for the current app. To load the data from the script, use the `reload` action after the `setscript` action.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"setscript\",\n \"settings\": {\n \"script\" : \"Characters:\\nLoad Chr(RecNo()+Ord('A')-1) as Alpha, RecNo() as Num autogenerate 26;\"\n }\n}\n```\n", }, "sheetchanger": { Description: "## SheetChanger action\n\nCreate and execute a `changesheet` action for each sheet in an app. This can be used to cache the inital state for all objects or, by chaining two subsequent `sheetchanger` actions, to measure how well the calculations in an app utilize the cache.\n", Examples: "### Example\n\n```json\n{\n \"label\" : \"Sheetchanger uncached\",\n \"action\": \"sheetchanger\"\n},\n{\n \"label\" : \"Sheetchanger cached\",\n \"action\": \"sheetchanger\"\n}\n```\n", }, "staticselect": { Description: "## StaticSelect action\n\nSelect values statically.\n\nThe action supports:\n\n* HyperCube: Normal hypercube\n* ListObject: Normal listbox\n", Examples: "### Examples\n\n#### StaticSelect Barchart\n\n```json\n{ \n\"label\": \"Chart Profit per year\",\n \"action\": \"StaticSelect\",\n \"settings\": {\n \"id\": \"FERdyN\",\n \"path\": \"/qHyperCubeDef\",\n \"type\": \"hypercubecells\",\n \"accept\": true,\n \"wrap\": false,\n \"rows\": [2],\n \"cols\": [0]\n }\n}\n```\n\n#### StaticSelect Listbox\n\n```json\n{ \n\"label\": \"ListBox Territory\",\n \"action\": \"StaticSelect\",\n \"settings\": {\n \"id\": \"qpxmZm\",\n \"path\": \"/qListObjectDef\",\n \"type\": \"listobjectvalues\",\n \"accept\": true,\n \"wrap\": false,\n \"rows\": [19,8],\n \"cols\": [0]\n }\n}\n```\n", }, "subscribeobjects": { Description: "## Subscribeobjects action\n\nSubscribe to any object in the currently active app.\n", Examples: "### Example\n\nSubscribe to two objects in the currently active app and remove any previous subscriptions. \n\n```json\n{\n \"action\" : \"subscribeobjects\",\n \"label\" : \"clear subscriptions and subscribe to mBshXB and f2a50cb3-a7e1-40ac-a015-bc4378773312\",\n \"disabled\": false,\n \"settings\" : {\n \"clear\" : true,\n \"ids\" : [\"mBshXB\", \"f2a50cb3-a7e1-40ac-a015-bc4378773312\"]\n }\n}\n```\n\nSubscribe to an additional single object (or a list of objects) in the currently active app, adding the new subscription to any previous subscriptions.\n\n```json\n{\n \"action\" : \"subscribeobjects\",\n \"label\" : \"add c430d8e2-0f05-49f1-aa6f-7234e325dc35 to currently subscribed objects\",\n \"disabled\": false,\n \"settings\" : {\n \"clear\" : false,\n \"ids\" : [\"c430d8e2-0f05-49f1-aa6f-7234e325dc35\"]\n }\n}\n```", }, "thinktime": { Description: "## ThinkTime action\n\nSimulate user think time.\n\n**Note:** This action does not require an app context (that is, it does not have to be prepended with an `openapp` action).\n", Examples: "### Examples\n\n#### ThinkTime uniform\n\nThis simulates a think time of 10 to 15 seconds.\n\n```json\n{\n \"label\": \"TimerDelay\",\n \"action\": \"thinktime\",\n \"settings\": {\n \"type\": \"uniform\",\n \"mean\": 12.5,\n \"dev\": 2.5\n } \n} \n```\n\n#### ThinkTime constant\n\nThis simulates a think time of 5 seconds.\n\n```json\n{\n \"label\": \"TimerDelay\",\n \"action\": \"thinktime\",\n \"settings\": {\n \"type\": \"static\",\n \"delay\": 5\n }\n}\n```\n", }, "unpublishbookmark": { Description: "## UnpublishBookmark action\n\nUnpublish a bookmark.\n\n**Note:** Specify *either* `title` *or* `id`, not both.\n", Examples: "### Example\n\nUnpublish the bookmark with `id` \"bookmark1\" that was created earlier on in the script.\n\n```json\n{\n \"label\" : \"Unpublish bookmark 1\",\n \"action\": \"unpublishbookmark\",\n \"disabled\" : false,\n \"settings\" : {\n \"id\" : \"bookmark1\"\n }\n}\n```\n\nUnpublish the bookmark with the `title` \"bookmark of testuser\", where \"testuser\" is the username of the simulated user.\n\n```json\n{\n \"label\" : \"Unpublish bookmark 2\",\n \"action\": \"unpublishbookmark\",\n \"disabled\" : false,\n \"settings\" : {\n \"title\" : \"bookmark of {{.UserName}}\"\n }\n}\n```\n", }, "unpublishsheet": { Description: "## UnpublishSheet action\n\nUnpublish sheets in the current app.\n", Examples: "### Example\n```json\n{\n \"label\": \"UnpublishSheets\",\n \"action\": \"unpublishsheet\",\n \"settings\": {\n \"mode\": \"allsheets\" \n }\n}\n```\n", }, "unsubscribeobjects": { Description: "## Unsubscribeobjects action\n\nUnsubscribe to any currently subscribed object.\n", Examples: "### Example\n\nUnsubscribe from a single object (or a list of objects).\n\n```json\n{\n \"action\" : \"unsubscribeobjects\",\n \"label\" : \"unsubscribe from object maVjt and its children\",\n \"disabled\": false,\n \"settings\" : {\n \"ids\" : [\"maVjt\"]\n }\n}\n```\n\nUnsubscribe from all currently subscribed objects.\n\n```json\n{\n \"action\" : \"unsubscribeobjects\",\n \"label\" : \"unsubscribe from all objects\",\n \"disabled\": false,\n \"settings\" : {\n \"clear\": true\n }\n}\n```", }, "uploaddata": { Description: "## UploadData action\n\nUpload a data file to the Data manager.\n", Examples: "### Example\n\n```json\n{\n \"action\": \"UploadData\",\n \"settings\": {\n \"filename\": \"/home/root/data.csv\"\n }\n}\n```\n", }, } Params = map[string][]string{}/* 163 elements not displayed */ Config = map[string]common.DocEntry{ "connectionSettings": { Description: "## Connection settings section\n\nThis section of the JSON file contains connection information.\n\nJSON Web Token (JWT), an open standard for creation of access tokens, or WebSocket can be used for authentication. When using JWT, the private key must be available in the path defined by `jwtsettings.keypath`.\n", Examples: "### Examples\n\n#### JWT authentication\n\n```json\n\"connectionSettings\": {\n \"server\": \"myserver.com\",\n \"mode\": \"jwt\",\n \"virtualproxy\": \"jwt\",\n \"security\": true,\n \"allowuntrusted\": false,\n \"jwtsettings\": {\n \"keypath\": \"mock.pem\",\n \"claims\": \"{\\\"user\\\":\\\"{{.UserName}}\\\",\\\"directory\\\":\\\"{{.Directory}}\\\"}\"\n }\n}\n```\n\n* `jwtsettings`:\n\nThe strings for `reqheader`, `jwtheader` and `claims` are processed as a GO template where the `User` struct can be used as data:\n```golang\nstruct {\n UserName string\n Password string\n Directory string\n }\n```\nThere is also support for the `time.Now` method using the function `now`.\n\n* `jwtheader`:\n\nThe entries for message authentication code algorithm, `alg`, and token type, `typ`, are added automatically to the header and should not be included.\n \n**Example:** To add a key ID header, `kid`, add the following string:\n```json\n{\n \"jwtheader\": \"{\\\"kid\\\":\\\"myKeyId\\\"}\"\n}\n```\n\n* `claims`:\n\n**Example:** For on-premise JWT authentication (with the user and directory set as keys in the QMC), add the following string:\n```json\n{\n \"claims\": \"{\\\"user\\\": \\\"{{.UserName}}\\\",\\\"directory\\\": \\\"{{.Directory}}\\\"}\"\n}\n```\n**Example:** To add the time at which the JWT was issued, `iat` (\"issued at\"), add the following string:\n```json\n{\n \"claims\": \"{\\\"iat\\\":{{now.Unix}}\"\n}\n```\n**Example:** To add the expiration time, `exp`, with 5 hours expiration (time.Now uses nanoseconds), add the following string:\n```json\n{\n \"claims\": \"{\\\"exp\\\":{{(now.Add 18000000000000).Unix}}}\"\n}\n```\n\n#### Static header authentication\n\n```json\nconnectionSettings\": {\n \"server\": \"myserver.com\",\n \"mode\": \"ws\",\n \"security\": true,\n \"virtualproxy\" : \"header\",\n \"headers\" : {\n \"X-Qlik-User-Header\" : \"{{.UserName}}\"\n}\n```\n", }, "loginSettings": { Description: "## Login settings section\n\nThis section of the JSON file contains information on the login settings.\n", Examples: "### Examples\n\n#### Prefix login request type\n\n```json\n\"loginSettings\": {\n \"type\": \"prefix\",\n \"settings\": {\n \"directory\": \"anydir\",\n \"prefix\": \"Nunit\"\n }\n}\n```\n\n#### Userlist login request type\n\n```json\n \"loginSettings\": {\n \"type\": \"userlist\",\n \"settings\": {\n \"userList\": [\n {\n \"username\": \"sim1@myhost.example\",\n \"directory\": \"anydir1\",\n \"password\": \"MyPassword1\"\n },\n {\n \"username\": \"sim2@myhost.example\"\n }\n ],\n \"directory\": \"anydir2\",\n \"password\": \"MyPassword2\"\n }\n }\n```\n", }, "scenario": { Description: "## Scenario section\n\nThis section of the JSON file contains the actions that are performed in the load scenario.\n\n### Structure of an action entry\n\nAll actions follow the same basic structure: \n", Examples: "### Example\n\n```json\n{\n \"action\": \"actioname\",\n \"label\": \"custom label for analysis purposes\",\n \"disabled\": false,\n \"settings\": {\n \n }\n}\n```\n", }, "scheduler": { Description: "## Scheduler section\n\nThis section of the JSON file contains scheduler settings for the users in the load scenario.\n", Examples: "### Using `reconnectsettings`\n\nIf `reconnectsettings.reconnect` is enabled, the following is attempted:\n\n1. Re-connect the WebSocket.\n2. Get the currently opened app in the re-attached engine session.\n3. Re-subscribe to the same object as before the disconnection.\n4. If successful, the action during which the re-connect happened is logged as a successful action with `action` and `label` changed to `Reconnect(action)` and `Reconnect(label)`.\n5. Restart the action that was executed when the disconnection occurred (unless it is a `thinktime` action, which will not be restarted).\n6. Log an info row with info type `WebsocketReconnect` and with a semicolon-separated `details` section as follows: \"success=`X`;attempts=`Y`;TimeSpent=`Z`\"\n * `X`: True/false\n * `Y`: An integer representing the number of re-connection attempts\n * `Z`: The time spent re-connecting (ms)\n\n### Example\n\nSimple scheduler settings:\n\n```json\n\"scheduler\": {\n \"type\": \"simple\",\n \"settings\": {\n \"executiontime\": 120,\n \"iterations\": -1,\n \"rampupdelay\": 7.0,\n \"concurrentusers\": 10\n },\n \"iterationtimebuffer\" : {\n \"mode\": \"onerror\",\n \"duration\" : \"5s\"\n },\n \"instance\" : 2\n}\n```\n\nSimple scheduler set to attempt re-connection in case of an unexpected WebSocket disconnection: \n\n```json\n\"scheduler\": {\n \"type\": \"simple\",\n \"settings\": {\n \"executiontime\": 120,\n \"iterations\": -1,\n \"rampupdelay\": 7.0,\n \"concurrentusers\": 10\n },\n \"iterationtimebuffer\" : {\n \"mode\": \"onerror\",\n \"duration\" : \"5s\"\n },\n \"reconnectsettings\" : {\n \"reconnect\" : true\n }\n}\n```\n", }, "settings": { Description: "## Settings section\n\nThis section of the JSON file contains timeout and logging settings for the load scenario.\n", Examples: "### Examples\n\n```json\n\"settings\": {\n \"timeout\": 300,\n \"logs\": {\n \"traffic\": false,\n \"debug\": false,\n \"filename\": \"logs/{{.ConfigFile}}-{{timestamp}}.log\"\n }\n}\n```\n\n```json\n\"settings\": {\n \"timeout\": 300,\n \"logs\": {\n \"filename\": \"logs/scenario.log\"\n },\n \"outputs\" : {\n \"dir\" : \"./outputs\"\n }\n}\n```\n", }, "main": { Description: "# Setting up load scenarios\n\nA load scenario is defined in a JSON file with a number of sections.\n", Examples: "\n## Example\n\n* [Load scenario example](./examples/configuration_example.json)\n", }, } Groups = []common.GroupsEntry{ { Name: "commonActions", Title: "Common actions", Actions: []string{"applybookmark", "changesheet", "clearall", "clickactionbutton", "createbookmark", "createsheet", "deletebookmark", "deletesheet", "disconnectapp", "duplicatesheet", "iterated", "listboxselect", "openapp", "productversion", "publishbookmark", "publishsheet", "randomaction", "reload", "select", "setscript", "sheetchanger", "staticselect", "subscribeobjects", "thinktime", "unpublishbookmark", "unpublishsheet", "unsubscribeobjects"}, DocEntry: common.DocEntry{ Description: "# Common actions\n\nThese actions are applicable to both Qlik Sense Enterprise for Windows (QSEfW) and Qlik Sense Enterprise on Kubernetes (QSEoK) deployments.\n\n**Note:** It is recommended to prepend the actions listed here with an `openapp` action as most of them perform operations in an app context (such as making selections or changing sheets).\n", Examples: "", }, }, { Name: "qseowActions", Title: "Qlik Sense Enterprise on Windows (QSEoW) actions", Actions: []string{"deleteodag", "generateodag", "openhub"}, DocEntry: common.DocEntry{ Description: "## Qlik Sense Enterprise on Windows (QSEoW) actions\n\nThese actions are only applicable to Qlik Sense Enterprise on Windows (QSEoW) deployments.\n", Examples: "", }, }, { Name: "qseokActions", Title: "Qlik Sense Enterprise on Kubernetes (QSEoK) / Elastic actions", Actions: []string{"deletedata", "elasticcreateapp", "elasticcreatecollection", "elasticdeleteapp", "elasticdeletecollection", "elasticdeleteodag", "elasticduplicateapp", "elasticexplore", "elasticexportapp", "elasticgenerateodag", "elastichubsearch", "elasticmoveapp", "elasticopenhub", "elasticpublishapp", "elasticreload", "elasticuploadapp", "uploaddata", "disconnectelastic"}, DocEntry: common.DocEntry{ Description: "## Qlik Sense Enterprise on Kubernetes (QSEoK) / Elastic actions\n\nThese actions are only applicable to Qlik Sense Enterprise on Kubernetes (QSEoK) deployments.\n", Examples: "", }, }, } Extra = map[string]common.DocEntry{ "sessionvariables": { Description: "\n## Session variables\n\nThis section describes the session variables that can be used with some of the actions.\n\n<details>\n<summary><a name=\"session_variables\"></a>Session variables</summary>\n\nSome action parameters support session variables. A session variable is defined by putting the variable, prefixed by a dot, within double curly brackets, such as `{{.UserName}}`.\n\nThe following session variables are supported in actions:\n\n* `UserName`: The simulated username. This is not the same as the authenticated user, but rather how the username was defined by [Login settings](#login_settings). \n* `Session`: The enumeration of the currently simulated session.\n* `Thread`: The enumeration of the currently simulated \"thread\" or \"concurrent user\".\n\nThe following variable is supported in the filename of the log file:\n\n* `ConfigFile`: The filename of the config file, without file extension.\n\nThe following functions are supported:\n\n* `now`: Evaluates Golang [time.Now()](https://golang.org/pkg/time/). \n* `hostname`: Hostname of the local machine.\n* `timestamp`: Timestamp in `yyyyMMddhhmmss` format.\n* `uuid`: Generate an uuid.\n\n### Example\n```json\n{\n \"action\": \"ElasticCreateApp\",\n \"label\": \"Create new app\",\n \"settings\": {\n \"title\": \"CreateApp {{.Thread}}-{{.Session}} ({{.UserName}})\",\n \"stream\": \"mystream\",\n \"groups\": [\n \"mygroup\"\n ]\n }\n},\n{\n \"label\": \"OpenApp\",\n \"action\": \"OpenApp\",\n \"settings\": {\n \"appname\": \"CreateApp {{.Thread}}-{{.Session}} ({{.UserName}})\"\n }\n},\n{\n \"action\": \"elasticexportapp\",\n \"label\": \"Export app\",\n \"settings\": {\n \"appmode\" : \"name\",\n \"app\" : \"CreateApp {{.Thread}}-{{.Session}} ({{.UserName}})\",\n \"savetofile\": true,\n \"exportname\": \"Exported app {{.Thread}}-{{.Session}} {{now.UTC}}\"\n }\n}\n\n```\n</details>\n", Examples: "", }, } )
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.