diff --git a/CODEOWNERS b/CODEOWNERS index 5b4c31b04..0cb83edd3 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,2 +1,2 @@ -# Default code owners for master branch - Atlassian Data Center App Performance Toolkit -* @benmagro @ometelytsia @SergeyMoroz0703 @astashys @mmizin \ No newline at end of file +# Default code owners - Atlassian Data Center App Performance Toolkit +* @ometelytsia @SergeyMoroz0703 @astashys @mmizin \ No newline at end of file diff --git a/README.md b/README.md index 03b9890fb..70f35eaaf 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ In case of technical questions, issues or problems with DC Apps Performance Tool ## Installation and set up #### Dependencies -* Python 3.6-3.8 and pip +* Python 3.7-3.8 and pip * JDK 8 * Google Chrome web browser * Git client (only for Bitbucket DC) diff --git a/app/bitbucket.yml b/app/bitbucket.yml index 9a684c45b..f9a52906e 100644 --- a/app/bitbucket.yml +++ b/app/bitbucket.yml @@ -85,7 +85,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "89.0.4389.23" # Supports Chrome version 89. You can refer to http://chromedriver.chromium.org/downloads + version: "90.0.4430.24" # Supports Chrome version 90. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/confluence.yml b/app/confluence.yml index f53397238..a18ff4aa6 100644 --- a/app/confluence.yml +++ b/app/confluence.yml @@ -21,16 +21,16 @@ settings: LANGUAGE: en_US.utf8 allow_analytics: Yes # Allow sending basic run analytics to Atlassian. These analytics help us to understand how the tool is being used and help us to continue to invest in this tooling. For more details please see our README. # Action percentage for JMeter and Locust load executors - view_page: 54 - view_dashboard: 6 - view_blog: 8 - search_cql: 7 + view_page: 46 + view_dashboard: 8 + view_blog: 10 + search_cql: 9 create_blog: 3 - create_and_edit_page: 6 - comment_page: 5 - view_attachment: 3 + create_and_edit_page: 7 + comment_page: 6 + view_attachment: 4 upload_attachment: 5 - like_page: 3 + like_page: 2 standalone_extension: 0 # By default disabled # Custom dataset section. custom_dataset_query: # Write CQL query to add CQL output to the app/datasets/confluence/custom_pages.csv, e.g. "title ~ 'AppPage*'" @@ -109,7 +109,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "89.0.4389.23" # Supports Chrome version 89. You can refer to http://chromedriver.chromium.org/downloads + version: "90.0.4430.24" # Supports Chrome version 90. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/extension/jira/examples/__init__.py b/app/extension/jira/examples/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/app/extension/jira/examples/drawio/README.md b/app/extension/jira/examples/drawio/README.md deleted file mode 100644 index 11e8597fa..000000000 --- a/app/extension/jira/examples/drawio/README.md +++ /dev/null @@ -1,55 +0,0 @@ -### Plugin information -Add diagrams to Jira tickets as attachments. - -Screenshots - -![](images/drawio1.png) - -![](images/drawio2.png) - - -### Testing Notes -* You need to populate the test data with two or more diagrams to test its impact on viewing issues. -You need to establish baseline with and without diagrams for this comparison. -* You need to measure the loading time of the editor panel. Important to measure this using a browser as it's UI heavy. -* You need to measure the performance of creating diagrams. Transactions to create a diagram are not UI related, so just -JMeter coverage is sufficient. -* You should keep a separate list of issues that you create diagrams for. This is to ensure that you don't have -excessive number of attachments on the issues you view, and to maintain a fair baseline. - -### How to implement -JMeter -* Navigate to the Jira folder. Run `~/.bzt/jmeter-taurus/5.1/bin/jmeter` to open JMeter GUI. -* Follow guidelines [here](https://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.html) to set-up a JMeter recorder. -Capture these transactions: 1) REST APIs to fetch diagrams when viewing an issue, 2) Opening an editor, -and 3) Creating a diagram. Ignore static assets which are cached by the browser. -* Launch JMeter from the jira folder and open `jira.jmx`. Browse the base transactions (Jira> actions per login > actions) -to find out what other actions are impacted by the plugin. Each action is followed by the `jmeter_extension` controller -which calls the `extension.jmx` file. -* Assuming only view issue is affected, open `extension/extension.jmx` file and add the recorded transactions under -`extend_view_issue`. These transactions will be called after the base view issue transaction completes. - * In this example, the REST API to fetch diagram requires name of the diagrams, which is only found in the main request - (`/browse/issue-key`). - * You need to edit `jira.jmx` file and add a regex extractor under `400 /browse/` to extract diagram names, - so that the extension script can later use. The sampler is found inside the `jmeter_view_issue` transaction controller. - See `images/regex-extractor.png` for more information. - * Store the diagram names into an array and use the forEach controller in the `extension.jmx` file to fetch every diagram - using REST APIs. -* Add transactions for opening editor and creating diagrams, but include these under a throughput controller. - * Set 7% to limit the frequency. JMeter will create a diagram 7% of the time an issue is viewed. - * Use a different issue key for where diagrams are created so that we don't get excessive number of attachments for which - view issues are tested. - -Selenium -* No changes required on the `selenium_view_issue` function in the `modules.py` file. REST APIs will be triggered -by the browser automatically. The key metric here is to measure if there is any impact to the core function (i.e. view issue). -* Edit `jira-ui.py` and make sure `test_1_selenium_custom_action` occurs after the `test_1_selenium_view_issue` action. -* Modify the `custom_action` function in the `extension_ui.py` file to include opening the Editor panel: -View issue > Click "Add draw.io diagram" > Wait until editor panel is available -* Selenium coverage is not needed to create diagrams as the action is not UI related. - -### Run test -Copy `./extension.jmx` and `extension_ui.py` file to the parent `jira/extension` folder. - -Run test: -`bzt jira.yml` diff --git a/app/extension/jira/examples/drawio/__init__.py b/app/extension/jira/examples/drawio/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/app/extension/jira/examples/drawio/drawio-issue-keys.csv b/app/extension/jira/examples/drawio/drawio-issue-keys.csv deleted file mode 100644 index d548741b2..000000000 --- a/app/extension/jira/examples/drawio/drawio-issue-keys.csv +++ /dev/null @@ -1,3 +0,0 @@ -AEBII-13363 -AEBII-13361 -AEBII-13362 \ No newline at end of file diff --git a/app/extension/jira/examples/drawio/extension.jmx b/app/extension/jira/examples/drawio/extension.jmx deleted file mode 100644 index 7989cc56f..000000000 --- a/app/extension/jira/examples/drawio/extension.jmx +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - false - true - false - - - - - - - - - - ${__groovy("${extend_action}" == "create_issue")} - false - true - - - - ${__groovy("${extend_action}" == "search_jql")} - false - true - - - - ${__groovy("${extend_action}" == "view_issue")} - false - true - - - - x_diagram_names - x_diagram_name - true - Use a regex extractor get the list of diagram names and store this in an array. - -ForEach diagram name, call REST API. - - - - false - x_diagram_names - data-downloadurl="application/drawio:(.+?): - $1$ - NOT FOUND - -1 - Add this regular expression extrator under `400 /browse/<issue_key>` - inside the `jmeter_view_issue` transaction controller in the main `jira.jmx` file. - -It extracts the name of the drawio files into an array `x_diagram_names`. -This is used by the ForEach Controller. - - - - false - true - - - - - - - - - - - /rest/drawio/1.0/diagram/crud/${x_diagram_name}/${issue_key} - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://jira-magr-loadbala-hqfqiln4sx33-27270017.ap-southeast-2.elb.amazonaws.com/browse/${issue_key} - - - Accept-Language - en-US,en;q=0.5 - - - Cache-Control - max-age=0 - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 - - - Accept - */* - - - - - - - - - 1 - false - 1 - - ThroughputController.percentThroughput - 7.0 - 0.0 - - - - - extension/examples/drawio/drawio-issue-keys.csv - UTF-8 - , - drawio_issue_key - true - false - true - false - Using a separate list of issues to create diagrams in. This is to ensure that you don't have -excessive number of attachments on the issues you view, and to maintains a fair baseline. - - - - - false - true - - - - - - - false - issueKey - ${drawio_issue_key} - = - true - - - false - ui - atlas - = - true - - - - - - - - /secure/editDrawioDiagram.jspa - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://jira-magr-loadbala-hqfqiln4sx33-27270017.ap-southeast-2.elb.amazonaws.com/browse/${issue_key} - - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - - - - - - false - true - - - - true - - - - false - {"filename":"${random_title}","xml":"<mxfile modified=\"${__time(yyyy-MM-dd,)}T${__time(HH:mm:ss.SSS,)}Z\" host=\"${application.hostname}\" agent=\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0\" version=\"10.7.7\" etag=\"b1eIimhryCWvUAlGNon5\" type=\"atlas\"><mxAtlasLibraries/><diagram id=\"zBi3Nc-PJJCVu6YAyz87\" name=\"Page-1\">jZLBSsQwEIafJkehaVz1vHVVEFEoIniR0IxNIG1Kdnbb7tOb2sm2QRY8ZeabP8nMnzBRNMOjl51+cQosyzM1MHHP8pzzaxGWiYwzucv4DGpvFIkWUJoTEMyIHoyCfSJE5yyaLoWVa1uoMGHSe9ensm9n01s7WdON2QLKSlr4I/swCjVNsVmpn8DUOt7MM6o0MooJ7LVUrl8hsWOi8M7hHDVDAXYyL/oy73u4UD035qHF/2zYfh01vuKgPzfm3Z3E7fNbeUWnHKU90MDULI7RgV4bhLKT1ZT34ZWZ2GpsbMh4COkA8AjDxc74ed7wUcA1gH4MEtoQHRrTtF/85pHpldc3xCQ9cX0+eHEhBGRETBfDf2urbyt2Pw==</diagram></mxfile>","imageXml":null,"imageData":"iVBORw0KGgoAAAANSUhEUgAAAHkAAAA9CAYAAACJM8YzAAAAp0lEQVR4nO3RQQ3AQBDEsOFP+voriI0tBUG27el8e9xlcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJASYHmBxgcoDJAf9k3e4DU72zV6KRA5UAAAAASUVORK5CYII=","imageWidth":123,"imageHeight":63,"imageBackground":"#ffffff"} - = - - - - - - - - /rest/drawio/1.0/diagram/crud/${random_title}/${drawio_issue_key}?untitledDraftName=${random_title} - POST - true - false - true - false - - - - - - - - - Referer - ${scheme}://jira-magr-loadbala-hqfqiln4sx33-27270017.ap-southeast-2.elb.amazonaws.com/secure/editDrawioDiagram.jspa?issueKey=${issue_key}&ui=atlas - - - Accept-Language - en-US,en;q=0.5 - - - Content-Type - application/json; charset=utf-8 - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 - - - Accept - */* - - - - - - groovy - - - true - def generator = { String alphabet, int n -> - new Random().with { - (1..n).collect { alphabet[nextInt(alphabet.length())] }.join() - } -} - -// static -def random_title = generator(('a'..'z').join(), 30) - -// request -vars.put("random_title", random_title) - - - - - - - - - - ${__groovy("${extend_action}" == "view_project_summary")} - false - true - - - - ${__groovy("${extend_action}" == "view_dashboard")} - false - true - - - - ${__groovy("${extend_action}" == "edit_issue")} - false - true - - - - ${__groovy("${extend_action}" == "add_comment")} - false - true - - - - ${__groovy("${extend_action}" == "browse_projects")} - false - true - - - - ${__groovy("${extend_action}" == "view_kanban_board")} - false - true - - - - ${__groovy("${extend_action}" == "view_scrum_board")} - false - true - - - - ${__groovy("${extend_action}" == "view_backlog")} - false - true - - - - ${__groovy("${extend_action}" == "browse_boards")} - false - true - - - - ${__groovy("${extend_action}" == "standalone_extension")} - false - true - - - - true - true - 200 - OK - Dummy Sampler used to simulate requests and responses -without actual network activity. This helps debugging tests. - Dummy Sampler used to simulate requests and responses -without actual network activity. This helps debugging tests. - ${__Random(50,500)} - ${__Random(1,50)} - ${__Random(1,5)} - - org.apache.jmeter.samplers.SampleResult - - - - - - diff --git a/app/extension/jira/examples/drawio/extension_ui.py b/app/extension/jira/examples/drawio/extension_ui.py deleted file mode 100644 index e4a553357..000000000 --- a/app/extension/jira/examples/drawio/extension_ui.py +++ /dev/null @@ -1,21 +0,0 @@ -from selenium.webdriver.common.by import By -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.support import expected_conditions as ec -from app.selenium_ui.conftest import print_timing -from util.conf import JIRA_SETTINGS - -APPLICATION_URL = JIRA_SETTINGS.server_url -timeout = 20 - - -# This should be called after an issue is viewed. -def custom_action(webdriver, datasets): - # Click more - webdriver.find_element_by_id('opsbar-operations_more').click() - - @print_timing("selenium_open_drawio_editor") - def measure(): - # Click to add a diagram (opens the drawio editor) - webdriver.find_element_by_id('drawio-add-menu-item').click() - WebDriverWait(webdriver, timeout).until(ec.frame_to_be_available_and_switch_to_it((By.ID, 'drawioEditor'))) - measure() diff --git a/app/extension/jira/examples/drawio/images/drawio1.png b/app/extension/jira/examples/drawio/images/drawio1.png deleted file mode 100644 index 26216bdd8..000000000 Binary files a/app/extension/jira/examples/drawio/images/drawio1.png and /dev/null differ diff --git a/app/extension/jira/examples/drawio/images/drawio2.png b/app/extension/jira/examples/drawio/images/drawio2.png deleted file mode 100644 index 74d563546..000000000 Binary files a/app/extension/jira/examples/drawio/images/drawio2.png and /dev/null differ diff --git a/app/extension/jira/examples/drawio/images/regex-extractor.png b/app/extension/jira/examples/drawio/images/regex-extractor.png deleted file mode 100644 index bb8f581b3..000000000 Binary files a/app/extension/jira/examples/drawio/images/regex-extractor.png and /dev/null differ diff --git a/app/extension/jira/examples/jiraxporter/README.md b/app/extension/jira/examples/jiraxporter/README.md deleted file mode 100644 index d0f65e10e..000000000 --- a/app/extension/jira/examples/jiraxporter/README.md +++ /dev/null @@ -1,38 +0,0 @@ -### Plugin information -Exports a jiraticket information to a file (PDF/XLSX/CSV). - -Screenshot - -![](images/jiraxporter.png) - - -### Testing Notes -* The plugin introduces a number of REST APIs, requested when viewing an issue. -You need to include these calls to the JMeter script and measure their timings. -* You need to ensure there is no regression on the rendering times of the view issue, measured by Selenium. -* You need to determine the frequency of export as it's not reasonable to export for every viewed issue. -Let's make a reasonable assumption to export 10% of the time an issue is viewed. - - -### How to implement -JMeter -* Navigate to the Jira folder. Run `~/.bzt/jmeter-taurus/5.1/bin/jmeter` to open JMeter GUI. -* Follow guidelines [here](https://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.html) to set-up a JMeter recorder. -Capture transactions: 1) REST APIs when viewing an issue, and 2) Requests when exporting a file. -* Launch JMeter from the jira folder and open `jira.jmx`. Browse the base transactions (Jira> actions per login > actions) -to find out what other actions are impacted by the plugin. Each action is followed by the `jmeter_extension` controller -which calls the `extension.jmx` file. -* Assuming only view issue is affected, open `extension/extension.jmx` file and add the recorded transactions under -`extend_view_issue`. This will be called after the base view issue transaction completes. -* Add a throughput controller and define 10% to limit the frequency of the exports. - -Selenium -* No further testing required, because 1) REST APIs will be triggered by the browser automatically -and 2) Export functionality is not UI related. - -### Run test -Copy `./extension.jmx` file to the parent `jira/extension` folder. - -Run test: - -`bzt jira.yml` diff --git a/app/extension/jira/examples/jiraxporter/extension.jmx b/app/extension/jira/examples/jiraxporter/extension.jmx deleted file mode 100644 index 1a8fe2886..000000000 --- a/app/extension/jira/examples/jiraxporter/extension.jmx +++ /dev/null @@ -1,626 +0,0 @@ - - - - - - false - true - false - - - - - - - - - - ${__groovy("${extend_action}" == "create_issue")} - false - true - - - - ${__groovy("${extend_action}" == "search_jql")} - false - true - - - - ${__groovy("${extend_action}" == "view_issue")} - false - true - - - - false - true - - - - - - - false - _ - ${__time(,)} - = - true - - - - - - - UTF-8 - /rest/jiraxporter/1.0/product/config/scopes - GET - true - false - true - false - - - - - - - - - Referer - ${application.protocol}://${application.domain}/browse/${issue_key} - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - x-atlassian-mau-ignore - true - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 - - - Accept - */* - - - - - - - - - - false - _ - ${__time(,)} - = - true - - - - - - - UTF-8 - /rest/jiraxporter/1.0/product/config/executioncontext - GET - true - false - true - false - - - - - - - - - Referer - ${application.protocol}://${application.domain}/browse/${issue_key} - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - x-atlassian-mau-ignore - true - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 - - - Accept - */* - - - - - - - - - - false - _ - ${__time(,)} - = - true - - - - - - - UTF-8 - /rest/jiraxporter/1.0/product/config/breakpagetypes - GET - true - false - true - false - - - - - - - - - Referer - ${application.protocol}://${application.domain}/browse/${issue_key} - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - x-atlassian-mau-ignore - true - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 - - - Accept - */* - - - - - - - true - - - - false - {"executionContext":"SINGLE_ISSUE","parameters":{"issueKey":"${issue_key}"},"scopes":["4"]} - = - - - - - - - UTF-8 - /rest/jiraxporter/1.0/export/templates - POST - true - false - true - false - - - - - - - - - Referer - ${application.protocol}://${application.domain}/browse/${issue_key} - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Cache-Control - max-age=0 - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 - - - Accept - */* - - - - - - - - - - false - key - XP_ISSUE_DETAIL_EXPORT - = - true - - - false - _ - ${__time(,)} - = - true - - - - - - - UTF-8 - /rest/jiraxporter/1.0/settings - GET - true - false - true - false - - - - - - - - - Referer - ${application.protocol}://${application.domain}/browse/${issue_key} - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - - - - - - false - _ - ${__time(,)} - = - true - - - - - - - UTF-8 - /rest/jiraxporter/1.0/permissions/${issue_key} - GET - true - false - true - false - - - - - - - - - Referer - ${application.protocol}://${application.domain}/browse/${issue_key} - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - - - - 1 - false - 1 - - ThroughputController.percentThroughput - 10.0 - 0.0 - - - - - false - true - - - - - - - false - issueKey - ${issue_key} - = - true - - - false - outputType - ${issue_type} - = - true - - - false - templateId - 1 - = - true - - - false - filename - - = - true - - - false - StructureIssueSpec - null - = - true - - - - - - - UTF-8 - /plugins/servlet/jiraxporter - GET - true - false - true - false - - - - - - - - - Referer - ${application.protocol}://${application.domain}/browse/${issue_key} - - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - - - - groovy - - - true - def issue_types = [ 'csv', 'pdf', 'xlsx' ] - -Random rnd = new Random() -def issue_type = issue_types[rnd.nextInt(issue_types.size)] - -vars.put("issue_type", issue_type) - - - - - - - - - ${__groovy("${extend_action}" == "view_project_summary")} - false - true - - - - ${__groovy("${extend_action}" == "view_dashboard")} - false - true - - - - ${__groovy("${extend_action}" == "edit_issue")} - false - true - - - - ${__groovy("${extend_action}" == "add_comment")} - false - true - - - - ${__groovy("${extend_action}" == "browse_projects")} - false - true - - - - ${__groovy("${extend_action}" == "view_kanban_board")} - false - true - - - - ${__groovy("${extend_action}" == "view_scrum_board")} - false - true - - - - ${__groovy("${extend_action}" == "view_backlog")} - false - true - - - - ${__groovy("${extend_action}" == "browse_boards")} - false - true - - - - ${__groovy("${extend_action}" == "standalone_extension")} - false - true - - - - true - true - 200 - OK - Dummy Sampler used to simulate requests and responses -without actual network activity. This helps debugging tests. - Dummy Sampler used to simulate requests and responses -without actual network activity. This helps debugging tests. - ${__Random(50,500)} - ${__Random(1,50)} - ${__Random(1,5)} - - org.apache.jmeter.samplers.SampleResult - - - - - - diff --git a/app/extension/jira/examples/jiraxporter/images/jiraxporter.png b/app/extension/jira/examples/jiraxporter/images/jiraxporter.png deleted file mode 100644 index 3a85d316c..000000000 Binary files a/app/extension/jira/examples/jiraxporter/images/jiraxporter.png and /dev/null differ diff --git a/app/jira.yml b/app/jira.yml index 13d08931d..171d85f01 100644 --- a/app/jira.yml +++ b/app/jira.yml @@ -22,17 +22,17 @@ settings: allow_analytics: Yes # Allow sending basic run analytics to Atlassian. These analytics help us to understand how the tool is being used and help us to continue to invest in this tooling. For more details please see our README. # Action percentage for Jmeter and Locust load executors create_issue: 4 - search_jql: 13 - view_issue: 43 - view_project_summary: 4 - view_dashboard: 12 - edit_issue: 4 + search_jql: 11 + view_issue: 34 + view_project_summary: 3 + view_dashboard: 10 + edit_issue: 5 add_comment: 2 - browse_projects: 4 - view_scrum_board: 3 - view_kanban_board: 3 + browse_projects: 9 + view_scrum_board: 8 + view_kanban_board: 7 view_backlog: 6 - browse_boards: 2 + browse_boards: 1 standalone_extension: 0 # By default disabled # Custom dataset section. custom_dataset_query: # Write JQL query to add JQL output to the app/datasets/jira/custom-issues.csv, e.g. "summary ~ 'AppIssue*'" @@ -113,7 +113,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "89.0.4389.23" # Supports Chrome version 89. You can refer to http://chromedriver.chromium.org/downloads + version: "90.0.4430.24" # Supports Chrome version 90. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/jmeter/confluence.jmx b/app/jmeter/confluence.jmx index f5dc99977..3e2576e04 100644 --- a/app/jmeter/confluence.jmx +++ b/app/jmeter/confluence.jmx @@ -1,8 +1,8 @@ - - + + This test plan was created by the BlazeMeter converter v.2.4.18. Please contact support@blazemeter.com for further support. false false @@ -203,7 +203,7 @@ true - + @@ -284,8 +284,18 @@ + + + 302 + + + Assertion.response_code + false + 2 + + - + @@ -325,60 +335,56 @@ - + false - x_keyboard_hash - name=\"ajs-keyboardshortcut-hash\" content=\"(.*?)\"> + ajs-build-number + meta name=\"ajs-build-number\" content=\"(.*?)\"> $1$ NOT FOUND 1 + all + - + false - x_static_resource_url - meta name=\"ajs-static-resource-url-prefix\" content=\"(.*?)/_\"> + ajs-keyboardshortcut-hash + meta name=\"ajs-keyboardshortcut-hash\" content=\"(.*?)\"> $1$ - NOT FOUND + 1 + all - + false - x_version_number - meta name=\"ajs-version-number\" content=\"(.*?)\"> + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> $1$ - NOT FOUND + 1 + all - + false - x_build_number - meta name=\"ajs-build-number\" content=\"(.*?)\" + ajs-atl-token + meta name=\"ajs-atl-token\" content=\"(.*?)\"> $1$ - NOT FOUND + 1 + all + true - - - Log Out - - - Assertion.response_data - false - 16 - - - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","baseurl-checker-resource","dashboard","backbone-dashboard","atl.general","main"],"xr":["confluence.macros.advanced:blogpost-resources"]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","dashboard","backbone-dashboard","atl.general","main"],"xr":[]} = @@ -398,11 +404,11 @@ - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -412,19 +418,11 @@ Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + @@ -432,7 +430,7 @@ - ${application.postfix}/rest/mywork/latest/status/notification/count + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} GET true false @@ -443,29 +441,21 @@ - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + @@ -473,7 +463,7 @@ - ${application.postfix}/rest/shortcuts/latest/shortcuts/${x_build_number}/${x_keyboard_hash} + ${application.postfix}/rest/mywork/latest/status/notification/count GET true false @@ -484,36 +474,85 @@ - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - + + false + spaceKey + + = + true + + + false + types + + = + true + + + false + tab + all + = + true + + + false + showProfilePic + true + = + true + + + false + maxResults + 40 + = + true + + + false + spaces + + = + true + + + false + category + + = + true + + + false + users + + = + true + + false - {"r":[],"c":["com.atlassian.confluence.extra.team-calendars.resources-batch"],"xc":["_super","baseurl-checker-resource","dashboard","backbone-dashboard","atl.general","main"],"xr":["confluence.macros.advanced:blogpost-resources"]} + labels + = + true @@ -521,8 +560,8 @@ - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/dashboardmacros/1.0/updates + GET true false true @@ -532,42 +571,23 @@ - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - - false - cql - type=space%20and%20space.type=favourite%20order%20by%20favourite%20desc - = - true - false expand @@ -582,6 +602,13 @@ = true + + true + cql + type=space and space.type=favourite order by favourite desc + = + true + false _ @@ -606,93 +633,28 @@ - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + true + - - false - maxResults - 40 - = - true - - - false - tab - all - = - true - - - false - showProfilePic - true - = - true - - - false - labels - - = - true - - - false - spaces - - = - true - - - false - users - - = - true - - - false - types - - = - true - - - false - category - - = - true - - + false - spaceKey - + [{"name":"confluence.viewpage.src.empty","properties":{"userKey":"${ajs-remote-user-key}"},"timeDelta":-586},{"name":"confluence.spa.root-loaded","properties":{"redirectedTo":"all-updates","currentSection":""},"timeDelta":-568},{"name":"confluence.spa.rendered","properties":{"currentSection":"all-updates"},"timeDelta":-540},{"name":"confluence.spa.view","properties":{"previousSection":"all-updates","currentSection":"all-updates"},"timeDelta":-455}] = - true @@ -700,8 +662,8 @@ - ${application.postfix}/rest/dashboardmacros/1.0/updates - GET + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST true false true @@ -711,24 +673,64 @@ - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - + + Content-Type + application/json + + + + + + + true + + + + false + [{"name":"browser.metrics.navigation","properties":{"apdex":"0","firstPaint":"10096","isInitial":"true","journeyId":"6925a014-c5e2-4fb6-a50b-671e1e5658de","key":"confluence.dashboard.view","navigationType":"0","readyForUser":"10702","redirectCount":"1","resourceLoadedEnd":"10044","resourceLoadedStart":9390.24999999674,"threshold":"1000","unloadEventStart":"9366","unloadEventEnd":"9366","redirectStart":"2","redirectEnd":"173","fetchStart":"173","domainLookupStart":"173","domainLookupEnd":"173","connectStart":"173","connectEnd":"173","requestStart":"176","responseStart":"333","responseEnd":"9360","domLoading":"9367","domInteractive":"10060","domContentLoadedEventStart":"10060","domContentLoadedEventEnd":"10091","domComplete":"10967","loadEventStart":"10967","loadEventEnd":"10968","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","serverDuration":"37","requestCorrelationId":"da8b3c3783e2a786","resourceTiming":"{\"â˜Â \":[\"2,78u,7e2,7d1,799,78u,,78u,78u,78u\",\"2,78u,7e1,7cy,79a,78u,,78u,78u,78u\",\"2,78u,7e0,7cz,79a,78u,,78u,78u,78u\",\"3,78u,7lb,7d1,79b,78u,,78u,78u,78u\",\"3,78u,7r0,7gg,7cs,7cs,,79b,79b,79b\",\"3,78v,7hm,7gd,7cs,7cs,,79c,79c,79b\",\"5,7r9,7v1,7v0,7rb,7r9,,7r9,7r9,7r9\",\"4,7rm,7v8,7v7,7ro,7rm,,7rm,7rm,7rm\",\"4,7rp,7vb,7vb,7rr,7rp,,7rp,7rp,7rp\",\"4,7rq,7w7,7w5,7si,7rq,,7rq,7rq,7rq\",\"5,7tl,7xa,7x9,7tn,7tl,,7tl,7tl,7tl\",\"5,7tw,7xl,7xk,7tz,7tw,,7tw,7tw,7tw\",\"4,7um,7ys,7ys,7v9,7um,,7um,7um,7um\",\"4,7un,7yw,7yv,7vb,7un,,7un,7un,7un\",\"4,7uy,82h,82g,7yw,7uy,,7uy,7uy,7uy\",\"4,7uy,80z,80w,7xa,7uy,,7uy,7uy,7uy\",\"4,7uz,817,816,7xl,7uz,,7uz,7uz,7uz\",\"3,7v8,84u,84t,817,7v8,,7v8,7v8,7v8\",\"-1,7xo,82q,82p,7yt,7xo,,7xo,7xo,7xo\",\"5,80p,80s\",\"5,7ud,85x,85w,7v1,7ud,,7ud,7ud,7ud\"]}","mark.@grammarly-extension:checkScriptInitStart":"[10364]","mark.@grammarly-extension:checkScriptInitEnd":"[10371]","userTimingRaw":"{\"marks\":{\"@grammarly-extension:checkScriptInitStart\":[10364],\"@grammarly-extension:checkScriptInitEnd\":[10371]},\"measures\":{}}","experiments":"[]"},"timeDelta":-4690}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + Accept application/json, text/javascript, */*; q=0.01 + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + @@ -789,22 +791,6 @@ file_path,file_type,file_name - - 1 - 0 - 0 - - - - true - - - vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); - - groovy - - - 1 false @@ -812,20 +798,44 @@ ${perc_view_page} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true - + - + + + false + pageId + ${page_id} + = + true + + - ${application.postfix}/pages/viewpage.action?pageId=${page_id} + ${application.postfix}/pages/viewpage.action GET true false @@ -836,132 +846,89 @@ - + - - Accept-Language - en-US,en;q=0.5 - Upgrade-Insecure-Requests 1 - - Accept-Encoding - gzip, deflate - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 - + false - x_parent_page_id - meta name=\"ajs-parent-page-id\" content=\"(.*?)\" + ajs-build-number + meta name=\"ajs-build-number\" content=\"(.*?)\"> $1$ NOT FOUND 1 - c_ParentPageID + all - + false - x_page_id - meta name=\"ajs-page-id\" content=\"(.*?)\"> + ajs-keyboardshortcut-hash + meta name=\"ajs-keyboardshortcut-hash\" content=\"(.*?)\"> $1$ NOT FOUND 1 - c_TreePageID + all - + false - x_space_key - meta id=\"confluence-space-key\" name=\"confluence-space-key\" content=\"(.*?)\" + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> $1$ NOT FOUND 1 + all - - - Created by - Save for later - - - Assertion.response_data - false - 16 - - - + false - x_ancestor_ids - name=\"ancestorId\" value=\"(.*?)\" + ajs-parent-page-id + meta name=\"ajs-parent-page-id\" content=\"(.*?)\"> $1$ NOT FOUND - -1 + 1 + all - - true - - - def tempQueryStr = ""; -def totalAncestorID = vars.get("x_ancestor_ids_matchNr").toInteger(); -def tempCounter = 1; - -if (totalAncestorID > 0) -{ - - while (tempCounter <= totalAncestorID) - { - tempQueryStr = tempQueryStr + "ancestors=" + vars.get("x_ancestor_ids_" + tempCounter + "_g1") + "&"; - tempCounter = tempCounter + 1; - } - - vars.put("p_natChild1_queryStr", (tempQueryStr.substring(0,tempQueryStr.length() - 1)).toString()); -} - -//log.info("QueryString: " + vars.get("p_natChild_queryStr")); - - - - groovy - - - + false - x_tree_request_id - name="treeRequestId" value="(.+?)" + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> $1$ - + NOT FOUND 1 - true + all - + false - x_has_no_root - "noRoot" value="(.+?)" + ajs-atl-token + meta name=\"ajs-atl-token\" content=\"(.*?)\"> $1$ 1 + all true - + false - x_root_page_id - name="rootPageId" value="(.+?)" + x_editable + id=\"editPageLink\" href=(.+?)\?pageId=(.+?)\" $1$ 1 - c_rootPageId true + It will create a bunch of "x_editable......" variables @@ -975,75 +942,14 @@ if (totalAncestorID > 0) true - - false - x_editable - id=\"editPageLink\" href=(.+?)\?pageId=(.+?)\" - $1$ - - 1 - true - - - - Adding this sampler after the login operation to stop and start next thread if fails. - - 1 - - - - - - - - - - - - ${application.postfix}/rest/helptips/1.0/tips - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewcontent","atl.general","page","atl.comments"],"xr":[]} = @@ -1063,11 +969,11 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -1077,42 +983,19 @@ if (totalAncestorID > 0) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - - - false - commentLikes - true - = - true - - - false - _ - ${__time(,)} - = - true - - + - ${application.postfix}/rest/likes/1.0/content/${x_page_id}/likes + ${application.postfix}/rest/helptips/1.0/tips GET true false @@ -1123,35 +1006,31 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + + Content-Type + application/json - + - + false - pageId - ${x_page_id} + containerId + ${page_id} = true @@ -1168,7 +1047,7 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/highlighting/1.0/panel-items + ${application.postfix}/rest/inlinecomments/1.0/comments GET true false @@ -1179,38 +1058,23 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - */* - - + - - false - pageid - ${x_page_id} - = - true - false _ @@ -1224,7 +1088,7 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/mywork/latest/status/notification/count + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} GET true false @@ -1235,139 +1099,118 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + false - containerId - ${x_page_id} + decorator + none = true - + false - _ - ${__time(,)} + expandCurrent + true = true - - - - - - - ${application.postfix}/rest/inlinecomments/1.0/comments - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 + + false + mobile + false + = + true - - X-Requested-With - XMLHttpRequest + + false + sort + position + = + true - - Accept-Encoding - gzip, deflate + + false + reverse + false + = + true - - Accept - application/json, text/javascript, */*; q=0.01 + + false + spaceKey + ${space_key} + = + true - - - - - - authorDisplayName - [] - - - Assertion.response_data - false - 48 - - - - false - x_inline_comment - \"id\":(.+?)\,\" - $1$ - none - 0 - - - - - - - + false - parentPageId - ${x_parent_page_id} + treeId + 0 = true - + false - pageId - ${x_page_id} + hasRoot + false = true - + false - spaceKey - ${x_space_key} + startDepth + 0 = true - - true - atl_after_login_redirect - /pages/viewpage.action + + false + disableLinks + false = true - + false - timeout - 12000 + placement + sidebar + = + true + + + false + excerpt + false + = + true + + + false + ancestors + ${ajs-parent-page-id} + = + true + + + false + treePageId + ${page_id} = true @@ -1384,7 +1227,7 @@ if (totalAncestorID > 0) - ${application.postfix}/plugins/editor-loader/editor.action + ${application.postfix}/plugins/pagetree/naturalchildren.action GET true false @@ -1395,31 +1238,30 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + text/plain, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - */* - - + + + false + commentLikes + true + = + true + false _ @@ -1433,7 +1275,7 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/watch-button/1.0/watchState/${x_page_id} + ${application.postfix}/rest/likes/1.0/content/${page_id}/likes GET true false @@ -1444,36 +1286,36 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - + false - {"r":[],"c":["request-access-plugin"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + pageId + ${page_id} + = + true + + + false + _ + ${__time(,)} = + true @@ -1481,8 +1323,8 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/highlighting/1.0/panel-items + GET true false true @@ -1492,40 +1334,36 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + */* X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - + + false + pageid + ${page_id} + = + true + + false - {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + _ + ${__time(,)} = + true @@ -1533,8 +1371,8 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/mywork/latest/status/notification/count + GET true false true @@ -1544,40 +1382,29 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - + false - {"r":["confluence.web.resources.colors:colors","com.atlassian.confluence.keyboardshortcuts:confluence-keyboard-shortcuts","com.atlassian.confluence.editor:editor-resources-conf-frontend","com.atlassian.confluence.plugins.confluence-browser-metrics:editor","confluence.web.resources:quicksearchdropdown","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","confluence.web.resources:hint-manager","confluence.web.resources:raphael","com.atlassian.confluence.plugins.confluence-link-browser:link-object","confluence.web.resources:core","com.atlassian.confluence.plugins.confluence-page-layout:pagelayout-frontend","com.atlassian.confluence.plugins.confluence-link-browser:link-browser-conf-frontend","confluence.extra.jira:macro-browser-resources","confluence.extra.jira:dialogsJs-for-conf-frontend","confluence.extra.jira:jirachart-macro","confluence.web.resources:navigator-context","com.atlassian.plugins.atlassian-connect-plugin:confluence-atlassian-connect-resources-v5","com.atlassian.plugins.atlassian-connect-plugin:dynamic-css-resources","com.atlassian.plugins.atlassian-connect-plugin:featured-macro-css-resources","com.atlassian.plugins.atlassian-connect-plugin:confluence-atlassian-connect-autoconvert-resources-v5","com.atlassian.plugins.atlassian-connect-plugin:macro-editor-resources-v5","com.atlassian.confluence.plugins.confluence-inline-tasks:editor-autocomplete-date-conf-frontend","confluence.web.resources:breadcrumbs","com.atlassian.confluence.plugins.confluence-collaborative-editor-plugin:confluence-collaborative-editor-plugin-resources","com.atlassian.confluence.keyboardshortcuts:confluence-keyboard-shortcuts","com.atlassian.confluence.plugins.confluence-labels:labels-editor","confluence.web.resources:ajs","com.atlassian.auiplugin:aui-inline-dialog2","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-for-editor-conf-frontend","com.atlassian.confluence.plugins.gadgets:macro-browser-for-gadgetsplugin","com.atlassian.confluence.plugins.confluence-invite-to-edit:edit-resources","confluence.macros.multimedia:macro-browser-smart-fields","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.image.effects.ImageEffectsPlugin:propertiespanel","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-resources-conf-frontend","com.atlassian.confluence.plugins.confluence-view-file-macro:view-file-macro-editor-resources","confluence.macros.advanced:editor_includemacro-conf-frontend","com.atlassian.confluence.plugins.confluence-request-access-plugin:confluence-request-access-plugin-resources","confluence.web.resources:deferred-dialog-loader","com.atlassian.confluence.plugins.confluence-create-content-plugin:editor-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-macro-browser-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-resources","com.atlassian.confluence.plugins.confluence-inline-tasks:inline-tasks-macro-browser","com.atlassian.confluence.extra.team-calendars:amd","com.atlassian.confluence.extra.team-calendars:user-timezone-setup","com.atlassian.confluence.extra.team-calendars:calendar-init-editor","com.atlassian.confluence.extra.team-calendars:macro-browser-web-resources","confluence.extra.jira:text-placeholders-jira"],"c":[],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + _ + ${__time(,)} = + true @@ -1585,8 +1412,8 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/watch-button/1.0/watchState/${page_id} + GET true false true @@ -1596,39 +1423,27 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["com.atlassian.confluence.extra.team-calendars.resources-batch"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + {"r":[],"c":["sortable-tables-resources","request-access-plugin"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewcontent","atl.general","page","atl.comments","browser-metrics-plugin.contrib"],"xr":[]} = @@ -1648,11 +1463,11 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -1662,215 +1477,62 @@ if (totalAncestorID > 0) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - Throws a warning if "x_has_no_root" is not defined, in which case, request to view tree is not made. - ${__groovy(${x_has_no_root} == false || ${x_has_no_root} == true )} - false - true - - - - false - true - - - - ${__groovy(${x_has_no_root} == false)} - false - true - - - - - - - - - - - ${tree_request} - GET - true - false - true - false - - - - ${application.postfix} is not needed as ${tree_request} already has a postfix value. - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Accept-Encoding - gzip, deflate - - - Accept - text/plain, */*; q=0.01 - - - - - - groovy - - - true - // variables extracted from viewpage.action required to construct url for the page tree - -def request = vars.get("x_tree_request_id").toString() -def rootPageId = vars.get("x_root_page_id").toString() -def pageId = vars.get("x_page_id").toString() -def ancestors = vars.get("p_natChild1_queryStr").toString() - -request = request.replace("&amp;", "&") + "&hasRoot=true&" + "pageId=" + rootPageId + "&treeId=0&startDepth=0&mobile=false&" + ancestors + "&treePageId=" + pageId - -//vars.put("tree_request", request) - -vars.put("tree_request", request) - - - - - plugin_pagetree_children_span - plugin_pagetree_children_list - - - Assertion.response_data - false - 48 - - - - - - ${__groovy(${x_has_no_root} == true)} - false - true - Thro - - - - - - - - - - - ${tree_request} - GET - true - false - true - false - - - - ${application.postfix} is not needed as ${tree_request} already has a postfix value. - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Accept-Encoding - gzip, deflate - - - Accept - text/plain, */*; q=0.01 - - - - - - groovy - - - true - // variables extracted from viewpage.action required to construct url for the page tree - -def request = vars.get("x_tree_request_id").toString() -def rootPageId = vars.get("x_root_page_id").toString() -def pageId = vars.get("x_page_id").toString() -def spaceKey = vars.get("x_space_key").toString() -def ancestors = vars.get("p_natChild1_queryStr").toString() - -request = request.replace("&amp;", "&") + "&hasRoot=false&" + "spaceKey=" + spaceKey + "&treeId=0&startDepth=0&mobile=false&" + ancestors + "&treePageId=" + pageId - -//vars.put("tree_request", request) - -vars.put("tree_request", request) - - - - - plugin_pagetree_children_span - plugin_pagetree_children_list - - - Assertion.response_data - false - 48 - - - - - - - - - 1 - false - 1 - ${perc_view_dashboard} - - - - false - true - - - + - + + + false + spaceKey + ${space_key} + = + true + + + false + parentPageId + ${ajs-parent-page-id} + = + true + + + true + atl_after_login_redirect + /pages/viewpage.action + = + true + + + false + pageId + ${page_id} + = + true + + + false + timeout + 12000 + = + true + + + false + _ + ${__time(,)} + = + true + + - ${application.postfix}/index.action + ${application.postfix}/plugins/editor-loader/editor.action GET true false @@ -1881,92 +1543,27 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + */* + + + X-Requested-With + XMLHttpRequest - - false - x_keyboard_hash - name=\"ajs-keyboardshortcut-hash\" content=\"(.*?)\"> - $1$ - NOT FOUND - 1 - - - - false - x_static_resource_url - meta name=\"ajs-static-resource-url-prefix\" content=\"(.*?)/_\"> - $1$ - NOT FOUND - 1 - - - - false - x_version_number - meta name=\"ajs-version-number\" content=\"(.*?)\"> - $1$ - NOT FOUND - 1 - - - - false - x_build_number - meta name=\"ajs-build-number\" content=\"(.*?)\" - $1$ - NOT FOUND - 1 - - - - false - x_space_key - /pages/createpage.action\?spaceKey=(.*?)&amp;src=quick-create\" id=\"quick-create-page-button\" - $1$ - - 1 - true - - - - - quick-search - Log Out - - - Assertion.response_data - false - 16 - - - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","baseurl-checker-resource","dashboard","backbone-dashboard","atl.general","main"],"xr":["confluence.macros.advanced:blogpost-resources"]} + [{"name":"confluence.viewpage.src.empty","properties":{"userKey":"${ajs-remote-user-key}","pageID":"${page_id}"},"timeDelta":-510},{"name":"confluence.page.view","properties":{"pageID":"${page_id}"},"timeDelta":-502},{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","firstPaint":"1138","isInitial":"true","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.page.view","navigationType":"1","readyForUser":"1232","redirectCount":"0","resourceLoadedEnd":"899","resourceLoadedStart":237.04499999985273,"threshold":"1000","unloadEventStart":"213","unloadEventEnd":"213","fetchStart":"0","domainLookupStart":"0","domainLookupEnd":"0","connectStart":"0","connectEnd":"0","requestStart":"5","responseStart":"201","responseEnd":"219","domLoading":"217","domInteractive":"1071","domContentLoadedEventStart":"1071","domContentLoadedEventEnd":"1098","domComplete":"1540","loadEventStart":"1541","loadEventEnd":"1545","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36","serverDuration":"78","requestCorrelationId":"2e7b1dbf229e6734","resourceTiming":"{\"â˜Â \":[\"2,6l,hl,aj,6w,6l,,6l,6l,6l\",\"2,6l,e5,am,6x,6l,,6l,6l,6l\",\"3,6l,oz,an,6x,6l,,6l,6l,6l\",\"3,6l,lf,ap,6x,6l,,6l,6l,6l\",\"5,re,v6,v6,rg,re,,re,re,re\",\"5,rk,v8,v7,rm,rk,,rk,rk,rk\",\"4,sd,we,wd,st,sd,,sd,sd,sd\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]"},"timeDelta":-154}] = @@ -1975,7 +1572,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -1986,11 +1583,11 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -2000,28 +1597,27 @@ vars.put("tree_request", request) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - + + true + + + + false + {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewcontent","atl.general","page","atl.comments","browser-metrics-plugin.contrib","sortable-tables-resources","request-access-plugin"],"xr":[]} + = + + - ${application.postfix}/rest/mywork/latest/status/notification/count - GET + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -2031,77 +1627,40 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Accept-Encoding - gzip, deflate - Accept application/json, text/javascript, */*; q=0.01 - - - - - - - - - - - - - ${application.postfix}/rest/shortcuts/latest/shortcuts/${x_build_number}/${x_keyboard_hash} - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + + Content-Type + application/json - - true - + + - + + false + macroMetadataClientCacheKey + 1618567304880 + = + true + + false - {"r":[],"c":["com.atlassian.confluence.extra.team-calendars.resources-batch"],"xc":["_super","baseurl-checker-resource","dashboard","backbone-dashboard","atl.general","main"],"xr":["confluence.macros.advanced:blogpost-resources"]} + detailed + false = + true @@ -2109,8 +1668,8 @@ vars.put("tree_request", request) - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/plugins/macrobrowser/browse-macros.action + GET true false true @@ -2120,70 +1679,198 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_view_dashboard} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + false + true + + + + + + + + + + ${application.postfix}/index.action + GET + true + false + true + false + + + + + + + + + Upgrade-Insecure-Requests + 1 + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 + + + + + + false + ajs-build-number + meta name=\"ajs-build-number\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-keyboardshortcut-hash + meta name=\"ajs-keyboardshortcut-hash\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + + true + - + false - cql - type=space%20and%20space.type=favourite%20order%20by%20favourite%20desc + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","dashboard","backbone-dashboard","atl.general","main"],"xr":[]} = - true - - false - expand - space.icon - = - true + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 - - false - limit - 100 - = - true + + X-Requested-With + XMLHttpRequest - - false - _ - ${__time(,)} - = - true + + Content-Type + application/json + + + + + + - ${application.postfix}/rest/experimental/search + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} GET true false @@ -2194,35 +1881,67 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - + + + + + + + + + + + + + ${application.postfix}/rest/mywork/latest/status/notification/count + GET + true + false + true + false + + + + + + + Accept application/json, text/javascript, */*; q=0.01 + + X-Requested-With + XMLHttpRequest + - + - + false - maxResults - 40 + spaceKey + + = + true + + + false + types + = true @@ -2240,10 +1959,10 @@ vars.put("tree_request", request) = true - + false - labels - + maxResults + 40 = true @@ -2254,30 +1973,23 @@ vars.put("tree_request", request) = true - - false - users - - = - true - - + false - types + category = true - + false - category + users = true - + false - spaceKey + labels = true @@ -2299,144 +2011,286 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - 1 - false - 1 - ${perc_view_blog} - - - - false - true - - - + - - - - - - - ${application.postfix}/pages/viewpage.action?pageId=${blog_id} - GET - true - false - true - false - + + + false + expand + space.icon + = + true + + + false + limit + 100 + = + true + + + true + cql + type=space and space.type=favourite order by favourite desc + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/experimental/search + GET + true + false + true + false + - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + true + + + + false + [{"name":"confluence.viewpage.src.empty","properties":{"userKey":"${ajs-remote-user-key}"},"timeDelta":-617},{"name":"confluence.spa.root-loaded","properties":{"redirectedTo":"all-updates","currentSection":""},"timeDelta":-597},{"name":"confluence.spa.rendered","properties":{"currentSection":"all-updates"},"timeDelta":-556},{"name":"confluence.spa.view","properties":{"previousSection":"all-updates","currentSection":"all-updates"},"timeDelta":-475},{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","firstPaint":"943","isInitial":"true","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.dashboard.view","navigationType":"0","readyForUser":"1560","redirectCount":"0","resourceLoadedEnd":"828","resourceLoadedStart":184.42499998491257,"threshold":"1000","unloadEventStart":"164","unloadEventEnd":"164","fetchStart":"1","domainLookupStart":"1","domainLookupEnd":"1","connectStart":"1","connectEnd":"1","requestStart":"4","responseStart":"160","responseEnd":"172","domLoading":"166","domInteractive":"903","domContentLoadedEventStart":"903","domContentLoadedEventEnd":"933","domComplete":"1362","loadEventStart":"1362","loadEventEnd":"1363","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","serverDuration":"40","requestCorrelationId":"cd97183c29eb2d82","resourceTiming":"{\"â˜Â \":[\"2,54,cn,93,5f,54,,54,54,54\",\"2,54,97,94,5i,54,,54,54,54\",\"2,54,92,91,5i,54,,54,54,54\",\"3,54,n0,96,5i,54,,54,54,54\",\"3,55,gb,9c,5i,55,,55,55,55\",\"3,55,94,93,5j,55,,55,55,55\",\"5,ow,sm,sm,oy,ow,,ow,ow,ow\",\"4,p9,sv,su,pb,p9,,p9,p9,p9\",\"4,pc,sy,sy,pe,pc,,pc,pc,pc\",\"4,pd,tt,tq,q3,pd,,pd,pd,pd\",\"5,r0,um,ul,r2,r0,,r0,r0,r0\",\"5,r9,uu,ut,rb,r9,,r9,r9,r9\",\"4,sd,we,we,sv,sd,,sd,sd,sd\",\"4,sd,wh,wg,sz,sd,,sd,sd,sd\",\"4,ss,y6,y6,um,ss,,ss,ss,ss\",\"4,ss,zz,zy,wf,ss,,ss,ss,ss\",\"4,ss,yf,yf,uu,ss,,ss,ss,ss\",\"3,t8,11s,11q,y7,t8,,t8,t8,t8\",\"5,yx,z2\",\"5,rx,13l,13k,sm,rx,,rx,rx,rx\"]}","mark.@grammarly-extension:checkScriptInitStart":"[1207]","mark.@grammarly-extension:checkScriptInitEnd":"[1212]","userTimingRaw":"{\"marks\":{\"@grammarly-extension:checkScriptInitStart\":[1207],\"@grammarly-extension:checkScriptInitEnd\":[1212]},\"measures\":{}}","experiments":"[]"},"timeDelta":-26}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_view_blog} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + false + true + + + + + + + false + pageId + ${blog_id} + = + true + + + + + + + ${application.postfix}/pages/viewpage.action + GET + true + false + true + false + + + + + + + Upgrade-Insecure-Requests 1 - - Accept-Encoding - gzip, deflate - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 - + false - x_parent_page_id - meta name=\"ajs-parent-page-id\" content=\"(.*?)\" + ajs-build-number + meta name=\"ajs-build-number\" content=\"(.*?)\"> $1$ NOT FOUND 1 - c_ParentPageID + all - + false - x_page_id - meta name=\"ajs-page-id\" content=\"(.*?)\"> + ajs-keyboardshortcut-hash + meta name=\"ajs-keyboardshortcut-hash\" content=\"(.*?)\"> $1$ NOT FOUND 1 - c_TreePageID + all - + false - x_space_key - meta id=\"confluence-space-key\" name=\"confluence-space-key\" content=\"(.*?)\" + ajs-page-id + meta name=\"ajs-page-id\" content=\"(.*?)\"> $1$ NOT FOUND 1 + all - + false - x_atl_token - "ajs-atl-token" content="(.+?)" + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> $1$ - + NOT FOUND 1 - c_rootPageId - true + all - - - Created by - Save for later - - - Assertion.response_data - false - 16 - - - - - + + true + + + + false + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","blogpost","viewcontent","main","atl.general","atl.comments"],"xr":[]} + = + + - ${application.postfix}/rest/helptips/1.0/tips - GET + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -2446,11 +2300,11 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -2460,35 +2314,20 @@ vars.put("tree_request", request) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - - - - false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} - = - - + + + - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/helptips/1.0/tips + GET true false true @@ -2498,11 +2337,11 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -2512,25 +2351,17 @@ vars.put("tree_request", request) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + false - commentLikes - true + containerId + ${ajs-page-id} = true @@ -2547,7 +2378,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/likes/1.0/content/${x_page_id}/likes + ${application.postfix}/rest/inlinecomments/1.0/comments GET true false @@ -2558,38 +2389,23 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - - false - pageId - ${x_page_id} - = - true - false _ @@ -2603,7 +2419,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/highlighting/1.0/panel-items + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} GET true false @@ -2614,35 +2430,27 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - */* - - + - + false - pageid - ${x_page_id} + commentLikes + true = true @@ -2659,7 +2467,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/mywork/latest/status/notification/count + ${application.postfix}/rest/likes/1.0/content/${ajs-page-id}/likes GET true false @@ -2670,35 +2478,27 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + false - containerId - ${x_page_id} + pageId + ${ajs-page-id} = true @@ -2715,7 +2515,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/inlinecomments/1.0/comments + ${application.postfix}/rest/highlighting/1.0/panel-items GET true false @@ -2726,63 +2526,27 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + */* X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - - false - parentPageId - ${x_parent_page_id} - = - true - - - false - pageId - ${x_page_id} - = - true - - - false - spaceKey - ${x_space_key} - = - true - - - true - atl_after_login_redirect - /pages/viewpage.action - = - true - - + false - timeout - 12000 + pageid + ${ajs-page-id} = true @@ -2799,7 +2563,7 @@ vars.put("tree_request", request) - ${application.postfix}/plugins/editor-loader/editor.action + ${application.postfix}/rest/mywork/latest/status/notification/count GET true false @@ -2810,48 +2574,21 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - */* - - - false - c_DraftID - name=\"ajs-draft-id\" content=\"(.*?)\"> - $1$ - NOT FOUND - 1 - - - - - draftId - - - Assertion.response_data - false - 16 - - - + @@ -2867,7 +2604,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/watch-button/1.0/watchState/${x_page_id} + ${application.postfix}/rest/watch-button/1.0/watchState/${ajs-page-id} GET true false @@ -2878,35 +2615,27 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["request-access-plugin"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + [{"name":"confluence.viewpage.src.empty","properties":{"userKey":"${ajs-remote-user-key}","pageID":"${blog_id}"},"timeDelta":-502}] = @@ -2915,7 +2644,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -2926,11 +2655,11 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -2940,25 +2669,17 @@ vars.put("tree_request", request) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + {"r":["com.atlassian.confluence.ext.newcode-macro-plugin:sh-theme-confluence","com.atlassian.confluence.ext.newcode-macro-plugin:sh-theme-confluence"],"c":["request-access-plugin","sortable-tables-resources","code-macro"],"xc":["_super","blogpost","viewcontent","main","atl.general","atl.comments","browser-metrics-plugin.contrib"],"xr":[]} = @@ -2978,11 +2699,11 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -2992,26 +2713,19 @@ vars.put("tree_request", request) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - + false - {"r":["confluence.web.resources.colors:colors","com.atlassian.confluence.keyboardshortcuts:confluence-keyboard-shortcuts","com.atlassian.confluence.editor:editor-resources-conf-frontend","com.atlassian.confluence.plugins.confluence-browser-metrics:editor","confluence.web.resources:quicksearchdropdown","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","confluence.web.resources:hint-manager","confluence.web.resources:raphael","com.atlassian.confluence.plugins.confluence-link-browser:link-object","confluence.web.resources:core","com.atlassian.confluence.plugins.confluence-page-layout:pagelayout-frontend","com.atlassian.confluence.plugins.confluence-link-browser:link-browser-conf-frontend","confluence.extra.jira:macro-browser-resources","confluence.extra.jira:dialogsJs-for-conf-frontend","confluence.extra.jira:jirachart-macro","confluence.web.resources:navigator-context","com.atlassian.plugins.atlassian-connect-plugin:confluence-atlassian-connect-resources-v5","com.atlassian.plugins.atlassian-connect-plugin:dynamic-css-resources","com.atlassian.plugins.atlassian-connect-plugin:featured-macro-css-resources","com.atlassian.plugins.atlassian-connect-plugin:confluence-atlassian-connect-autoconvert-resources-v5","com.atlassian.plugins.atlassian-connect-plugin:macro-editor-resources-v5","com.atlassian.confluence.plugins.confluence-inline-tasks:editor-autocomplete-date-conf-frontend","confluence.web.resources:breadcrumbs","com.atlassian.confluence.plugins.confluence-collaborative-editor-plugin:confluence-collaborative-editor-plugin-resources","com.atlassian.confluence.keyboardshortcuts:confluence-keyboard-shortcuts","com.atlassian.confluence.plugins.confluence-labels:labels-editor","confluence.web.resources:ajs","com.atlassian.auiplugin:aui-inline-dialog2","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-for-editor-conf-frontend","com.atlassian.confluence.plugins.gadgets:macro-browser-for-gadgetsplugin","com.atlassian.confluence.plugins.confluence-invite-to-edit:edit-resources","confluence.macros.multimedia:macro-browser-smart-fields","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.image.effects.ImageEffectsPlugin:propertiespanel","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-resources-conf-frontend","com.atlassian.confluence.plugins.confluence-view-file-macro:view-file-macro-editor-resources","confluence.macros.advanced:editor_includemacro-conf-frontend","com.atlassian.confluence.plugins.confluence-request-access-plugin:confluence-request-access-plugin-resources","confluence.web.resources:deferred-dialog-loader","com.atlassian.confluence.plugins.confluence-create-content-plugin:editor-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-macro-browser-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-resources","com.atlassian.confluence.plugins.confluence-inline-tasks:inline-tasks-macro-browser","com.atlassian.confluence.extra.team-calendars:amd","com.atlassian.confluence.extra.team-calendars:user-timezone-setup","com.atlassian.confluence.extra.team-calendars:calendar-init-editor","com.atlassian.confluence.extra.team-calendars:macro-browser-web-resources","confluence.extra.jira:text-placeholders-jira"],"c":[],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + _ + ${__time(,)} = + true @@ -3019,8 +2733,8 @@ vars.put("tree_request", request) - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/mywork/latest/status/notification/count + GET true false true @@ -3030,40 +2744,36 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - + + false + since + ${__time(,)} + = + true + + false - {"r":[],"c":["com.atlassian.confluence.extra.team-calendars.resources-batch"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + _ + ${__time(,)} = + true @@ -3071,8 +2781,8 @@ vars.put("tree_request", request) - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/quickreload/latest/${ajs-page-id} + GET true false true @@ -3082,46 +2792,62 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + false - since - ${__time(,)} + spaceKey + ${blog_space_key} = true - + false - _ - ${__time(,)} + parentPageId + + = + true + + + true + atl_after_login_redirect + /pages/viewpage.action + = + true + + + false + pageId + ${blog_id} + = + true + + + false + timeout + 12000 + = + true + + + false + _ + ${__time(,)} = true @@ -3131,7 +2857,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/quickreload/latest/${x_page_id} + ${application.postfix}/plugins/editor-loader/editor.action GET true false @@ -3142,29 +2868,145 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + */* X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate + + + + + + true + + + + false + {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","blogpost","viewcontent","main","atl.general","atl.comments","browser-metrics-plugin.contrib","request-access-plugin","sortable-tables-resources","code-macro"],"xr":["com.atlassian.confluence.ext.newcode-macro-plugin:sh-theme-confluence"]} + = + + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + + + false + macroMetadataClientCacheKey + 1618473279191 + = + true + + false + detailed + false + = + true + + + + + + + + ${application.postfix}/plugins/macrobrowser/browse-macros.action + GET + true + false + true + false + + + + + + + Accept application/json, text/javascript, */*; q=0.01 + + X-Requested-With + XMLHttpRequest + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -3173,12 +3015,28 @@ vars.put("tree_request", request) ${perc_search_cql} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true - + @@ -3233,7 +3091,7 @@ vars.put("tree_request", request) true - + @@ -3315,7 +3173,7 @@ vars.put("tree_request", request) - + @@ -3357,6 +3215,38 @@ vars.put("tree_request", request) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -3365,12 +3255,28 @@ vars.put("tree_request", request) ${perc_create_blog} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true - + @@ -3428,9 +3334,9 @@ vars.put("tree_request", request) 16 - + false - x_atl_token + ajs-atl-token name=\"ajs-atl-token\" content=\"(.*?)\"> $1$ NOT FOUND @@ -3438,18 +3344,28 @@ vars.put("tree_request", request) c_ajsAtlToken - + + false + ajs-draft-id + name=\"ajs-draft-id\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + c_ajsAtlToken + + + false - x_content_id + ajs-content-id name=\"ajs-content-id\" content=\"(.*?)\"> $1$ NOT FOUND 1 - + false - x_space_key + spaceKey createpage.action\?spaceKey=(.+?)\& $1$ @@ -3457,14 +3373,74 @@ vars.put("tree_request", request) true + + false + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + c_TreePageID + + + + false + ajs-build-number + meta name=\"ajs-build-number\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-keyboardshortcut-hash + meta name=\"ajs-keyboardshortcut-hash\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-page-id + meta name=\"ajs-page-id\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-parent-page-id + meta name=\"ajs-parent-page-id\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","baseurl-checker-resource","editor-v4","atl.general","editor","macro-browser","main","blogpost"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar"]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","editor-v4","atl.general","editor","macro-browser","main","blogpost"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar"]} = @@ -3484,11 +3460,11 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -3498,25 +3474,17 @@ vars.put("tree_request", request) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + false - pageid - 0 + _ + ${__time(,)} = true @@ -3526,7 +3494,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/mywork/latest/status/notification/count + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} GET true false @@ -3537,37 +3505,44 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + + + false + pageid + ${ajs-page-id} + = + true + + + false + _ + ${__time(,)} + = + true + + - UTF-8 - ${application.postfix}/plugins/servlet/notifications-miniview + + ${application.postfix}/rest/mywork/latest/status/notification/count GET true false @@ -3578,36 +3553,70 @@ vars.put("tree_request", request) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 - - Upgrade-Insecure-Requests - 1 + + X-Requested-With + XMLHttpRequest - - Accept-Encoding - gzip, deflate + + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + ${application.postfix}/rest/jiraanywhere/1.0/servers + GET + true + false + true + false + + + + + + + Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + */* + + + X-Requested-With + XMLHttpRequest - - true - + + - + false - {"r":[],"c":["com.atlassian.confluence.extra.team-calendars.resources-batch"],"xc":["_super","baseurl-checker-resource","editor-v4","atl.general","editor","macro-browser","main","blogpost"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar"]} + pageid + ${ajs-page-id} = + true @@ -3615,8 +3624,8 @@ vars.put("tree_request", request) - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/mywork/latest/status/notification/count + GET true false true @@ -3636,10 +3645,6 @@ vars.put("tree_request", request) X-Requested-With XMLHttpRequest - - Content-Type - application/json - Accept-Encoding gzip, deflate @@ -3652,23 +3657,16 @@ vars.put("tree_request", request) - - true - - - - false - {"r":[],"c":["request-access-plugin"],"xc":["_super","baseurl-checker-resource","editor-v4","atl.general","editor","macro-browser","main","blogpost"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar"]} - = - - + + + - - ${application.postfix}/rest/webResources/1.0/resources - POST + UTF-8 + ${application.postfix}/plugins/servlet/notifications-miniview + GET true false true @@ -3684,13 +3682,9 @@ vars.put("tree_request", request) Accept-Language en-US,en;q=0.5 - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json + + Upgrade-Insecure-Requests + 1 Accept-Encoding @@ -3698,13 +3692,13 @@ vars.put("tree_request", request) Accept - application/json, text/javascript, */*; q=0.01 + text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - + @@ -3720,7 +3714,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/shortcuts/latest/shortcuts/${x_build_number}/${x_keyboard_hash} + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} GET true false @@ -3754,7 +3748,7 @@ vars.put("tree_request", request) - + @@ -3767,7 +3761,7 @@ vars.put("tree_request", request) false contentId - ${x_content_id} + ${ajs-content-id} = true @@ -3781,14 +3775,14 @@ vars.put("tree_request", request) true spaceKey - ${x_space_key} + ${spaceKey} = true false atl_token - ${x_atl_token} + ${ajs-atl-token} = true @@ -3834,17 +3828,16 @@ vars.put("tree_request", request) - - false - x_contributor_hash - \"contributorsHash\":\"\" - $1$ - NOT FOUND - 1 - + + contributorsHash + $.contributorsHash + + all + contributorsHash + - + @@ -3860,7 +3853,7 @@ vars.put("tree_request", request) - ${application.postfix}/rest/ui/1.0/content/${x_content_id}/labels + ${application.postfix}/rest/ui/1.0/content/${ajs-content-id}/labels GET true false @@ -3893,13 +3886,13 @@ vars.put("tree_request", request) - + true false - {"draftId":"${x_content_id}","pageId":"0","type":"blogpost","title":"Performance Blog - ${p_new_file_name}","spaceKey":"${x_space_key}","content":"test blog draft","syncRev":"0.mcPCPtDvwoayMR7zvuQSbf8.27"} + {"draftId":"${ajs-content-id}","pageId":"${ajs-page-id}","type":"blogpost","title":"Performance Blog - ${p_new_file_name}","spaceKey":"${spaceKey}","content":"test blog draft","syncRev":"0.mcPCPtDvwoayMR7zvuQSbf8.27"} = @@ -3949,9 +3942,7 @@ vars.put("tree_request", request) true - //vars.put("p_FileNumber", (Math.abs(new Random().nextInt() % 100) + 1).toString()); - -vars.put("p_new_file_name", (new Random().with {(1..9).collect {(('A'..'Z')).join()[ nextInt((('A'..'Z')).join().length())]}.join()}).toString()); + vars.put("p_new_file_name", (new Random().with {(1..9).collect {(('A'..'Z')).join()[ nextInt((('A'..'Z')).join().length())]}.join()}).toString()); //log.info("Random String: " + new Random().with {(1..9).collect {(('A'..'Z')).join()[ nextInt((('A'..'Z')).join().length())]}.join()}); @@ -3973,13 +3964,13 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo true - + true false - {"status":"current","title":"Performance Blog - ${p_new_file_name}","space":{"key":"${x_space_key}"},"body":{"editor":{"value":"Test Performance Blog Page Content ${p_new_file_name}","representation":"editor","content":{"id":"${x_content_id}"}}},"id":"${x_content_id}","type":"blogpost","version":{"number":1,"minorEdit":true,"syncRev":"0.mcPCPtDvwoayMR7zvuQSbf8.30"}} + {"status":"current","title":"Performance Blog - ${p_new_file_name}","space":{"key":"${spaceKey}"},"body":{"editor":{"value":"Test Performance Blog Page Content ${p_new_file_name}","representation":"editor","content":{"id":"${ajs-content-id}"}}},"id":"${ajs-content-id}","type":"blogpost","version":{"number":1,"minorEdit":true,"syncRev":"0.mcPCPtDvwoayMR7zvuQSbf8.30"}} = @@ -3988,7 +3979,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo utf-8 - ${application.postfix}/rest/api/content/${x_content_id}?status=draft + ${application.postfix}/rest/api/content/${ajs-content-id}?status=draft PUT true false @@ -4046,7 +4037,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + @@ -4097,14 +4088,36 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - - true - + + - - false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","baseurl-checker-resource","blogpost","viewcontent","main","atl.general","atl.comments"],"xr":[]} + + true + dataType + json + = + true + + + true + contentId + ${ajs-content-id} + = + true + + + true + atl_token + ${ajs-atl-token} + = + true + + + true + draftType + blogpost = + true @@ -4112,7 +4125,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/json/stopheartbeatactivity.action POST true false @@ -4123,11 +4136,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -4135,27 +4148,19 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/x-www-form-urlencoded; charset=UTF-8 - + true false - {"r":[],"c":["sortable-tables-resources"],"xc":["_super","baseurl-checker-resource","blogpost","viewcontent","main","atl.general","atl.comments"],"xr":[]} + {"r":[],"c":["request-access-plugin"],"xc":["_super","editor-v4","atl.general","editor","macro-browser","main","blogpost","browser-metrics-plugin.contrib"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar","com.atlassian.confluence.plugins.confluence-space-ia:soy-resources"]} = @@ -4175,11 +4180,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -4189,19 +4194,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + @@ -4242,7 +4239,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + @@ -4258,7 +4255,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/watch-button/1.0/watchState/${x_content_id} + ${application.postfix}/rest/watch-button/1.0/watchState/${ajs-content-id} GET true false @@ -4292,22 +4289,14 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - - + + true + - - false - commentLikes - true - = - true - - + false - _ - ${__time(,)} + [{"name":"confluence.editor.close","properties":{"source":"publishButton"},"timeDelta":-25},{"name":"confluence.table.quality.in.page","properties":{"pageId":"${ajs-page-id}","total":0,"fixed":0,"fluid":0,"relative":0,"nested":0},"timeDelta":-23}] = - true @@ -4315,8 +4304,8 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/likes/1.0/content/${x_content_id}/likes - GET + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST true false true @@ -4326,35 +4315,31 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + + Content-Type + application/json - + true false - {"r":[],"c":["request-access-plugin"],"xc":["_super","baseurl-checker-resource","blogpost","viewcontent","main","atl.general","atl.comments"],"xr":[]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","blogpost","viewcontent","main","atl.general","atl.comments"],"xr":[]} = @@ -4374,11 +4359,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -4388,28 +4373,13 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - - false - pageId - ${x_content_id} - = - true - false _ @@ -4423,7 +4393,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/highlighting/1.0/panel-items + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} GET true false @@ -4434,35 +4404,27 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - */* - - + - + false - containerId - ${x_content_id} + pageId + ${page_id} = true @@ -4479,7 +4441,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/inlinecomments/1.0/comments + ${application.postfix}/rest/jira-metadata/1.0/metadata/aggregate GET true false @@ -4490,37 +4452,48 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + + Content-Type + application/json - + - + + + false + commentLikes + true + = + true + + + false + _ + ${__time(,)} + = + true + + - ${application.postfix}/s/en_GB/${x_build_number}/${x_keyboard_hash}/_/images/icons/profilepics/add_profile_pic.svg + ${application.postfix}/rest/likes/1.0/content/${ajs-content-id}/likes GET true false @@ -4537,27 +4510,46 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Accept-Language en-US,en;q=0.5 + + X-Requested-With + XMLHttpRequest + Accept-Encoding gzip, deflate Accept - */* + application/json, text/javascript, */*; q=0.01 - + - + + + false + pageId + ${ajs-content-id} + = + true + + + false + _ + ${__time(,)} + = + true + + - ${application.postfix}/rest/helptips/1.0/tips + ${application.postfix}/rest/highlighting/1.0/panel-items GET true false @@ -4578,29 +4570,25 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo X-Requested-With XMLHttpRequest - - Content-Type - application/json - Accept-Encoding gzip, deflate Accept - application/json, text/javascript, */*; q=0.01 + */* - + - + false - pageid - ${x_content_id} + containerId + ${ajs-content-id} = true @@ -4617,7 +4605,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/mywork/latest/status/notification/count + ${application.postfix}/rest/inlinecomments/1.0/comments GET true false @@ -4650,58 +4638,15 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - - false - parentPageId - - = - true - - - false - pageId - ${x_content_id} - = - true - - - false - spaceKey - ${x_space_key} - = - true - - - true - atl_after_login_redirect - ${x_new_title_blog} - = - true - - - false - timeout - 12000 - = - true - - - false - _ - ${__time(,)} - = - true - - + - ${application.postfix}/plugins/editor-loader/editor.action + ${application.postfix}/s/en_GB/${ajs-build-number}/${ajs-keyboardshortcut-hash}/_/images/icons/profilepics/add_profile_pic.svg GET true false @@ -4718,10 +4663,6 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Accept-Language en-US,en;q=0.5 - - X-Requested-With - XMLHttpRequest - Accept-Encoding gzip, deflate @@ -4734,23 +4675,16 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - - true - - - - false - {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","baseurl-checker-resource","blogpost","viewcontent","main","atl.general","atl.comments"],"xr":[]} - = - - + + + - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/helptips/1.0/tips + GET true false true @@ -4786,14 +4720,22 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - - true - + + - + + false + pageid + ${ajs-content-id} + = + true + + false - {"r":[],"c":["com.atlassian.confluence.extra.team-calendars.resources-batch"],"xc":["_super","baseurl-checker-resource","blogpost","viewcontent","main","atl.general","atl.comments"],"xr":[]} + _ + ${__time(,)} = + true @@ -4801,8 +4743,8 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/mywork/latest/status/notification/count + GET true false true @@ -4822,10 +4764,6 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo X-Requested-With XMLHttpRequest - - Content-Type - application/json - Accept-Encoding gzip, deflate @@ -4838,58 +4776,22 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - - + + true + - - false - dataType - json - = - true - - - false - contentId - ${x_content_id} - = - true - - - false - draftType - blogpost - = - true - - - false - spaceKey - ${x_space_key} - = - true - - - false - contributorsHash - ${x_contributor_hash} - = - true - - + false - atl_token - ${x_atl_token} + {"r":[],"c":["request-access-plugin"],"xc":["_super","blogpost","viewcontent","main","atl.general","atl.comments","browser-metrics-plugin.contrib"],"xr":[]} = - true - UTF-8 - ${application.postfix}/json/startheartbeatactivity.action + + ${application.postfix}/rest/webResources/1.0/resources POST true false @@ -4900,11 +4802,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -4912,55 +4814,19 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/json - - - - 1 - false - 1 - ${perc_create_and_edit_page} - - - - false - true - - - + - - true - spaceKey - ${space_key} - = - true - - - false - fromPageId - ${page_id} - = - true - - + false - src - quick-create + _ + ${__time(,)} = true @@ -4969,8 +4835,8 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - UTF-8 - ${application.postfix}/pages/createpage.action + + ${application.postfix}/rest/autoconvert/latest/shortcutlinkconfigurations GET true false @@ -4981,74 +4847,27 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest - - - - - Page Title - - - Assertion.response_data - false - 16 - - - - false - x_content_id - meta name=\"ajs-content-id\" content=\"(.*?)\"> - $1$ - NOT FOUND - 1 - c_ajsContentID - - - - false - x_atl_token - meta name=\"ajs-atl-token\" content=\"(.*?)\"> - $1$ - NOT FOUND - 1 - - - - false - x_space_key - createpage.action\?spaceKey=(.+?)\& - $1$ - - 1 - true - + - + true false - {"r":["confluence.web.resources.colors:colors","com.atlassian.confluence.keyboardshortcuts:confluence-keyboard-shortcuts","com.atlassian.confluence.editor:editor-resources-conf-frontend","com.atlassian.confluence.plugins.confluence-browser-metrics:editor","confluence.web.resources:quicksearchdropdown","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","confluence.web.resources:hint-manager","confluence.web.resources:raphael","com.atlassian.confluence.plugins.confluence-link-browser:link-object","confluence.web.resources:core","com.atlassian.confluence.plugins.confluence-page-layout:pagelayout-frontend","com.atlassian.confluence.plugins.confluence-link-browser:link-browser-conf-frontend","confluence.extra.jira:macro-browser-resources","confluence.extra.jira:dialogsJs-for-conf-frontend","confluence.extra.jira:jirachart-macro","confluence.web.resources:navigator-context","com.atlassian.plugins.atlassian-connect-plugin:confluence-atlassian-connect-resources-v5","com.atlassian.plugins.atlassian-connect-plugin:dynamic-css-resources","com.atlassian.plugins.atlassian-connect-plugin:featured-macro-css-resources","com.atlassian.plugins.atlassian-connect-plugin:confluence-atlassian-connect-autoconvert-resources-v5","com.atlassian.plugins.atlassian-connect-plugin:macro-editor-resources-v5","com.atlassian.confluence.plugins.confluence-inline-tasks:editor-autocomplete-date-conf-frontend","confluence.web.resources:breadcrumbs","com.atlassian.confluence.plugins.confluence-collaborative-editor-plugin:confluence-collaborative-editor-plugin-resources","com.atlassian.confluence.keyboardshortcuts:confluence-keyboard-shortcuts","com.atlassian.confluence.plugins.confluence-labels:labels-editor","confluence.web.resources:ajs","com.atlassian.auiplugin:aui-inline-dialog2","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-for-editor-conf-frontend","com.atlassian.confluence.plugins.gadgets:macro-browser-for-gadgetsplugin","com.atlassian.confluence.plugins.confluence-invite-to-edit:edit-resources","confluence.macros.multimedia:macro-browser-smart-fields","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.image.effects.ImageEffectsPlugin:propertiespanel","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-resources-conf-frontend","com.atlassian.confluence.plugins.confluence-view-file-macro:view-file-macro-editor-resources","confluence.macros.advanced:editor_includemacro-conf-frontend","com.atlassian.confluence.plugins.confluence-request-access-plugin:confluence-request-access-plugin-resources","confluence.web.resources:deferred-dialog-loader","com.atlassian.confluence.plugins.confluence-create-content-plugin:editor-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-macro-browser-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-resources","com.atlassian.confluence.plugins.confluence-inline-tasks:inline-tasks-macro-browser","com.atlassian.confluence.extra.team-calendars:amd","com.atlassian.confluence.extra.team-calendars:user-timezone-setup","com.atlassian.confluence.extra.team-calendars:calendar-init-editor","com.atlassian.confluence.extra.team-calendars:macro-browser-web-resources","confluence.extra.jira:text-placeholders-jira"],"c":[],"xc":["_super","baseurl-checker-resource","editor-v4","editor","macro-browser","atl.general","main","page"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar"]} + [{"name":"confluence.viewpage.src.empty","properties":{"userKey":"${ajs-remote-user-key}","pageID":"${ajs-page-id}","draftID":"${ajs-draft-id}"},"timeDelta":-609},{"name":"confluence.editor.ready.collab.mode.on","properties":{"connectionOrder":"","connectionType":""},"timeDelta":-255}] = @@ -5057,7 +4876,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -5068,11 +4887,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -5082,25 +4901,17 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","baseurl-checker-resource","editor-v4","editor","macro-browser","atl.general","main","page"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar"]} + [{"name":"confluence.synchrony.editor.loaded","properties":{"durationMillis":877,"contentId":"${ajs-content-id}"},"timeDelta":-4514},{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","firstPaint":"2578","isInitial":"true","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.blogpost.create.collaborative.view","navigationType":"0","readyForUser":"3862","redirectCount":"0","resourceLoadedEnd":"2344","resourceLoadedStart":315.84500009194016,"threshold":"1000","unloadEventStart":"292","unloadEventEnd":"292","fetchStart":"2","domainLookupStart":"2","domainLookupEnd":"2","connectStart":"2","connectEnd":"2","requestStart":"5","responseStart":"284","responseEnd":"432","domLoading":"293","domInteractive":"2553","domContentLoadedEventStart":"2553","domContentLoadedEventEnd":"2563","domComplete":"3785","loadEventStart":"3785","loadEventEnd":"3786","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","serverDuration":"64","requestCorrelationId":"3dfaa599735fcbcb","resourceTiming":"{\"â˜Â \":[\"2,8r,h3,gy,94,8r,,8r,8r,8r\",\"2,8s,qz,gy,96,8s,,8s,8s,8s\",\"2,8s,h1,gx,96,8s,,8s,8s,8s\",\"3,8s,102,gy,96,8s,,8s,8s,8s\",\"3,8s,1t4,gy,96,8s,,8s,8s,8s\",\"3,8s,1ez,14y,c0,8s,,8s,8s,8s\",\"3,8s,lz,ly,h1,8s,,8s,8s,8s\",\"5,1vg,22n,224,1vh,1vg,,1vg,1vg,1vg\",\"5,1vm,21m,21m,1vp,1vm,,1vm,1vm,1vm\",\"4,1xf,21h,21g,1xg,1xf,,1xf,1xf,1xf\",\"4,1xg,236,232,1zj,1xg,,1xg,1xg,1xg\",\"5,20u,24h,24g,20w,20u,,20u,20u,20u\",\"5,20w,24r,24p,211,20w,,20w,20w,20w\",\"5,219,254,253,21h,219,,219,219,219\",\"5,235,26r,26q,237,235,,235,235,235\",\"3,276,2at,2ar,277,276,,276,276,276\",\"5,277,2as,2as,278,277,,277,277,277\",\"5,2a8,2e4,2e3,2aa,2a8,,2a8,2a8,2a8\",\"5,2ac,2dy,2dy,2ae,2ac,,2ac,2ac,2ac\",\"5,2ag,2ed,2ed,2at,2ag,,2ag,2ag,2ag\",\"5,2iq,2jh\",\"5,2h7,2lm,2lm,2hm,2h7,,2h7,2h7,2h7\",\"5,2hk,2lf,2lf,2ho,2hk,,2hk,2hk,2hk\",\"5,2hv,2lj,2lj,2hz,2hv,,2hv,2hv,2hv\",\"5,2i6,2m7,2m5,2im,2i6,,2i6,2i6,2i6\",\"5,2i9,2td,2m6,2in,2i9,,2i9,2i9,2i9\",\"5,2j9,2o4,2o3,2kf,2j9,,2j9,2j9,2j9\",\"2,2o7,2so,2sl,2p1,2o7,,2o7,2o7,2o7\",\"3,2o7,2x4,2x3,2tj,2o7,,2o7,2o7,2o7\",\"5,2uj,2yu,2yu,2v9,2uj,,2uj,2uj,2uj\"]}","mark.@grammarly-extension:checkScriptInitStart":"[3196]","mark.@grammarly-extension:checkScriptInitEnd":"[3198]","userTimingRaw":"{\"marks\":{\"@grammarly-extension:checkScriptInitStart\":[3196],\"@grammarly-extension:checkScriptInitEnd\":[3198]},\"measures\":{}}","experiments":"[]"},"timeDelta":-4501},{"name":"confluence.synchrony.user.in.session","properties":{"numOtherUsers":1,"draftId":"38904812","contentId":"38904812"},"timeDelta":-3368},{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","isInitial":"false","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.blogpost.create.collaborative.view.connected","readyForUser":"1139","threshold":"1000","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","resourceTiming":"{\"â˜Â \":[\"5,dv,dy\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]"},"timeDelta":-3365}] = @@ -5109,7 +4920,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -5120,11 +4931,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -5134,25 +4945,17 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["com.atlassian.confluence.extra.team-calendars.resources-batch"],"xc":["_super","baseurl-checker-resource","editor-v4","editor","macro-browser","atl.general","main","page"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar"]} + [{"name":"confluence.viewpage.src.empty","properties":{"userKey":"${ajs-remote-user-key}","pageID":"${page_id}"},"timeDelta":-502},{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","firstPaint":"1377","isInitial":"true","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.blogpost.view","navigationType":"0","readyForUser":"1441","redirectCount":"0","resourceLoadedEnd":"1297","resourceLoadedStart":269.0850000362843,"threshold":"1000","unloadEventStart":"247","unloadEventEnd":"247","fetchStart":"5","domainLookupStart":"5","domainLookupEnd":"5","connectStart":"5","connectEnd":"5","requestStart":"14","responseStart":"236","responseEnd":"249","domLoading":"251","domInteractive":"1363","domContentLoadedEventStart":"1363","domContentLoadedEventEnd":"1370","domComplete":"1734","loadEventStart":"1735","loadEventEnd":"1738","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","serverDuration":"107","requestCorrelationId":"edf885c57119f2bd","resourceTiming":"{\"â˜Â \":[\"2,7h,bq,bc,7r,7h,,7h,7h,7h\",\"2,7h,bo,be,7r,7h,,7h,7h,7h\",\"3,7h,lu,bh,7s,7h,,7h,7h,7h\",\"3,7h,101,bj,7s,7h,,7h,7h,7h\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]"},"timeDelta":-176}] = @@ -5161,7 +4964,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -5172,174 +4975,62 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - Accept application/json, text/javascript, */*; q=0.01 - - - - - - - - - - - - - ${application.postfix}/rest/create-dialog/1.0/storage/quick-create - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + + Content-Type + application/json - + - + false - pageid - 0 + parentPageId + ${ajs-parent-page-id} = true - - - - - - - ${application.postfix}/rest/mywork/latest/status/notification/count - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - - - - - + false - _ - ${__time(,)} + pageId + ${ajs-content-id} = true - - - - - - - ${application.postfix}/rest/jiraanywhere/1.0/servers - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest + + false + spaceKey + ${spaceKey} + = + true - - Accept-Encoding - gzip, deflate + + true + atl_after_login_redirect + ${x_new_title_blog} + = + true - - Accept - */* + + false + timeout + 12000 + = + true - - - - - - - false _ @@ -5353,7 +5044,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/shortcuts/latest/shortcuts/${x_build_number}/${x_keyboard_hash} + ${application.postfix}/plugins/editor-loader/editor.action GET true false @@ -5380,19 +5071,19 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Accept - application/json, text/javascript, */*; q=0.01 + */* - + true false - {"r":[],"c":["request-access-plugin"],"xc":["_super","baseurl-checker-resource","editor-v4","editor","macro-browser","atl.general","main","page"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar"]} + {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","blogpost","viewcontent","main","atl.general","atl.comments","browser-metrics-plugin.contrib","request-access-plugin"],"xr":[]} = @@ -5412,11 +5103,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -5426,19 +5117,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + @@ -5451,32 +5134,39 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo false contentId - ${x_content_id} + ${ajs-content-id} = true false draftType - page + blogpost = true - true + false spaceKey - ${x_space_key} + ${ajs-space-key} = true - + false - atl_token - ${x_atl_token} + contributorsHash + ${contributorsHash} = true - + + false + atl_token + ${ajs-atl-token} + = + true + + @@ -5518,65 +5208,101 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - - false - c_ContributorHash - \"contributorsHash\":\"\" - $1$ - NOT FOUND - 1 - - - + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_create_and_edit_page} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + false true - - true - + + - + + false + spaceKey + ${space_key} + = + true + + false - { - "status": "current", - "title": "Test Performance JMeter ${p_new_file_name}", - "space": { - "key": "${space_key}" - }, - "body": { - "storage": { - "value": "Test Performance Create Page Content ${p_new_file_name}", - "representation": "storage", - "content": { - "id": "${x_content_id}" - } - } - }, - "id": "${x_content_id}", - "type": "page", - "version": { - "number": 1 - }, - "ancestors": [ - { - "id": "${page_id}", - "type": "page" - } - ] -} + fromPageId + ${page_id} + = + true + + + false + src + quick-create = + true - utf-8 - ${application.postfix}/rest/api/content/${x_content_id}?status=draft - PUT + + ${application.postfix}/pages/createpage.action + GET true false true @@ -5586,182 +5312,116 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json; charset=utf-8 - - - Accept-Encoding - gzip, deflate + + Upgrade-Insecure-Requests + 1 Accept - application/json, text/javascript, */*; q=0.01 + text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 - - groovy - - - true - //vars.put("p_FileNumber", (Math.abs(new Random().nextInt() % 100) + 1).toString()); - -vars.put("p_new_file_name", (new Random().with {(1..9).collect {(('A'..'Z')).join()[ nextInt((('A'..'Z')).join().length())]}.join()}).toString()); - -//log.info("Random String: " + new Random().with {(1..9).collect {(('A'..'Z')).join()[ nextInt((('A'..'Z')).join().length())]}.join()}); - + + false + ajs-build-number + meta name=\"ajs-build-number\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + - + false - x_new_title_page - anonymous_export_view.*?\"webui\":\"(.*?)\" + ajs-keyboardshortcut-hash + meta name=\"ajs-keyboardshortcut-hash\" content=\"(.*?)\"> $1$ NOT FOUND 1 - c_newPageTitle + all - - - draftId - - - Assertion.response_data - false - 16 - + + false + ajs-page-id + meta name=\"ajs-page-id\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + - - - - - - - - - - ${application.postfix}${x_new_title_page} - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - + + false + ajs-content-id + meta name=\"ajs-content-id\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + - - - Created by - - - Assertion.response_data - false - 16 - + + false + ajs-atl-token + meta name=\"ajs-atl-token\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + - + false - x_page_id - meta name=\"ajs-page-id\" content=\"(.*?)\"> + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> $1$ NOT FOUND 1 + all - + false - x_parent_page_id - meta name=\"ajs-parent-page-id\" content=\"(.*?)\" + ajs-draft-id + meta name=\"ajs-draft-id\" content=\"(.*?)\"> $1$ NOT FOUND 1 - c_newParentPageID + all - + false - x_create_page_id - meta name=\"ajs-page-id\" content=\"(.*?)\"> + ajs-parent-page-id + meta name=\"ajs-parent-page-id\" content=\"(.*?)\"> $1$ - + NOT FOUND 1 - true + all - - + + true + - - false - dataType - json - = - true - - - false - contentId - ${x_content_id} - = - true - - - false - draftType - page - = - true - - + false - atl_token - ${x_atl_token} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","editor-v4","atl.general","editor","macro-browser","main","page"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar"]} = - true - UTF-8 - ${application.postfix}/json/stopheartbeatactivity.action + + ${application.postfix}/rest/webResources/1.0/resources POST true false @@ -5772,11 +5432,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -5784,29 +5444,29 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/json - + - + + + false + _ + ${__time(,)} + = + true + + - ${application.postfix}/rest/helptips/1.0/tips + ${application.postfix}/rest/create-dialog/1.0/storage/quick-create GET true false @@ -5817,40 +5477,29 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - + false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + _ + ${__time(,)} = + true @@ -5858,8 +5507,8 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} + GET true false true @@ -5869,46 +5518,34 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + false - pageId - ${x_page_id} + macroMetadataClientCacheKey + ${__time(,)} = true - + false - _ - ${__time(,)} + detailed + false = true @@ -5918,7 +5555,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/jira-metadata/1.0/metadata/aggregate + ${application.postfix}/plugins/macrobrowser/browse-macros.action GET true false @@ -5929,39 +5566,27 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + false - commentLikes - true + pageid + ${ajs-page-id} = true @@ -5978,7 +5603,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/likes/1.0/content/${x_page_id}/likes + ${application.postfix}/rest/mywork/latest/status/notification/count GET true false @@ -5989,38 +5614,23 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - - false - containerId - ${x_page_id} - = - true - false _ @@ -6034,7 +5644,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/inlinecomments/1.0/comments + ${application.postfix}/rest/jiraanywhere/1.0/servers GET true false @@ -6045,38 +5655,104 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + */* X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate + + + + + + + + + true + spaceKey + ${space_key} + = + true + + + true + dataType + json + = + true + + + true + contentId + ${ajs-content-id} + = + true + + + true + atl_token + ${ajs-atl-token} + = + true + + + true + draftType + page + = + true + + + + + + + ${application.postfix}/json/startheartbeatactivity.action + POST + true + false + true + false + + + + + + + Accept application/json, text/javascript, */*; q=0.01 + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/x-www-form-urlencoded; charset=UTF-8 + + + contributorsHash + $.contributorsHash + + all + contributorsHash + + - + - - false - pageid - ${x_page_id} - = - true - false _ @@ -6090,7 +5766,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/mywork/latest/status/notification/count + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} GET true false @@ -6101,38 +5777,23 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - - false - pageId - ${x_page_id} - = - true - false _ @@ -6146,7 +5807,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/highlighting/1.0/panel-items + ${application.postfix}/rest/autoconvert/latest/shortcutlinkconfigurations GET true false @@ -6157,29 +5818,21 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - */* - - + @@ -6195,7 +5848,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/watch-button/1.0/watchState/${x_page_id} + ${application.postfix}/rest/ui/1.0/content/${ajs-content-id}/labels GET true false @@ -6206,35 +5859,27 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + */* X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["sortable-tables-resources"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + {"r":[],"c":["request-access-plugin"],"xc":["_super","editor-v4","atl.general","editor","macro-browser","main","page","browser-metrics-plugin.contrib"],"xr":["com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar","com.atlassian.confluence.plugins.confluence-space-ia:soy-resources"]} = @@ -6254,11 +5899,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6268,25 +5913,17 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["request-access-plugin"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + [{"name":"confluence.synchrony.exit.before.connecting","properties":{"afterTimeout":false,"contentId":"${ajs-content-id}"},"timeDelta":-2867},{"name":"confluence.viewpage.src.quick-create","properties":{"userKey":"${ajs-remote-user-key}","pageID":"${ajs-page-id}","draftID":"${ajs-draft-id}"},"timeDelta":-590},{"name":"confluence.editor.ready.collab.mode.on","properties":{"connectionOrder":"","connectionType":""},"timeDelta":-241}] = @@ -6295,7 +5932,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -6306,11 +5943,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6320,60 +5957,102 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type application/json - - Accept-Encoding - gzip, deflate - - + + + + + + true + + + + false + [{"name":"confluence.synchrony.editor.loaded","properties":{"durationMillis":839,"contentId":"${ajs-content-id}"},"timeDelta":-4563},{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","firstPaint":"2222","isInitial":"true","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.page.create.collaborative.view","navigationType":"0","readyForUser":"3456","redirectCount":"0","resourceLoadedEnd":"2008","resourceLoadedStart":313.95000009797513,"threshold":"1000","unloadEventStart":"292","unloadEventEnd":"292","fetchStart":"1","domainLookupStart":"1","domainLookupEnd":"1","connectStart":"1","connectEnd":"1","requestStart":"4","responseStart":"286","responseEnd":"304","domLoading":"296","domInteractive":"2199","domContentLoadedEventStart":"2199","domContentLoadedEventEnd":"2206","domComplete":"3416","loadEventStart":"3416","loadEventEnd":"3417","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","serverDuration":"172","requestCorrelationId":"094ec5fbb427a8c7","resourceTiming":"{\"â˜Â \":[\"2,8p,cw,cn,8z,8p,,8p,8p,8p\",\"2,8q,d0,co,90,8q,,8q,8q,8q\",\"2,8q,g3,g2,ch,ch,,91,91,91\",\"3,8q,xx,g5,ch,ch,,91,91,91\",\"3,8q,1js,g6,ch,ch,,91,91,91\",\"3,8q,hg,h9,cl,cl,,90,90,90\",\"3,8q,ha,gj,cx,8q,,8q,8q,8q\",\"5,1lo,1qn,1q2,1lq,1lo,,1lo,1lo,1lo\",\"5,1lw,1pq,1pp,1ly,1lw,,1lw,1lw,1lw\",\"4,1nn,1re,1rd,1no,1nn,,1nn,1nn,1nn\",\"4,1no,1t8,1t5,1pn,1no,,1no,1no,1no\",\"5,1qm,1u9,1u8,1qo,1qm,,1qm,1qm,1qm\",\"5,1qr,1ud,1uc,1qt,1qr,,1qr,1qr,1qr\",\"5,1qt,1us,1uq,1qz,1qt,,1qt,1qt,1qt\",\"3,1r0,1ut,1us,1r7,1r0,,1r0,1r0,1r0\",\"5,1r5,1v6,1v6,1re,1r5,,1r5,1r5,1r5\",\"5,1rk,1xw,1xw,1ua,1rk,,1rk,1rk,1rk\",\"5,1t5,1wt,1wr,1t8,1t5,,1t5,1t5,1t5\",\"5,202,243,242,203,202,,202,202,202\",\"5,205,23s,23r,208,205,,205,205,205\",\"5,20a,23w,23v,20c,20a,,20a,20a,20a\",\"5,24r,2bx,28g,24t,24r,,24r,24r,24r\",\"5,24r,2ib,2bc,272,24r,,24r,24r,24r\",\"5,26q,2b1,2b0,27d,26q,,26q,26q,26q\",\"5,270,2b2,2b1,27i,270,,270,270,270\",\"5,278,2bp,2bo,27t,278,,278,278,278\",\"5,279,2bn,2bn,284,279,,279,279,279\",\"5,27l,280\",\"2,2br,2fe,2fb,2bs,2br,,2br,2br,2br\",\"3,2br,2mv,2mu,2j5,2br,,2br,2br,2br\",\"5,2jk,2ne,2nb,2jn,2jk,,2jk,2jk,2jk\"]}","mark.@grammarly-extension:checkScriptInitStart":"[2822]","mark.@grammarly-extension:checkScriptInitEnd":"[2823]","userTimingRaw":"{\"marks\":{\"@grammarly-extension:checkScriptInitStart\":[2822],\"@grammarly-extension:checkScriptInitEnd\":[2823]},\"measures\":{}}","experiments":"[]"},"timeDelta":-4550},{"name":"confluence.synchrony.user.in.session","properties":{"numOtherUsers":1,"draftId":"38904870","contentId":"38904870"},"timeDelta":-3417},{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","isInitial":"false","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.page.create.collaborative.view.connected","readyForUser":"1138","threshold":"1000","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","resourceTiming":"{\"â˜Â \":[\"5,ea,ec\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]"},"timeDelta":-3415}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + Accept application/json, text/javascript, */*; q=0.01 + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + - + + + false + true + + + - - false - parentPageId - ${x_parent_page_id} + + true + spaceKey + ${space_key} = true - - false - pageId - ${x_page_id} + + true + dataType + json = true - + true - spaceKey - ${x_space_key} + contentId + ${ajs-content-id} = true - + true - atl_after_login_redirect - ${x_new_title_page} + atl_token + ${ajs-atl-token} = true - - false - timeout - 12000 + + true + contributorsHash + ${contributorsHash} = true - - false - _ - ${__time(,)} + + true + draftType + page = true @@ -6382,9 +6061,9 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - UTF-8 - ${application.postfix}/plugins/editor-loader/editor.action - GET + + ${application.postfix}/json/startheartbeatactivity.action + POST true false true @@ -6394,35 +6073,31 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - */* + + Content-Type + application/x-www-form-urlencoded; charset=UTF-8 - + true false - {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + {"status":"current","title":"${page_title}","space":{"key":"${space_key}"},"body":{"editor":{"value":"<div style=\"display: none;\"><br /></div><p><br /></p>","representation":"editor","content":{"id":"${ajs-content-id}"}}},"id":"${ajs-content-id}","type":"page","version":{"number":1,"minorEdit":true,"syncRev":"0.RIi4Ras2AToROk0WlzfpzBg.2"},"ancestors":[{"id":"${ajs-parent-page-id}","type":"page"}]} = @@ -6431,8 +6106,8 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/api/content/${ajs-content-id}?status=draft + PUT true false true @@ -6442,11 +6117,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6454,28 +6129,35 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/json; charset=UTF-8 + + groovy + + + true + import org.apache.commons.lang.RandomStringUtils + +int randomStringLength = 32 +String charset = (('a'..'z') + ('A'..'Z') + ('0'..'9')).join() +String randomString = RandomStringUtils.random(randomStringLength, charset.toCharArray()) + +vars.put("page_title", "jmeter_create_and_edit_page:create_page - " + randomString) + + - - true - + + - + false - {"r":["confluence.web.resources.colors:colors","com.atlassian.confluence.keyboardshortcuts:confluence-keyboard-shortcuts","com.atlassian.confluence.editor:editor-resources-conf-frontend","com.atlassian.confluence.plugins.confluence-browser-metrics:editor","confluence.web.resources:quicksearchdropdown","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","confluence.web.resources:hint-manager","confluence.web.resources:raphael","com.atlassian.confluence.plugins.confluence-link-browser:link-object","confluence.web.resources:core","com.atlassian.confluence.plugins.confluence-page-layout:pagelayout-frontend","com.atlassian.confluence.plugins.confluence-link-browser:link-browser-conf-frontend","confluence.extra.jira:macro-browser-resources","confluence.extra.jira:dialogsJs-for-conf-frontend","confluence.extra.jira:jirachart-macro","confluence.web.resources:navigator-context","com.atlassian.plugins.atlassian-connect-plugin:confluence-atlassian-connect-resources-v5","com.atlassian.plugins.atlassian-connect-plugin:dynamic-css-resources","com.atlassian.plugins.atlassian-connect-plugin:featured-macro-css-resources","com.atlassian.plugins.atlassian-connect-plugin:confluence-atlassian-connect-autoconvert-resources-v5","com.atlassian.plugins.atlassian-connect-plugin:macro-editor-resources-v5","com.atlassian.confluence.plugins.confluence-inline-tasks:editor-autocomplete-date-conf-frontend","confluence.web.resources:breadcrumbs","com.atlassian.confluence.plugins.confluence-collaborative-editor-plugin:confluence-collaborative-editor-plugin-resources","com.atlassian.confluence.keyboardshortcuts:confluence-keyboard-shortcuts","com.atlassian.confluence.plugins.confluence-labels:labels-editor","confluence.web.resources:ajs","com.atlassian.auiplugin:aui-inline-dialog2","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-for-editor-conf-frontend","com.atlassian.confluence.plugins.gadgets:macro-browser-for-gadgetsplugin","com.atlassian.confluence.plugins.confluence-invite-to-edit:edit-resources","confluence.macros.multimedia:macro-browser-smart-fields","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.image.effects.ImageEffectsPlugin:propertiespanel","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-resources-conf-frontend","com.atlassian.confluence.plugins.confluence-view-file-macro:view-file-macro-editor-resources","confluence.macros.advanced:editor_includemacro-conf-frontend","com.atlassian.confluence.plugins.confluence-request-access-plugin:confluence-request-access-plugin-resources","confluence.web.resources:deferred-dialog-loader","com.atlassian.confluence.plugins.confluence-create-content-plugin:editor-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-macro-browser-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-resources","com.atlassian.confluence.plugins.confluence-inline-tasks:inline-tasks-macro-browser","com.atlassian.confluence.extra.team-calendars:amd","com.atlassian.confluence.extra.team-calendars:user-timezone-setup","com.atlassian.confluence.extra.team-calendars:calendar-init-editor","com.atlassian.confluence.extra.team-calendars:macro-browser-web-resources","confluence.extra.jira:text-placeholders-jira"],"c":[],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + _ + ${__time(,)} = + true @@ -6483,8 +6165,8 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/mywork/latest/status/notification/count + GET true false true @@ -6494,40 +6176,50 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - - false - {"r":[],"c":["com.atlassian.confluence.extra.team-calendars.resources-batch"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + + true + dataType + json + = + true + + + true + contentId + ${ajs-content-id} = + true + + + true + atl_token + ${ajs-atl-token} + = + true + + + true + draftType + page + = + true @@ -6535,7 +6227,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/json/stopheartbeatactivity.action POST true false @@ -6546,11 +6238,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6558,43 +6250,21 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/x-www-form-urlencoded; charset=UTF-8 - - - false - true - - - + - - - false - pageId - ${x_create_page_id} - = - true - - + - ${application.postfix}/pages/editpage.action + ${application.postfix}/display/${space_key}/${page_title} GET true false @@ -6605,202 +6275,68 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 - Upgrade-Insecure-Requests 1 - - Accept-Encoding - gzip, deflate - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 - - false - x_page_title - name=\"ajs-page-title\" content=\"(.*?)\" - $1$ - NOT FOUND - 1 - c_PageTitle - - - - false - x_page_version - name=\"ajs-page-version\" content=\"(.*?)\"> - $1$ - NOT FOUND - 1 - c_PageVersion - - - - false - x_atl_token - name=\"ajs-atl-token\" content=\"(.*?)\" - $1$ - NOT FOUND - 1 - - - - false - x_page_content - id=\"wysiwygTextarea\" name=\"wysiwygContent\" class=\"hidden tinymce-editor\">([\w\W]*?)</textarea> - $1$ - NOT FOUND - 1 - c_PageContent - - - - false - x_space_key - createpage.action\?spaceKey=(.+?)\& - $1$ - - 1 - true - - - - false - x_content_id - meta name=\"ajs-content-id\" content=\"(.*?)\"> - $1$ - NOT FOUND - 1 - c_ajsContentID - - - - false - x_page_id - meta name=\"ajs-page-id\" content=\"(.*?)\"> - $1$ - NOT FOUND - 1 - c_TreePageID - - - - false - x_parent_page_id - meta name=\"ajs-parent-page-id\" content=\"(.*?)\" - $1$ - NOT FOUND - 1 - c_ParentPageID - - - - - <title>Edit - Update</button> - - - Assertion.response_data - false - 2 - + + 32555.0 + 16277.5 + Recorded time was 32555 milliseconds + - + - - false - _ - ${__time(,)} + + true + spaceKey + ${space_key} = true - - - - - - - ${application.postfix}/rest/jiraanywhere/1.0/servers - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Accept-Encoding - gzip, deflate - - - Accept - */* - - - - - - - - - false + true dataType json = true - false + true contentId - ${x_content_id} + ${ajs-content-id} = true - - false - draftType - page + + true + atl_token + ${ajs-atl-token} = true - + true - spaceKey - ${x_space_key} + contributorsHash + ${contributorsHash} = true - - false - atl_token - ${x_atl_token} + + true + draftType + page = true @@ -6809,7 +6345,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - UTF-8 + ${application.postfix}/json/startheartbeatactivity.action POST true @@ -6821,11 +6357,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6835,34 +6371,18 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type application/x-www-form-urlencoded; charset=UTF-8 - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + true + - - false - expand - history.createdBy.status%2Chistory.contributors.publishers.users.status%2Cchildren.comment.version.by.status - = - true - - + false - _ - ${__time(,)} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewcontent","atl.general","page","atl.comments"],"xr":[]} = - true @@ -6870,8 +6390,8 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/api/content/${x_page_id} - GET + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -6881,74 +6401,34 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + + Content-Type + application/json - + - - - false - dataType - json - = - true - - - false - contentId - ${x_content_id} - = - true - - - false - draftType - page - = - true - - - true - spaceKey - ${x_space_key} - = - true - - - false - atl_token - ${x_atl_token} - = - true - - + - UTF-8 - ${application.postfix}/json/startheartbeatactivity.action - POST + + ${application.postfix}/rest/helptips/1.0/tips + GET true false true @@ -6958,11 +6438,11 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6970,23 +6450,22 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/json - + + + false + containerId + ${ajs-content-id} + = + true + false _ @@ -7000,7 +6479,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/ui/1.0/content/${x_page_id}/labels + ${application.postfix}/rest/inlinecomments/1.0/comments GET true false @@ -7011,29 +6490,21 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - */* - - + @@ -7049,7 +6520,7 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - ${application.postfix}/rest/mywork/latest/status/notification/count + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} GET true false @@ -7060,63 +6531,125 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + false - dataType - json + decorator + none = true - + false - contentId - ${x_content_id} + expandCurrent + true = true - + false - draftType - page + mobile + false + = + true + + + false + sort + position + = + true + + + false + reverse + false = true - true + false spaceKey - ${x_space_key} + ${space_key} = true - + false - atl_token - ${x_atl_token} + treeId + 0 + = + true + + + false + hasRoot + false + = + true + + + false + startDepth + 0 + = + true + + + false + disableLinks + false + = + true + + + false + placement + sidebar + = + true + + + false + excerpt + false + = + true + + + false + ancestors + ${ajs-parent-page-id} + = + true + + + false + treePageId + ${ajs-page-id} + = + true + + + false + _ + ${__time(,)} = true @@ -7125,9 +6658,9 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - UTF-8 - ${application.postfix}/json/startheartbeatactivity.action - POST + + ${application.postfix}/plugins/pagetree/naturalchildren.action + GET true false true @@ -7137,277 +6670,44 @@ vars.put("p_new_file_name", (new Random().with {(1..9).collect {((&apo - + - - Accept-Language - en-US,en;q=0.5 + + Accept + text/plain, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - false - true - - - - ${__groovy("${x_parent_page_id}" != "")} - false - true - - - - true - - - - false - { - "status": "current", - "title": "Test Performance Edit with JMeter ${p_new_file_name}", - "space": { - "key": "${space_key}" - }, - "body": { - "storage": { - "value": "Page edit with JMeter ${p_new_file_name}", - "representation": "storage", - "content": { - "id": "${x_content_id}" - } - } - }, - "id": "${x_content_id}", - "type": "page", - "version": { - "number": "${p_page_version}" - }, - "ancestors": [ - { - "id": "${x_parent_page_id}", - "type": "page" - } - ] -} - = - - - - - - - utf-8 - ${application.postfix}/rest/api/content/${x_content_id}?staus=draft - PUT - true - false - true - false - - - - x_page_version - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - text/plain, */*; q=0.01 - - - - - - groovy - - - true - //vars.put("p_FileNumber", (Math.abs(new Random().nextInt() % 100) + 1).toString()); - -vars.put("p_new_file_name", (new Random().with {(1..9).collect {(('A'..'Z')).join()[ nextInt((('A'..'Z')).join().length())]}.join()}).toString()); - -//log.info("Random String: " + new Random().with {(1..9).collect {(('A'..'Z')).join()[ nextInt((('A'..'Z')).join().length())]}.join()}); - - - - groovy - - - true - int page_version = vars.get("x_page_version").toInteger() + 1; - -vars.put("p_page_version", page_version.toString()); - - - - - "title":"Test Performance Edit with JMeter ${p_new_file_name}" - - - Assertion.response_data - false - 16 - - - - - - ${__groovy("${x_parent_page_id}" == "")} - false - true - - - - true - - - - false - { - "status": "current", - "title": "Test Performance Edit with JMeter ${p_new_file_name}", - "space": { - "key": "${space_key}" - }, - "body": { - "storage": { - "value": "Page edit with JMeter ${p_new_file_name}", - "representation": "storage", - "content": { - "id": "${x_content_id}" - } - } - }, - "id": "${x_content_id}", - "type": "page", - "version": { - "number": "${p_page_version}" - } -} - = - - - - - - - utf-8 - ${application.postfix}/rest/api/content/${x_content_id}?staus=draft - PUT - true - false - true - false - - - - x_page_version - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - text/plain, */*; q=0.01 - - - - - - groovy - - - true - //vars.put("p_FileNumber", (Math.abs(new Random().nextInt() % 100) + 1).toString()); - -vars.put("p_new_file_name", (new Random().with {(1..9).collect {(('A'..'Z')).join()[ nextInt((('A'..'Z')).join().length())]}.join()}).toString()); - -//log.info("Random String: " + new Random().with {(1..9).collect {(('A'..'Z')).join()[ nextInt((('A'..'Z')).join().length())]}.join()}); - - - - groovy - - - true - int page_version = vars.get("x_page_version").toInteger() + 1; - -vars.put("p_page_version", page_version.toString()); - - - - - "title":"Test Performance Edit with JMeter ${p_new_file_name}" - - - Assertion.response_data - false - 16 - - - - - + - + + + false + pageId + ${ajs-page-id} + = + true + + + false + _ + ${__time(,)} + = + true + + - UTF-8 - ${application.postfix}/pages/viewpage.action?pageId=${x_page_id} + + ${application.postfix}/rest/jira-metadata/1.0/metadata/aggregate GET true false @@ -7418,78 +6718,34 @@ vars.put("p_page_version", page_version.toString()); - + - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json - - - last-modified - Created by - - - Assertion.response_data - false - 16 - - - - false - c_newAncestorID_All - name=\"ancestorId\" value=\"(.*?)\" - $1$ - NOT FOUND - -1 - - - - true - - - def tempQueryStr = ""; -def totalAncestorID = vars.get("c_newAncestorID_All_matchNr").toInteger(); -def tempCounter = 1; - -if (totalAncestorID > 0) -{ - - while (tempCounter <= totalAncestorID) - { - tempQueryStr = tempQueryStr + "ancestors=" + vars.get("c_newAncestorID_All_" + tempCounter + "_g1") + "&"; - tempCounter = tempCounter + 1; - } - - vars.put("p_natChild_queryStr", (tempQueryStr.substring(0,tempQueryStr.length() - 1)).toString()); -} - -//log.info("QueryString: " + vars.get("p_natChild_queryStr")); - - - - groovy - - - + + + false + commentLikes + true + = + true + false _ @@ -7503,7 +6759,7 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/mywork/latest/status/notification/count + ${application.postfix}/rest/likes/1.0/content/${ajs-content-id}/likes GET true false @@ -7514,56 +6770,82 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + false - dataType - json + pageId + ${ajs-page-id} = true - + false - contentId - ${x_content_id} + _ + ${__time(,)} = true - + + + + + + + ${application.postfix}/rest/highlighting/1.0/panel-items + GET + true + false + true + false + + + + + + + + + Accept + */* + + + X-Requested-With + XMLHttpRequest + + + + + + + + + false - draftType - page + pageid + ${ajs-page-id} = true - + false - atl_token - ${x_atl_token} + _ + ${__time(,)} = true @@ -7572,9 +6854,9 @@ if (totalAncestorID > 0) - UTF-8 - ${application.postfix}/json/stopheartbeatactivity.action - POST + + ${application.postfix}/rest/mywork/latest/status/notification/count + GET true false true @@ -7584,41 +6866,37 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - + + + false + _ + ${__time(,)} + = + true + + - ${application.postfix}/rest/helptips/1.0/tips + ${application.postfix}/rest/watch-button/1.0/watchState/${ajs-content-id} GET true false @@ -7629,39 +6907,27 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + {"r":[],"c":["request-access-plugin"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewcontent","atl.general","page","atl.comments","browser-metrics-plugin.contrib"],"xr":[]} = @@ -7681,11 +6947,11 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -7695,25 +6961,45 @@ if (totalAncestorID > 0) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + + + false + spaceKey + ${space_key} + = + true + + + false + parentPageId + ${ajs-parent-page-id} + = + true + + + true + atl_after_login_redirect + /display/${space_key}/${page_title} + = + true + false pageId - ${x_page_id} + ${ajs-content-id} + = + true + + + false + timeout + 12000 = true @@ -7730,7 +7016,7 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/jira-metadata/1.0/metadata/aggregate + ${application.postfix}/plugins/editor-loader/editor.action GET true false @@ -7741,48 +7027,28 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + */* X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + true + - - false - commentLikes - true - = - true - - + false - _ - ${__time(,)} + [{"name":"confluence.viewpage.src.empty","properties":{"userKey":"${ajs-remote-user-key}","pageID":"${ajs-page-id}"},"timeDelta":-502},{"name":"confluence.page.view","properties":{"pageID":"${ajs-page-id}"},"timeDelta":-495},{"name":"browser.metrics.navigation","properties":{"apdex":"1","firstPaint":"861","isInitial":"true","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.page.view","navigationType":"0","readyForUser":"933","redirectCount":"0","resourceLoadedEnd":"718","resourceLoadedStart":303.38499997742474,"threshold":"1000","unloadEventStart":"279","unloadEventEnd":"279","fetchStart":"5","domainLookupStart":"5","domainLookupEnd":"5","connectStart":"5","connectEnd":"5","requestStart":"14","responseStart":"274","responseEnd":"288","domLoading":"282","domInteractive":"842","domContentLoadedEventStart":"842","domContentLoadedEventEnd":"851","domComplete":"1246","loadEventStart":"1246","loadEventEnd":"1248","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","serverDuration":"145","requestCorrelationId":"20f982530b81615b","resourceTiming":"{\"â˜Â \":[\"2,8f,fz,cc,8o,8f,,8f,8f,8f\",\"2,8f,g9,cl,8p,8f,,8f,8f,8f\",\"3,8f,jy,cb,8p,8f,,8f,8f,8f\",\"3,8f,jo,cg,8p,8f,,8f,8f,8f\",\"5,lw,pt,pt,ly,lw,,lw,lw,lw\",\"5,m1,pp,po,m3,m1,,m1,m1,m1\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]"},"timeDelta":-160}] = - true @@ -7790,8 +7056,8 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/likes/1.0/content/${x_page_id}/likes - GET + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST true false true @@ -7801,44 +7067,32 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + + Content-Type + application/json - - + + true + - - false - pageId - ${x_page_id} - = - true - - + false - _ - ${__time(,)} + {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewcontent","atl.general","page","atl.comments","browser-metrics-plugin.contrib","request-access-plugin"],"xr":[]} = - true @@ -7846,8 +7100,8 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/highlighting/1.0/panel-items - GET + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -7857,42 +7111,38 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - */* + + Content-Type + application/json - + - + false - pageid - ${x_page_id} + macroMetadataClientCacheKey + 1618492783694 = true - + false - _ - ${__time(,)} + detailed + false = true @@ -7902,7 +7152,7 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/mywork/latest/status/notification/count + ${application.postfix}/plugins/macrobrowser/browse-macros.action GET true false @@ -7913,66 +7163,29 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + + + false + true + + + - - false - parentPageId - ${x_parent_page_id} - = - true - - - false - pageId - ${x_page_id} - = - true - - - true - spaceKey - ${x_space_key} - = - true - - - true - atl_after_login_redirect - /pages/viewpage.action - = - true - - - false - timeout - 12000 - = - true - false _ @@ -7985,8 +7198,8 @@ if (totalAncestorID > 0) - UTF-8 - ${application.postfix}/plugins/editor-loader/editor.action + + ${application.postfix}/rest/tinymce/1/content/${ajs-content-id}.json GET true false @@ -7997,38 +7210,23 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + */* X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - */* - - + - - false - containerId - ${x_page_id} - = - true - false _ @@ -8042,7 +7240,7 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/inlinecomments/1.0/comments + ${application.postfix}/rest/jiraanywhere/1.0/servers GET true false @@ -8053,29 +7251,21 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + */* X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + @@ -8091,7 +7281,7 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/watch-button/1.0/watchState/${x_page_id} + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} GET true false @@ -8102,36 +7292,57 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - - false - {"r":[],"c":["request-access-plugin"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + + true + spaceKey + ${space_key} + = + true + + + true + dataType + json + = + true + + + true + contentId + ${ajs-content-id} + = + true + + + true + atl_token + ${ajs-atl-token} + = + true + + + true + draftType + page = + true @@ -8139,7 +7350,7 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/json/startheartbeatactivity.action POST true false @@ -8150,11 +7361,11 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -8162,28 +7373,28 @@ if (totalAncestorID > 0) Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/x-www-form-urlencoded; charset=UTF-8 - - true - + + - + + true + expand + history.createdBy.status,history.contributors.publishers.users.status,children.comment.version.by.status + = + true + + false - {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + _ + ${__time(,)} = + true @@ -8191,8 +7402,8 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/api/content/${ajs-content-id} + GET true false true @@ -8202,40 +7413,29 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - + false - {"r":["confluence.web.resources.colors:colors","com.atlassian.confluence.keyboardshortcuts:confluence-keyboard-shortcuts","com.atlassian.confluence.editor:editor-resources-conf-frontend","com.atlassian.confluence.plugins.confluence-browser-metrics:editor","confluence.web.resources:quicksearchdropdown","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","confluence.web.resources:hint-manager","confluence.web.resources:raphael","com.atlassian.confluence.plugins.confluence-link-browser:link-object","confluence.web.resources:core","com.atlassian.confluence.plugins.confluence-page-layout:pagelayout-frontend","com.atlassian.confluence.plugins.confluence-link-browser:link-browser-conf-frontend","confluence.extra.jira:macro-browser-resources","confluence.extra.jira:dialogsJs-for-conf-frontend","confluence.extra.jira:jirachart-macro","confluence.web.resources:navigator-context","com.atlassian.plugins.atlassian-connect-plugin:confluence-atlassian-connect-resources-v5","com.atlassian.plugins.atlassian-connect-plugin:dynamic-css-resources","com.atlassian.plugins.atlassian-connect-plugin:featured-macro-css-resources","com.atlassian.plugins.atlassian-connect-plugin:confluence-atlassian-connect-autoconvert-resources-v5","com.atlassian.plugins.atlassian-connect-plugin:macro-editor-resources-v5","com.atlassian.confluence.plugins.confluence-inline-tasks:editor-autocomplete-date-conf-frontend","confluence.web.resources:breadcrumbs","com.atlassian.confluence.plugins.confluence-collaborative-editor-plugin:confluence-collaborative-editor-plugin-resources","com.atlassian.confluence.keyboardshortcuts:confluence-keyboard-shortcuts","com.atlassian.confluence.plugins.confluence-labels:labels-editor","confluence.web.resources:ajs","com.atlassian.auiplugin:aui-inline-dialog2","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-for-editor-conf-frontend","com.atlassian.confluence.plugins.gadgets:macro-browser-for-gadgetsplugin","com.atlassian.confluence.plugins.confluence-invite-to-edit:edit-resources","confluence.macros.multimedia:macro-browser-smart-fields","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.image.effects.ImageEffectsPlugin:propertiespanel","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-resources-conf-frontend","com.atlassian.confluence.plugins.confluence-view-file-macro:view-file-macro-editor-resources","confluence.macros.advanced:editor_includemacro-conf-frontend","com.atlassian.confluence.plugins.confluence-request-access-plugin:confluence-request-access-plugin-resources","confluence.web.resources:deferred-dialog-loader","com.atlassian.confluence.plugins.confluence-create-content-plugin:editor-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-macro-browser-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-resources","com.atlassian.confluence.plugins.confluence-inline-tasks:inline-tasks-macro-browser","com.atlassian.confluence.extra.team-calendars:amd","com.atlassian.confluence.extra.team-calendars:user-timezone-setup","com.atlassian.confluence.extra.team-calendars:calendar-init-editor","com.atlassian.confluence.extra.team-calendars:macro-browser-web-resources","confluence.extra.jira:text-placeholders-jira"],"c":[],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + _ + ${__time(,)} = + true @@ -8243,7 +7443,88 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/rest/autoconvert/latest/shortcutlinkconfigurations + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/ui/1.0/content/${ajs-content-id}/labels + GET + true + false + true + false + + + + + + + + + Accept + */* + + + X-Requested-With + XMLHttpRequest + + + + + + + true + + + + false + [{"name":"view.edit.transition.edit.button.clicked","properties":{"method":"by-other"},"timeDelta":-3837},{"name":"confluence.synchrony.client.content.reconciliation.blank-content","properties":{"contentId":"${ajs-content-id}"},"timeDelta":-3697},{"name":"confluence.editor.ready.collab.mode.on","properties":{"connectionOrder":"secondary","connectionType":"synchrony-proxy"},"timeDelta":-3369},{"name":"quick-edit-success","timeDelta":-3352},{"name":"confluence.synchrony.editor.loaded","properties":{"durationMillis":17,"contentId":"${ajs-content-id}"},"timeDelta":-3334},{"name":"browser.metrics.navigation","properties":{"apdex":"1","isInitial":"false","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.page.edit.collaborative.quick-view","readyForUser":"505","threshold":"1000","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","resourceTiming":"{\"â˜Â \":[\"5,5s,9l,9k,5u,5s,,5s,5s,5s\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]"},"timeDelta":-3321},{"name":"confluence.synchrony.user.in.session","properties":{"numOtherUsers":1,"draftId":"38904871","contentId":"38904870"},"timeDelta":-2606},{"name":"browser.metrics.navigation","properties":{"apdex":"1","isInitial":"false","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.page.edit.collaborative.quick-view.connected","readyForUser":"723","threshold":"1000","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","resourceTiming":"{\"â˜Â \":[\"5,3k,7n,7m,3m,3k,,3k,3k,3k\",\"5,44,7r,7q,47,44,,44,44,44\"]}","mark.@grammarly-extension:gButtonShow":"[67]","userTimingRaw":"{\"marks\":{\"@grammarly-extension:gButtonShow\":[67]},\"measures\":{}}","experiments":"[]"},"timeDelta":-2603}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -8254,11 +7535,11 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -8268,25 +7549,58 @@ if (totalAncestorID > 0) Content-Type application/json - - Accept-Encoding - gzip, deflate + + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + ${application.postfix}/rest/mywork/latest/status/notification/count + GET + true + false + true + false + + + + + + + Accept application/json, text/javascript, */*; q=0.01 + + X-Requested-With + XMLHttpRequest + - + true false - {"r":[],"c":["com.atlassian.confluence.extra.team-calendars.resources-batch"],"xc":["_super","baseurl-checker-resource","atl.confluence.plugins.pagetree-desktop","main","viewcontent","page","atl.general","atl.comments"],"xr":[]} + [{"name":"confluence.editor.transition.firstkeydown","properties":{"delay":20017},"timeDelta":-3472}] = @@ -8295,7 +7609,7 @@ if (totalAncestorID > 0) - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -8306,11 +7620,11 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -8320,53 +7634,58 @@ if (totalAncestorID > 0) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - 1 - false - 1 - ${perc_comment_page} - - - + false true - + - + true - html - ${p_new_comment} + spaceKey + ${space_key} = true - - false - watch - true + + true + dataType + json = true - - false - uuid - ${p_uuid} + + true + contentId + ${ajs-content-id} + = + true + + + true + atl_token + ${ajs-atl-token} + = + true + + + true + contributorsHash + ${contributorsHash} + = + true + + + true + draftType + page = true @@ -8375,8 +7694,8 @@ if (totalAncestorID > 0) - UTF-8 - ${application.postfix}/rest/tinymce/1/content/${page_id}/comment?actions=true + + ${application.postfix}/json/startheartbeatactivity.action POST true false @@ -8387,11 +7706,11 @@ if (totalAncestorID > 0) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -8401,68 +7720,18 @@ if (totalAncestorID > 0) Content-Type application/x-www-form-urlencoded; charset=UTF-8 - - X-Atlassian-Token - no-check - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - groovy - - - true - -vars.put("p_new_comment", "<p>Comment page by JMeter: " + (new Random().with {(1..20).collect {(('a'..'z')). - join()[ nextInt((('a'..'z')).join().length())]}.join()}).toString() + "<p>"); - -vars.put("p_uuid", UUID.randomUUID().toString()); - - - - - reply-comment - edit-comment - - - Assertion.response_data - false - 16 - - - - - - 1 - false - 1 - ${perc_view_attachment} - - - - false - true - - - - + + true + - + false - pageId - ${page_id} + {"status":"current","title":"${page_title}","space":{"key":"${space_key}"},"body":{"editor":{"value":"<div style=\"display: none;\"><br /></div><p>${page_text}</p>","representation":"editor","content":{"id":"${ajs-content-id}"}}},"id":"${ajs-content-id}","type":"page","version":{"number":2,"message":"","minorEdit":false,"syncRev":"0.oLWs6S5l3gY2mwHJiA9jHao.5"},"ancestors":[{"id":"${ajs-parent-page-id}","type":"page"}]} = - true @@ -8470,8 +7739,8 @@ vars.put("p_uuid", UUID.randomUUID().toString()); - ${application.postfix}/pages/viewpageattachments.action - GET + ${application.postfix}/rest/api/content/${ajs-content-id}?status=draft + PUT true false true @@ -8481,41 +7750,2205 @@ vars.put("p_uuid", UUID.randomUUID().toString()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json; charset=UTF-8 + + + + + + groovy + + + true + import org.apache.commons.lang.RandomStringUtils + +int randomStringLength = 32 +String charset = (('a'..'z') + ('A'..'Z') + ('0'..'9')).join() +String randomString = RandomStringUtils.random(randomStringLength, charset.toCharArray()) + +vars.put("page_text", "jmeter_create_and_edit_page:edit_page - " + randomString) + + + + + + + + true + dataType + json + = + true + + + true + contentId + ${ajs-content-id} + = + true + + + true + atl_token + ${ajs-atl-token} + = + true + + + true + draftType + page + = + true + + + + + + + + ${application.postfix}/json/stopheartbeatactivity.action + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/x-www-form-urlencoded; charset=UTF-8 + + + + + + + + + + + + + ${application.postfix}/display/${space_key}/${page_title} + GET + true + false + true + false + + + + + + + Upgrade-Insecure-Requests 1 - - Accept-Encoding - gzip, deflate + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 + + + + + + 40236.0 + 20118 + Recorded time was 40236 milliseconds + + + + + true + + + + false + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewcontent","atl.general","page","atl.comments"],"xr":[]} + = + + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + + + + + + ${application.postfix}/rest/helptips/1.0/tips + GET + true + false + true + false + + + + + + + Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json - - - Upload file - Attach more files - Download All - currently no attachments + + + + + + false + containerId + ${ajs-content-id} + = + true + + + false + _ + ${__time(,)} + = + true + - - Assertion.response_data - false - 48 - + + + + + + ${application.postfix}/rest/inlinecomments/1.0/comments + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + + + false + decorator + none + = + true + + + false + expandCurrent + true + = + true + + + false + mobile + false + = + true + + + false + sort + position + = + true + + + false + reverse + false + = + true + + + false + spaceKey + ${space_key} + = + true + + + false + treeId + ${ajs-page-id} + = + true + + + false + hasRoot + false + = + true + + + false + startDepth + 0 + = + true + + + false + disableLinks + false + = + true + + + false + placement + sidebar + = + true + + + false + excerpt + false + = + true + + + false + ancestors + ${ajs-parent-page-id} + = + true + + + false + treePageId + ${space_key} + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/plugins/pagetree/naturalchildren.action + GET + true + false + true + false + + + + + + + + + Accept + text/plain, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + + + false + pageId + ${ajs-page-id} + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/jira-metadata/1.0/metadata/aggregate + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + + + false + commentLikes + true + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/likes/1.0/content/${ajs-content-id}/likes + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + + + false + pageId + ${ajs-page-id} + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/highlighting/1.0/panel-items + GET + true + false + true + false + + + + + + + + + Accept + */* + + + X-Requested-With + XMLHttpRequest + + + + + + + + + + false + pageid + ${ajs-page-id} + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/mywork/latest/status/notification/count + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/watch-button/1.0/watchState/${ajs-content-id} + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + true + + + + false + {"r":[],"c":["request-access-plugin"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewcontent","atl.general","page","atl.comments","browser-metrics-plugin.contrib"],"xr":[]} + = + + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + + + false + spaceKey + ${space_key} + = + true + + + false + parentPageId + ${ajs-parent-page-id} + = + true + + + true + atl_after_login_redirect + /display/${space_key}/${page_title} + = + true + + + false + pageId + ${ajs-content-id} + = + true + + + false + timeout + 12000 + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/plugins/editor-loader/editor.action + GET + true + false + true + false + + + + + + + + + Accept + */* + + + X-Requested-With + XMLHttpRequest + + + + + + + true + + + + false + [{"name":"confluence.viewpage.src.empty","properties":{"userKey":"${ajs-remote-user-key}","pageID":"${ajs-page-id}"},"timeDelta":-503},{"name":"confluence.page.view","properties":{"pageID":"${ajs-page-id}"},"timeDelta":-497},{"name":"browser.metrics.navigation","properties":{"apdex":"1","firstPaint":"906","isInitial":"true","journeyId":"a7c0ccb4-dcf5-46b1-b640-5dda29da5764","key":"confluence.page.view","navigationType":"0","readyForUser":"978","redirectCount":"0","resourceLoadedEnd":"762","resourceLoadedStart":237.39999998360872,"threshold":"1000","unloadEventStart":"212","unloadEventEnd":"212","fetchStart":"7","domainLookupStart":"7","domainLookupEnd":"7","connectStart":"7","connectEnd":"7","requestStart":"14","responseStart":"208","responseEnd":"222","domLoading":"216","domInteractive":"889","domContentLoadedEventStart":"889","domContentLoadedEventEnd":"895","domComplete":"1277","loadEventStart":"1277","loadEventEnd":"1279","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36","serverDuration":"79","requestCorrelationId":"a0c10edb3d00e84c","resourceTiming":"{\"â˜Â \":[\"2,6l,az,am,6v,6l,,6l,6l,6l\",\"2,6l,b3,az,6v,6l,,6l,6l,6l\",\"3,6l,l6,ak,6w,6l,,6l,6l,6l\",\"3,6l,em,ai,6w,6l,,6l,6l,6l\",\"5,n4,qv,qv,n6,n4,,n4,n4,n4\",\"5,nb,qz,qy,nd,nb,,nb,nb,nb\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]"},"timeDelta":-176}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + true + + + + false + {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewcontent","atl.general","page","atl.comments","browser-metrics-plugin.contrib","request-access-plugin"],"xr":[]} + = + + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + + + false + macroMetadataClientCacheKey + 1618492783694 + = + true + + + false + detailed + false + = + true + + + + + + + + ${application.postfix}/plugins/macrobrowser/browse-macros.action + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_comment_page} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + false + true + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/jiraanywhere/1.0/servers + GET + true + false + true + false + + + + + + + + + Accept + */* + + + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + + + + + + + + true + spaceKey + LPL + = + true + + + true + dataType + json + = + true + + + true + contentId + ${page_id} + = + true + + + true + atl_token + ${ajs-atl-token} + = + true + + + true + draftType + comment + = + true + + + + + + + + ${application.postfix}/json/startheartbeatactivity.action + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + Content-Type + application/x-www-form-urlencoded; charset=UTF-8 + + + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/autoconvert/latest/shortcutlinkconfigurations + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/mywork/latest/status/notification/count + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + + + + + + + + false + actions + true + = + true + + + true + watch + false + = + true + + + true + html + <div style="display: none;"><br /></div><p>${p_new_comment}</p> + = + true + + + true + uuid + ${p_uuid} + = + true + + + + + + + + ${application.postfix}/rest/tinymce/1/content/${page_id}/comment + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Atlassian-Token + no-check + + + Content-Type + application/x-www-form-urlencoded; charset=UTF-8 + + + + + + groovy + + + true + +vars.put("p_new_comment", "<p>Comment page by JMeter: " + (new Random().with {(1..20).collect {(('a'..'z')). + join()[ nextInt((('a'..'z')).join().length())]}.join()}).toString() + "<p>"); + +vars.put("p_uuid", UUID.randomUUID().toString()); + + + + + true + + + + false + [{"name":"confluence.page.reading","properties":{"pageID":"${page_id}"},"timeDelta":-880},{"name":"confluence.page.comment.create","properties":{"pageID":"${page_id}"},"timeDelta":-376},{"name":"confluence.editor.action","properties":{"keys":40,"pageID":"${page_id}","editorVersion":"0.74.1"},"timeDelta":-190}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + Content-Type + application/json + + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_view_attachment} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + false + true + + + + + + + false + since + ${__time(,)} + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/quickreload/latest/${page_id} + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + + + false + pageId + ${page_id} + = + true + + + + + + + + ${application.postfix}/pages/viewpageattachments.action + GET + true + false + true + false + + + + + + + + + Upgrade-Insecure-Requests + 1 + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 + + + + + + false + data-linked-resource-id + data-linked-resource-id=\"(.*?)\" + $1$ + NOT FOUND + 1 + all + + + + false + ajs-parent-page-id + meta name=\"ajs-parent-page-id\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-atl-token + name=\"ajs-atl-token\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + c_ajsAtlToken + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + ${__groovy(vars.get("data-linked-resource-id") != "NOT FOUND")} + false + true + + + + true + + + + false + {"attachmentIds":["${data-linked-resource-id}"]} + = + + + + + + + + ${application.postfix}/rest/files/1.0/files/content/${page_id}/byAttachmentIds + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json; charset=UTF-8 + + + + + + + + + + + false + pageid + ${page_id} + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/mywork/latest/status/notification/count + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + + + false + decorator + none + = + true + + + false + expandCurrent + true + = + true + + + false + mobile + false + = + true + + + false + sort + position + = + true + + + false + reverse + false + = + true + + + false + spaceKey + ${space_key} + = + true + + + false + treeId + 0 + = + true + + + false + hasRoot + false + = + true + + + false + startDepth + 0 + = + true + + + false + disableLinks + false + = + true + + + false + placement + sidebar + = + true + + + false + excerpt + false + = + true + + + false + ancestors + ${ajs-parent-page-id} + = + true + + + false + treePageId + ${page_id} + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/plugins/pagetree/naturalchildren.action + GET + true + false + true + false + + + + + + + + + Accept + text/plain, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + true + + + + false + {"r":[],"c":["request-access-plugin"],"xc":["_super","viewattachments","main","atl.general","page","atl.confluence.plugins.pagetree-desktop"],"xr":["confluence.web.resources:attachments","com.atlassian.auiplugin:split_aui.splitchunk.036a05e5ff","com.atlassian.auiplugin:split_aui.component.nav","com.atlassian.confluence.plugins.confluence-space-ia:soy-resources","com.atlassian.auiplugin:split_aui.splitchunk.vendors--fc45e4dda1","com.atlassian.auiplugin:split_jquery.ui.sortable","com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar","confluence.web.resources:pagination-styles"]} + = + + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + + + false + spaceKey + ${space_key} + = + true + + + false + parentPageId + ${ajs-parent-page-id} + = + true + + + true + atl_after_login_redirect + /pages/viewpageattachments.action + = + true + + + false + pageId + ${page_id} + = + true + + + false + timeout + 12000 + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/plugins/editor-loader/editor.action + GET + true + false + true + false + + + + + + + + + Accept + */* + + + X-Requested-With + XMLHttpRequest + + + + + + false + ajs-build-number + meta name=\"ajs-build-number\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + + false + ajs-atl-token + meta name=\"ajs-atl-token\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-keyboardshortcut-hash + meta name=\"ajs-keyboardshortcut-hash\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-build-number + meta name=\"ajs-build-number\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-build-number + meta name=\"ajs-build-number\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + + true + + + + false + [{"name":"confluence.viewpage.src.empty","properties":{"userKey":"${ajs-remote-user-key}","pageID":"${page_id}"},"timeDelta":-505}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + true + + + + false + {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","viewattachments","main","atl.general","page","atl.confluence.plugins.pagetree-desktop","request-access-plugin"],"xr":["confluence.web.resources:attachments","com.atlassian.auiplugin:split_aui.splitchunk.036a05e5ff","com.atlassian.auiplugin:split_aui.component.nav","com.atlassian.confluence.plugins.confluence-space-ia:soy-resources","com.atlassian.auiplugin:split_aui.splitchunk.vendors--fc45e4dda1","com.atlassian.auiplugin:split_jquery.ui.sortable","com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar","confluence.web.resources:pagination-styles"]} + = + + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + + + false + macroMetadataClientCacheKey + 1618579820365 + = + true + + + false + detailed + false + = + true + + + + + + + + ${application.postfix}/plugins/macrobrowser/browse-macros.action + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + true + + + + false + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","viewattachments","main","atl.general","page","atl.confluence.plugins.pagetree-desktop","request-access-plugin"],"xr":["confluence.web.resources:attachments","com.atlassian.auiplugin:split_aui.splitchunk.036a05e5ff","com.atlassian.auiplugin:split_aui.component.nav","com.atlassian.confluence.plugins.confluence-space-ia:soy-resources","com.atlassian.auiplugin:split_aui.splitchunk.vendors--fc45e4dda1","com.atlassian.auiplugin:split_jquery.ui.sortable","com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar","confluence.web.resources:pagination-styles","com.atlassian.auiplugin:split_aui.component.form.date-select","com.atlassian.auiplugin:split_aui.splitchunk.e8173e0382","com.atlassian.auiplugin:split_aui.component.form.select2","com.atlassian.auiplugin:split_aui.splitchunk.vendors--8cfcf1af69","com.atlassian.auiplugin:split_aui.component.form.file-select","com.atlassian.auiplugin:split_aui.deprecated.pattern.toolbar1","com.atlassian.auiplugin:split_aui.splitchunk.vendors--85718a7eef","com.atlassian.auiplugin:split_aui.splitchunk.vendors--7c76061134","com.atlassian.confluence.plugins.confluence-ui-components:space-page-picker","com.atlassian.confluence.plugins.confluence-ui-components:user-group-select2","com.atlassian.confluence.plugins.confluence-ui-components:cql","com.atlassian.confluence.plugins.confluence-create-content-plugin:user-select2","confluence.web.components:editor-notifications","confluence.web.resources:draft-changes-css","com.atlassian.confluence.plugins.confluence-macro-browser:macro-browser-css","confluence.web.resources:macro-browser-sprites","com.atlassian.confluence.editor:page-editor-css","com.atlassian.confluence.editor:unpublished-changes","com.atlassian.confluence.plugins.reliablesave:reliable-save-conf-frontend","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.image.effects.ImageEffectsPlugin:propertiespanel","com.atlassian.plugins.editor:atlassian-rte-css","com.atlassian.confluence.plugins.confluence-collaborative-editor-plugin:confluence-collaborative-editor-plugin-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-resources","com.atlassian.confluence.plugins.confluence-fixed-headers:confluence-fixed-headers-editor-resources","com.atlassian.confluence.plugins.confluence-hipchat-emoticons-plugin:hipchat-emoticons-conf-frontend","com.atlassian.confluence.plugins.confluence-link-browser:linkbrowser-css-resources","com.atlassian.confluence.plugins.confluence-mentions-plugin:smart-mentions-editor-resources","com.atlassian.confluence.plugins.confluence-page-layout:pagelayout-frontend","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-dialog-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-toolbar-view-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-resources","com.atlassian.confluence.plugins.confluence-templates:template-editor-variables-resources","com.atlassian.confluence.plugins.confluence-view-file-macro:view-file-macro-editor-resources","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-overlay","com.atlassian.confluence.plugins.gadgets:css","com.atlassian.confluence.plugins.share-page:plus-icon-css","com.atlassian.integration.jira.jira-integration-plugin:fields","com.atlassian.integration.jira.jira-integration-plugin:jira-create-issue-form","confluence.extra.jira:dialogsJs","com.atlassian.auiplugin:split_aui.splitchunk.vendors--ec56cc9135","com.atlassian.auiplugin:split_aui.component.form-validation","com.atlassian.auiplugin:split_aui.splitchunk.vendors--825acd7236","com.atlassian.auiplugin:split_jquery.ui.droppable","com.atlassian.auiplugin:split_jquery.ui.resizable","com.atlassian.auiplugin:split_jquery.ui.selectable","com.atlassian.confluence.editor:analytics","com.atlassian.confluence.editor:attachments-insert-utils-resources","com.atlassian.confluence.editor:editor-internationalisation","confluence.web.resources:dictionary","confluence.web.resources:macro-js-overrides","com.atlassian.confluence.plugins.confluence-ui-components:common","com.atlassian.confluence.plugins.confluence-ui-components:space-picker","confluence.web.resources:date-picker","com.atlassian.confluence.plugins.confluence-ui-components:page-picker","com.atlassian.confluence.plugins.confluence-ui-components:label-picker","com.atlassian.confluence.plugins.confluence-ui-components:include-exclude-picker","com.atlassian.confluence.plugins.confluence-macro-browser:macro-browser-js","com.atlassian.confluence.plugins.confluence-editor-v4:editor-resources-v4","com.atlassian.confluence.editor:bookmark-manager-conf-frontend","com.atlassian.confluence.editor:collaborative-helper","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","confluence.web.resources:draft-changes-js","com.atlassian.confluence.editor:page-editor-soy","com.atlassian.confluence.plugins.drag-and-drop:files-upload-analytics","com.atlassian.confluence.editor:panel-components","com.atlassian.confluence.editor:page-editor-js","com.atlassian.confluence.editor:editor-v3-v4-shared-resources","com.atlassian.confluence.editor:editor-resources-v4","com.atlassian.confluence.editor:editor-support-util","com.atlassian.confluence.editor:page-editor-quit-dialog","com.atlassian.confluence.plugins.confluence-image-attributes:soy-resources","com.atlassian.confluence.plugins.confluence-image-attributes:image-attributes","com.atlassian.confluence.ext.newcode-macro-plugin:code-macro-editor","com.atlassian.confluence.extra.officeconnector:macro-browser-smart-fields","com.atlassian.confluence.keyboardshortcuts:confluence-tinymce-keyboard-shortcuts","com.atlassian.plugins.browser.metrics.browser-metrics-plugin:api","com.atlassian.confluence.plugins.confluence-browser-metrics:editor","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-macro-browser-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:editor-resources","com.atlassian.confluence.plugins.confluence-fixed-headers:utils","com.atlassian.confluence.plugins.confluence-frontend:split_jquery-selection-plugin","com.atlassian.confluence.plugins.confluence-inline-tasks:confluence-inlineTasks-utils","com.atlassian.confluence.plugins.confluence-inline-tasks:datepicker1","com.atlassian.confluence.plugins.confluence-inline-tasks:dateutil","com.atlassian.confluence.plugins.confluence-inline-tasks:date-helper-js-resources","com.atlassian.confluence.plugins.confluence-inline-tasks:editor-autocomplete-date-js","com.atlassian.confluence.plugins.confluence-inline-tasks:space-page-picker-shim","com.atlassian.confluence.plugins.confluence-inline-tasks:inline-tasks-macro-browser","confluence.web.resources:trigger","confluence.web.resources:keyboard","confluence.web.resources:jira-controls","confluence.web.resources:breadcrumbs-jquery","confluence.web.resources:dialog-breadcrumbs","confluence.web.resources:page-location","com.atlassian.confluence.plugins.confluence-link-browser:link-browser-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-analytics-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-bar-dialog-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-utilities-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-models","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-timeline-view-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-view-resources","com.atlassian.confluence.plugins.confluence-templates:template-editor-variables-template-resources","com.atlassian.confluence.plugins.drag-and-drop:image-dialog-client","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-tip","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-for-editor-common","com.atlassian.confluence.plugins.drag-and-drop:drop-zone-for-image-dialog","com.atlassian.gadgets.embedded:gadget-core-resources","com.atlassian.confluence.plugins.gadgets:macro-browser-for-gadgetsplugin","com.atlassian.confluence.plugins.profile-picture:profile-picture-editor_resources","com.atlassian.confluence.plugins.quickedit:editor-view-resources","com.atlassian.confluence.plugins.share-page:edit-resources","com.atlassian.confluence.plugins.sticky-table-headers:stickytableheaders-resources","confluence.extra.jira:proxy-js","confluence.extra.jira:jqlHelper","confluence.extra.jira:editor-resources-v4-exporter","confluence.extra.jira:jiraAnalytics","confluence.extra.jira:jirachart-macro","confluence.extra.jira:macro-browser-resources","confluence.extra.jira:text-placeholders-jira","confluence.macros.advanced:include_macro","confluence.macros.multimedia:macro-browser-smart-fields"]} + = + + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + @@ -8525,10 +9958,26 @@ vars.put("p_uuid", UUID.randomUUID().toString()); ${perc_upload_attachment} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + Page has to be viewed at least once to extract token - ${__groovy("${x_editable_g2}" != "" || "${x_atl_token_view_issue}" != "" )} + ${__groovy(vars.get("x_editable_g2") != null || vars.get("x_atl_token_view_issue") != null )} false true @@ -8538,7 +9987,7 @@ vars.put("p_uuid", UUID.randomUUID().toString()); true - + @@ -8550,54 +9999,528 @@ vars.put("p_uuid", UUID.randomUUID().toString()); - + + false + atl_token + ${x_atl_token_view_issue} + = + true + + + false + comment_0 + + = + true + + + false + comment_1 + + = + true + + + false + comment_2 + + = + true + + + false + comment_3 + + = + true + + + false + comment_4 + + = + true + + + false + confirm + Attach + = + true + + + + + + + + ${application.postfix}/pages/doattachfile.action?pageId=${x_editable_g2} + POST + true + false + true + true + true + + + + + + + + + Accept-Language + en-US,en;q=0.5 + + + Upgrade-Insecure-Requests + 1 + + + Accept-Encoding + gzip, deflate + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + + + + + + + Upload file + Attach more files + + + Assertion.response_data + false + 16 + + + + false + ajs-space-key + meta name=\"ajs-space-key\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-parent-page-id + meta name=\"ajs-parent-page-id\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + all + + + + false + ajs-remote-user-key + meta name=\"ajs-remote-user-key\" content=\"(.*?)\"> + $1$ + NOT FOUND + 1 + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/shortcuts/latest/shortcuts/${ajs-build-number}/${ajs-keyboardshortcut-hash} + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + + + false + decorator + none + = + true + + + false + expandCurrent + true + = + true + + + false + mobile + false + = + true + + + false + sort + position + = + true + + + false + reverse + false + = + true + + + false + spaceKey + ${ajs-space-key} + = + true + + + false + treeId + 0 + = + true + + + false + hasRoot + false + = + true + + + false + startDepth + 0 + = + true + + + false + disableLinks + false + = + true + + + false + excerpt + false + = + true + + + false + ancestors + ${ajs-parent-page-id} + = + true + + + false + treePageId + ${x_editable_g2} + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/plugins/pagetree/naturalchildren.action + GET + true + false + true + false + + + + + + + + + Accept + text/plain, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + + + + false + pageid + ${x_editable_g2} + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/mywork/latest/status/notification/count + GET + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + + + + + true + + + + false + {"r":[],"c":["request-access-plugin"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewattachments","atl.general","page"],"xr":["confluence.web.resources:attachments","com.atlassian.confluence.plugins.confluence-previews:companion-plugin-templates","com.atlassian.auiplugin:split_aui.pattern.help","com.atlassian.confluence.plugins.confluence-previews:companion-plugin-button","com.atlassian.confluence.plugins.confluence-previews:companion-client-wrapper","com.atlassian.confluence.plugins.confluence-previews:mediaviewer-companion","com.atlassian.confluence.plugins.confluence-previews:embedded-edit","com.atlassian.auiplugin:split_aui.splitchunk.036a05e5ff","com.atlassian.auiplugin:split_aui.component.nav","com.atlassian.confluence.plugins.confluence-space-ia:soy-resources","com.atlassian.auiplugin:split_aui.splitchunk.vendors--fc45e4dda1","com.atlassian.auiplugin:split_jquery.ui.sortable","com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar","com.atlassian.confluence.plugins.confluence-previews:confluence-plugin-css","confluence.web.resources:pagination-styles"]} + = + + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + true + + + + false + [{"name":"confluence.synchrony.exit.before.connecting","properties":{"afterTimeout":false,"contentId":"${x_editable_g2}"},"timeDelta":-4777},{"name":"confluence.viewpage.src.empty","properties":{"userKey":"${ajs-remote-user-key}","pageID":"${x_editable_g2}"},"timeDelta":-503}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + + false - atl_token - ${x_atl_token_view_issue} + spaceKey + ${ajs-space-key} = true - + false - comment_0 - + parentPageId + ${ajs-parent-page-id} = true - - false - comment_1 - + + true + atl_after_login_redirect + /pages/viewpageattachments.action = true - + false - comment_2 - + pageId + ${x_editable_g2} = true - + false - comment_3 - + timeout + 12000 = true - + false - comment_4 - + _ + ${__time(,)} = true - + + + + + + + ${application.postfix}/plugins/editor-loader/editor.action + GET + true + false + true + false + + + + + + + + + Accept + */* + + + X-Requested-With + XMLHttpRequest + + + + + + + true + + + false - confirm - Attach + {"r":[],"c":["editor-v4","editor","macro-browser","fullpage-editor"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewattachments","atl.general","page","request-access-plugin"],"xr":["confluence.web.resources:attachments","com.atlassian.confluence.plugins.confluence-previews:companion-plugin-templates","com.atlassian.auiplugin:split_aui.pattern.help","com.atlassian.confluence.plugins.confluence-previews:companion-plugin-button","com.atlassian.confluence.plugins.confluence-previews:companion-client-wrapper","com.atlassian.confluence.plugins.confluence-previews:mediaviewer-companion","com.atlassian.confluence.plugins.confluence-previews:embedded-edit","com.atlassian.auiplugin:split_aui.splitchunk.036a05e5ff","com.atlassian.auiplugin:split_aui.component.nav","com.atlassian.confluence.plugins.confluence-space-ia:soy-resources","com.atlassian.auiplugin:split_aui.splitchunk.vendors--fc45e4dda1","com.atlassian.auiplugin:split_jquery.ui.sortable","com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar","com.atlassian.confluence.plugins.confluence-previews:confluence-plugin-css","confluence.web.resources:pagination-styles"]} = - true @@ -8605,53 +10528,161 @@ vars.put("p_uuid", UUID.randomUUID().toString()); - ${application.postfix}/pages/doattachfile.action?pageId=${x_editable_g2} + ${application.postfix}/rest/webResources/1.0/resources POST true false true - true - true + false - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 - - Upgrade-Insecure-Requests - 1 + + X-Requested-With + XMLHttpRequest - - Accept-Encoding - gzip, deflate + + Content-Type + application/json + + + + + + + + + + false + macroMetadataClientCacheKey + 1618624163503 + = + true + + + false + detailed + false + = + true + + + + + + + ${application.postfix}/plugins/macrobrowser/browse-macros.action + GET + true + false + true + false + + + + + + + Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest - - - Upload file - Attach more files + + + true + + + + false + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.confluence.plugins.pagetree-desktop","main","viewattachments","atl.general","page","request-access-plugin"],"xr":["confluence.web.resources:attachments","com.atlassian.confluence.plugins.confluence-previews:companion-plugin-templates","com.atlassian.auiplugin:split_aui.pattern.help","com.atlassian.confluence.plugins.confluence-previews:companion-plugin-button","com.atlassian.confluence.plugins.confluence-previews:companion-client-wrapper","com.atlassian.confluence.plugins.confluence-previews:mediaviewer-companion","com.atlassian.confluence.plugins.confluence-previews:embedded-edit","com.atlassian.auiplugin:split_aui.splitchunk.036a05e5ff","com.atlassian.auiplugin:split_aui.component.nav","com.atlassian.confluence.plugins.confluence-space-ia:soy-resources","com.atlassian.auiplugin:split_aui.splitchunk.vendors--fc45e4dda1","com.atlassian.auiplugin:split_jquery.ui.sortable","com.atlassian.confluence.plugins.confluence-space-ia:spacesidebar","com.atlassian.confluence.plugins.confluence-previews:confluence-plugin-css","confluence.web.resources:pagination-styles","com.atlassian.auiplugin:split_aui.component.form.date-select","com.atlassian.auiplugin:split_aui.splitchunk.e8173e0382","com.atlassian.auiplugin:split_aui.component.form.select2","com.atlassian.auiplugin:split_aui.splitchunk.vendors--8cfcf1af69","com.atlassian.auiplugin:split_aui.component.form.file-select","com.atlassian.auiplugin:split_aui.deprecated.pattern.toolbar1","com.atlassian.auiplugin:split_aui.splitchunk.vendors--85718a7eef","com.atlassian.auiplugin:split_aui.splitchunk.vendors--7c76061134","com.atlassian.confluence.plugins.confluence-ui-components:space-page-picker","com.atlassian.confluence.plugins.confluence-ui-components:user-group-select2","com.atlassian.confluence.plugins.confluence-ui-components:cql","com.atlassian.confluence.plugins.confluence-create-content-plugin:user-select2","confluence.web.components:editor-notifications","confluence.web.resources:draft-changes-css","com.atlassian.confluence.plugins.confluence-macro-browser:macro-browser-css","confluence.web.resources:macro-browser-sprites","com.atlassian.confluence.editor:page-editor-css","com.atlassian.confluence.editor:unpublished-changes","com.atlassian.confluence.plugins.reliablesave:reliable-save-conf-frontend","com.atlassian.confluence.editor:property-panel-image-link-macro-conf-frontend","com.atlassian.confluence.image.effects.ImageEffectsPlugin:propertiespanel","com.atlassian.plugins.editor:atlassian-rte-css","com.atlassian.confluence.plugins.confluence-collaborative-editor-plugin:confluence-collaborative-editor-plugin-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-resources","com.atlassian.confluence.plugins.confluence-fixed-headers:confluence-fixed-headers-editor-resources","com.atlassian.confluence.plugins.confluence-hipchat-emoticons-plugin:hipchat-emoticons-conf-frontend","com.atlassian.confluence.plugins.confluence-link-browser:linkbrowser-css-resources","com.atlassian.confluence.plugins.confluence-mentions-plugin:smart-mentions-editor-resources","com.atlassian.confluence.plugins.confluence-page-layout:pagelayout-frontend","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-dialog-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-toolbar-view-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-resources","com.atlassian.confluence.plugins.confluence-templates:template-editor-variables-resources","com.atlassian.confluence.plugins.confluence-view-file-macro:view-file-macro-editor-resources","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-overlay","com.atlassian.confluence.plugins.gadgets:css","com.atlassian.confluence.plugins.share-page:plus-icon-css","com.atlassian.integration.jira.jira-integration-plugin:fields","com.atlassian.integration.jira.jira-integration-plugin:jira-create-issue-form","confluence.extra.jira:dialogsJs","com.atlassian.auiplugin:split_aui.splitchunk.vendors--ec56cc9135","com.atlassian.auiplugin:split_aui.component.form-validation","com.atlassian.auiplugin:split_aui.splitchunk.vendors--825acd7236","com.atlassian.auiplugin:split_jquery.ui.droppable","com.atlassian.auiplugin:split_jquery.ui.resizable","com.atlassian.auiplugin:split_jquery.ui.selectable","com.atlassian.confluence.editor:analytics","com.atlassian.confluence.editor:attachments-insert-utils-resources","com.atlassian.confluence.editor:editor-internationalisation","confluence.web.resources:dictionary","confluence.web.resources:macro-js-overrides","com.atlassian.confluence.plugins.confluence-ui-components:common","com.atlassian.confluence.plugins.confluence-ui-components:space-picker","confluence.web.resources:date-picker","com.atlassian.confluence.plugins.confluence-ui-components:page-picker","com.atlassian.confluence.plugins.confluence-ui-components:label-picker","com.atlassian.confluence.plugins.confluence-ui-components:include-exclude-picker","com.atlassian.confluence.plugins.confluence-macro-browser:macro-browser-js","com.atlassian.confluence.plugins.confluence-editor-v4:editor-resources-v4","com.atlassian.confluence.editor:bookmark-manager-conf-frontend","com.atlassian.confluence.editor:collaborative-helper","confluence.web.resources:legacy-editor-global-AVOID-IF-POSSIBLE","confluence.web.resources:draft-changes-js","com.atlassian.confluence.editor:page-editor-soy","com.atlassian.confluence.plugins.drag-and-drop:files-upload-analytics","com.atlassian.confluence.editor:panel-components","com.atlassian.confluence.editor:page-editor-js","com.atlassian.confluence.editor:editor-v3-v4-shared-resources","com.atlassian.confluence.editor:editor-resources-v4","com.atlassian.confluence.editor:editor-support-util","com.atlassian.confluence.editor:page-editor-quit-dialog","com.atlassian.confluence.plugins.confluence-image-attributes:soy-resources","com.atlassian.confluence.plugins.confluence-image-attributes:image-attributes","com.atlassian.confluence.ext.newcode-macro-plugin:code-macro-editor","com.atlassian.confluence.extra.officeconnector:macro-browser-smart-fields","com.atlassian.confluence.keyboardshortcuts:confluence-tinymce-keyboard-shortcuts","com.atlassian.plugins.browser.metrics.browser-metrics-plugin:api","com.atlassian.confluence.plugins.confluence-browser-metrics:editor","com.atlassian.confluence.plugins.confluence-create-content-plugin:create-from-template-macro-browser-resources","com.atlassian.confluence.plugins.confluence-create-content-plugin:editor-resources","com.atlassian.confluence.plugins.confluence-fixed-headers:utils","com.atlassian.confluence.plugins.confluence-frontend:split_jquery-selection-plugin","com.atlassian.confluence.plugins.confluence-inline-tasks:confluence-inlineTasks-utils","com.atlassian.confluence.plugins.confluence-inline-tasks:datepicker1","com.atlassian.confluence.plugins.confluence-inline-tasks:dateutil","com.atlassian.confluence.plugins.confluence-inline-tasks:date-helper-js-resources","com.atlassian.confluence.plugins.confluence-inline-tasks:editor-autocomplete-date-js","com.atlassian.confluence.plugins.confluence-inline-tasks:space-page-picker-shim","com.atlassian.confluence.plugins.confluence-inline-tasks:inline-tasks-macro-browser","confluence.web.resources:trigger","confluence.web.resources:keyboard","confluence.web.resources:jira-controls","confluence.web.resources:breadcrumbs-jquery","confluence.web.resources:dialog-breadcrumbs","confluence.web.resources:page-location","com.atlassian.confluence.plugins.confluence-link-browser:link-browser-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-analytics-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-bar-dialog-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-utilities-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-models","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-timeline-view-resources","com.atlassian.confluence.plugins.confluence-roadmap-plugin:roadmap-editor-view-resources","com.atlassian.confluence.plugins.confluence-templates:template-editor-variables-template-resources","com.atlassian.confluence.plugins.drag-and-drop:image-dialog-client","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-tip","com.atlassian.confluence.plugins.drag-and-drop:drag-and-drop-for-editor-common","com.atlassian.confluence.plugins.drag-and-drop:drop-zone-for-image-dialog","com.atlassian.gadgets.embedded:gadget-core-resources","com.atlassian.confluence.plugins.gadgets:macro-browser-for-gadgetsplugin","com.atlassian.confluence.plugins.profile-picture:profile-picture-editor_resources","com.atlassian.confluence.plugins.quickedit:editor-view-resources","com.atlassian.confluence.plugins.share-page:edit-resources","com.atlassian.confluence.plugins.sticky-table-headers:stickytableheaders-resources","confluence.extra.jira:proxy-js","confluence.extra.jira:jqlHelper","confluence.extra.jira:editor-resources-v4-exporter","confluence.extra.jira:jiraAnalytics","confluence.extra.jira:jirachart-macro","confluence.extra.jira:macro-browser-resources","confluence.extra.jira:text-placeholders-jira","confluence.macros.advanced:include_macro","confluence.macros.multimedia:macro-browser-smart-fields"]} + = + - - Assertion.response_data - false - 16 - + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -8660,13 +10691,29 @@ vars.put("p_uuid", UUID.randomUUID().toString()); ${perc_like_page} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true Like - + @@ -8738,7 +10785,7 @@ vars.put("p_uuid", UUID.randomUUID().toString()); true - + @@ -8790,7 +10837,7 @@ vars.put("p_uuid", UUID.randomUUID().toString()); true - + @@ -8837,6 +10884,38 @@ vars.put("p_uuid", UUID.randomUUID().toString()); + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -8845,6 +10924,174 @@ vars.put("p_uuid", UUID.randomUUID().toString()); ${perc_standalone_extension} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + + + + + app_specific_username + admin + = + + + app_specific_password + admin + = + + + + + + + + + false + os_username + ${app_specific_username} + = + true + + + false + os_password + ${app_specific_password} + = + true + + + false + os_cookie + true + = + true + + + false + login + Log+in + = + true + + + false + os_destination + %2Findex.action + = + true + + + + + + + + ${application.postfix}/dologin.action + POST + false + false + true + false + + + + Detected the start of a redirect chain + + + + + + Accept-Language + en-US,en;q=0.5 + + + Upgrade-Insecure-Requests + 1 + + + Content-Type + application/x-www-form-urlencoded + + + Accept-Encoding + gzip, deflate + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + + + + + + groovy + + + true + vars.put("run_as_specific_user", "true") +prev.setIgnore() + + + + + + + + + + + + + ${application.postfix}/rest/api/user/current + GET + true + false + true + false + + + + + + + groovy + + + true + import groovy.json.JsonSlurper; + +def slurper = new JsonSlurper() +response_data = slurper.parseText(prev.getResponseDataAsString()) + +if (response_data.username != vars.get("app_specific_username")) { + prev.setSuccessful(false) + prev.setResponseMessage("Login Failed: Your app_specific_username: '" + vars.get("app_specific_username") + "' or password is incorrect. Also, check the CAPTCHA for '" + vars.get("app_specific_username") + "' user.") + prev.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.BREAK_CURRENT_LOOP) +} else { + prev.setIgnore() +} + + + + + + + false true @@ -8945,18 +11192,154 @@ vars.put("p_uuid", UUID.randomUUID().toString()); - - - 1 - 0 - 0 - - - - true - - - // concurrency + + ${run_as_specific_user} + false + true + + + + + + + false + os_username + ${username} + = + true + + + false + os_password + ${password} + = + true + + + false + os_cookie + true + = + true + + + false + login + Log+in + = + true + + + false + os_destination + %2Findex.action + = + true + + + + + + + + ${application.postfix}/dologin.action + POST + false + false + true + false + + + + Detected the start of a redirect chain + + + + + + Accept-Language + en-US,en;q=0.5 + + + Upgrade-Insecure-Requests + 1 + + + Content-Type + application/x-www-form-urlencoded + + + Accept-Encoding + gzip, deflate + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + + + + + + groovy + + + true + prev.setIgnore() + + + + + + + + + + + + ${application.postfix}/rest/api/user/current + GET + true + false + true + false + + + + + + + groovy + + + true + import groovy.json.JsonSlurper; + +def slurper = new JsonSlurper() +response_data = slurper.parseText(prev.getResponseDataAsString()) + +if (response_data.username != vars.get("username")) { + prev.setSuccessful(false) + prev.setResponseMessage("Re-login Failed: username: '" + vars.get("username") + "' failed to login. Check the CAPTCHA for '" + vars.get("username") + "' user.") + prev.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.BREAK_CURRENT_LOOP) +} else { + prev.setIgnore() +} + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency def concurrency = ctx.getThreadGroup().getNumThreads() // Delays between each action in milli-seconds @@ -8966,7 +11349,7 @@ def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_p def start_time = Long.valueOf(vars.get("loop_start_time")) def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int -log.info("concurrency: ${concurrency}, delay_between_transactions: ${delay_between_transactions}, thread_sleep: ${sleep_time}") +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) if ( sleep_time > 0 ) { return sleep_time @@ -8974,9 +11357,10 @@ if ( sleep_time > 0 ) { return 0 } - groovy - - + groovy + + + false @@ -9014,6 +11398,7 @@ if ( sleep_time > 0 ) { 0 true true + true true true true @@ -9024,4 +11409,4 @@ if ( sleep_time > 0 ) { - \ No newline at end of file + diff --git a/app/jmeter/jira.jmx b/app/jmeter/jira.jmx index 900acb065..13e91b1c8 100644 --- a/app/jmeter/jira.jmx +++ b/app/jmeter/jira.jmx @@ -44,7 +44,7 @@ ${application.hostname} ${application.port} ${application.protocol} - + UTF-8 ${application.postfix} true 6 @@ -433,7 +433,7 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.dashboard","jira.global","atl.general","jira.general"],"xr":["com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements","com.atlassian.gadgets.dashboard:gadgets-adgs","com.atlassian.jira.jira-issue-nav-components:adgs","com.atlassian.jira.jira-issue-nav-components:detailslayout-adgs","com.atlassian.jira.jira-issue-nav-components:simpleissuelist-adgs","com.atlassian.jira.jira-issue-nav-plugin:adgs-styles","com.atlassian.jira.jira-issue-nav-components:orderby-less-adgs","com.atlassian.jira.jira-issue-nav-components:pager-less-adgs","com.atlassian.jira.jira-issue-nav-components:issueviewer-adgs","com.atlassian.jira.gadgets:introduction-dashboard-item-resource-adgs"]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.dashboard","jira.global","atl.general","jira.dashboard"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -441,7 +441,7 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -453,16 +453,8 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) - + - - Accept-Language - en-US,en;q=0.5 - - - Pragma - no-cache - Accept application/json, text/javascript, */*; q=0.01 @@ -475,35 +467,26 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) Content-Type application/json - - Cache-Control - no-cache - - - Accept-Encoding - gzip, deflate - - - + + true + - - true - uri - ${application.protocol}://${application.hostname}:${application.port}/secure/Dashboard.jspa + + false + {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:8","jira.webresources:mentions-feature","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","atl.dashboard","jira.global","atl.general","jira.dashboard","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = - true - UTF-8 - ${application.postfix}/plugins/servlet/gadgets/dashboard-diagnostics + + ${application.postfix}/rest/webResources/1.0/resources POST true false @@ -514,19 +497,11 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) - + - - Accept-Language - en-US,en;q=0.5 - - - Pragma - no-cache - Accept - */* + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -534,35 +509,19 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Cache-Control - no-cache - - - Accept-Encoding - gzip, deflate + application/json - - - - Assertion.response_code - true - 16 - - - + true false - {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","atl.dashboard","jira.global","atl.general","jira.general","browser-metrics-plugin.contrib","atl.global","jira.dashboard","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements","com.atlassian.gadgets.dashboard:gadgets-adgs","com.atlassian.jira.jira-issue-nav-components:adgs","com.atlassian.jira.jira-issue-nav-components:detailslayout-adgs","com.atlassian.jira.jira-issue-nav-components:simpleissuelist-adgs","com.atlassian.jira.jira-issue-nav-plugin:adgs-styles","com.atlassian.jira.jira-issue-nav-components:orderby-less-adgs","com.atlassian.jira.jira-issue-nav-components:pager-less-adgs","com.atlassian.jira.jira-issue-nav-components:issueviewer-adgs","com.atlassian.jira.gadgets:introduction-dashboard-item-resource-adgs","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-1044},{"name":"atst.healthcheck.sensors.page-protocols","properties":{"resourceProtocols":"http/1.1","navigationProtocol":"http/1.1","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"},"timeDelta":-685}] = @@ -570,8 +529,8 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -582,16 +541,8 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) - + - - Accept-Language - en-US,en;q=0.5 - - - Pragma - no-cache - Accept application/json, text/javascript, */*; q=0.01 @@ -604,25 +555,17 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) Content-Type application/json - - Cache-Control - no-cache - - - Accept-Encoding - gzip, deflate - - + true false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","atl.dashboard","jira.global","atl.general","jira.general","browser-metrics-plugin.contrib","atl.global","jira.dashboard","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements","com.atlassian.gadgets.dashboard:gadgets-adgs","com.atlassian.jira.jira-issue-nav-components:adgs","com.atlassian.jira.jira-issue-nav-components:detailslayout-adgs","com.atlassian.jira.jira-issue-nav-components:simpleissuelist-adgs","com.atlassian.jira.jira-issue-nav-plugin:adgs-styles","com.atlassian.jira.jira-issue-nav-components:orderby-less-adgs","com.atlassian.jira.jira-issue-nav-components:pager-less-adgs","com.atlassian.jira.jira-issue-nav-components:issueviewer-adgs","com.atlassian.jira.gadgets:introduction-dashboard-item-resource-adgs","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + [{"name":"browser.metrics.navigation","properties":{"apdex":"0","firstPaint":"2331","isInitial":"true","journeyId":"68d353c0-5dc0-449b-a7ce-f348f8a8372b","key":"jira.dashboard","navigationType":"0","readyForUser":"6584","redirectCount":"1","resourceLoadedEnd":"1723","resourceLoadedStart":622.4300000176299,"threshold":"1000","unloadEventStart":"514","unloadEventEnd":"517","redirectStart":"5","redirectEnd":"341","fetchStart":"341","domainLookupStart":"341","domainLookupEnd":"341","connectStart":"341","connectEnd":"341","requestStart":"344","responseStart":"495","responseEnd":"620","domLoading":"527","domInteractive":"2427","domContentLoadedEventStart":"2428","domContentLoadedEventEnd":"2710","domComplete":"6612","loadEventStart":"6614","loadEventEnd":"6631","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36","correlationId":"ea0357911b5724","effectiveType":"4g","downlink":5.9,"rtt":100,"serverDuration":"42","dbConnsTimeInMs":"6","applicationHash":"e00b0abe8f1b188f0bb304a4c3b424f1180ba767","resourceTiming":"{\"â˜Â \":[\"2,ha,ps,l9,hl,ha,,ha,ha,ha\",\"2,hb,w6,ld,hr,hb,,hb,hb,hb\",\"2,hc,op,om,l5,l5,,hp,hp,hp\",\"3,hd,16t,pk,lg,lc,,hq,hq,hq\",\"3,hd,14k,pn,lg,lc,,hq,hq,hq\",\"3,he,te,tb,ps,he,,he,he,he\",\"3,hf,tv,tr,pz,hf,,hf,hf,hf\",\"3,hg,tu,tj,q0,hg,,hg,hg,hg\",\"3,hh,xa,x3,te,hh,,hh,hh,hh\",\"3,hh,xw,xn,tx,hh,,hh,hh,hh\",\"2,hi,pt,p4,lf,l9,,ia,ia,ia\",\"3,hj,xw,xs,u3,hj,,hj,hj,hj\",\"3,hk,1az,1ar,16v,hk,,hk,hk,hk\",\"3,l8,1bv,1bp,182,l8,,l8,l8,l8\",\"5,1kj,1of,1ob,1kn,1kj,,1kj,1kj,1kj\",\"4,1ns,1wm,1wj,1sy,1ns,,1ns,1ns,1ns\",\"5,20p,25i,25c,20v,20p,,20p,20p,20p\",\"-1,226,26m,26e,22o,226,,226,226,226\",\"5,232,26t,26r,236,232,,232,232,232\",\"3,24m,29b,294,25j,24m,,24m,24m,24m\",\"5,2r1,2v1,2uw,2ra,2r1,,2r1,2r1,2r1\",\"5,2s0,2yi,2x8,2t6,2s0,,2s0,2s0,2s0\",\"2,2zb,3ch,3bj,381,2zb,,2zb,2zb,2zb\",\"2,2zm,3cv,3bz,382,2zm,,2zm,2zm,2zm\",\"3,2zs,4kv,4km,4h4,2zs,,2zs,2zs,2zs\",\"3,2zv,4o3,4ny,4k6,2zv,,2zv,2zv,2zv\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]","dbReadsTimeInMs":"","serverHeadDuration":"undefined","connectionEffectiveType":"4g","connectionDownlink":5.9,"connectionRTT":100},"timeDelta":-1602}] = @@ -630,8 +573,8 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -642,16 +585,8 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) - + - - Accept-Language - en-US,en;q=0.5 - - - Pragma - no-cache - Accept application/json, text/javascript, */*; q=0.01 @@ -664,26 +599,19 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) Content-Type application/json - - Cache-Control - no-cache - - - Accept-Encoding - gzip, deflate - - - true - + + - - false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["jira.webresources:almond","jira.webresources:aui-core-amd-shim","jira.webresources:jira-metadata","jira.webresources:jquery-livestamp","com.atlassian.auiplugin:ajs-underscorejs","com.atlassian.analytics.analytics-client:js-events","com.atlassian.plugins.browser.metrics.browser-metrics-plugin:api","com.atlassian.gadgets.publisher:ajs-gadgets","com.atlassian.streams:streamsGadgetResources"],"xr":["jira.webresources:icons","jira.webresources:list-styles","jira.webresources:inline-layer","jira.webresources:dropdown","com.atlassian.auiplugin:aui-lozenge","com.atlassian.auiplugin:aui-tipsy","com.atlassian.auiplugin:aui-tooltips","com.atlassian.plugins.issue-status-plugin:issue-status-resources","jira.webresources:frother-queryable-dropdown-select","jira.webresources:frother-singleselect","jira.webresources:frother-multiselect","jira.webresources:frother-checkbox-multiselect","jira.webresources:select-pickers","jira.webresources:autocomplete","com.atlassian.jira.gadgets:core-gadget-resources"]} + + true + uri + ${application.protocol}://${application.hostname}:${application.port}/secure/Dashboard.jspa = + true @@ -691,7 +619,7 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/plugins/servlet/gadgets/dashboard-diagnostics POST true false @@ -714,7 +642,7 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) Accept - application/json, text/javascript, */*; q=0.01 + */* X-Requested-With @@ -722,7 +650,7 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) Content-Type - application/json + application/x-www-form-urlencoded; charset=UTF-8 Cache-Control @@ -735,8 +663,16 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + + + Assertion.response_code + true + 16 + + - + @@ -797,7 +733,7 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) - + @@ -921,7 +857,7 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) - + @@ -1072,22 +1008,6 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) false - - 1 - 0 - 0 - - - - true - - - vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); - - groovy - - - 1 false @@ -1095,6 +1015,22 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) ${perc_create_issue} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -1268,13 +1204,53 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + true + + + + false + [{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-3120},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-2842},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-2495},{"name":"browser.metrics.navigation","properties":{"apdex":"1","isInitial":"false","journeyId":"68d353c0-5dc0-449b-a7ce-f348f8a8372b","key":"jira.dialog.open.create-issue-dialog","readyForUser":"897","threshold":"1000","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36","effectiveType":"4g","downlink":1.45,"rtt":100,"applicationHash":"e00b0abe8f1b188f0bb304a4c3b424f1180ba767","resourceTiming":"{\"â˜Â \":[\"5,7,7w,7q,a,7,,7,7,7\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]","connectionEffectiveType":"4g","connectionDownlink":1.45,"connectionRTT":100},"timeDelta":-1996},{"name":"issue.dnd.attachment.createissuedropzone.init","properties":{},"timeDelta":-1597},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-1593},{"name":"editor.instance.init","properties":{},"timeDelta":-1466},{"name":"bundled.editor.instance.init","properties":{},"timeDelta":-1466},{"name":"editor.instance.init.chrome","properties":{},"timeDelta":-1465},{"name":"editor.instance.init","properties":{},"timeDelta":-1326},{"name":"bundled.editor.instance.init","properties":{},"timeDelta":-1326},{"name":"editor.instance.init.chrome","properties":{},"timeDelta":-1326},{"name":"editor.instance.init","properties":{},"timeDelta":-1270},{"name":"bundled.editor.instance.init","properties":{},"timeDelta":-1270},{"name":"editor.instance.init.chrome","properties":{},"timeDelta":-1270},{"name":"editor.instance.perf.nodechange","properties":{"time":28.130000000353903},"timeDelta":-869},{"name":"editor.instance.perf.init","properties":{"time":1538.2599999997765},"timeDelta":-763},{"name":"editor.instance.init.perf","properties":{"time":140.08499999996275},"timeDelta":-763},{"name":"editor.instance.perf.init-bare","properties":{"time":1538.619999999646},"timeDelta":-763},{"name":"editor.instance.perf.nodechange","properties":{"time":4.289999999571592},"timeDelta":-736},{"name":"editor.instance.perf.nodechange","properties":{"time":2.3449999997392297},"timeDelta":-712},{"name":"editor.instance.perf.nodechange","properties":{"time":4.5750000001862645},"timeDelta":-677},{"name":"editor.instance.perf.init","properties":{"time":1653.3499999996275},"timeDelta":-648},{"name":"editor.instance.init.perf","properties":{"time":35.544999999925494},"timeDelta":-648},{"name":"editor.instance.perf.init-bare","properties":{"time":1653.5099999997765},"timeDelta":-648},{"name":"editor.instance.perf.nodechange","properties":{"time":15.514999999664724},"timeDelta":-616},{"name":"editor.instance.perf.nodechange","properties":{"time":1.4600000004284084},"timeDelta":-605},{"name":"editor.instance.perf.nodechange","properties":{"time":2.390000000130385},"timeDelta":-591},{"name":"editor.instance.perf.init","properties":{"time":1724.1399999996647},"timeDelta":-578},{"name":"editor.instance.init.perf","properties":{"time":16.674999999813735},"timeDelta":-578},{"name":"editor.instance.perf.init-bare","properties":{"time":1724.2199999997392},"timeDelta":-578},{"name":"editor.instance.perf.nodechange","properties":{"time":1.339999999385327},"timeDelta":-571},{"name":"editor.instance.perf.nodechange","properties":{"time":1.3500000000931323},"timeDelta":-557}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + Content-Type + application/json + + + + + false true - + true @@ -1355,7 +1331,8 @@ def timetracking_remainingestimate = "" def isCreateIssue = "true" def hasWorkStarted = "" def resolution = vars.get("x_resolution_done") -def request_body = "pid=${pid}&issuetype=${issuetype}&atl_token=${atl_token}&formToken=${formToken}&summary=${summary}&duedate=${duedate}&reporter=${reporter}&environment=${environment}&description=${description}&timetracking_originalestimate=${timetracking_originalestimate}&timetracking_remainingestimate=${timetracking_remainingestimate}&isCreateIssue=${isCreateIssue}&hasWorkStarted=${hasWorkStarted}&resolution=${resolution}" + +def request_body = "pid=" + pid + "&issuetype=" + issuetype + "&atl_token=" + atl_token + "&formToken=" + formToken + "&summary=" + summary + "&duedate=" + duedate + "&reporter=" + reporter + "&environment=" + environment + "&description=" + description + "&timetracking_originalestimate=" + timetracking_originalestimate + "&timetracking_remainingestimate=" + timetracking_remainingestimate + "&isCreateIssue=" + isCreateIssue + "&hasWorkStarted=" + hasWorkStarted + "&resolution=" + resolution // dynamic (generic fields) def fields_to_retain = "" @@ -1383,7 +1360,7 @@ if (custom_fields_to_retain_total > 0) { // request -request_body = request_body + "&${custom_fields_to_retain}&${fields_to_retain}" +request_body = request_body + "&" + custom_fields_to_retain + "&" + fields_to_retain vars.put("p_request_body", request_body.toString()) @@ -1399,6 +1376,78 @@ vars.put("p_request_body", request_body.toString()) + + true + + + + false + [{"name":"quick.create.fields","properties":{"atlassian.numCreates":1,"edit.form":false,"pid":"added","issuetype":"added","formToken":"added","resolution":"added","worklog_startDate":"added","worklog_adjustEstimate":"added","issuelinks":"added","issuelinks-linktype":"added","assignee":"added","summary":"added","priority":"added","customfield_10551":"added"},"timeDelta":-787},{"name":"quickeditform.submit.success","properties":{"allFieldsShown":true,"allFields":"[{\"id\":\"project\",\"required\":true},{\"id\":\"issuetype\",\"required\":true},{\"id\":\"components\",\"required\":false},{\"id\":\"versions\",\"required\":false},{\"id\":\"resolution\",\"required\":false},{\"id\":\"attachment\",\"required\":false},{\"id\":\"labels\",\"required\":false},{\"id\":\"worklog\",\"required\":false},{\"id\":\"issuelinks\",\"required\":false},{\"id\":\"fixVersions\",\"required\":false},{\"id\":\"assignee\",\"required\":false},{\"id\":\"environment\",\"required\":false},{\"id\":\"description\",\"required\":false},{\"id\":\"timetracking\",\"required\":false},{\"id\":\"summary\",\"required\":true},{\"id\":\"priority\",\"required\":false},{\"id\":\"duedate\",\"required\":false},{\"id\":\"customfield_10513\",\"required\":false},{\"id\":\"customfield_10551\",\"required\":false},{\"id\":\"customfield_10633\",\"required\":false},{\"id\":\"customfield_10694\",\"required\":false},{\"id\":\"customfield_10717\",\"required\":false}]","displayedFields":"[{\"id\":\"project\",\"required\":true},{\"id\":\"issuetype\",\"required\":true},{\"id\":\"components\",\"required\":false},{\"id\":\"versions\",\"required\":false},{\"id\":\"resolution\",\"required\":false},{\"id\":\"attachment\",\"required\":false},{\"id\":\"labels\",\"required\":false},{\"id\":\"worklog\",\"required\":false},{\"id\":\"issuelinks\",\"required\":false},{\"id\":\"fixVersions\",\"required\":false},{\"id\":\"assignee\",\"required\":false},{\"id\":\"environment\",\"required\":false},{\"id\":\"description\",\"required\":false},{\"id\":\"timetracking\",\"required\":false},{\"id\":\"summary\",\"required\":true},{\"id\":\"priority\",\"required\":false},{\"id\":\"duedate\",\"required\":false},{\"id\":\"customfield_10513\",\"required\":false},{\"id\":\"customfield_10551\",\"required\":false},{\"id\":\"customfield_10633\",\"required\":false},{\"id\":\"customfield_10694\",\"required\":false},{\"id\":\"customfield_10717\",\"required\":false}]"},"timeDelta":-786},{"name":"editor.instance.tab.timing.visual","properties":{"time":20977.28000000026},"timeDelta":-435},{"name":"editor.instance.tab.timing.visual","properties":{"time":20979.60499999998},"timeDelta":-433},{"name":"editor.instance.tab.timing.visual","properties":{"time":20982.985000000335},"timeDelta":-429},{"name":"editor.instance.destroy","properties":{},"timeDelta":-239},{"name":"bundled.editor.instance.destroy","properties":{},"timeDelta":-238},{"name":"editor.instance.destroy","properties":{},"timeDelta":-234},{"name":"bundled.editor.instance.destroy","properties":{},"timeDelta":-234},{"name":"editor.instance.destroy","properties":{},"timeDelta":-222},{"name":"bundled.editor.instance.destroy","properties":{},"timeDelta":-222}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + Content-Type + application/json + + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + @@ -1408,6 +1457,22 @@ vars.put("p_request_body", request_body.toString()) ${perc_search_jql} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -1469,7 +1534,7 @@ vars.put("p_request_body", request_body.toString()) false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","jira.view.issue","jira.navigator.kickass","viewissue.standalone","jira.navigator.simple","jira.navigator.advanced","atl.general","jira.general","jira.global"],"xr":["jira.filter.deletion.warning:styles"]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","jira.view.issue","viewissue.standalone","jira.navigator.kickass","jira.global","jira.navigator","atl.general","jira.navigator.simple","jira.navigator.advanced"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","jira.filter.deletion.warning:styles"]} = @@ -1489,11 +1554,11 @@ vars.put("p_request_body", request_body.toString()) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -1503,34 +1568,18 @@ vars.put("p_request_body", request_body.toString()) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + true + - + false - expand - subscriptions[-5:] + {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:7","jira.webresources:mentions-feature","jira.rich.editor.api","jira.rich.editor"],"xc":["_super","jira.view.issue","viewissue.standalone","jira.navigator.kickass","jira.global","jira.navigator","atl.general","jira.navigator.simple","jira.navigator.advanced","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","jira.filter.deletion.warning:styles","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js"]} = - true - - - false - _ - ${__time(,)} - = - true @@ -1538,8 +1587,8 @@ vars.put("p_request_body", request_body.toString()) - ${application.postfix}/rest/api/2/filter/favourite - GET + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -1549,37 +1598,32 @@ vars.put("p_request_body", request_body.toString()) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + + Content-Type + application/json - - + + true + - + false - layoutKey - split-view + {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","jira.view.issue","viewissue.standalone","jira.navigator.kickass","jira.global","jira.navigator","atl.general","jira.navigator.simple","jira.navigator.advanced","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.atlassian.jira.plugins.jira-development-integration-plugin:7","jira.rich.editor.api","jira.rich.editor"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","jira.filter.deletion.warning:styles","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","com.atlassian.jira.plugins.jira-editor-plugin:tinymce","jira.webresources:bigpipe-init"]} = - true @@ -1587,7 +1631,7 @@ vars.put("p_request_body", request_body.toString()) - ${application.postfix}/rest/issueNav/latest/preferredSearchLayout + ${application.postfix}/rest/webResources/1.0/resources POST true false @@ -1598,23 +1642,11 @@ vars.put("p_request_body", request_body.toString()) - + - - Accept-Language - en-US,en;q=0.5 - - - __amdModuleName - jira/issue/utils/xsrf-token-header - - - X-Atlassian-Token - no-check - Accept - */* + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -1622,23 +1654,19 @@ vars.put("p_request_body", request_body.toString()) Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate + application/json - + true false - {"r":["com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter"],"c":["jira.webresources:mentions-feature","jira.rich.editor"],"xc":["_super","jira.view.issue","jira.navigator.kickass","viewissue.standalone","jira.navigator.simple","jira.navigator.advanced","atl.general","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["jira.filter.deletion.warning:styles","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + [{"name":"kickass.criteriaAutoUpdateEnabled","properties":{"enabled":true},"timeDelta":-1457},{"name":"kickass.issue-navigator.change-layout","properties":{"type":"split-view"},"timeDelta":-1024},{"name":"quicksearch.enabled","properties":{},"timeDelta":-960}] = @@ -1647,7 +1675,7 @@ vars.put("p_request_body", request_body.toString()) - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -1658,11 +1686,11 @@ vars.put("p_request_body", request_body.toString()) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -1672,42 +1700,113 @@ vars.put("p_request_body", request_body.toString()) Content-Type application/json - - Accept-Encoding - gzip, deflate + + + + + + true + + + + false + [{"name":"devstatus.issue-navigator.dev-info.shown","properties":{},"timeDelta":-5328},{"name":"kickass.viewIssue","properties":{"issueId":205554,"loadedFromDom":false,"source":"jira.issuenav.global","projectId":10263,"projectType":"software","issueMatchesProjectContext":true},"timeDelta":-4688},{"name":"issue.dnd.attachment.attachmentsdropzone.init","properties":{},"timeDelta":-4341},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-4324},{"name":"browser.metrics.navigation","properties":{"apdex":"0","firstPaint":"2120","isInitial":"true","journeyId":"68d353c0-5dc0-449b-a7ce-f348f8a8372b","key":"jira.issue.nav-detail","navigationType":"0","readyForUser":"4725","redirectCount":"1","resourceLoadedEnd":"2488","resourceLoadedStart":564.7950000002311,"threshold":"1000","unloadEventStart":"450","unloadEventEnd":"450","redirectStart":"2","redirectEnd":"269","fetchStart":"269","domainLookupStart":"269","domainLookupEnd":"269","connectStart":"269","connectEnd":"269","requestStart":"272","responseStart":"421","responseEnd":"1790","domLoading":"482","domInteractive":"2494","domContentLoadedEventStart":"2494","domContentLoadedEventEnd":"3191","domComplete":"5769","loadEventStart":"5770","loadEventEnd":"5781","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36","correlationId":"8c41587a7d6686","effectiveType":"4g","downlink":10,"rtt":50,"serverDuration":"1255","dbReadsTimeInMs":"875","dbConnsTimeInMs":"901","applicationHash":"e00b0abe8f1b188f0bb304a4c3b424f1180ba767","resourceTiming":"{\"â˜Â \":[\"2,fo,ov,jo,fy,fo,,fo,fo,fo\",\"2,fp,vt,ns,jf,jf,,g0,g0,g0\",\"2,fq,ny,nn,jm,jl,,g6,g6,g6\",\"2,fq,nz,nv,jn,jm,,g6,g6,g6\",\"3,fr,19k,ru,o1,fr,,fr,fr,fr\",\"3,fr,17q,rr,o2,fr,,fr,fr,fr\",\"3,fs,s5,rl,o3,fs,,fs,fs,fs\",\"3,fs,sp,sj,ov,fs,,fs,fs,fs\",\"3,ft,w2,vv,s7,ft,,ft,ft,ft\",\"3,ft,wk,wd,sr,ft,,ft,ft,ft\",\"3,fu,zo,zn,w5,fu,,fu,fu,fu\",\"2,fu,nx,nl,jn,jm,,g6,g6,g6\",\"3,fv,zs,zq,w7,fv,,fv,fv,fv\",\"5,1h8,1l0,1ky,1hb,1h8,,1h8,1h8,1h8\",\"4,1kt,1rx,1rv,1o5,1kt,,1kt,1kt,1kt\",\"4,1ph,1t9,1t2,1pk,1ph,,1ph,1ph,1ph\",\"3,1s8,1vx,1vt,1sb,1s8,,1s8,1s8,1s8\",\"3,1t9,1x2,1x1,1ti,1t9,,1t9,1t9,1t9\",\"3,1t9,1x4,1x3,1tm,1t9,,1t9,1t9,1t9\",\"5,1w7,20d,20b,1wb,1w7,,1w7,1w7,1w7\",\"5,20v,24n,24l,20z,20v,,20v,20v,20v\",\"5,28z,2cx,2cs,296,28z,,28z,28z,28z\",\"5,2cy,2j6,2j2,2da,2cy,,2cy,2cy,2cy\",\"2,2hr,2ll,2lh,2hw,2hr,,2hr,2hr,2hr\",\"3,2ht,2t9,2ll,2i0,2ht,,2ht,2ht,2ht\",\"3,2hw,2pn,2lv,2i3,2hw,,2hw,2hw,2hw\",\"3,2i0,2m1,2lr,2i3,2i0,,2i0,2i0,2i0\",\"3,2i2,2mu,2ms,2jb,2i2,,2i2,2i2,2i2\",\"5,2n4,2rh,2re,2na,2n4,,2n4,2n4,2n4\",\"5,2ys,3ai,3a1,2yv,2ys,,2ys,2ys,2ys\",\"5,346,3eg,3ee,3ap,346,,346,346,346\",\"5,34g,3ia,3hv,3aq,34g,,34g,34g,34g\",\"5,3a5,3eg,3ea,3an,3a5,,3a5,3a5,3a5\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]","serverHeadDuration":"undefined","connectionEffectiveType":"4g","connectionDownlink":10,"connectionRTT":50},"timeDelta":-3432}] + = + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + Accept application/json, text/javascript, */*; q=0.01 + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + - + - + false - startIndex - 0 + expand + subscriptions[-5:] = true - + false - filterId - -4 + _ + ${__time(,)} = true - - true - jql - order by created DESC - = - true + + + + + + + ${application.postfix}/rest/api/2/filter/favourite + GET + true + false + true + false + + + + + + + + + Accept-Language + en-US,en;q=0.5 + + + X-Requested-With + XMLHttpRequest + + + Accept-Encoding + gzip, deflate + + + Accept + application/json, text/javascript, */*; q=0.01 + + + + + + + false layoutKey @@ -1721,7 +1820,7 @@ vars.put("p_request_body", request_body.toString()) - ${application.postfix}/rest/issueNav/1/issueTable + ${application.postfix}/rest/issueNav/latest/preferredSearchLayout POST true false @@ -1765,25 +1864,37 @@ vars.put("p_request_body", request_body.toString()) - - false - x_issue_ids - "issueIds":\[([0-9\, ]*)\] - $1$ - - 0 - true - - - - true - + + - + + false + startIndex + 0 + = + true + + + false + filterId + -4 + = + true + + + true + jql + order by created DESC + = + true + + false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":[],"xc":["_super","jira.view.issue","jira.navigator.kickass","viewissue.standalone","jira.navigator.simple","jira.navigator.advanced","atl.general","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","jira.rich.editor"],"xr":["jira.filter.deletion.warning:styles","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init","com.atlassian.jira.plugins.jira-editor-plugin:tinymce","com.atlassian.jira.plugins.jira-editor-plugin:schema-builder","com.atlassian.jira.plugins.jira-editor-plugin:schema","com.atlassian.jira.plugins.jira-editor-plugin:i18n","com.atlassian.jira.plugins.jira-editor-plugin:wrm","com.atlassian.jira.plugins.jira-editor-plugin:converter-util","com.atlassian.jira.plugins.jira-editor-plugin:context-detector","com.atlassian.jira.plugins.jira-editor-plugin:context-manager","com.atlassian.jira.plugins.jira-editor-plugin:selection","com.atlassian.jira.plugins.jira-editor-plugin:instance","com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:renderer","com.atlassian.jira.plugins.jira-editor-plugin:mentions","com.atlassian.jira.plugins.jira-editor-plugin:mentions-plugin","com.atlassian.jira.plugins.jira-editor-plugin:polyfil-string-ends-with","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter"]} + layoutKey + split-view = + true @@ -1791,7 +1902,7 @@ vars.put("p_request_body", request_body.toString()) - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/rest/issueNav/1/issueTable POST true false @@ -1808,33 +1919,51 @@ vars.put("p_request_body", request_body.toString()) Accept-Language en-US,en;q=0.5 + + __amdModuleName + jira/issue/utils/xsrf-token-header + + + X-Atlassian-Token + no-check + + + Accept + */* + X-Requested-With XMLHttpRequest Content-Type - application/json + application/x-www-form-urlencoded; charset=UTF-8 Accept-Encoding gzip, deflate - - Accept - application/json, text/javascript, */*; q=0.01 - + + false + x_issue_ids + "issueIds":\[([0-9\, ]*)\] + $1$ + + 0 + true + + - ${__groovy(("${x_issue_ids}") != "")} + ${__groovy(vars.get("x_issue_ids") != "")} false true - + true @@ -1913,15 +2042,6 @@ vars.put("p_request_body", p_request_body.trim()); - - false - x_issue_ids - "issueIds":\[([0-9\, ]*)\] - $1$ - NO MATCH - 0 - - false x_issue_key @@ -1944,7 +2064,7 @@ vars.put("p_request_body", p_request_body.trim()); - + @@ -2008,7 +2128,7 @@ vars.put("p_request_body", p_request_body.trim()); - + true @@ -2061,13 +2181,13 @@ vars.put("p_request_body", p_request_body.trim()); - ${__groovy(("${x_issue_ids}") != "")} + ${__groovy(vars.get("x_issue_ids") != "")} false true Load first issue - + @@ -2165,12 +2285,12 @@ vars.put("p_request_body", p_request_body.trim()); - ${__groovy("${x_edit_allowed}" != "NOT FOUND")} + ${__groovy(vars.get("x_edit_allowed") != "NOT FOUND")} false true - + @@ -2258,24 +2378,72 @@ vars.put("p_request_body", p_request_body.trim()); - - - 1 - false - 1 - ${perc_view_issue} - - - - false - true - + + 1 + 0 + 0 + - - - - - + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_view_issue} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + false + true + + + + + + + @@ -2357,15 +2525,14 @@ vars.put("p_request_body", p_request_body.trim()); - - + + true + - + false - avatarId - ${x_project_avatar_id} + {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = - true @@ -2373,8 +2540,8 @@ vars.put("p_request_body", p_request_body.trim()); - ${application.postfix}/secure/projectavatar - GET + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -2384,27 +2551,19 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 - - - Cache-Control - no-cache - - - Accept-Encoding - gzip, deflate - - - Pragma - no-cache - Accept - image/webp,*/* + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json @@ -2416,7 +2575,7 @@ vars.put("p_request_body", p_request_body.trim()); false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","jira.general"],"xr":["com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements","com.atlassian.jira.jira-issue-nav-components:adgs","com.atlassian.jira.jira-issue-nav-components:detailslayout-adgs","com.atlassian.jira.jira-issue-nav-components:simpleissuelist-adgs","com.atlassian.jira.jira-issue-nav-plugin:adgs-styles","com.atlassian.jira.jira-issue-nav-components:orderby-less-adgs","com.atlassian.jira.jira-issue-nav-components:pager-less-adgs","com.atlassian.jira.jira-issue-nav-components:issueviewer-adgs"]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -2424,7 +2583,7 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -2436,16 +2595,8 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 - - - Pragma - no-cache - Accept application/json, text/javascript, */*; q=0.01 @@ -2458,25 +2609,17 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Cache-Control - no-cache - - - Accept-Encoding - gzip, deflate - - + true false - {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","jira.general","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements","com.atlassian.jira.jira-issue-nav-components:adgs","com.atlassian.jira.jira-issue-nav-components:detailslayout-adgs","com.atlassian.jira.jira-issue-nav-components:simpleissuelist-adgs","com.atlassian.jira.jira-issue-nav-plugin:adgs-styles","com.atlassian.jira.jira-issue-nav-components:orderby-less-adgs","com.atlassian.jira.jira-issue-nav-components:pager-less-adgs","com.atlassian.jira.jira-issue-nav-components:issueviewer-adgs","com.atlassian.plugins.atlassian-chaperone:hotspot-tour","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment"]} + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-1025},{"name":"jira.project.sidebar.issue.view.issue","properties":{"issueId":914565,"projectId":10448,"projectType":"software","issueMatchesProjectContext":true},"timeDelta":-902},{"name":"bigpipe.sidebar.render.success","properties":{},"timeDelta":-697},{"name":"issue.dnd.attachment.attachmentsdropzone.init","properties":{},"timeDelta":-690},{"name":"atst.healthcheck.sensors.page-protocols","properties":{"resourceProtocols":"http/1.1","navigationProtocol":"http/1.1","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"},"timeDelta":-660},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-660}] = @@ -2484,8 +2627,8 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -2496,16 +2639,8 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 - - - Pragma - no-cache - Accept application/json, text/javascript, */*; q=0.01 @@ -2518,25 +2653,17 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Cache-Control - no-cache - - - Accept-Encoding - gzip, deflate - - + true false - {"r":["com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter","com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":["jira.rich.editor","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","jira.general","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.atlassian.jira.projects.sidebar.init"],"xr":["com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements","com.atlassian.jira.jira-issue-nav-components:adgs","com.atlassian.jira.jira-issue-nav-components:detailslayout-adgs","com.atlassian.jira.jira-issue-nav-components:simpleissuelist-adgs","com.atlassian.jira.jira-issue-nav-plugin:adgs-styles","com.atlassian.jira.jira-issue-nav-components:orderby-less-adgs","com.atlassian.jira.jira-issue-nav-components:pager-less-adgs","com.atlassian.jira.jira-issue-nav-components:issueviewer-adgs","com.atlassian.plugins.atlassian-chaperone:hotspot-tour","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init","com.atlassian.jira.jira-projects-plugin:navigation-styles-adgs","com.atlassian.jira.jira-projects-plugin:footer-styles-adgs"]} + {"r":[],"c":["jira.rich.editor.api","jira.rich.editor","jira.project.sidebar","jira.project.sidebar.software","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","browser-metrics-plugin.contrib","atl.global","com.atlassian.jira.projects.sidebar.init","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = @@ -2544,7 +2671,7 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -2556,16 +2683,8 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 - - - Pragma - no-cache - Accept application/json, text/javascript, */*; q=0.01 @@ -2578,25 +2697,17 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Cache-Control - no-cache - - - Accept-Encoding - gzip, deflate - - + true false - {"r":[],"c":["jira.project.sidebar","jira.project.sidebar.software"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","jira.general","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.atlassian.jira.projects.sidebar.init","jira.rich.editor","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xr":["com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements","com.atlassian.jira.jira-issue-nav-components:adgs","com.atlassian.jira.jira-issue-nav-components:detailslayout-adgs","com.atlassian.jira.jira-issue-nav-components:simpleissuelist-adgs","com.atlassian.jira.jira-issue-nav-plugin:adgs-styles","com.atlassian.jira.jira-issue-nav-components:orderby-less-adgs","com.atlassian.jira.jira-issue-nav-components:pager-less-adgs","com.atlassian.jira.jira-issue-nav-components:issueviewer-adgs","com.atlassian.plugins.atlassian-chaperone:hotspot-tour","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","com.atlassian.jira.jira-postsetup-announcements-plugin:post-setup-announcements-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init","com.atlassian.jira.jira-projects-plugin:navigation-styles-adgs","com.atlassian.jira.jira-projects-plugin:footer-styles-adgs","com.atlassian.jira.jira-header-plugin:newsletter-signup-tip","com.atlassian.jira.plugins.jira-editor-plugin:tinymce","com.atlassian.jira.plugins.jira-editor-plugin:schema-builder","com.atlassian.jira.plugins.jira-editor-plugin:schema","com.atlassian.jira.plugins.jira-editor-plugin:i18n","com.atlassian.jira.plugins.jira-editor-plugin:wrm","com.atlassian.jira.plugins.jira-editor-plugin:converter-util","com.atlassian.jira.plugins.jira-editor-plugin:context-detector","com.atlassian.jira.plugins.jira-editor-plugin:context-manager","com.atlassian.jira.plugins.jira-editor-plugin:selection","com.atlassian.jira.plugins.jira-editor-plugin:instance","com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:renderer","com.atlassian.jira.plugins.jira-editor-plugin:mentions","com.atlassian.jira.plugins.jira-editor-plugin:mentions-plugin","com.atlassian.jira.plugins.jira-editor-plugin:polyfil-string-ends-with","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter","com.atlassian.plugin.jslibs:underscore-1.8.3"]} + [{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","firstPaint":"1285","isInitial":"true","journeyId":"68d353c0-5dc0-449b-a7ce-f348f8a8372b","key":"jira.project.issue.view-issue","navigationType":"1","readyForUser":"1993","redirectCount":"0","resourceLoadedEnd":"1029","resourceLoadedStart":294.43000000173924,"threshold":"1000","unloadEventStart":"188","unloadEventEnd":"190","fetchStart":"2","domainLookupStart":"2","domainLookupEnd":"2","connectStart":"2","connectEnd":"2","requestStart":"7","responseStart":"159","responseEnd":"239","domLoading":"224","domInteractive":"1793","domContentLoadedEventStart":"1793","domContentLoadedEventEnd":"2081","domComplete":"2995","loadEventStart":"2995","loadEventEnd":"3004","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36","correlationId":"6280673a8e3ab6","effectiveType":"4g","downlink":10,"rtt":100,"serverDuration":"103","dbReadsTimeInMs":"14","dbConnsTimeInMs":"29","applicationHash":"e00b0abe8f1b188f0bb304a4c3b424f1180ba767","resourceTiming":"{\"â˜Â \":[\"2,86,d8,cf,8s,86,,86,86,86\",\"2,87,da,cd,8t,87,,87,87,87\",\"2,87,cc,cb,8t,87,,87,87,87\",\"3,88,gf,cj,8t,88,,88,88,88\",\"3,88,qz,cm,8u,88,,88,88,88\",\"3,89,db,ci,8u,89,,89,89,89\",\"3,89,h6,gz,dc,89,,89,89,89\",\"3,8a,h7,h3,dd,8a,,8a,8a,8a\",\"3,8a,jm,ji,fy,8a,,8a,8a,8a\",\"3,8a,kb,k7,gh,8a,,8a,8a,8a\",\"2,8b,fy,fw,cc,8b,,8b,8b,8b\",\"3,8b,kt,ks,h8,8b,,8b,8b,8b\",\"2,8c,h7,gv,da,8c,,8c,8c,8c\",\"3,8c,l0,ku,h9,8c,,8c,8c,8c\",\"3,9j,os,oo,l3,9j,,9j,9j,9j\",\"3,9j,sl,sj,oy,9j,,9j,9j,9j\",\"5,kj,o9,o7,km,kj,,kj,kj,kj\",\"5,ua,y7,y5,uh,ua,,ua,ua,ua\",\"4,yb,1dr,1dl,19p,yb,,yb,yb,yb\",\"4,10a,141,13y,10e,10a,,10a,10a,10a\"]}","mark.bigPipe.sidebar-id.start":"[1700]","mark.bigPipe.sidebar-id.end":"[1704]","mark.bigPipe.activity-panel-pipe-id.start":"[1705]","mark.bigPipe.activity-panel-pipe-id.end":"[1709]","userTimingRaw":"{\"marks\":{\"bigPipe.sidebar-id.start\":[1700],\"bigPipe.sidebar-id.end\":[1704],\"bigPipe.activity-panel-pipe-id.start\":[1705],\"bigPipe.activity-panel-pipe-id.end\":[1709]},\"measures\":{}}","experiments":"[]","serverHeadDuration":"undefined","connectionEffectiveType":"4g","connectionDownlink":10,"connectionRTT":100},"timeDelta":-5035},{"name":"jira.project.centric.navigation.sidebar.load.project","properties":{},"timeDelta":-4563}] = @@ -2604,8 +2715,8 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -2616,16 +2727,8 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 - - - Pragma - no-cache - Accept application/json, text/javascript, */*; q=0.01 @@ -2638,6 +2741,43 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json + + + + + + + + + false + avatarId + ${x_project_avatar_id} + = + true + + + + + + + + ${application.postfix}/secure/projectavatar + GET + true + false + true + false + + + + + + + + + Accept-Language + en-US,en;q=0.5 + Cache-Control no-cache @@ -2646,12 +2786,20 @@ vars.put("p_request_body", p_request_body.trim()); Accept-Encoding gzip, deflate + + Pragma + no-cache + + + Accept + image/webp,*/* + - ${__groovy("${x_edit_allowed}" != "NOT FOUND")} + ${__groovy(vars.get("x_edit_allowed") != "NOT FOUND")} false true @@ -2793,6 +2941,38 @@ vars.put("p_request_body", p_request_body.trim()); + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -2801,6 +2981,22 @@ vars.put("p_request_body", p_request_body.trim()); ${perc_view_project_summary} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -2872,7 +3068,7 @@ vars.put("p_request_body", p_request_body.trim()); false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","com.atlassian.jira.project.summary.page","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","atl.general","jira.general","jira.global"],"xr":["jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers","com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static"]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","com.atlassian.jira.project.summary.page","jira.project.sidebar","atl.general","jira.global","com.atlassian.jira.projects.sidebar.init"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers"]} = @@ -2892,11 +3088,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -2906,14 +3102,6 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - @@ -2924,7 +3112,7 @@ vars.put("p_request_body", p_request_body.trim()); false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["jira.webresources:almond","jira.webresources:aui-core-amd-shim","jira.webresources:jira-metadata","jira.webresources:jquery-livestamp","com.atlassian.auiplugin:ajs-underscorejs","com.atlassian.analytics.analytics-client:js-events","com.atlassian.plugins.browser.metrics.browser-metrics-plugin:api","com.atlassian.gadgets.publisher:ajs-gadgets","com.atlassian.streams:streamsGadgetResources"],"xr":["jira.webresources:icons","jira.webresources:list-styles","jira.webresources:inline-layer","jira.webresources:dropdown","com.atlassian.auiplugin:aui-lozenge","com.atlassian.auiplugin:aui-tipsy","com.atlassian.auiplugin:aui-tooltips","com.atlassian.plugins.issue-status-plugin:issue-status-resources","jira.webresources:frother-queryable-dropdown-select","jira.webresources:frother-singleselect","jira.webresources:frother-multiselect","jira.webresources:frother-checkbox-multiselect","jira.webresources:select-pickers","jira.webresources:autocomplete","com.atlassian.jira.gadgets:core-gadget-resources"]} + {"r":[],"c":["jira.webresources:mentions-feature","jira.project.sidebar","jira.project.sidebar.software"],"xc":["_super","com.atlassian.jira.project.summary.page","jira.project.sidebar","atl.general","jira.global","com.atlassian.jira.projects.sidebar.init","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar","jira.webresources:group-label-lozenge","jira.webresources:jira-project-issuetype-fields","jira.webresources:jira-fields","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = @@ -2932,7 +3120,7 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -2944,11 +3132,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -2958,37 +3146,28 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + true + - + false - _ - ${__time(,)} + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-768},{"name":"jira.projects.summary.page.activity.stream.selected","properties":{},"timeDelta":-712},{"name":"bigpipe.sidebar.render.success","properties":{},"timeDelta":-504},{"name":"atst.healthcheck.sensors.page-protocols","properties":{"resourceProtocols":"http/1.1","navigationProtocol":"http/1.1","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"},"timeDelta":-499}] = - true - UTF-8 - ${application.postfix}/rest/activity-stream/1.0/preferences - GET - true + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true false true false @@ -2997,11 +3176,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -3009,27 +3188,19 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/json - + true false - {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","com.atlassian.jira.project.summary.page","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","atl.general","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers","com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar","jira.webresources:group-label-lozenge","jira.webresources:ie-imitation-placeholder","jira.webresources:jira-project-issuetype-fields","jira.webresources:jira-fields","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + [{"name":"jira.project.centric.navigation.sidebar.load.project","properties":{},"timeDelta":-5506}] = @@ -3037,8 +3208,8 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -3049,11 +3220,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -3063,49 +3234,13 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - - false - maxResults - 10 - = - true - - - false - relativeLinks - true - = - true - - - true - streams - key IS ${project_key} - = - true - - - true - providers - thirdparty dvcs-streams-provider issues - = - true - false _ @@ -3119,7 +3254,7 @@ vars.put("p_request_body", p_request_body.trim()); UTF-8 - ${application.postfix}/plugins/servlet/streams + ${application.postfix}/rest/activity-stream/1.0/preferences GET true false @@ -3148,58 +3283,6 @@ vars.put("p_request_body", p_request_body.trim()); Accept-Encoding gzip, deflate - - Accept - application/xml, text/xml, */*; q=0.01 - - - - - - - true - - - - false - {"r":[],"c":["jira.project.sidebar","jira.project.sidebar.software"],"xc":["_super","com.atlassian.jira.project.summary.page","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","atl.general","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers","com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar","jira.webresources:group-label-lozenge","jira.webresources:ie-imitation-placeholder","jira.webresources:jira-project-issuetype-fields","jira.webresources:jira-fields","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} - = - - - - - - - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - Accept application/json, text/javascript, */*; q=0.01 @@ -3208,7 +3291,7 @@ vars.put("p_request_body", p_request_body.trim()); - + @@ -3287,13 +3370,13 @@ vars.put("p_request_body", p_request_body.trim()); - + true false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":[],"xc":["_super","com.atlassian.jira.project.summary.page","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","atl.general","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers","com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar","jira.webresources:group-label-lozenge","jira.webresources:ie-imitation-placeholder","jira.webresources:jira-project-issuetype-fields","jira.webresources:jira-fields","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + {"id":"priority"} = @@ -3302,8 +3385,8 @@ vars.put("p_request_body", p_request_body.trim()); UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/api/2/user/properties/lastViewedVignette?username=${username} + PUT true false true @@ -3333,29 +3416,37 @@ vars.put("p_request_body", p_request_body.trim()); Accept - application/json, text/javascript, */*; q=0.01 + */* - - true - + + - + false - {"id":"priority"} + username + ${username} = + true + + + false + _ + ${__time(,)} + = + true - UTF-8 - ${application.postfix}/rest/api/2/user/properties/lastViewedVignette?username=${username} - PUT + + ${application.postfix}/rest/api/2/user/properties/lastViewedVignette + GET true false true @@ -3365,11 +3456,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + */* X-Requested-With @@ -3379,25 +3470,112 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Accept-Encoding - gzip, deflate + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_view_dashboard} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + false + true + + + + + + + + + + + ${application.postfix}/secure/Dashboard.jspa + GET + true + false + true + false + + + + + + + + + Upgrade-Insecure-Requests + 1 Accept - */* + text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["jira.webresources:almond","jira.webresources:aui-core-amd-shim","jira.webresources:jira-metadata","jira.webresources:jquery-livestamp","com.atlassian.auiplugin:ajs-underscorejs","com.atlassian.analytics.analytics-client:js-events","com.atlassian.plugins.browser.metrics.browser-metrics-plugin:api","com.atlassian.gadgets.publisher:ajs-gadgets","com.atlassian.streams:streamsGadgetResources"],"xr":["jira.webresources:icons","jira.webresources:list-styles","jira.webresources:inline-layer","jira.webresources:dropdown","com.atlassian.auiplugin:aui-lozenge","com.atlassian.auiplugin:aui-tipsy","com.atlassian.auiplugin:aui-tooltips","com.atlassian.plugins.issue-status-plugin:issue-status-resources","jira.webresources:frother-queryable-dropdown-select","jira.webresources:frother-singleselect","jira.webresources:frother-multiselect","jira.webresources:frother-checkbox-multiselect","jira.webresources:select-pickers","jira.webresources:autocomplete","com.atlassian.jira.gadgets:core-gadget-resources"]} + {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","atl.dashboard","jira.global","atl.general","jira.dashboard"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -3405,7 +3583,7 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -3417,11 +3595,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -3431,36 +3609,27 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + true + - + false - _ - ${__time(,)} + {"r":[],"c":["browser-metrics-plugin.contrib","com.atlassian.jira.plugins.jira-development-integration-plugin:8"],"xc":["_super","atl.dashboard","jira.global","atl.general","jira.dashboard","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment"]} = - true - UTF-8 - ${application.postfix}/rest/activity-stream/1.0/preferences - GET + + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -3470,11 +3639,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -3482,48 +3651,75 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/json - + - + false - maxResults - 10 + addDefault + true + = + true + + + false + startIndex + 0 = true - + false - relativeLinks + showActions true = true - + true - streams - key IS ${project_key} + jql + assignee = currentUser() AND resolution = unresolved ORDER BY priority DESC, created ASC = true - - true - providers - thirdparty dvcs-streams-provider issues + + false + num + 10 + = + true + + + false + tableContext + jira.table.cols.dashboard + = + true + + + false + paging + true + = + true + + + false + sortBy + + = + true + + + false + enableSorting + true = true @@ -3539,8 +3735,8 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 - ${application.postfix}/plugins/servlet/streams + + ${application.postfix}/rest/gadget/1.0/issueTable/jql GET true false @@ -3551,11 +3747,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -3563,44 +3759,30 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/xml, text/xml, */*; q=0.01 + application/json; charset=utf-8 - - - - 1 - false - 1 - ${perc_view_dashboard} - - - - false - true - - - + - + + + true + uri + ${application.protocol}://${application.hostname}:${application.port}/secure/Dashboard.jspa + = + true + + - ${application.postfix}/secure/Dashboard.jspa - GET + ${application.postfix}/plugins/servlet/gadgets/dashboard-diagnostics + POST true false true @@ -3610,45 +3792,31 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 + */* + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/x-www-form-urlencoded; charset=UTF-8 - - - title="loggedInUser" value="${username}" - - - Assertion.response_data - false - 16 - - - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.dashboard","jira.global","atl.general","jira.general"],"xr":[]} + {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","atl.dashboard","jira.global","atl.general","jira.dashboard","atl.global","jira.global.look-and-feel","com.atlassian.jira.plugins.jira-development-integration-plugin:8","browser-metrics-plugin.contrib"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = @@ -3668,11 +3836,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -3682,167 +3850,18 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + true + - - false - container - atlassian - = - true - - - false - mid - 10003 - = - true - - - false - country - US - = - true - - - false - lang - en - = - true - - - false - view - default - = - true - - - false - view-params - %7B%22writable%22%3A%22false%22%7D - = - true - - - false - st - atlassian%3A%2BOWPEy9c6o6zs4fz9mouA20A%2FsCSGdVUlEEKwa5ElJyhNKeAsW2klKIwY3ifUC%2BveHbU%2FJWGAimn5P3KhbPPi6kyz85X%2FAUltfwIJ%2FNs71yeGPZ05nCkJEGO23PI1S1OX8GInTimL0cxU%2Bi587LwdOl6yhW6%2FA0Nptki8bJPW2XqRXxHXu%2BzDIq6ZYzdiCjUInQ2cNle3PsHAjAl1XzucImlvxmAB2msG3J7LsNUdhw5NSBgRcQ7VOyJU%2BfO6T6SBQTPIXSTTucU5sEcYJZ7FHNq1pmTkykmTk170Ri41IZb1QZE9nR5DufM7PYBsMzoA8eK72mWC2N7cEuCgEln%2FAoUrHRnMNzpqW1L8j8b3Gv27yhwBghjHsL5jPzrdcEqyAZplg%3D%3D - = - true - - - false - up_isConfigured - true - = - true - - - false - up_isReallyConfigured - false - = - true - - - false - up_title - Your+Company+Jira - = - true - - - false - up_titleRequired - true - = - true - - - false - up_numofentries - 5 - = - true - - - false - up_refresh - false - = - true - - - false - up_maxProviderLabelCharacters - 50 - = - true - - - false - up_rules - - = - true - - - false - up_renderingContext - - = - true - - - false - up_keys - __all_projects__ - = - true - - - false - up_itemKeys - - = - true - - - false - up_username - - = - true - - - false - url - http%3A%2F%2Fjpt-07d02-loadbala-2ivawctgwe30-2063280894.us-west-1.elb.amazonaws.com%2Frest%2Fgadgets%2F1.0%2Fg%2Fcom.atlassian.streams.streams-jira-plugin%3Aactivitystream-gadget%2Fgadgets%2Factivitystream-gadget.xml - = - true - - + false - libs - auth-refresh + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-1003}] = - true @@ -3850,8 +3869,8 @@ vars.put("p_request_body", p_request_body.trim()); - ${application.postfix}/plugins/servlet/gadgets/ifr - GET + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST true false true @@ -3859,48 +3878,42 @@ vars.put("p_request_body", p_request_body.trim()); - - + - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json - - + + true + - - true - uri - ${application.protocol}://${application.hostname}:${application.port}/secure/Dashboard.jspa + + false + [{"name":"browser.metrics.navigation","properties":{"apdex":"0","firstPaint":"2911","isInitial":"true","journeyId":"68d353c0-5dc0-449b-a7ce-f348f8a8372b","key":"jira.dashboard","navigationType":"0","readyForUser":"6462","redirectCount":"0","resourceLoadedEnd":"2443","resourceLoadedStart":404.9200000008568,"threshold":"1000","unloadEventStart":"298","unloadEventEnd":"299","fetchStart":"1","domainLookupStart":"5","domainLookupEnd":"5","connectStart":"5","connectEnd":"126","requestStart":"126","responseStart":"273","responseEnd":"399","domLoading":"323","domInteractive":"2919","domContentLoadedEventStart":"2920","domContentLoadedEventEnd":"3212","domComplete":"6484","loadEventStart":"6485","loadEventEnd":"6492","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36","correlationId":"7df18fb2e75e61","effectiveType":"4g","downlink":3.95,"rtt":100,"serverDuration":"39","dbConnsTimeInMs":"7","applicationHash":"e00b0abe8f1b188f0bb304a4c3b424f1180ba767","resourceTiming":"{\"â˜Â \":[\"2,b8,it,fb,bm,b8,,b8,b8,b8\",\"2,ba,y3,fq,bx,ba,,ba,ba,ba\",\"2,bc,j0,iy,fh,fh,,by,by,by\",\"3,bd,1it,jn,fv,fq,,c7,c7,c7\",\"3,bd,1tc,jp,fv,fu,,c5,c5,c5\",\"3,be,mf,md,iv,be,,be,be,be\",\"3,be,rc,qd,j0,be,,be,be,be\",\"3,bf,nt,nn,jy,bf,,bf,bf,bf\",\"3,bf,r2,qi,mg,bf,,bf,bf,bf\",\"3,bf,ri,rf,nw,bf,,bf,bf,bf\",\"2,bg,jt,jl,fu,fq,,c7,c7,c7\",\"3,bg,v8,v5,ra,bg,,bg,bg,bg\",\"3,bi,1ng,1ne,1jy,bi,,bi,bi,bi\",\"3,bi,1vv,1vu,1sd,bi,,bi,bi,bi\",\"5,1s4,1w3,1w1,1sd,1s4,,1s4,1s4,1s4\",\"4,235,2bj,2bg,27v,235,,235,235,235\",\"5,27b,2bu,2bs,27v,27b,,27b,27b,27b\",\"5,2ec,2j7,2iz,2eo,2ec,,2ec,2ec,2ec\",\"-1,2fw,2kj,2k1,2g7,2fw,,2fw,2fw,2fw\",\"5,2gg,2ki,2kb,2gk,2gg,,2gg,2gg,2gg\",\"2,2iv,2n1,2my,2jc,2iv,,2iv,2iv,2iv\",\"3,2iy,2od,2o5,2km,2iy,,2iy,2iy,2iy\",\"3,2j0,2oc,2o9,2kn,2j0,,2j0,2j0,2j0\",\"5,2yt,36h,36d,2zi,2yt,,2yt,2yt,2yt\",\"5,32x,4ek,4ei,4ap,32x,,32x,32x,32x\",\"2,36v,3j4,3ii,3ew,36v,,36v,36v,36v\",\"3,36z,4so,4p3,4lj,36z,,36z,36z,36z\"]}","userTimingRaw":"{\"marks\":{},\"measures\":{}}","experiments":"[]","dbReadsTimeInMs":"","serverHeadDuration":"undefined","connectionEffectiveType":"4g","connectionDownlink":3.95,"connectionRTT":100},"timeDelta":-3952}] = - true - UTF-8 - ${application.postfix}/plugins/servlet/gadgets/dashboard-diagnostics + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -3911,11 +3924,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -3923,175 +3936,81 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - */* + application/json - - - - Assertion.response_code - true - 16 - - - + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_edit_issue} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + false + true + + + - - false - container - atlassian - = - true - - - false - mid - 10003 - = - true - - - false - country - US - = - true - - - false - lang - en - = - true - - - false - view - default - = - true - - - false - view-params - %7B%22writable%22%3A%22false%22%7D - = - true - - - false - st - atlassian%3A%2BOWPEy9c6o6zs4fz9mouA20A%2FsCSGdVUlEEKwa5ElJyhNKeAsW2klKIwY3ifUC%2BveHbU%2FJWGAimn5P3KhbPPi6kyz85X%2FAUltfwIJ%2FNs71yeGPZ05nCkJEGO23PI1S1OX8GInTimL0cxU%2Bi587LwdOl6yhW6%2FA0Nptki8bJPW2XqRXxHXu%2BzDIq6ZYzdiCjUInQ2cNle3PsHAjAl1XzucImlvxmAB2msG3J7LsNUdhw5NSBgRcQ7VOyJU%2BfO6T6SBQTPIXSTTucU5sEcYJZ7FHNq1pmTkykmTk170Ri41IZb1QZE9nR5DufM7PYBsMzoA8eK72mWC2N7cEuCgEln%2FAoUrHRnMNzpqW1L8j8b3Gv27yhwBghjHsL5jPzrdcEqyAZplg%3D%3D - = - true - - - false - up_isConfigured - true - = - true - - - false - up_isReallyConfigured - false - = - true - - - false - up_title - Your+Company+Jira - = - true - - - false - up_titleRequired - true - = - true - - - false - up_numofentries - 5 - = - true - - - false - up_refresh - false - = - true - - - false - up_maxProviderLabelCharacters - 50 - = - true - - - false - up_rules - - = - true - - - false - up_renderingContext - - = - true - - - false - up_keys - __all_projects__ - = - true - - - false - up_itemKeys - - = - true - - - false - up_username - - = - true - - - false - url - http%3A%2F%2Fjpt-07d02-loadbala-2ivawctgwe30-2063280894.us-west-1.elb.amazonaws.com%2Frest%2Fgadgets%2F1.0%2Fg%2Fcom.atlassian.streams.streams-jira-plugin%3Aactivitystream-gadget%2Fgadgets%2Factivitystream-gadget.xml - = - true - - + false - libs - auth-refresh + id + ${issue_id} = true @@ -4100,8 +4019,8 @@ vars.put("p_request_body", p_request_body.trim()); - - ${application.postfix}/plugins/servlet/gadgets/ifr + UTF-8 + ${application.postfix}/secure/EditIssue!default.jspa GET true false @@ -4128,19 +4047,97 @@ vars.put("p_request_body", p_request_body.trim()); Accept - text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 + text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + + false + x_issue_type + name="issuetype" type="hidden" value="(.+?)" + $1$ + 10000 + 1 + + + + false + x_atl_token + atl_token=(.+?)" + $1$ + NOT FOUND + 1 + + + + false + x_summary + name="summary" type="text" value="(.+?)" + $1$ + + 1 + true + + + + false + x_priority + selected="selected" data-icon="(.+?)" value="(.+?)"> + $2$ + + 1 + true + + + + false + x_assignee + <select id="assignee" (.+?)Automatic</option><option value="(.+?)" (.+?)<option selected="selected" value="(.+?)" + $2$ + + 1 + true + + + + false + x_reporter + <select id="assignee" (.+?)Automatic</option><option value="(.+?)" (.+?)<option selected="selected" value="(.+?)" + $4$ + + 1 + true + + + + false + x_resolution_done + <option selected="selected" value="(.+?)">\n(.+?)Done + $1$ + + 1 + true + + + + + Edit Issue: [${issue_key}] + + + Assertion.response_data + false + 16 + + - + true false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":["jira.webresources:mentions-feature","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","atl.dashboard","jira.global","atl.general","jira.general","browser-metrics-plugin.contrib","atl.global","jira.dashboard","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.general","jira.global","jira.edit.issue"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -4148,7 +4145,7 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -4160,11 +4157,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -4174,36 +4171,27 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + true + - + false - _ - ${__time(,)} + {"r":[],"c":["jira.webresources:mentions-feature","jira.rich.editor.api","jira.rich.editor"],"xc":["_super","atl.general","jira.global","jira.edit.issue","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = - true - UTF-8 - ${application.postfix}/rest/activity-stream/1.0/preferences - GET + + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -4213,11 +4201,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -4225,90 +4213,84 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/json - - + + true + - - false - num - 10 - = - true - - + false - tableContext - jira.table.cols.dashboard + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-1399},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-1335},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-1190},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-1070},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-953},{"name":"issue.dnd.attachment.createissuedropzone.init","properties":{},"timeDelta":-493},{"name":"atst.healthcheck.sensors.page-protocols","properties":{"resourceProtocols":"http/1.1","navigationProtocol":"http/1.1","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"},"timeDelta":-455}] = - true - - false - addDefault - true - = - true + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 - - false - enableSorting - true - = - true + + X-Requested-With + XMLHttpRequest - - false - paging - true - = - true + + Content-Type + application/json - + + + + + + + + false - showActions - true - = - true - - - true - jql - assignee = currentUser() AND resolution = unresolved ORDER BY priority DESC, created ASC + issueKey + ${issue_key} = true - + false - sortBy - + projectKey + ${issue_project_key} = true - + false - startIndex - 0 + maxResults + 10 = true false _ - 1553746461202 + ${__time(,)} = true @@ -4317,8 +4299,8 @@ vars.put("p_request_body", p_request_body.trim()); - utf-8 - ${application.postfix}/rest/gadget/1.0/issueTable/jql + UTF-8 + ${application.postfix}/rest/internal/2/user/mention/search GET true false @@ -4341,7 +4323,7 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type - application/json; charset=utf-8 + application/json; charset=UTF-8 Accept-Encoding @@ -4355,38 +4337,23 @@ vars.put("p_request_body", p_request_body.trim()); - - + + true + - - false - maxResults - 5 - = - true - - - false - relativeLinks - true - = - true - - + false - _ - ${__time(,)} + [{"name":"editor.instance.init","properties":{},"timeDelta":-4341},{"name":"bundled.editor.instance.init","properties":{},"timeDelta":-4341},{"name":"editor.instance.init.chrome","properties":{},"timeDelta":-4341},{"name":"editor.instance.init","properties":{},"timeDelta":-4300},{"name":"bundled.editor.instance.init","properties":{},"timeDelta":-4300},{"name":"editor.instance.init.chrome","properties":{},"timeDelta":-4300},{"name":"editor.instance.init","properties":{},"timeDelta":-4279},{"name":"bundled.editor.instance.init","properties":{},"timeDelta":-4279},{"name":"editor.instance.init.chrome","properties":{},"timeDelta":-4279},{"name":"editor.instance.init","properties":{},"timeDelta":-4263},{"name":"bundled.editor.instance.init","properties":{},"timeDelta":-4263},{"name":"editor.instance.init.chrome","properties":{},"timeDelta":-4263},{"name":"editor.instance.perf.nodechange","properties":{"time":6.994999999733409},"timeDelta":-3873},{"name":"editor.instance.perf.init","properties":{"time":2261.2850000004983},"timeDelta":-3840},{"name":"editor.instance.init.perf","properties":{"time":43.92999999981839},"timeDelta":-3840},{"name":"editor.instance.perf.init-bare","properties":{"time":2261.545000001206},"timeDelta":-3840},{"name":"editor.instance.perf.nodechange","properties":{"time":3.1249999992724042},"timeDelta":-3823},{"name":"editor.instance.perf.nodechange","properties":{"time":2.669999998033745},"timeDelta":-3816},{"name":"editor.instance.perf.nodechange","properties":{"time":3.8499999973282684},"timeDelta":-3796},{"name":"editor.instance.perf.init","properties":{"time":2313.545000000886},"timeDelta":-3788},{"name":"editor.instance.init.perf","properties":{"time":13.74999999825377},"timeDelta":-3788},{"name":"editor.instance.perf.init-bare","properties":{"time":2313.6799999992945},"timeDelta":-3788},{"name":"editor.instance.perf.nodechange","properties":{"time":1.874999998108251},"timeDelta":-3768},{"name":"editor.instance.perf.nodechange","properties":{"time":4.114999999728752},"timeDelta":-3761},{"name":"editor.instance.perf.nodechange","properties":{"time":6.1700000005657785},"timeDelta":-3735},{"name":"editor.instance.perf.init","properties":{"time":2386.3649999984773},"timeDelta":-3715},{"name":"editor.instance.init.perf","properties":{"time":27.78500000204076},"timeDelta":-3715},{"name":"editor.instance.perf.init-bare","properties":{"time":2386.5399999995134},"timeDelta":-3715},{"name":"editor.instance.perf.nodechange","properties":{"time":2.675000003364403},"timeDelta":-3700},{"name":"editor.instance.perf.nodechange","properties":{"time":5.284999999275897},"timeDelta":-3679},{"name":"editor.instance.perf.nodechange","properties":{"time":15.005000001110602},"timeDelta":-3652},{"name":"editor.instance.perf.init","properties":{"time":2462.8149999989546},"timeDelta":-3639},{"name":"editor.instance.init.perf","properties":{"time":30.36499999871012},"timeDelta":-3638},{"name":"editor.instance.perf.init-bare","properties":{"time":2462.9600000007486},"timeDelta":-3638},{"name":"editor.instance.perf.nodechange","properties":{"time":1.5500000008614734},"timeDelta":-3625},{"name":"editor.instance.perf.nodechange","properties":{"time":1.7299999999522697},"timeDelta":-3621}] = - true - UTF-8 - ${application.postfix}/plugins/servlet/streams - GET + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST true false true @@ -4396,11 +4363,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -4408,35 +4375,19 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type - application/x-www-form-urlencoded; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/xml, text/xml, */*; q=0.01 + application/json - - - 1 - false - 1 - ${perc_edit_issue} - - - + false true - + @@ -4446,131 +4397,124 @@ vars.put("p_request_body", p_request_body.trim()); = true - - - - - - UTF-8 - ${application.postfix}/secure/EditIssue!default.jspa - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 + + false + summary + jmeter - ${random_string_short} + = + true - - Upgrade-Insecure-Requests - 1 + + false + issuetype + ${x_issue_type} + = + true - - Accept-Encoding - gzip, deflate + + false + priority + ${x_priority} + = + true - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + + false + duedate + + = + true - - - - - false - x_issue_type - name="issuetype" type="hidden" value="(.+?)" - $1$ - 10000 - 1 - - - - false - x_atl_token - atl_token=(.+?)" - $1$ - NOT FOUND - 1 - - - - false - x_summary - name="summary" type="text" value="(.+?)" - $1$ - - 1 - true - - - - false - x_priority - selected="selected" data-icon="(.+?)" value="(.+?)"> - $2$ - - 1 - true - - - - false - x_assignee - <select id="assignee" (.+?)Automatic</option><option value="(.+?)" (.+?)<option selected="selected" value="(.+?)" - $2$ - - 1 - true - - - - false - x_reporter - <select id="assignee" (.+?)Automatic</option><option value="(.+?)" (.+?)<option selected="selected" value="(.+?)" - $4$ - - 1 - true - - - - false - x_resolution_done - <option selected="selected" value="(.+?)">\n(.+?)Done - $1$ - - 1 - true - - - - - Edit Issue: [${issue_key}] - - - Assertion.response_data - false - 16 - - - - - true - - - + + false + assignee + ${x_assignee} + = + true + + + false + reporter + ${x_reporter} + = + true + + + false + environment + + = + true + + + false + description + jmeter - ${random_string_long} + = + true + + + false + timetracking_originalestimate + + = + true + + + false + timetracking_remainingestimate + + = + true + + + false + isCreateIssue + + = + true + + + false + hasWorkStarted + + = + true + + + false + dnd-dropzone + + = + true + + + false + comment + + = + true + + + false + commentLevel + + = + true + + + false + atl_token + ${x_atl_token} + = + true + + false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.general","jira.edit.issue","jira.general","jira.global"],"xr":["com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static"]} + Update + Update = + true @@ -4578,15 +4522,17 @@ vars.put("p_request_body", p_request_body.trim()); UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/secure/EditIssue.jspa?atl_token=${x_atl_token} POST true false true - false + true + true + Detected the start of a redirect chain @@ -4595,13 +4541,9 @@ vars.put("p_request_body", p_request_body.trim()); Accept-Language en-US,en;q=0.5 - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json + + Upgrade-Insecure-Requests + 1 Accept-Encoding @@ -4609,19 +4551,50 @@ vars.put("p_request_body", p_request_body.trim()); Accept - application/json, text/javascript, */*; q=0.01 + text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + + + [${issue_key}] + + + Assertion.response_data + false + 16 + + + + groovy + + + true + def generator = { String alphabet, int n -> + new Random().with { + (1..n).collect { alphabet[nextInt(alphabet.length())] }.join() + } +} + +// static +def random_string_short = generator((('a'..'z') + ' ' * 5).join(), 15) +def random_string_long = generator((('a'..'z') + ' ' * 10).join(), 500); + +// request +vars.put("random_string_short", random_string_short) +vars.put("random_string_long", random_string_long) + + + - + true false - {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","atl.general","jira.edit.issue","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -4629,7 +4602,7 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -4641,11 +4614,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -4655,25 +4628,17 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip","com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter"],"c":["jira.rich.editor"],"xc":["_super","atl.general","jira.edit.issue","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -4681,7 +4646,7 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -4693,11 +4658,11 @@ vars.put("p_request_body", p_request_body.trim()); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -4707,43 +4672,14 @@ vars.put("p_request_body", p_request_body.trim()); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + - - false - issueKey - ${issue_key} - = - true - - - false - projectKey - ${issue_project_key} - = - true - - - false - maxResults - 10 - = - true - - + false _ ${__time(,)} @@ -4755,8 +4691,8 @@ vars.put("p_request_body", p_request_body.trim()); - UTF-8 - ${application.postfix}/rest/internal/2/user/mention/search + + ${application.postfix}/rest/bamboo/latest/deploy/${issue_project_key}/${issue_key} GET true false @@ -4777,10 +4713,6 @@ vars.put("p_request_body", p_request_body.trim()); X-Requested-With XMLHttpRequest - - Content-Type - application/json; charset=UTF-8 - Accept-Encoding gzip, deflate @@ -4793,138 +4725,27 @@ vars.put("p_request_body", p_request_body.trim()); - - - false - true - - - + - - false - id - ${issue_id} - = - true - - - false - summary - jmeter - ${random_string_short} - = - true - - - false - issuetype - ${x_issue_type} - = - true - - - false - priority - ${x_priority} - = - true - - - false - duedate - - = - true - - - false - assignee - ${x_assignee} - = - true - - - false - reporter - ${x_reporter} - = - true - - - false - environment - - = - true - - - false - description - jmeter - ${random_string_long} - = - true - - - false - timetracking_originalestimate - - = - true - - - false - timetracking_remainingestimate - - = - true - - - false - isCreateIssue - - = - true - - - false - hasWorkStarted - - = - true - - - false - dnd-dropzone - - = - true - - - false - comment - - = - true - - + false - commentLevel - + decorator + none = true - + false - atl_token - ${x_atl_token} + issueId + ${issue_id} = true - + false - Update - Update + _ + ${__time(,)} = true @@ -4934,17 +4755,15 @@ vars.put("p_request_body", p_request_body.trim()); UTF-8 - ${application.postfix}/secure/EditIssue.jspa?atl_token=${x_atl_token} - POST + ${application.postfix}/secure/AjaxIssueEditAction!default.jspa + GET true false true - true - true + false - Detected the start of a redirect chain @@ -4953,9 +4772,13 @@ vars.put("p_request_body", p_request_body.trim()); Accept-Language en-US,en;q=0.5 - - Upgrade-Insecure-Requests - 1 + + X-Requested-With + XMLHttpRequest + + + X-SITEMESH-OFF + true Accept-Encoding @@ -4963,53 +4786,29 @@ vars.put("p_request_body", p_request_body.trim()); Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + */* - - - [${issue_key}] - - - Assertion.response_data - false - 16 - - - - groovy - - - true - def generator = { String alphabet, int n -> - new Random().with { - (1..n).collect { alphabet[nextInt(alphabet.length())] }.join() - } -} - -// static -def random_string_short = generator((('a'..'z') + ' ' * 5).join(), 15) -def random_string_long = generator((('a'..'z') + ' ' * 10).join(), 500); - -// request -vars.put("random_string_short", random_string_short) -vars.put("random_string_long", random_string_long) - - - - - - + + true + + + + false + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-994},{"name":"jira.project.sidebar.issue.view.issue","properties":{"issueId":914565,"projectId":10448,"projectType":"software","issueMatchesProjectContext":true},"timeDelta":-825},{"name":"bigpipe.sidebar.render.success","properties":{},"timeDelta":-646},{"name":"issue.dnd.attachment.attachmentsdropzone.init","properties":{},"timeDelta":-640},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-617}] + = + + - ${application.postfix}/browse/${issue_key} - GET + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST true false true @@ -5019,35 +4818,31 @@ vars.put("random_string_long", random_string_long) - + - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","jira.general"],"xr":[]} + {"r":[],"c":["jira.rich.editor.api","jira.rich.editor","jira.project.sidebar","jira.project.sidebar.software","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","browser-metrics-plugin.contrib","atl.global","com.atlassian.jira.projects.sidebar.init","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = @@ -5055,7 +4850,7 @@ vars.put("random_string_long", random_string_long) - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -5067,11 +4862,11 @@ vars.put("random_string_long", random_string_long) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -5081,25 +4876,17 @@ vars.put("random_string_long", random_string_long) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","jira.general","browser-metrics-plugin.contrib","atl.global","com.atlassian.jira.projects.sidebar.init","jira.global.look-and-feel"],"xr":["com.atlassian.plugins.atlassian-chaperone:hotspot-tour","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + {"id":"com.atlassian.jira.jira-projects-issue-navigator:sidebar-issue-navigator"} = @@ -5107,9 +4894,9 @@ vars.put("random_string_long", random_string_long) - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST + + ${application.postfix}/rest/projects/1.0/project/${issue_project_key}/lastVisited + PUT true false true @@ -5139,21 +4926,20 @@ vars.put("random_string_long", random_string_long) Accept - application/json, text/javascript, */*; q=0.01 + */* - - + + true + - + false - _ - ${__time(,)} + [{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","firstPaint":"2289","isInitial":"true","journeyId":"68d353c0-5dc0-449b-a7ce-f348f8a8372b","key":"jira.project.issue.view-issue","navigationType":"0","readyForUser":"3249","redirectCount":"1","resourceLoadedEnd":"1925","resourceLoadedStart":640.8699999992677,"threshold":"1000","unloadEventStart":"539","unloadEventEnd":"540","redirectStart":"91","redirectEnd":"350","fetchStart":"350","domainLookupStart":"350","domainLookupEnd":"350","connectStart":"350","connectEnd":"350","requestStart":"353","responseStart":"500","responseEnd":"597","domLoading":"605","domInteractive":"2884","domContentLoadedEventStart":"2884","domContentLoadedEventEnd":"3312","domComplete":"4483","loadEventStart":"4484","loadEventEnd":"4499","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36","correlationId":"bcd0e1be057334","effectiveType":"4g","downlink":5.6,"rtt":100,"serverDuration":"115","dbReadsTimeInMs":"18","dbConnsTimeInMs":"32","applicationHash":"e00b0abe8f1b188f0bb304a4c3b424f1180ba767","resourceTiming":"{\"â˜Â \":[\"2,hs,pl,lv,hw,hs,,hs,hs,hs\",\"2,ht,sy,ll,hz,ht,,ht,ht,ht\",\"2,ht,lk,lg,hz,ht,,ht,ht,ht\",\"3,hu,10w,ln,i0,hu,,hu,hu,hu\",\"3,hu,1hh,lo,i0,hu,,hu,hu,hu\",\"3,hu,lx,lr,i0,hu,,hu,hu,hu\",\"3,hv,ta,t2,pf,hv,,hv,hv,hv\",\"3,hv,th,te,pt,hv,,hv,hv,hv\",\"3,hw,tr,th,pw,hw,,hw,hw,hw\",\"3,hw,x8,wr,t1,hw,,hw,hw,hw\",\"2,hw,pd,p8,lk,hw,,hw,hw,hw\",\"3,hx,x6,wx,tb,hx,,hx,hx,hx\",\"2,hx,pt,pn,m0,hx,,hx,hx,hx\",\"3,hx,xn,xd,tq,hx,,hx,hx,hx\",\"3,kl,157,155,11o,kl,,kl,kl,kl\",\"3,km,1dw,1dp,1a6,km,,km,km,km\",\"5,1a2,1dx,1ds,1a5,1a2,,1a2,1a2,1a2\",\"5,1my,1qp,1qn,1n1,1my,,1my,1my,1my\",\"4,1px,249,246,20l,1px,,1px,1px,1px\",\"4,1ys,22v,22t,1yu,1ys,,1ys,1ys,1ys\"]}","mark.bigPipe.sidebar-id.start":"[2762]","mark.bigPipe.sidebar-id.end":"[2764]","mark.bigPipe.activity-panel-pipe-id.start":"[2765]","mark.bigPipe.activity-panel-pipe-id.end":"[2773]","userTimingRaw":"{\"marks\":{\"bigPipe.sidebar-id.start\":[2762],\"bigPipe.sidebar-id.end\":[2764],\"bigPipe.activity-panel-pipe-id.start\":[2765],\"bigPipe.activity-panel-pipe-id.end\":[2773]},\"measures\":{}}","experiments":"[]","serverHeadDuration":"undefined","connectionEffectiveType":"4g","connectionDownlink":5.6,"connectionRTT":100},"timeDelta":-4643},{"name":"jira.project.centric.navigation.sidebar.load.project","properties":{},"timeDelta":-4321}] = - true @@ -5161,8 +4947,8 @@ vars.put("random_string_long", random_string_long) - ${application.postfix}/rest/bamboo/latest/deploy/${issue_project_key}/${issue_key} - GET + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST true false true @@ -5172,36 +4958,95 @@ vars.put("random_string_long", random_string_long) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + + Content-Type + application/json - - true - + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_add_comment} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + false + true + + + + - + false - {"r":["com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter","com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":["jira.webresources:mentions-feature","jira.rich.editor"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","jira.general","browser-metrics-plugin.contrib","atl.global","com.atlassian.jira.projects.sidebar.init","jira.global.look-and-feel","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xr":["com.atlassian.plugins.atlassian-chaperone:hotspot-tour","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + id + ${issue_id} = + true @@ -5209,8 +5054,8 @@ vars.put("random_string_long", random_string_long) UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/secure/AddComment!default.jspa + GET true false true @@ -5226,13 +5071,9 @@ vars.put("random_string_long", random_string_long) Accept-Language en-US,en;q=0.5 - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json + + Upgrade-Insecure-Requests + 1 Accept-Encoding @@ -5240,44 +5081,57 @@ vars.put("random_string_long", random_string_long) Accept - application/json, text/javascript, */*; q=0.01 + text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + + false + x_atl_token + name="atlassian-token" content="(.+?)" + $1$ + NOT FOUND + 1 + + + + false + x_form_token + name="formToken"\s*type="hidden"\s*value="(.+?)" + $1$ + NOT FOUND + 1 + + + + + Add Comment: ${issue_key} + + + Assertion.response_data + false + 16 + + - - + + true + - - false - decorator - none - = - true - - - false - issueId - ${issue_id} - = - true - - + false - _ - ${__time(,)} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.general","jira.global","jira.edit.issue"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = - true - UTF-8 - ${application.postfix}/secure/AjaxIssueEditAction!default.jspa - GET + + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -5287,39 +5141,31 @@ vars.put("random_string_long", random_string_long) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest - - X-SITEMESH-OFF - true - - - Accept-Encoding - gzip, deflate - - - Accept - */* + + Content-Type + application/json - + true false - {"r":[],"c":["jira.project.sidebar","jira.project.sidebar.software"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","jira.general","browser-metrics-plugin.contrib","atl.global","com.atlassian.jira.projects.sidebar.init","jira.global.look-and-feel","com.atlassian.jira.plugins.jira-development-integration-plugin:0","jira.rich.editor"],"xr":["com.atlassian.plugins.atlassian-chaperone:hotspot-tour","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init","com.atlassian.jira.jira-header-plugin:newsletter-signup-tip","com.atlassian.jira.plugins.jira-editor-plugin:tinymce","com.atlassian.jira.plugins.jira-editor-plugin:schema-builder","com.atlassian.jira.plugins.jira-editor-plugin:schema","com.atlassian.jira.plugins.jira-editor-plugin:i18n","com.atlassian.jira.plugins.jira-editor-plugin:wrm","com.atlassian.jira.plugins.jira-editor-plugin:converter-util","com.atlassian.jira.plugins.jira-editor-plugin:context-detector","com.atlassian.jira.plugins.jira-editor-plugin:context-manager","com.atlassian.jira.plugins.jira-editor-plugin:selection","com.atlassian.jira.plugins.jira-editor-plugin:instance","com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:renderer","com.atlassian.jira.plugins.jira-editor-plugin:mentions","com.atlassian.jira.plugins.jira-editor-plugin:mentions-plugin","com.atlassian.jira.plugins.jira-editor-plugin:polyfil-string-ends-with","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter","com.atlassian.plugin.jslibs:underscore-1.8.3"]} + {"r":[],"c":["jira.webresources:mentions-feature","jira.rich.editor.api","jira.rich.editor"],"xc":["_super","atl.general","jira.global","jira.edit.issue","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = @@ -5327,7 +5173,7 @@ vars.put("random_string_long", random_string_long) - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -5339,11 +5185,11 @@ vars.put("random_string_long", random_string_long) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -5353,25 +5199,17 @@ vars.put("random_string_long", random_string_long) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"id":"com.atlassian.jira.jira-projects-issue-navigator:sidebar-issue-navigator"} + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-862},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-817},{"name":"issue.dnd.attachment.createissuedropzone.init","properties":{},"timeDelta":-493}] = @@ -5380,8 +5218,8 @@ vars.put("random_string_long", random_string_long) - ${application.postfix}/rest/projects/1.0/project/${issue_project_key}/lastVisited - PUT + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST true false true @@ -5391,11 +5229,11 @@ vars.put("random_string_long", random_string_long) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -5405,117 +5243,40 @@ vars.put("random_string_long", random_string_long) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - */* - - - - - 1 - false - 1 - ${perc_add_comment} - - - - false - true - - - + - + false - id - ${issue_id} + issueKey + ${issue_key} = true - - - - - - UTF-8 - ${application.postfix}/secure/AddComment!default.jspa - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate + + false + projectKey + ${issue_project_key} + = + true - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + + false + maxResults + 10 + = + true - - - - - false - x_atl_token - name="atlassian-token" content="(.+?)" - $1$ - NOT FOUND - 1 - - - - false - x_form_token - name="formToken"\s*type="hidden"\s*value="(.+?)" - $1$ - NOT FOUND - 1 - - - - - Add Comment: ${issue_key} - - - Assertion.response_data - false - 16 - - - - - true - - - + false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.general","jira.edit.issue","jira.general","jira.global"],"xr":["com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static"]} + _ + ${__time(,)} = + true @@ -5523,8 +5284,8 @@ vars.put("random_string_long", random_string_long) UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/internal/2/user/mention/search + GET true false true @@ -5546,7 +5307,7 @@ vars.put("random_string_long", random_string_long) Content-Type - application/json + application/json; charset=UTF-8 Accept-Encoding @@ -5560,13 +5321,13 @@ vars.put("random_string_long", random_string_long) - + true false - {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","atl.general","jira.edit.issue","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + [{"name":"editor.instance.init","properties":{},"timeDelta":-4782},{"name":"bundled.editor.instance.init","properties":{},"timeDelta":-4781},{"name":"editor.instance.init.chrome","properties":{},"timeDelta":-4781},{"name":"editor.instance.perf.nodechange","properties":{"time":6.580000001122244},"timeDelta":-4290},{"name":"editor.instance.perf.init","properties":{"time":1666.175000005751},"timeDelta":-4253},{"name":"editor.instance.init.perf","properties":{"time":47.44500000379048},"timeDelta":-4253},{"name":"editor.instance.perf.init-bare","properties":{"time":1666.5150000044378},"timeDelta":-4253},{"name":"editor.instance.perf.nodechange","properties":{"time":2.3499999952036887},"timeDelta":-4230},{"name":"editor.instance.perf.nodechange","properties":{"time":1.6399999876739457},"timeDelta":-4224},{"name":"editor.instance.perf.nodechange","properties":{"time":1.6899999900488183},"timeDelta":-4134},{"name":"editor.instance.perf.nodechange","properties":{"time":2.2250000038184226},"timeDelta":-4128}] = @@ -5574,8 +5335,8 @@ vars.put("random_string_long", random_string_long) - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -5586,11 +5347,11 @@ vars.put("random_string_long", random_string_long) - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -5600,25 +5361,23 @@ vars.put("random_string_long", random_string_long) Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + + + false + true + + + true false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip","com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter"],"c":["jira.rich.editor"],"xc":["_super","atl.general","jira.edit.issue","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + [{"name":"editor.instance.perf.nodechange","properties":{"time":1.8149999959859997},"timeDelta":-3280},{"name":"editor.instance.perf.nodechange","properties":{"time":0.910000002477318},"timeDelta":-3160},{"name":"editor.instance.perf.convert","properties":{"nodesCount":1,"time":5.629999999655411},"timeDelta":-2592},{"name":"editor.instance.perf.nodechange","properties":{"time":1.360000009299256},"timeDelta":-2587},{"name":"editor.instance.perf.convert","properties":{"nodesCount":1,"time":2.545000010286458},"timeDelta":-813},{"name":"editor.instance.perf.nodechange","properties":{"time":1.7099999968195334},"timeDelta":-390}] = @@ -5626,8 +5385,8 @@ vars.put("random_string_long", random_string_long) - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -5638,113 +5397,25 @@ vars.put("random_string_long", random_string_long) - + - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - Accept application/json, text/javascript, */*; q=0.01 - - - - - - - - - false - issueKey - ${issue_key} - = - true - - - false - projectKey - ${issue_project_key} - = - true - - - false - maxResults - 10 - = - true - - - false - _ - ${__time(,)} - = - true - - - - - - - UTF-8 - ${application.postfix}/rest/internal/2/user/mention/search - GET - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - X-Requested-With XMLHttpRequest Content-Type - application/json; charset=UTF-8 - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 + application/json - - - false - true - - - + @@ -5868,64 +5539,23 @@ vars.put("p_comment", comment.toString()) - - - - 1 - false - 1 - ${perc_browse_projects} - - - - - - false - import java.util.Random; - -Random rand = new Random(); -int project_pages = Integer.parseInt(props.get("project_pages")); -int random_page = rand.nextInt(project_pages) + 1; -vars.put("random_page", String.valueOf(random_page)); - - - - false - true - - - - + + true + - - false - selectedCategory - all - = - true - - - false - selectedProjectType - all - = - true - - + false - page - ${random_page} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = - true - UTF-8 - ${application.postfix}/secure/BrowseProjects.jspa - GET + + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -5935,45 +5565,131 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 - - Upgrade-Insecure-Requests - 1 + + X-Requested-With + XMLHttpRequest - - Accept-Encoding - gzip, deflate + + Content-Type + application/json + + + + + + + + + + false + _ + ${__time(,)} + = + true + + + + + + + ${application.postfix}/rest/bamboo/latest/deploy/${issue_project_key}/${issue_key} + GET + true + false + true + false + + + + + + + Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest - - - WRM._unparsedData["com.atlassian.jira.project.browse:projects"]=" + + + + + + false + decorator + none + = + true + + + false + issueId + ${issue_id} + = + true + + + false + _ + ${__time(,)} + = + true + - - Assertion.response_data - false - 16 - + + + + + + ${application.postfix}/secure/AjaxIssueEditAction!default.jspa + GET + true + false + true + false + + + + + + + + + Accept + */* + + + X-Requested-With + XMLHttpRequest + + + X-SITEMESH-OFF + true + + + - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.general","jira.general","jira.global"],"xr":["jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers","com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static"]} + {"r":[],"c":["jira.webresources:mentions-feature","jira.rich.editor.api","jira.rich.editor","jira.project.sidebar","jira.project.sidebar.software","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","project.issue.navigator","jira.view.issue","jira.global","atl.general","browser-metrics-plugin.contrib","atl.global","com.atlassian.jira.projects.sidebar.init","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = @@ -5981,7 +5697,7 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -5993,11 +5709,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6007,25 +5723,17 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","atl.general","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers","com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","com.atlassian.plugin.jslibs:backbone.paginator-2.0.2-factory","jira.webresources:backbone-paginator","jira.webresources:backbone-queryparams","jira.webresources:project-type-keys","com.atlassian.plugin.jslibs:marionette-1.6.1-factory","jira.webresources:marionette","jira.webresources:navigation-utils","jira.webresources:pagination-view","jira.webresources:browseprojects","jira.webresources:calendar","jira.webresources:group-label-lozenge","jira.webresources:ie-imitation-placeholder","jira.webresources:jira-project-issuetype-fields","jira.webresources:jira-fields","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + [{"name":"jira.project.sidebar.issue.view.issue","properties":{"issueId":914565,"projectId":10448,"projectType":"software","issueMatchesProjectContext":true},"timeDelta":-1978},{"name":"jira.wikieditor.initialized","properties":{},"timeDelta":-1497},{"name":"quicksearch.enabled","properties":{},"timeDelta":-1063},{"name":"bigpipe.sidebar.render.success","properties":{},"timeDelta":-650},{"name":"issue.dnd.attachment.attachmentsdropzone.init","properties":{},"timeDelta":-639}] = @@ -6033,8 +5741,8 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -6045,11 +5753,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6059,25 +5767,17 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":[],"xc":["_super","atl.general","jira.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers","com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","com.atlassian.plugin.jslibs:backbone.paginator-2.0.2-factory","jira.webresources:backbone-paginator","jira.webresources:backbone-queryparams","jira.webresources:project-type-keys","com.atlassian.plugin.jslibs:marionette-1.6.1-factory","jira.webresources:marionette","jira.webresources:navigation-utils","jira.webresources:pagination-view","jira.webresources:browseprojects","jira.webresources:calendar","jira.webresources:group-label-lozenge","jira.webresources:ie-imitation-placeholder","jira.webresources:jira-project-issuetype-fields","jira.webresources:jira-fields","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + {"id":"com.atlassian.jira.jira-projects-issue-navigator:sidebar-issue-navigator"} = @@ -6085,9 +5785,9 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST + + ${application.postfix}/rest/projects/1.0/project/${issue_project_key}/lastVisited + PUT true false true @@ -6097,11 +5797,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + */* X-Requested-With @@ -6111,39 +5811,105 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + - + 1 false 1 - ${perc_view_kanban_board} + ${perc_browse_projects} - + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + + + false + import java.util.Random; + +Random rand = new Random(); +int project_pages = Integer.parseInt(props.get("project_pages")); +int random_page = rand.nextInt(project_pages) + 1; +vars.put("random_page", String.valueOf(random_page)); + + + false true - + - + false - rapidView - ${kanban_board_id} + selectedCategory + all + = + true + + + false + selectedProjectType + all + = + true + + + false + page + ${random_page} = true @@ -6152,8 +5918,8 @@ vars.put("random_page", String.valueOf(random_page)); - - ${application.postfix}/secure/RapidBoard.jspa + UTF-8 + ${application.postfix}/secure/BrowseProjects.jspa GET true false @@ -6185,51 +5951,24 @@ vars.put("random_page", String.valueOf(random_page)); - - false - x_project_key - \["project-key"\]="\\\"(.+?)\\\" - $1$ - NOT FOUND - 1 - - - - false - x_project_id - \["project-id"\]=\"(.+?)\" - $1$ - NOT FOUND - 1 - - - - false - x_project_plan - com.pyxis.greenhopper.jira:project-sidebar-(.+?)-(.+?)\\\\\\" - $2$ - NOT FOUND - 1 - - - - - "{\"currentViewConfig\":{\"id\":${kanban_board_id},\" - - - Assertion.response_data - false - 16 - + + + WRM._unparsedData["com.atlassian.jira.project.browse:projects"]=" + + + Assertion.response_data + false + 16 + - + true false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts"],"xr":[]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","atl.general","jira.global"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers"]} = @@ -6249,11 +5988,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6263,25 +6002,17 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["com.pyxis.greenhopper.jira:gh-rapid-inline-editable"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment"]} + {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","atl.general","jira.global","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","jira.webresources:calendar-lib","jira.webresources:autocomplete","jira.webresources:groupbrowser","jira.webresources:group-pickers","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","com.atlassian.plugin.jslibs:underscore-1.8.3","com.atlassian.plugin.jslibs:backbone-1.3.3-factory","jira.webresources:backbone-1.3.3","com.atlassian.plugin.jslibs:backbone.paginator-2.0.2-factory","jira.webresources:backbone-paginator","com.atlassian.plugin.jslibs:backbone.radio-2.0.0-factory","jira.webresources:backbone.radio-2.0","com.atlassian.plugin.jslibs:marionette-4.1.2-factory","jira.webresources:marionette-4.1","com.atlassian.plugin.jslibs:marionette-1.6.1-factory","jira.webresources:marionette","jira.webresources:project-type-keys","com.atlassian.plugin.jslibs:marionette-3.1.0-factory","jira.webresources:marionette-3.1","jira.webresources:pagination-view","jira.webresources:navigation-utils","jira.webresources:empty-search-results","jira.webresources:browseprojects","jira.webresources:calendar","jira.webresources:group-label-lozenge","jira.webresources:jira-project-issuetype-fields","jira.webresources:jira-fields","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = @@ -6289,7 +6020,7 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -6301,11 +6032,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6315,25 +6046,17 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - + true false - {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-955},{"name":"projects.browse.view","properties":{},"timeDelta":-940}] = @@ -6341,8 +6064,8 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + + ${application.postfix}/rest/analytics/1.0/publish/bulk POST true false @@ -6353,11 +6076,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6367,35 +6090,90 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_view_kanban_board} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + false + true + + + + - + false - {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + rapidView + ${kanban_board_id} = + true - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST + + ${application.postfix}/secure/RapidBoard.jspa + GET true false true @@ -6411,13 +6189,9 @@ vars.put("random_page", String.valueOf(random_page)); Accept-Language en-US,en;q=0.5 - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json + + Upgrade-Insecure-Requests + 1 Accept-Encoding @@ -6425,19 +6199,56 @@ vars.put("random_page", String.valueOf(random_page)); Accept - application/json, text/javascript, */*; q=0.01 + text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + + false + x_project_key + \["project-key"\]="\\\"(.+?)\\\" + $1$ + NOT FOUND + 1 + + + + false + x_project_id + \["project-id"\]=\"(.+?)\" + $1$ + NOT FOUND + 1 + + + + false + x_project_plan + com.pyxis.greenhopper.jira:project-sidebar-(.+?)-(.+?)\\\\\\" + $2$ + NOT FOUND + 1 + + + + + "{\"currentViewConfig\":{\"id\":${kanban_board_id},\" + + + Assertion.response_data + false + 16 + + - + true false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":[],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:8"],"xc":["_super","gh-rapid-work","jira.project.sidebar","atl.general","jira.global","com.atlassian.jira.projects.sidebar.init","greenhopper-rapid-non-gadget","gh-rapid-charts"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -6445,7 +6256,7 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -6457,11 +6268,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6471,35 +6282,235 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate + + + + + + + + + false + returnDefaultBoard + true + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/greenhopper/1.0/xboard/config.json + GET + true + false + true + false + + + + + + + + + X-Atlassian-GreenHopper-Gadget + false Accept application/json, text/javascript, */*; q=0.01 + + X-Requested-With + XMLHttpRequest + + + X-AUSERNAME + performance_aawodbwaeo + + + Content-Type + application/json + - - ${__groovy("${x_project_key}" != "NOT FOUND")} - false - true - - - - - - - false - _ - ${__time(,)} - = - true - - + + true + + + + false + {"r":["com.atlassian.whisper.atlassian-whisper-plugin:atlassian-whisper-hermes"],"c":["browser-metrics-plugin.contrib","jira.webresources:mentions-feature","jira.project.sidebar","jira.project.sidebar.software"],"xc":["_super","gh-rapid-work","jira.project.sidebar","atl.general","jira.global","com.atlassian.jira.projects.sidebar.init","greenhopper-rapid-non-gadget","gh-rapid-charts","com.atlassian.jira.plugins.jira-development-integration-plugin:8","gh-rapid-exception","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + = + + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + + + false + returnDefaultBoard + true + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/greenhopper/1.0/xboard/config.json + GET + true + false + true + false + + + + + + + + + X-Atlassian-GreenHopper-Gadget + false + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + X-AUSERNAME + performance_aawodbwaeo + + + Content-Type + application/json + + + + + + + true + + + + false + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-646},{"name":"bigpipe.sidebar.render.success","properties":{},"timeDelta":-502},{"name":"RapidBoard.show","timeDelta":-442}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + ${__groovy(vars.get("x_project_key") != "NOT FOUND")} + false + true + + + + + + + false + _ + ${__time(,)} + = + true + + @@ -6546,7 +6557,102 @@ vars.put("random_page", String.valueOf(random_page)); - + + true + + + + false + {"id":"com.pyxis.greenhopper.jira:project-sidebar-work-kanban"} + = + + + + + + + + ${application.postfix}/rest/projects/1.0/project/${x_project_key}/lastVisited + PUT + true + false + true + false + + + + + + + + + Accept + */* + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + true + + + + false + {"r":[],"c":["gh-rapid-work"],"xc":["_super","gh-rapid-work","jira.project.sidebar","atl.general","jira.global","com.atlassian.jira.projects.sidebar.init","greenhopper-rapid-non-gadget","gh-rapid-charts","com.atlassian.jira.plugins.jira-development-integration-plugin:8","gh-rapid-exception","atl.global","jira.global.look-and-feel","browser-metrics-plugin.contrib"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init","com.atlassian.auiplugin:split_aui.component.message","com.atlassian.plugin.jslibs:moment-2.6.0","com.atlassian.whisper.atlassian-whisper-plugin:atlassian-whisper-messages","com.atlassian.whisper.atlassian-whisper-plugin:atlassian-whisper-hermes"]} + = + + + + + + + + ${application.postfix}/rest/webResources/1.0/resources + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + ${__groovy(vars.get("x_project_key") == "NOT FOUND")} + false + true + + + @@ -6563,13 +6669,6 @@ vars.put("random_page", String.valueOf(random_page)); = true - - false - selectedProjectKey - ${x_project_key} - = - true - false _ @@ -6628,7 +6727,7 @@ vars.put("random_page", String.valueOf(random_page)); - + @@ -6638,20 +6737,6 @@ vars.put("random_page", String.valueOf(random_page)); = true - - false - selectedProjectKey - ${x_project_key} - = - true - - - false - _ - ${__time(,)} - = - true - @@ -6703,27 +6788,13 @@ vars.put("random_page", String.valueOf(random_page)); - - - ${__groovy("${x_project_key}" == "NOT FOUND")} - false - true - - - + - - false - mode - work - = - true - - + false - rapidViewId - ${kanban_board_id} + projectId + ${project_id} = true @@ -6740,7 +6811,7 @@ vars.put("random_page", String.valueOf(random_page)); - ${application.postfix}/rest/greenhopper/1.0/xboard/toolSections + ${application.postfix}/rest/greenhopper/1.0/xboard/work/transitions.json GET true false @@ -6751,49 +6822,40 @@ vars.put("random_page", String.valueOf(random_page)); - + X-Atlassian-GreenHopper-Gadget false - - Accept-Language - en-US,en;q=0.5 - - - X-AUSERNAME - admin + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With XMLHttpRequest + + X-AUSERNAME + performance_aawodbwaeo + Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + true + - + false - rapidViewId - ${kanban_board_id} + [{"name":"RapidBoard.show.kanban","properties":{"boardId":15},"timeDelta":-5067},{"name":"jira.project.centric.navigation.sidebar.load.project","properties":{},"timeDelta":-4750},{"name":"whisper.hermes.messages.load.success","properties":{"messageCount":1,"userLocale":"en_US","userLanguage":"en","invalidLanguageCount":0,"initTime":3168,"initState":"complete"},"timeDelta":-4633},{"name":"jira.project.sidebar.sprint.select","properties":{"sprintId":0,"initialLoad":true},"timeDelta":-4222},{"name":"jira-software.kanban.work.view","properties":{"boardId":15,"issuesCount":219,"isBacklogEnabled":false,"epicsPanelEnabled":true,"firstColumnIssueCount":219,"fastKanbanEnabled":true,"fastKanbanCutoff":"-2w","epicsCount":36},"timeDelta":-4057},{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","firstPaint":"1878","isInitial":"true","journeyId":"68d353c0-5dc0-449b-a7ce-f348f8a8372b","key":"jira.agile.work","navigationType":"0","readyForUser":"3805","redirectCount":"0","resourceLoadedEnd":"1670","resourceLoadedStart":403.6950000008801,"threshold":"1000","unloadEventStart":"354","unloadEventEnd":"354","fetchStart":"2","domainLookupStart":"46","domainLookupEnd":"47","connectStart":"47","connectEnd":"170","requestStart":"171","responseStart":"347","responseEnd":"471","domLoading":"363","domInteractive":"1965","domContentLoadedEventStart":"1965","domContentLoadedEventEnd":"2074","domComplete":"2413","loadEventStart":"2414","loadEventEnd":"2419","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36","correlationId":"ae4d2d5aebb38b","effectiveType":"4g","downlink":4.65,"rtt":150,"serverDuration":"69","dbReadsTimeInMs":"1","dbConnsTimeInMs":"28","applicationHash":"e00b0abe8f1b188f0bb304a4c3b424f1180ba767","resourceTiming":"{\"â˜Â \":[\"2,b7,iu,f6,bj,b7,,b7,b7,b7\",\"2,b8,qu,gu,d4,b8,,b8,b8,b8\",\"2,b8,jy,ji,fk,fk,,c4,c4,c4\",\"2,b8,k1,js,fn,fm,,c2,c2,c2\",\"3,b9,11x,jm,fo,fo,,c5,c5,c5\",\"3,b9,121,np,iv,b9,,b9,b9,b9\",\"3,ba,om,o9,k7,ba,,ba,ba,ba\",\"3,ba,oj,o1,k9,ba,,ba,ba,ba\",\"3,bd,ol,o5,ka,bd,,bd,bd,bd\",\"3,be,tc,sz,ot,be,,be,be,be\",\"3,bf,td,t4,ov,bf,,bf,bf,bf\",\"2,bf,jw,jf,fo,fm,,c3,c3,c3\",\"3,bf,te,t9,ov,bf,,bf,bf,bf\",\"3,bg,163,162,12k,bg,,bg,bg,bg\",\"3,ej,1ae,1ac,16b,ej,,ej,ej,ej\",\"5,17q,1bv,1bt,17w,17q,,17q,17q,17q\",\"4,1eo,1k4,1k1,1gh,1eo,,1eo,1eo,1eo\",\"5,1ke,1oq,1om,1kl,1ke,,1ke,1ke,1ke\",\"2,1me,1qp,1ql,1mq,1me,,1me,1me,1me\",\"3,1mh,1qn,1qf,1mr,1mh,,1mh,1mh,1mh\",\"5,1rb,1vm,1vl,1rh,1rb,,1rb,1rb,1rb\",\"3,1vp,1zs,1zo,1w2,1vp,,1vp,1vp,1vp\",\"3,1vq,203,1zz,1w9,1vq,,1vq,1vq,1vq\",\"3,1vt,207,200,1wc,1vt,,1vt,1vt,1vt\",\"3,1vw,203,1zv,1wd,1vw,,1vw,1vw,1vw\",\"3,1w1,2am,204,1wg,1w1,,1w1,1w1,1w1\",\"5,1yr,22x,22q,1yu,1yr,,1yr,1yr,1yr\",\"5,221,25p,25n,226,221,,221,221,221\",\"5,23y,28n,28i,24v,23y,,23y,23y,23y\",\"5,2cw,2gu,2gr,2d2,2cw,,2cw,2cw,2cw\",\"5,2cy,2hb,2h6,2d3,2cy,,2cy,2cy,2cy\",\"5,2jl,2ng,2nf,2jv,2jl,,2jl,2jl,2jl\",\"5,2kx,2q9,2q4,2l1,2kx,,2kx,2kx,2kx\"]}","mark.bigPipe.sidebar-id.start":"[1930]","mark.bigPipe.sidebar-id.end":"[1935]","userTimingRaw":"{\"marks\":{\"bigPipe.sidebar-id.start\":[1930],\"bigPipe.sidebar-id.end\":[1935]},\"measures\":{}}","experiments":"[]","serverHeadDuration":"undefined","connectionEffectiveType":"4g","connectionDownlink":4.65,"connectionRTT":150},"timeDelta":-3990}] = - true @@ -6801,8 +6863,8 @@ vars.put("random_page", String.valueOf(random_page)); - ${application.postfix}/rest/greenhopper/1.0/xboard/work/allData.json - GET + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST true false true @@ -6812,19 +6874,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - X-Atlassian-GreenHopper-Gadget - false - - - Accept-Language - en-US,en;q=0.5 - - - X-AUSERNAME - admin + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -6834,136 +6888,25 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - - - - false - {"r":["com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter"],"c":["jira.rich.editor"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init","com.atlassian.jira.jira-header-plugin:newsletter-signup-tip","com.atlassian.plugin.jslibs:underscore-1.8.3"]} - = - - - - - - - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - - - true - - - - false - {"r":[],"c":["jira.project.sidebar","jira.project.sidebar.software"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","com.atlassian.jira.plugins.jira-development-integration-plugin:0","jira.rich.editor"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init","com.atlassian.jira.jira-header-plugin:newsletter-signup-tip","com.atlassian.plugin.jslibs:underscore-1.8.3","com.atlassian.jira.plugins.jira-editor-plugin:tinymce","com.atlassian.jira.plugins.jira-editor-plugin:schema-builder","com.atlassian.jira.plugins.jira-editor-plugin:schema","com.atlassian.jira.plugins.jira-editor-plugin:i18n","com.atlassian.jira.plugins.jira-editor-plugin:wrm","com.atlassian.jira.plugins.jira-editor-plugin:converter-util","com.atlassian.jira.plugins.jira-editor-plugin:context-detector","com.atlassian.jira.plugins.jira-editor-plugin:context-manager","com.atlassian.jira.plugins.jira-editor-plugin:selection","com.atlassian.jira.plugins.jira-editor-plugin:instance","com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:renderer","com.atlassian.jira.plugins.jira-editor-plugin:mentions","com.atlassian.jira.plugins.jira-editor-plugin:mentions-plugin","com.atlassian.jira.plugins.jira-editor-plugin:polyfil-string-ends-with","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter"]} - = - - - - - - - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - - ${__groovy("${x_project_key}" != "NOT FOUND")} + ${__groovy(vars.get("x_project_key") != "NOT FOUND")} false true - + true false - {"id":"com.pyxis.greenhopper.jira:project-sidebar-work-${x_project_plan}"} + {"id":"com.pyxis.greenhopper.jira:project-sidebar-work-${x_project_plan}"} + = @@ -7011,6 +6954,38 @@ vars.put("random_page", String.valueOf(random_page)); + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -7019,12 +6994,28 @@ vars.put("random_page", String.valueOf(random_page)); ${perc_view_scrum_board} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true - + @@ -7110,14 +7101,22 @@ vars.put("random_page", String.valueOf(random_page)); - - true - + + - + + false + rapidViewId + ${scrum_board_id} + = + true + + false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts"],"xr":[]} + selectedProjectKey + ${project_key} = + true @@ -7125,8 +7124,8 @@ vars.put("random_page", String.valueOf(random_page)); - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/greenhopper/1.0/xboard/work/allData.json + GET true false true @@ -7136,39 +7135,23 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - Accept - application/json, text/javascript, */*; q=0.01 + */* - + true false - {"r":[],"c":["com.pyxis.greenhopper.jira:gh-rapid-inline-editable"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment"]} + {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","gh-rapid-work","jira.project.sidebar","atl.general","jira.global","com.atlassian.jira.projects.sidebar.init","greenhopper-rapid-non-gadget","gh-rapid-charts"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -7176,7 +7159,7 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -7188,11 +7171,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -7202,66 +7185,6 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - - - true - - - - false - {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} - = - - - - - - - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - @@ -7272,7 +7195,7 @@ vars.put("random_page", String.valueOf(random_page)); false - {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:8"],"xc":["_super","gh-rapid-work","jira.project.sidebar","atl.general","jira.global","com.atlassian.jira.projects.sidebar.init","greenhopper-rapid-non-gadget","gh-rapid-charts"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -7280,7 +7203,7 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -7292,64 +7215,12 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - Accept application/json, text/javascript, */*; q=0.01 - - - - - - true - - - - false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":[],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} - = - - - - - - - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - X-Requested-With XMLHttpRequest @@ -7358,25 +7229,17 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - ${__groovy("${x_project_key}" != "NOT FOUND")} + ${__groovy(vars.get("x_project_key") != "NOT FOUND")} false true - + @@ -7592,7 +7455,7 @@ vars.put("random_page", String.valueOf(random_page)); - ${__groovy("${x_project_key}" == "NOT FOUND")} + ${__groovy(vars.get("x_project_key") == "NOT FOUND")} false true @@ -7839,18 +7702,19 @@ vars.put("random_page", String.valueOf(random_page)); - ${__groovy("${x_project_key}" != "NOT FOUND")} + ${__groovy(vars.get("x_project_key") != "NOT FOUND")} false true - + true false - {"id":"com.pyxis.greenhopper.jira:project-sidebar-work-${x_project_plan}"} + {"id":"com.pyxis.greenhopper.jira:project-sidebar-work-${x_project_plan}"} + = @@ -7897,6 +7761,82 @@ vars.put("random_page", String.valueOf(random_page)); + + true + + + + false + [{"name":"jira.project.centric.navigation.sidebar.load.project","properties":{},"timeDelta":-4894},{"name":"jira.project.sidebar.sprint.select","properties":{"sprintId":"all","initialLoad":true},"timeDelta":-4783},{"name":"jira-software.scrum.work.view","properties":{"boardId":55,"issuesCount":103,"epicsCount":73},"timeDelta":-4684},{"name":"whisper.hermes.messages.load.success","properties":{"messageCount":1,"userLocale":"en_US","userLanguage":"en","invalidLanguageCount":0,"initTime":3728,"initState":"interactive"},"timeDelta":-4273},{"name":"browser.metrics.navigation","properties":{"apdex":"0.5","firstPaint":"1942","isInitial":"true","journeyId":"9fa2b66b-0b68-4611-8c52-ff43bca9d45d","key":"jira.agile.work","navigationType":"1","readyForUser":"3379","redirectCount":"0","resourceLoadedEnd":"1548","resourceLoadedStart":254.7550000017509,"threshold":"1000","unloadEventStart":"204","unloadEventEnd":"204","fetchStart":"6","domainLookupStart":"6","domainLookupEnd":"6","connectStart":"6","connectEnd":"6","requestStart":"19","responseStart":"188","responseEnd":"326","domLoading":"216","domInteractive":"2044","domContentLoadedEventStart":"2044","domContentLoadedEventEnd":"2193","domComplete":"4094","loadEventStart":"4095","loadEventEnd":"4100","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36","correlationId":"d21da59bbbebbb","effectiveType":"4g","downlink":4.1,"rtt":100,"serverDuration":"64","dbConnsTimeInMs":"23","applicationHash":"e00b0abe8f1b188f0bb304a4c3b424f1180ba767","resourceTiming":"{\"â˜Â \":[\"2,72,es,ba,7d,72,,72,72,72\",\"2,73,kw,d4,94,73,,73,73,73\",\"2,73,el,eg,ax,ax,,7h,7h,7h\",\"2,73,em,ek,ay,ax,,7h,7h,7h\",\"3,74,to,f0,be,bd,,7i,7i,7i\",\"3,74,170,ia,en,74,,74,74,74\",\"3,74,ie,i7,en,74,,74,74,74\",\"3,74,ig,ic,es,74,,74,74,74\",\"3,75,is,in,ez,75,,75,75,75\",\"3,75,mb,lz,ii,75,,75,75,75\",\"3,75,m7,m2,ii,75,,75,75,75\",\"2,76,ez,ex,bd,b9,,7h,7h,7h\",\"3,76,mi,me,is,76,,76,76,76\",\"3,76,127,126,ut,76,,76,76,76\",\"-1,9m,pg,pa,kx,9m,,9m,9m,9m\",\"3,9w,15y,15v,12a,9w,,9w,9w,9w\",\"5,10d,15b,159,10i,10d,,10d,10d,10d\",\"5,19o,1dz,1dx,19r,19o,,19o,19o,19o\",\"4,1go,1mf,1md,1i5,1go,,1go,1go,1go\",\"5,1ny,1s0,1rz,1o2,1ny,,1ny,1ny,1ny\",\"2,1po,1tg,1tf,1pq,1po,,1po,1po,1po\",\"3,1pp,1tg,1td,1pr,1pp,,1pp,1pp,1pp\",\"5,1ts,1xx,1xw,1tx,1ts,,1ts,1ts,1ts\",\"3,1y3,21t,21p,1y5,1y3,,1y3,1y3,1y3\",\"3,1y4,222,21v,1y8,1y4,,1y4,1y4,1y4\",\"3,1y5,21x,21r,1y8,1y5,,1y5,1y5,1y5\",\"3,1y7,221,21z,1ya,1y7,,1y7,1y7,1y7\",\"3,1y8,2ci,21x,1ya,1y8,,1y8,1y8,1y8\",\"5,25b,2b2,2ax,25r,25b,,25b,25b,25b\",\"5,2eq,2it,2is,2f2,2eq,,2eq,2eq,2eq\"]}","mark.bigPipe.sidebar-id.start":"[1993]","mark.bigPipe.sidebar-id.end":"[1995]","userTimingRaw":"{\"marks\":{\"bigPipe.sidebar-id.start\":[1993],\"bigPipe.sidebar-id.end\":[1995]},\"measures\":{}}","experiments":"[]","dbReadsTimeInMs":"","serverHeadDuration":"undefined","connectionEffectiveType":"4g","connectionDownlink":4.1,"connectionRTT":100},"timeDelta":-3830}] + = + + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + + + Accept + application/json, text/javascript, */*; q=0.01 + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + @@ -7906,6 +7846,22 @@ vars.put("random_page", String.valueOf(random_page)); ${perc_view_backlog} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -8004,23 +7960,31 @@ vars.put("random_page", String.valueOf(random_page)); - - true - + + - + + false + rapidViewId + ${scrum_board_id} + = + true + + false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts"],"xr":[]} + selectedProjectKey + ${project_key} = + true - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST + + ${application.postfix}/rest/greenhopper/1.0/xboard/plan/backlog/data.json + GET true false true @@ -8030,27 +7994,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - Accept - application/json, text/javascript, */*; q=0.01 + */* @@ -8062,7 +8010,7 @@ vars.put("random_page", String.valueOf(random_page)); false - {"r":[],"c":["com.pyxis.greenhopper.jira:gh-rapid-inline-editable"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment"]} + {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","gh-rapid-plan","jira.project.sidebar","jira.global","atl.general","com.atlassian.jira.projects.sidebar.init","greenhopper-rapid-non-gadget","gh-rapid-charts"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -8070,7 +8018,7 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -8082,11 +8030,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -8096,14 +8044,6 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - @@ -8114,7 +8054,7 @@ vars.put("random_page", String.valueOf(random_page)); false - {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + {"r":[],"c":["com.atlassian.jira.plugins.jira-development-integration-plugin:8","browser-metrics-plugin.contrib"],"xc":["_super","gh-rapid-plan","jira.project.sidebar","jira.global","atl.general","com.atlassian.jira.projects.sidebar.init","greenhopper-rapid-non-gadget","gh-rapid-charts","gh-rapid-exception","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-localisation-moment"]} = @@ -8122,7 +8062,7 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -8134,11 +8074,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -8148,129 +8088,17 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - - - true - - - - false - {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} - = - - - - - - - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - - - true - - - - false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":[],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} - = - - - - - - - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - ${__groovy("${x_project_key}" != "NOT FOUND")} + ${__groovy(vars.get("x_project_key") != "NOT FOUND")} false true - + @@ -8540,36 +8368,14 @@ vars.put("random_page", String.valueOf(random_page)); - - - ${__groovy("${x_project_key}" == "NOT FOUND")} - false - true - - - - + + true + - - false - mode - plan - = - true - - - false - rapidViewId - ${scrum_board_id} - = - true - - + false - _ - ${__time(,)} + {"r":["com.atlassian.whisper.atlassian-whisper-plugin:atlassian-whisper-hermes"],"c":["jira.project.sidebar","jira.project.sidebar.software","gh-rapid-plan"],"xc":["_super","gh-rapid-plan","jira.project.sidebar","jira.global","atl.general","com.atlassian.jira.projects.sidebar.init","greenhopper-rapid-non-gadget","gh-rapid-charts","gh-rapid-exception","atl.global","jira.global.look-and-feel","com.atlassian.jira.plugins.jira-development-integration-plugin:8","browser-metrics-plugin.contrib"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = - true @@ -8577,8 +8383,8 @@ vars.put("random_page", String.valueOf(random_page)); - ${application.postfix}/rest/greenhopper/1.0/xboard/toolSections - GET + ${application.postfix}/rest/webResources/1.0/resources + POST true false true @@ -8588,19 +8394,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - X-Atlassian-GreenHopper-Gadget - false - - - Accept-Language - en-US,en;q=0.5 - - - X-AUSERNAME - admin + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -8610,36 +8408,27 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + true + - + false - rapidViewId - ${scrum_board_id} + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-804},{"name":"RapidBoard.show","timeDelta":-782},{"name":"RapidBoard.show.scrum","properties":{"boardId":55},"timeDelta":-716},{"name":"bigpipe.sidebar.render.success","properties":{},"timeDelta":-519},{"name":"atst.healthcheck.sensors.page-protocols","properties":{"resourceProtocols":"http/1.1","navigationProtocol":"http/1.1","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"},"timeDelta":-503}] = - true - UTF-8 - ${application.postfix}/rest/greenhopper/1.0/xboard/plan/backlog/data.json - GET + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST true false true @@ -8649,19 +8438,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - X-Atlassian-GreenHopper-Gadget - false - - - Accept-Language - en-US,en;q=0.5 - - - X-AUSERNAME - admin + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -8671,122 +8452,197 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate + + + + + + true + + + + false + [{"name":"jira.project.centric.navigation.sidebar.load.project","properties":{},"timeDelta":-5560},{"name":"jira-software.scrum.plan.view","properties":{"boardType":"scrum","backlogIssueCount":265,"boardId":55,"sprintsOnBoard":2,"activeSprints":2,"futureSprints":0,"totalIssueCount":310,"epicsCount":-1},"timeDelta":-5196},{"name":"browser.metrics.navigation","properties":{"apdex":"0","firstPaint":"2136","isInitial":"true","journeyId":"9fa2b66b-0b68-4611-8c52-ff43bca9d45d","key":"jira.agile.plan","navigationType":"0","readyForUser":"4169","redirectCount":"0","resourceLoadedEnd":"1769","resourceLoadedStart":437.9400000034366,"threshold":"1000","unloadEventStart":"360","unloadEventEnd":"361","fetchStart":"4","domainLookupStart":"50","domainLookupEnd":"50","connectStart":"50","connectEnd":"173","requestStart":"174","responseStart":"338","responseEnd":"472","domLoading":"389","domInteractive":"2331","domContentLoadedEventStart":"2331","domContentLoadedEventEnd":"2587","domComplete":"3057","loadEventStart":"3057","loadEventEnd":"3071","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36","correlationId":"f6c8b8956c584e","effectiveType":"4g","downlink":3.3,"rtt":100,"serverDuration":"58","dbConnsTimeInMs":"19","applicationHash":"e00b0abe8f1b188f0bb304a4c3b424f1180ba767","resourceTiming":"{\"â˜Â \":[\"2,c5,kg,gy,d6,c5,,c5,c5,c5\",\"2,c6,on,h6,d9,c6,,c6,c6,c6\",\"2,c6,kb,k4,gn,gm,,d7,d7,d7\",\"2,c6,k9,k6,gn,gm,,d7,d7,d7\",\"3,c7,z7,kt,h9,gx,,d9,d9,d8\",\"3,c7,18u,o1,ke,c7,,c7,c7,c7\",\"3,c8,o6,nw,kf,c8,,c8,c8,c8\",\"3,c9,o3,nz,kg,c9,,c9,c9,c9\",\"3,cb,o4,o2,kh,cb,,cb,cb,cb\",\"3,cc,rv,rs,o7,cc,,cc,cc,cc\",\"3,cd,s8,s2,od,cd,,cd,cd,cd\",\"2,ce,ka,k7,go,go,,d8,d8,d8\",\"3,ce,s9,s7,og,ce,,ce,ce,ce\",\"3,cf,146,140,103,cf,,cf,cf,cf\",\"-1,fu,tt,tq,op,fu,,fu,fu,fu\",\"3,g3,1d5,1cx,19d,g3,,g3,g3,g3\",\"5,193,1d7,1d3,19c,193,,193,193,193\",\"4,1ko,1re,1rc,1nv,1ko,,1ko,1ko,1ko\",\"5,1mz,1r3,1r1,1nc,1mz,,1mz,1mz,1mz\",\"5,1ya,22h,22f,1yj,1ya,,1ya,1ya,1ya\",\"2,20s,24r,24n,212,20s,,20s,20s,20s\",\"3,212,250,24y,21b,212,,212,212,212\",\"3,217,258,253,21e,217,,217,217,217\",\"5,2c7,2gg,2gd,2ci,2c7,,2c7,2c7,2c7\",\"3,2h9,2l2,2ky,2hf,2h9,,2h9,2h9,2h9\",\"3,2hb,2lh,2l8,2hm,2hb,,2hb,2hb,2hb\",\"3,2hd,2le,2l4,2ho,2hd,,2hd,2hd,2hd\",\"3,2hf,2lt,2l6,2ho,2hf,,2hf,2hf,2hf\",\"5,2ic,2my,2mw,2je,2ic,,2ic,2ic,2ic\",\"5,2od,2s9,2s6,2oh,2od,,2od,2od,2od\"]}","mark.bigPipe.sidebar-id.start":"[2251]","mark.bigPipe.sidebar-id.end":"[2257]","userTimingRaw":"{\"marks\":{\"bigPipe.sidebar-id.start\":[2251],\"bigPipe.sidebar-id.end\":[2257]},\"measures\":{}}","experiments":"[]","dbReadsTimeInMs":"","serverHeadDuration":"undefined","connectionEffectiveType":"4g","connectionDownlink":3.3,"connectionRTT":100},"timeDelta":-4821},{"name":"whisper.hermes.messages.load.success","properties":{"messageCount":1,"userLocale":"en_US","userLanguage":"en","invalidLanguageCount":0,"initTime":4422,"initState":"complete"},"timeDelta":-4593}] + = + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + Accept application/json, text/javascript, */*; q=0.01 + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + - - true - - - - false - {"r":["com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter"],"c":["jira.rich.editor"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","com.atlassian.jira.plugins.jira-development-integration-plugin:0"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init","com.atlassian.jira.jira-header-plugin:newsletter-signup-tip","com.atlassian.plugin.jslibs:underscore-1.8.3"]} - = - - - - - - - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST - true - false - true - false - - - - - - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - - - - true - - - - false - {"r":[],"c":["jira.project.sidebar","jira.project.sidebar.software"],"xc":["_super","gh-rapid-exception","greenhopper-rapid-non-gadget","atl.general","gh-rapid","jira.project.sidebar","com.atlassian.jira.projects.sidebar.init","jira.global","jira.general","gh-rapid-charts","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","com.atlassian.jira.plugins.jira-development-integration-plugin:0","jira.rich.editor"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init","com.atlassian.jira.jira-header-plugin:newsletter-signup-tip","com.atlassian.plugin.jslibs:underscore-1.8.3","com.atlassian.jira.plugins.jira-editor-plugin:tinymce","com.atlassian.jira.plugins.jira-editor-plugin:schema-builder","com.atlassian.jira.plugins.jira-editor-plugin:schema","com.atlassian.jira.plugins.jira-editor-plugin:i18n","com.atlassian.jira.plugins.jira-editor-plugin:wrm","com.atlassian.jira.plugins.jira-editor-plugin:converter-util","com.atlassian.jira.plugins.jira-editor-plugin:context-detector","com.atlassian.jira.plugins.jira-editor-plugin:context-manager","com.atlassian.jira.plugins.jira-editor-plugin:selection","com.atlassian.jira.plugins.jira-editor-plugin:instance","com.atlassian.jira.plugins.jira-editor-plugin:api","com.atlassian.jira.plugins.jira-editor-plugin:renderer","com.atlassian.jira.plugins.jira-editor-plugin:mentions","com.atlassian.jira.plugins.jira-editor-plugin:mentions-plugin","com.atlassian.jira.plugins.jira-editor-plugin:polyfil-string-ends-with","com.atlassian.jira.plugins.jira-editor-plugin:resources","com.atlassian.jira.plugins.jira-editor-plugin:converter"]} - = - - - - - - - UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST - true - false - true - false - - - - + + ${__groovy(vars.get("x_project_key") == "NOT FOUND")} + false + true + - - - - Accept-Language - en-US,en;q=0.5 - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - - + + + + + false + mode + plan + = + true + + + false + rapidViewId + ${scrum_board_id} + = + true + + + false + _ + ${__time(,)} + = + true + + + + + + + + ${application.postfix}/rest/greenhopper/1.0/xboard/toolSections + GET + true + false + true + false + + + + + + + + + X-Atlassian-GreenHopper-Gadget + false + + + Accept-Language + en-US,en;q=0.5 + + + X-AUSERNAME + admin + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + Accept-Encoding + gzip, deflate + + + Accept + application/json, text/javascript, */*; q=0.01 + + + + + + + + + + false + rapidViewId + ${scrum_board_id} + = + true + + + + + + + UTF-8 + ${application.postfix}/rest/greenhopper/1.0/xboard/plan/backlog/data.json + GET + true + false + true + false + + + + + + + + + X-Atlassian-GreenHopper-Gadget + false + + + Accept-Language + en-US,en;q=0.5 + + + X-AUSERNAME + admin + + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + Accept-Encoding + gzip, deflate + + + Accept + application/json, text/javascript, */*; q=0.01 + + + + + @@ -8857,18 +8713,19 @@ vars.put("random_page", String.valueOf(random_page)); - ${__groovy("${x_project_key}" != "NOT FOUND")} + ${__groovy(vars.get("x_project_key") != "NOT FOUND")} false true - + true false - {"id":"com.pyxis.greenhopper.jira:project-sidebar-work-${x_project_plan}"} + {"id":"com.pyxis.greenhopper.jira:project-sidebar-work-${x_project_plan}"} + = @@ -8916,6 +8773,38 @@ vars.put("random_page", String.valueOf(random_page)); + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -8924,6 +8813,22 @@ vars.put("random_page", String.valueOf(random_page)); ${perc_browse_boards} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -8976,7 +8881,7 @@ vars.put("random_page", String.valueOf(random_page)); false - {"r":[],"c":["com.pyxis.greenhopper.jira:gh-rapid-inline-editable"],"xc":["_super","gh-rapid-exception","gh-manage-boards","jira.global","atl.general","greenhopper-rapid-non-gadget","jira.general"],"xr":["com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static"]} + {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","gh-rapid-exception","gh-manage-boards","jira.global","atl.general","greenhopper-rapid-non-gadget"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component"]} = @@ -8984,7 +8889,7 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -8996,11 +8901,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -9010,26 +8915,19 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - true - + + - + false - {"r":[],"c":["browser-metrics-plugin.contrib"],"xc":["_super","gh-rapid-exception","gh-manage-boards","jira.global","atl.general","greenhopper-rapid-non-gadget","jira.general","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment"]} + _ + ${__time(,)} = + true @@ -9037,8 +8935,8 @@ vars.put("random_page", String.valueOf(random_page)); UTF-8 - ${application.postfix}/rest/webResources/1.0/resources - POST + ${application.postfix}/rest/greenhopper/1.0/rapidviews/viewsData + GET true false true @@ -9050,10 +8948,18 @@ vars.put("random_page", String.valueOf(random_page)); + + X-Atlassian-GreenHopper-Gadget + false + Accept-Language en-US,en;q=0.5 + + X-AUSERNAME + admin + X-Requested-With XMLHttpRequest @@ -9080,7 +8986,7 @@ vars.put("random_page", String.valueOf(random_page)); false - {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","gh-rapid-exception","gh-manage-boards","jira.global","atl.general","greenhopper-rapid-non-gadget","jira.general","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","atl.global","jira.global.look-and-feel","browser-metrics-plugin.contrib"],"xr":["com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + {"r":[],"c":["jira.webresources:mentions-feature"],"xc":["_super","gh-rapid-exception","gh-manage-boards","jira.global","atl.general","greenhopper-rapid-non-gadget","browser-metrics-plugin.contrib","atl.global","jira.global.look-and-feel"],"xr":["com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} = @@ -9088,7 +8994,7 @@ vars.put("random_page", String.valueOf(random_page)); - UTF-8 + ${application.postfix}/rest/webResources/1.0/resources POST true @@ -9100,11 +9006,11 @@ vars.put("random_page", String.valueOf(random_page)); - + - - Accept-Language - en-US,en;q=0.5 + + Accept + application/json, text/javascript, */*; q=0.01 X-Requested-With @@ -9114,26 +9020,172 @@ vars.put("random_page", String.valueOf(random_page)); Content-Type application/json - - Accept-Encoding - gzip, deflate + + + + + + true + + + + false + [{"name":"quicksearch.enabled","properties":{},"timeDelta":-1025}] + = + + + + + + + ${application.postfix}/rest/analytics/1.0/publish/bulk + POST + true + false + true + false + + + + + + + Accept application/json, text/javascript, */*; q=0.01 - - - - - - true - - - + + X-Requested-With + XMLHttpRequest + + + Content-Type + application/json + + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hr").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + + + + 1 + false + 1 + ${perc_standalone_extension} + + + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + + + + + app_specific_username + admin + = + + + app_specific_password + admin + = + + + + + + + + + false + os_username + ${app_specific_username} + = + true + + + false + os_password + ${app_specific_password} + = + true + + + false + os_destination + + = + true + + + false + user_role + + = + true + + false - {"r":["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip"],"c":[],"xc":["_super","gh-rapid-exception","gh-manage-boards","jira.global","atl.general","greenhopper-rapid-non-gadget","jira.general","com.pyxis.greenhopper.jira:gh-rapid-inline-editable","atl.global","jira.global.look-and-feel","browser-metrics-plugin.contrib"],"xr":["com.atlassian.auiplugin:aui-labels","jira.webresources:global-static-adgs","jira.webresources:global-static","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-banner-component","com.atlassian.jira.jira-tzdetect-plugin:tzdetect-lib","jira.webresources:calendar-en","jira.webresources:calendar-localisation-moment","jira.webresources:bigpipe-js","jira.webresources:bigpipe-init"]} + atl_token + + = + true + + + true + login + Log In = + true @@ -9141,7 +9193,7 @@ vars.put("random_page", String.valueOf(random_page)); UTF-8 - ${application.postfix}/rest/webResources/1.0/resources + ${application.postfix}/login.jsp POST true false @@ -9150,6 +9202,7 @@ vars.put("random_page", String.valueOf(random_page)); + Detected the start of a redirect chain @@ -9158,43 +9211,52 @@ vars.put("random_page", String.valueOf(random_page)); Accept-Language en-US,en;q=0.5 - - X-Requested-With - XMLHttpRequest + + Pragma + no-cache + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 + + + Upgrade-Insecure-Requests + 1 Content-Type - application/json + application/x-www-form-urlencoded + + + Cache-Control + no-cache Accept-Encoding gzip, deflate - - Accept - application/json, text/javascript, */*; q=0.01 - + + groovy + + + true + vars.put("run_as_specific_user", "true") +prev.setIgnore() + + - + - - - false - _ - ${__time(,)} - = - true - - + - UTF-8 - ${application.postfix}/rest/greenhopper/1.0/rapidviews/viewsData + + ${application.postfix}/rest/api/2/myself GET true false @@ -9205,49 +9267,28 @@ vars.put("random_page", String.valueOf(random_page)); - - - - X-Atlassian-GreenHopper-Gadget - false - - - Accept-Language - en-US,en;q=0.5 - - - X-AUSERNAME - admin - - - X-Requested-With - XMLHttpRequest - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - Accept - application/json, text/javascript, */*; q=0.01 - - - + + groovy + + + true + import groovy.json.JsonSlurper; + +def slurper = new JsonSlurper() +response_data = slurper.parseText(prev.getResponseDataAsString()) + +if (response_data.name != vars.get("app_specific_username")) { + prev.setSuccessful(false) + prev.setResponseMessage("Login Failed: Your app_specific_username: '" + vars.get("app_specific_username") + "' or password is incorrect. Also, check the CAPTCHA for '" + vars.get("app_specific_username") + "' user.") + prev.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.BREAK_CURRENT_LOOP) +} else { + prev.setIgnore() +} + + - - - 1 - false - 1 - ${perc_standalone_extension} - - false true @@ -9347,24 +9388,171 @@ vars.put("random_page", String.valueOf(random_page)); - - - false - true - false - - - - 1 - 0 - 0 - - - - true - - - // concurrency + + ${run_as_specific_user} + false + true + + + + + + + false + os_username + ${username} + = + true + + + false + os_password + ${password} + = + true + + + false + os_destination + + = + true + + + false + user_role + + = + true + + + false + atl_token + + = + true + + + true + login + Log In + = + true + + + + + + + UTF-8 + ${application.postfix}/login.jsp + POST + true + false + true + false + + + + Detected the start of a redirect chain + + + + + + Accept-Language + en-US,en;q=0.5 + + + Pragma + no-cache + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 + + + Upgrade-Insecure-Requests + 1 + + + Content-Type + application/x-www-form-urlencoded + + + Cache-Control + no-cache + + + Accept-Encoding + gzip, deflate + + + + + + groovy + + + true + prev.setIgnore() + + + + + + + + + + + + ${application.postfix}/rest/api/2/myself + GET + true + false + true + false + + + + + + + groovy + + + true + import groovy.json.JsonSlurper; + +def slurper = new JsonSlurper() +response_data = slurper.parseText(prev.getResponseDataAsString()) + +if (response_data.name != vars.get("username")) { + prev.setSuccessful(false) + prev.setResponseMessage("Re-login Failed: username: '" + vars.get("username") + "' failed to login. Check the CAPTCHA for '" + vars.get("username") + "' user.") + prev.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.BREAK_CURRENT_LOOP) +} else { + prev.setIgnore() +} + + + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency def concurrency = ctx.getThreadGroup().getNumThreads() // Delays between each action in milli-seconds @@ -9374,7 +9562,7 @@ def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_p def start_time = Long.valueOf(vars.get("loop_start_time")) def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int -log.info("concurrency: ${concurrency}, delay_between_transactions: ${delay_between_transactions}, thread_sleep: ${sleep_time}") +log.info("concurrency: " + concurrency + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) if ( sleep_time > 0 ) { return sleep_time @@ -9382,10 +9570,17 @@ if ( sleep_time > 0 ) { return 0 } - groovy - - + groovy + + + + + false + true + false + + diff --git a/app/jmeter/jsm_agents.jmx b/app/jmeter/jsm_agents.jmx index 036f01488..71417d780 100644 --- a/app/jmeter/jsm_agents.jmx +++ b/app/jmeter/jsm_agents.jmx @@ -964,6 +964,19 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + ${JMeterThread.last_sample_ok}==false + false + true + + + + 5 + 0 + 0 + + + true -1 @@ -1002,22 +1015,6 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) false - - 1 - 0 - 0 - - - - true - - - vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); - - groovy - - - @@ -1027,6 +1024,22 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) ${__jexl2(${perc_agent_view_queues_small} / 2)} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -3394,6 +3407,38 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_agents").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -3402,6 +3447,22 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) ${perc_agent_view_report_workload_small} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -4023,6 +4084,38 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_agents").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -4031,6 +4124,22 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) ${perc_agent_view_report_created_vs_resolved_small} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -4556,6 +4665,38 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_agents").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + @@ -4573,6 +4714,22 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) ${__jexl2(${perc_agent_view_queues_medium} / 2)} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -6940,6 +7097,38 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_agents").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -6948,6 +7137,22 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) ${perc_agent_view_report_created_vs_resolved_medium} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -7473,6 +7678,38 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_agents").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -7481,6 +7718,22 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) ${perc_agent_view_report_workload_medium} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -8102,6 +8355,38 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_agents").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + @@ -8112,6 +8397,22 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) ${perc_agent_browse_projects} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -8304,6 +8605,38 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_agents").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -8312,6 +8645,22 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) ${perc_agent_view_request} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -8571,6 +8920,38 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_agents").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -8579,6 +8960,22 @@ JMeterUtils.setProperty("c_AtlToken" + user_counter, atl_token) ${perc_agent_add_comment} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -9107,6 +9504,38 @@ vars.put("g_comment", comment.toString()) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_agents").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -9115,6 +9544,22 @@ vars.put("g_comment", comment.toString()) ${perc_agent_view_customers} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -9513,6 +9958,38 @@ vars.put("g_comment", comment.toString()) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_agents").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -9521,6 +9998,186 @@ vars.put("g_comment", comment.toString()) ${perc_agent_standalone_extension} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + + + + + app_specific_username + admin + = + + + app_specific_password + admin + = + + + + + + + + + false + os_username + ${app_specific_username} + = + true + + + false + os_password + ${app_specific_password} + = + true + + + false + os_destination + + = + true + + + false + user_role + + = + true + + + false + atl_token + + = + true + + + true + login + Log In + = + true + + + + + + + UTF-8 + ${application.postfix}/login.jsp + POST + true + false + true + false + + + + Detected the start of a redirect chain + + + + + + Accept-Language + en-US,en;q=0.5 + + + Pragma + no-cache + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 + + + Upgrade-Insecure-Requests + 1 + + + Content-Type + application/x-www-form-urlencoded + + + Cache-Control + no-cache + + + Accept-Encoding + gzip, deflate + + + + + + groovy + + + true + vars.put("run_as_specific_user", "true") +prev.setIgnore() + + + + + + + + + + + + ${application.postfix}/rest/api/2/myself + GET + true + false + true + false + + + + + + + groovy + + + true + import groovy.json.JsonSlurper; + +def slurper = new JsonSlurper() +response_data = slurper.parseText(prev.getResponseDataAsString()) + +if (response_data.name != vars.get("app_specific_username")) { + prev.setSuccessful(false) + prev.setResponseMessage("Login Failed: Your app_specific_username: '" + vars.get("app_specific_username") + "' or password is incorrect. Also, check the CAPTCHA for '" + vars.get("app_specific_username") + "' user.") + prev.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.BREAK_CURRENT_LOOP) +} else { + prev.setIgnore() +} + + + + + false true @@ -9620,18 +10277,171 @@ vars.put("g_comment", comment.toString()) - - - 1 - 0 - 0 - - - - true - - - // concurrency + + ${run_as_specific_user} + false + true + + + + + + + false + os_username + ${username} + = + true + + + false + os_password + ${password} + = + true + + + false + os_destination + + = + true + + + false + user_role + + = + true + + + false + atl_token + + = + true + + + true + login + Log In + = + true + + + + + + + UTF-8 + ${application.postfix}/login.jsp + POST + true + false + true + false + + + + Detected the start of a redirect chain + + + + + + Accept-Language + en-US,en;q=0.5 + + + Pragma + no-cache + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 + + + Upgrade-Insecure-Requests + 1 + + + Content-Type + application/x-www-form-urlencoded + + + Cache-Control + no-cache + + + Accept-Encoding + gzip, deflate + + + + + + groovy + + + true + prev.setIgnore() + + + + + + + + + + + + ${application.postfix}/rest/api/2/myself + GET + true + false + true + false + + + + + + + groovy + + + true + import groovy.json.JsonSlurper; + +def slurper = new JsonSlurper() +response_data = slurper.parseText(prev.getResponseDataAsString()) + +if (response_data.name != vars.get("username")) { + prev.setSuccessful(false) + prev.setResponseMessage("Re-login Failed: username: '" + vars.get("username") + "' failed to login. Check the CAPTCHA for '" + vars.get("username") + "' user.") + prev.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.BREAK_CURRENT_LOOP) +} else { + prev.setIgnore() +} + + + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency def concurrency = ctx.getThreadGroup().getNumThreads() // Delays between each action in milli-seconds @@ -9641,7 +10451,7 @@ def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_p def start_time = Long.valueOf(vars.get("loop_start_time")) def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int -log.info("concurrency: ${concurrency}, total_actions_per_hour: ${total_actions_per_hour_agents}, delay_between_transactions: ${delay_between_transactions}, thread_sleep: ${sleep_time}") +log.info("concurrency: " + "concurrency," + "total_actions_per_hour: " + vars.get("total_actions_per_hour_agents") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) if ( sleep_time > 0 ) { return sleep_time @@ -9649,10 +10459,17 @@ if ( sleep_time > 0 ) { return 0 } - groovy - - + groovy + + + + + false + true + false + + diff --git a/app/jmeter/jsm_customers.jmx b/app/jmeter/jsm_customers.jmx index 42413faa1..e8672a492 100644 --- a/app/jmeter/jsm_customers.jmx +++ b/app/jmeter/jsm_customers.jmx @@ -538,7 +538,7 @@ SampleResult.setIgnore(); true - def pairs = props['PORTAL_REQUESTS_PAIRS_BY_USER']['${username}'] + def pairs = props['PORTAL_REQUESTS_PAIRS_BY_USER'][vars.get("username")] def pair = pairs[new Random().nextInt(pairs.size())] vars.put("request_portal_id", pair[0]) @@ -563,22 +563,6 @@ vars.put("portal_request_filter", "*${first}*${second}*") - - 1 - 0 - 0 - - - - true - - - vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); - - groovy - - - 1 false @@ -586,6 +570,22 @@ vars.put("portal_request_filter", "*${first}*${second}*")${perc_customer_view_portal} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -719,6 +719,38 @@ vars.put("portal_request_filter", "*${first}*${second}*") + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_customers").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", total_actions_per_hour: " + vars.get("total_actions_per_hour_customers") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -727,6 +759,22 @@ vars.put("portal_request_filter", "*${first}*${second}*")${perc_customer_view_requests} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -1025,6 +1073,38 @@ vars.put("portal_request_filter", "*${first}*${second}*") + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_customers").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", total_actions_per_hour: " + vars.get("total_actions_per_hour_customers") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -1033,6 +1113,22 @@ vars.put("portal_request_filter", "*${first}*${second}*")${perc_customer_view_request} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -1120,6 +1216,38 @@ vars.put("portal_request_filter", "*${first}*${second}*") + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_customers").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", total_actions_per_hour: " + vars.get("total_actions_per_hour_customers") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -1128,6 +1256,22 @@ vars.put("portal_request_filter", "*${first}*${second}*")${perc_customer_add_comment} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -1232,6 +1376,38 @@ vars.put("p_comment", comment.toString()) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_customers").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", total_actions_per_hour: " + vars.get("total_actions_per_hour_customers") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -1240,6 +1416,22 @@ vars.put("p_comment", comment.toString()) ${perc_customer_share_request_with_customer} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -1456,6 +1648,38 @@ vars.put("p_comment", comment.toString()) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_customers").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", total_actions_per_hour: " + vars.get("total_actions_per_hour_customers") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -1464,6 +1688,22 @@ vars.put("p_comment", comment.toString()) ${perc_customer_share_request_with_org} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -1673,6 +1913,38 @@ vars.put("p_comment", comment.toString()) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_customers").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", total_actions_per_hour: " + vars.get("total_actions_per_hour_customers") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -1681,6 +1953,22 @@ vars.put("p_comment", comment.toString()) ${perc_customer_create_request} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + false true @@ -1964,6 +2252,38 @@ vars.put("p_summary", comment.toString()) + + 1 + 0 + 0 + + + + true + + + // concurrency +def concurrency = ctx.getThreadGroup().getNumThreads() + +// Delays between each action in milli-seconds +def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_per_hour_customers").toDouble() / concurrency.toDouble()) + +//Sets the pacing length based on the last requests response time. x is the time in ms +def start_time = Long.valueOf(vars.get("loop_start_time")) +def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int + +log.info("concurrency: " + concurrency + ", total_actions_per_hour: " + vars.get("total_actions_per_hour_customers") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) + +if ( sleep_time > 0 ) { + return sleep_time +} else { + return 0 +} + + groovy + + + 1 @@ -1972,6 +2292,186 @@ vars.put("p_summary", comment.toString()) ${perc_customer_standalone_extension} + + 1 + 0 + 0 + + + + true + + + vars.put("loop_start_time",String.valueOf(System.currentTimeMillis())); + + groovy + + + + + + + + + app_specific_username + admin + = + + + app_specific_password + admin + = + + + + + + + + + false + os_username + ${app_specific_username} + = + true + + + false + os_password + ${app_specific_password} + = + true + + + false + os_destination + + = + true + + + false + user_role + + = + true + + + false + atl_token + + = + true + + + true + login + Log In + = + true + + + + + + + UTF-8 + ${application.postfix}/login.jsp + POST + true + false + true + false + + + + Detected the start of a redirect chain + + + + + + Accept-Language + en-US,en;q=0.5 + + + Pragma + no-cache + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 + + + Upgrade-Insecure-Requests + 1 + + + Content-Type + application/x-www-form-urlencoded + + + Cache-Control + no-cache + + + Accept-Encoding + gzip, deflate + + + + + + groovy + + + true + vars.put("run_as_specific_user", "true") +prev.setIgnore() + + + + + + + + + + + + ${application.postfix}/rest/api/2/myself + GET + true + false + true + false + + + + + + + groovy + + + true + import groovy.json.JsonSlurper; + +def slurper = new JsonSlurper() +response_data = slurper.parseText(prev.getResponseDataAsString()) + +if (response_data.name != vars.get("app_specific_username")) { + prev.setSuccessful(false) + prev.setResponseMessage("Login Failed: Your app_specific_username: '" + vars.get("app_specific_username") + "' or password is incorrect. Also, check the CAPTCHA for '" + vars.get("app_specific_username") + "' user.") + prev.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.BREAK_CURRENT_LOOP) +} else { + prev.setIgnore() +} + + + + + false true @@ -2071,18 +2571,171 @@ vars.put("p_summary", comment.toString()) - - - 1 - 0 - 0 - - - - true - - - // concurrency + + ${run_as_specific_user} + false + true + + + + + + + false + os_username + ${username} + = + true + + + false + os_password + ${password} + = + true + + + false + os_destination + + = + true + + + false + user_role + + = + true + + + false + atl_token + + = + true + + + true + login + Log In + = + true + + + + + + + UTF-8 + ${application.postfix}/login.jsp + POST + true + false + true + false + + + + Detected the start of a redirect chain + + + + + + Accept-Language + en-US,en;q=0.5 + + + Pragma + no-cache + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 + + + Upgrade-Insecure-Requests + 1 + + + Content-Type + application/x-www-form-urlencoded + + + Cache-Control + no-cache + + + Accept-Encoding + gzip, deflate + + + + + + groovy + + + true + prev.setIgnore() + + + + + + + + + + + + ${application.postfix}/rest/api/2/myself + GET + true + false + true + false + + + + + + + groovy + + + true + import groovy.json.JsonSlurper; + +def slurper = new JsonSlurper() +response_data = slurper.parseText(prev.getResponseDataAsString()) + +if (response_data.name != vars.get("username")) { + prev.setSuccessful(false) + prev.setResponseMessage("Re-login Failed: username: '" + vars.get("username") + "' failed to login. Check the CAPTCHA for '" + vars.get("username") + "' user.") + prev.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.BREAK_CURRENT_LOOP) +} else { + prev.setIgnore() +} + + + + + + + + + 1 + 0 + 0 + + + + true + + + // concurrency def concurrency = ctx.getThreadGroup().getNumThreads() // Delays between each action in milli-seconds @@ -2092,7 +2745,7 @@ def delay_between_transactions = (1000 * 3600) / (vars.get("total_actions_p def start_time = Long.valueOf(vars.get("loop_start_time")) def sleep_time = (delay_between_transactions - (System.currentTimeMillis() - start_time)) as int -log.info("concurrency: ${concurrency}, total_actions_per_hour: ${total_actions_per_hour_customers}, delay_between_transactions: ${delay_between_transactions}, thread_sleep: ${sleep_time}") +log.info("concurrency: " + concurrency + ", total_actions_per_hour: " + vars.get("total_actions_per_hour_customers") + ", delay_between_transactions: " + delay_between_transactions + ", thread_sleep: " + sleep_time) if ( sleep_time > 0 ) { return sleep_time @@ -2100,10 +2753,17 @@ if ( sleep_time > 0 ) { return 0 } - groovy - - + groovy + + + + + false + true + false + + diff --git a/app/jsm.yml b/app/jsm.yml index 3a6737d02..e276b7a15 100644 --- a/app/jsm.yml +++ b/app/jsm.yml @@ -21,27 +21,27 @@ settings: WEBDRIVER_VISIBLE: False JMETER_VERSION: 5.2.1 LANGUAGE: en_US.utf8 - allow_analytics: Yes # Allow sending basic run analytics to Atlassian. These analytics help us to understand how the tool is being used and help us to continue to invest in this tooling. For more details please see our README. + allow_analytics: Yes # Allow sending basic run analytics to Atlassian. These analytics help us to understand how the tool is being used and help us to continue to invest in this tooling. For more details please see our README. # Action percentage for Jmeter and Locust load executors agent_browse_projects: 10 - agent_view_request: 25 - agent_add_comment: 25 - agent_view_queues_small: 10 - agent_view_queues_medium: 10 + agent_view_request: 24 + agent_add_comment: 26 + agent_view_queues_small: 11 + agent_view_queues_medium: 9 agent_view_report_workload_small: 4 - agent_view_report_workload_medium: 4 - agent_view_report_created_vs_resolved_small: 4 - agent_view_report_created_vs_resolved_medium: 4 - agent_view_customers: 4 + agent_view_report_workload_medium: 3 + agent_view_report_created_vs_resolved_small: 5 + agent_view_report_created_vs_resolved_medium: 2 + agent_view_customers: 6 agent_standalone_extension: 0 - customer_view_portal: 10 + customer_view_portal: 11 customer_view_requests: 25 customer_view_request: 15 - customer_add_comment: 25 + customer_add_comment: 24 customer_share_request_with_customer: 5 - customer_share_request_with_org: 5 - customer_create_request: 15 + customer_share_request_with_org: 4 + customer_create_request: 16 customer_standalone_extension: 0 custom_dataset_query: "" # Write JQL query to add JQL output to the app/datasets/jsm/custom-issues.csv, e.g. "summary ~ 'AppRequests*'" @@ -150,7 +150,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "89.0.4389.23" # Supports Chrome version 89. You can refer to http://chromedriver.chromium.org/downloads + version: "90.0.4430.24" # Supports Chrome version 90. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml \ No newline at end of file diff --git a/app/reports_generation/csv_chart_generator.py b/app/reports_generation/csv_chart_generator.py index 119bcb6db..6cad31a82 100644 --- a/app/reports_generation/csv_chart_generator.py +++ b/app/reports_generation/csv_chart_generator.py @@ -9,9 +9,9 @@ def main(): config = config_provider.get_config() agg_csv = csv_aggregator.aggregate(config, results_dir) + agg, scenario_status = summary_aggregator.aggregate(config, results_dir) chart_generator_config = config_provider.get_chart_generator_config(config, agg_csv) - chart_generator.perform_chart_creation(chart_generator_config, results_dir) - summary_aggregator.aggregate(config, results_dir) + chart_generator.perform_chart_creation(chart_generator_config, results_dir, scenario_status) results_archivator.archive_results(config, results_dir) diff --git a/app/reports_generation/scripts/chart_generator.py b/app/reports_generation/scripts/chart_generator.py index 0b1e328a7..50f1f33e5 100644 --- a/app/reports_generation/scripts/chart_generator.py +++ b/app/reports_generation/scripts/chart_generator.py @@ -40,10 +40,10 @@ def validate_config(config: dict): validate_is_number(config, "image_width_px") -def make_chart(config: dict, results_dir: Path) -> Path: +def make_chart(config: dict, results_dir: Path, scenario_status: str) -> Path: csv_path_str = config["aggregated_csv_path"] index_col = config["index_col"] - title = config["title"] + title = config["title"] + f" | Scenario status: {scenario_status}" image_height_px = config["image_height_px"] image_width_px = config["image_width_px"] @@ -73,7 +73,7 @@ def make_chart(config: dict, results_dir: Path) -> Path: return image_path -def perform_chart_creation(config: dict, results_dir: Path) -> Path: +def perform_chart_creation(config: dict, results_dir: Path, scenario_status: str) -> Path: validate_config(config) - output_file_path = make_chart(config, results_dir) + output_file_path = make_chart(config, results_dir, scenario_status) return output_file_path diff --git a/app/reports_generation/scripts/summary_aggregator.py b/app/reports_generation/scripts/summary_aggregator.py index 0fbb32cf3..32f9e1722 100644 --- a/app/reports_generation/scripts/summary_aggregator.py +++ b/app/reports_generation/scripts/summary_aggregator.py @@ -48,7 +48,7 @@ def __get_overall_status(files: List[Path]) -> bool: return True -def aggregate(config: dict, results_dir: Path) -> Path: +def aggregate(config: dict, results_dir: Path) -> (Path, str): validate_config(config) output_file_path = __get_output_file_path(config, results_dir) summary_files = __get_summary_files(config) @@ -57,4 +57,4 @@ def aggregate(config: dict, results_dir: Path) -> Path: __write_to_summary_report(summary_files, run_names, status_message, output_file_path) validate_file_exists(output_file_path, f"Results file {output_file_path} is not created") print(f'Results file {output_file_path.absolute()} is created') - return output_file_path + return output_file_path, status_message diff --git a/app/selenium_ui/bitbucket/modules.py b/app/selenium_ui/bitbucket/modules.py index 0c6356c5a..4ab9057e0 100644 --- a/app/selenium_ui/bitbucket/modules.py +++ b/app/selenium_ui/bitbucket/modules.py @@ -27,7 +27,7 @@ def measure(): @print_timing("selenium_login:open_login_page") def sub_measure(): login_page.go_to() - webdriver.app_version = login_page.get_app_version() + webdriver.app_version = login_page.get_app_major_version() if login_page.is_logged_in(): login_page.delete_all_cookies() login_page.go_to() @@ -40,7 +40,10 @@ def sub_measure(): login_page.submit_login() get_started_page = GetStarted(webdriver) get_started_page.wait_for_page_loaded() + webdriver.node_id = login_page.get_node_id() + print(f"node_id:{webdriver.node_id}") sub_measure() + measure() diff --git a/app/selenium_ui/bitbucket/pages/pages.py b/app/selenium_ui/bitbucket/pages/pages.py index 2998f96fd..b0d256ba1 100644 --- a/app/selenium_ui/bitbucket/pages/pages.py +++ b/app/selenium_ui/bitbucket/pages/pages.py @@ -24,8 +24,15 @@ def set_credentials(self, username, password): self.fill_password(password) def get_app_version(self): - el = self.get_element(LoginPageLocators.application_version) - return ''.join([i for i in el.text.split('.')[0] if i.isdigit()]) + text = self.get_element(LoginPageLocators.application_version).text + return text.replace('v', '') + + def get_app_major_version(self): + return self.get_app_version().split('.')[0] + + def get_node_id(self): + text = self.get_element(LoginPageLocators.node_id).text + return text.split('\n')[2] def is_logged_in(self): elements = self.get_elements(GetStartedLocators.user_profile_icon) diff --git a/app/selenium_ui/bitbucket/pages/selectors.py b/app/selenium_ui/bitbucket/pages/selectors.py index e0b4012bf..6d293b947 100644 --- a/app/selenium_ui/bitbucket/pages/selectors.py +++ b/app/selenium_ui/bitbucket/pages/selectors.py @@ -95,6 +95,7 @@ class LoginPageLocators: username_textfield = {'6': (By.ID, "j_username"), '7': (By.ID, "j_username")} password_textfield = {'6': (By.ID, "j_password"), '7': (By.ID, "j_password")} application_version = (By.ID, 'product-version') + node_id = (By.CLASS_NAME, 'footer-body') class LogoutPageLocators: diff --git a/app/selenium_ui/confluence/modules.py b/app/selenium_ui/confluence/modules.py index cea65161b..42d491e42 100644 --- a/app/selenium_ui/confluence/modules.py +++ b/app/selenium_ui/confluence/modules.py @@ -38,6 +38,8 @@ def sub_measure(): login_page.delete_all_cookies() login_page.go_to() login_page.wait_for_page_loaded() + webdriver.node_id = login_page.get_node_id() + print(f"node_id:{webdriver.node_id}") sub_measure() login_page.set_credentials(username=datasets['username'], password=datasets['password']) diff --git a/app/selenium_ui/confluence/pages/pages.py b/app/selenium_ui/confluence/pages/pages.py index 778e9a554..b05a292dd 100644 --- a/app/selenium_ui/confluence/pages/pages.py +++ b/app/selenium_ui/confluence/pages/pages.py @@ -1,4 +1,3 @@ - from selenium_ui.base_page import BasePage from selenium_ui.confluence.pages.selectors import UrlManager, LoginPageLocators, AllUpdatesLocators, PopupLocators,\ @@ -34,6 +33,17 @@ def first_user_setup(self): self.wait_until_any_element_visible(LoginPageLocators.skip_find_content)[0].click() self.wait_until_clickable(LoginPageLocators.finish_setup).click() + def get_app_version(self): + text = self.get_element(LoginPageLocators.footer_build_info).text + return text + + def get_node_id(self): + if self.get_elements(LoginPageLocators.footer_node_info): + text = self.get_element(LoginPageLocators.footer_node_info).text + return text.split(':')[-1].replace(')', '').replace(' ', '') + else: + return "SERVER" + class Logout(BasePage): page_url = UrlManager().logout_url() diff --git a/app/selenium_ui/confluence/pages/selectors.py b/app/selenium_ui/confluence/pages/selectors.py index b4c6aa5c4..60d3573a6 100644 --- a/app/selenium_ui/confluence/pages/selectors.py +++ b/app/selenium_ui/confluence/pages/selectors.py @@ -42,6 +42,8 @@ class LoginPageLocators: login_button = (By.ID, "loginButton") login_username_field = (By.ID, "os_username") login_password_field = (By.ID, "os_password") + footer_build_info = (By.ID, "footer-build-information") + footer_node_info = (By.ID, "footer-cluster-node") # Setup user page per first login first_login_setup_page = (By.ID, "grow-ic-nav-container") diff --git a/app/selenium_ui/conftest.py b/app/selenium_ui/conftest.py index d8637d457..db0d6bd90 100644 --- a/app/selenium_ui/conftest.py +++ b/app/selenium_ui/conftest.py @@ -31,7 +31,7 @@ class InitGlobals: def __init__(self): - self.driver = False + self.driver = None self.driver_title = False self.login_failed = False @@ -182,6 +182,8 @@ def driver_quit(): # check if driver is not broken globals.driver_title = globals.driver.title print('get driver from global') + globals.driver.delete_all_cookies() + print('clear browser cookies') return globals.driver except WebDriverException: # re-init driver if it broken diff --git a/app/selenium_ui/jira/modules.py b/app/selenium_ui/jira/modules.py index c92568f03..3478a87f7 100644 --- a/app/selenium_ui/jira/modules.py +++ b/app/selenium_ui/jira/modules.py @@ -55,6 +55,8 @@ def measure(): @print_timing("selenium_login:open_login_page") def sub_measure(): login_page.go_to() + webdriver.node_id = login_page.get_node_id() + print(f"node_id:{webdriver.node_id}") sub_measure() @print_timing("selenium_login:login_and_view_dashboard") diff --git a/app/selenium_ui/jira/pages/pages.py b/app/selenium_ui/jira/pages/pages.py index 6b9b8eb3e..1c4e7fde9 100644 --- a/app/selenium_ui/jira/pages/pages.py +++ b/app/selenium_ui/jira/pages/pages.py @@ -41,6 +41,17 @@ def set_credentials(self, username, password): self.get_element(LoginPageLocators.password_field).send_keys(password) self.get_element(LoginPageLocators.login_submit_button).click() + def __get_footer_text(self): + return self.get_element(LoginPageLocators.footer).text + + def get_app_version(self): + text = self.__get_footer_text() + return text.split('#')[0].replace('(v', '') + + def get_node_id(self): + text = self.__get_footer_text() + return text.split(':')[-1].replace(')', '') + class Logout(BasePage): page_url = LogoutLocators.logout_url diff --git a/app/selenium_ui/jira/pages/selectors.py b/app/selenium_ui/jira/pages/selectors.py index a153ba689..5bd924f15 100644 --- a/app/selenium_ui/jira/pages/selectors.py +++ b/app/selenium_ui/jira/pages/selectors.py @@ -77,6 +77,7 @@ class LoginPageLocators: password_field = (By.ID, 'login-form-password') login_submit_button = (By.ID, 'login-form-submit') system_dashboard = (By.ID, "dashboard") + footer = (By.ID, 'footer-build-information') class LogoutLocators: diff --git a/app/selenium_ui/jsm/modules_agents.py b/app/selenium_ui/jsm/modules_agents.py index c7d7bf051..56ef12204 100644 --- a/app/selenium_ui/jsm/modules_agents.py +++ b/app/selenium_ui/jsm/modules_agents.py @@ -74,7 +74,8 @@ def measure(): @print_timing("selenium_agent_login:open_login_page") def sub_measure(): login_page.go_to() - + webdriver.node_id = login_page.get_node_id() + print(f"node_id:{webdriver.node_id}") sub_measure() @print_timing("selenium_agent_login:login_and_view_dashboard") diff --git a/app/selenium_ui/jsm/pages/agent_pages.py b/app/selenium_ui/jsm/pages/agent_pages.py index 2aef2b67b..269990400 100644 --- a/app/selenium_ui/jsm/pages/agent_pages.py +++ b/app/selenium_ui/jsm/pages/agent_pages.py @@ -39,6 +39,17 @@ def set_credentials(self, username, password): self.get_element(LoginPageLocators.password_field).send_keys(password) self.get_element(LoginPageLocators.login_submit_button).click() + def __get_footer_text(self): + return self.get_element(LoginPageLocators.footer).text + + def get_app_version(self): + text = self.__get_footer_text() + return text.split('#')[0].replace('(v', '') + + def get_node_id(self): + text = self.__get_footer_text() + return text.split(':')[-1].replace(')', '') + class Logout(BasePage): page_url = LogoutLocators.logout_url diff --git a/app/selenium_ui/jsm/pages/agent_selectors.py b/app/selenium_ui/jsm/pages/agent_selectors.py index 50258391c..3dc0be557 100644 --- a/app/selenium_ui/jsm/pages/agent_selectors.py +++ b/app/selenium_ui/jsm/pages/agent_selectors.py @@ -63,6 +63,7 @@ class LoginPageLocators: password_field = (By.ID, 'login-form-password') login_submit_button = (By.ID, 'login-form-submit') system_dashboard = (By.ID, "dashboard") + footer = (By.ID, 'footer-build-information') class DashboardLocators: diff --git a/app/util/analytics/log_reader.py b/app/util/analytics/log_reader.py index bd5db67d8..1aa41c39f 100644 --- a/app/util/analytics/log_reader.py +++ b/app/util/analytics/log_reader.py @@ -151,6 +151,6 @@ def all_tests_actions(self): def actual_git_operations_count(self): count = 0 for line in self.results_log: - if any(s in line.keys() for s in GIT_OPERATIONS): + if line['Label'] in GIT_OPERATIONS: count = count + int(line['# Samples']) return count diff --git a/app/util/conf.py b/app/util/conf.py index 4fe161d95..430b6ca21 100644 --- a/app/util/conf.py +++ b/app/util/conf.py @@ -2,7 +2,7 @@ from util.project_paths import JIRA_YML, CONFLUENCE_YML, BITBUCKET_YML, JSM_YML -TOOLKIT_VERSION = '4.1.0' +TOOLKIT_VERSION = '4.2.0' def read_yml_file(file): diff --git a/app/util/confluence/index-sync.sh b/app/util/confluence/index-sync.sh index e162cfce5..c39d5a876 100644 --- a/app/util/confluence/index-sync.sh +++ b/app/util/confluence/index-sync.sh @@ -2,14 +2,16 @@ # Wait until index sync is finished on a new Confluence DC node -SEARCH_LOG="/var/atlassian/application-data/confluence/logs/atlassian-confluence.log" +SEARCH_LOG="/var/atlassian/application-data/confluence/logs/*.log" TIMEOUT=1200 -if sudo -u confluence test -f $SEARCH_LOG; then - echo "Log file: $SEARCH_LOG" +if [ "$(sudo su confluence -c "ls -l ""$SEARCH_LOG"" 2>/dev/null | wc -l")" -gt 0 ] +then + echo "Log files were found:" + sudo su confluence -c "ls $SEARCH_LOG" else - echo "File $SEARCH_LOG does not exist" - exit 1 + echo "There are no log files found like $SEARCH_LOG" + exit 1 fi function find_word_in_log() { diff --git a/app/util/data_preparation/confluence_prepare_data.py b/app/util/data_preparation/confluence_prepare_data.py index 1982c4c0c..b63440f2a 100644 --- a/app/util/data_preparation/confluence_prepare_data.py +++ b/app/util/data_preparation/confluence_prepare_data.py @@ -92,7 +92,8 @@ def __get_custom_pages(confluence_api, count, cql): def __get_blogs(confluence_api, count): blogs = confluence_api.get_content_search( 0, count, cql='type=blogpost' - ' and title !~ Performance') + ' and title !~ Performance' + ' and text !~ BLOG_10') # filter out too heavy blog post page type if not blogs: raise SystemExit(f"There are no Blog posts in Confluence accessible by a random performance user: " f"{confluence_api.user}") diff --git a/app/util/default_test_actions.json b/app/util/default_test_actions.json index 097465fe9..a83b1f998 100644 --- a/app/util/default_test_actions.json +++ b/app/util/default_test_actions.json @@ -84,7 +84,6 @@ "jmeter": [ "jmeter_login_and_view_dashboard", "jmeter_view_page:open_page", - "jmeter_view_page:view_page_tree", "jmeter_view_blog", "jmeter_search_cql:recently_viewed", "jmeter_search_cql:search_results", diff --git a/app/util/jira/index-sync.sh b/app/util/jira/index-sync.sh index b2df743b1..c15eedb31 100644 --- a/app/util/jira/index-sync.sh +++ b/app/util/jira/index-sync.sh @@ -1,15 +1,18 @@ #!/bin/bash -SEARCH_LOG="/var/atlassian/application-data/jira/log/atlassian-jira.log" +SEARCH_LOG="/var/atlassian/application-data/jira/log/*.log" TIMEOUT=300 -if sudo -u jira test -f $SEARCH_LOG; then - echo "Log file: $SEARCH_LOG" +if [ "$(sudo su jira -c "ls -l ""$SEARCH_LOG"" 2>/dev/null | wc -l")" -gt 0 ] +then + echo "Log files were found:" + sudo su jira -c "ls $SEARCH_LOG" else - echo "File $SEARCH_LOG does not exist" - exit 1 + echo "There are no log files found like $SEARCH_LOG" + exit 1 fi + function find_word_in_log() { COUNTER=0 SLEEP_TIME=2 @@ -38,5 +41,4 @@ find_word_in_log "indexes - 60%" find_word_in_log "indexes - 80%" find_word_in_log "indexes - 100%" find_word_in_log "Index restore complete" - -echo "DCAPT util script execution is finished successfully." \ No newline at end of file +echo "DCAPT util script execution is finished successfully." diff --git a/app/util/jmeter/start_jmeter_ui.py b/app/util/jmeter/start_jmeter_ui.py index 279622ea2..dbc085fb3 100644 --- a/app/util/jmeter/start_jmeter_ui.py +++ b/app/util/jmeter/start_jmeter_ui.py @@ -1,15 +1,20 @@ -import sys -if sys.version_info < (3, 6): - raise SystemExit("ERROR: Script requires Python 3.6+. Current version: {}.\n" - "Please make sure you use correct virtualenv.".format(sys.version_info[0:3])) - import argparse -from platform import system from pathlib import Path +from platform import system from subprocess import run +from sys import version_info import yaml +SUPPORTED_PYTHON_VERSIONS = ["3.7", "3.8"] + +python_full_version = '.'.join(map(str, version_info[0:3])) +python_short_version = '.'.join(map(str, version_info[0:2])) +print("Python version: {}".format(python_full_version)) +if python_short_version not in SUPPORTED_PYTHON_VERSIONS: + raise SystemExit("Python version {} is not supported. " + "Supported versions: {}.".format(python_full_version, SUPPORTED_PYTHON_VERSIONS)) + JIRA = "jira" CONFLUENCE = "confluence" BITBUCKET = "bitbucket" diff --git a/app/util/jtl_convertor/jtls-to-csv.py b/app/util/jtl_convertor/jtls-to-csv.py index 3bfe7e128..f5416da9b 100644 --- a/app/util/jtl_convertor/jtls-to-csv.py +++ b/app/util/jtl_convertor/jtls-to-csv.py @@ -127,7 +127,8 @@ def convert_to_csv(input_jtl: Path, output_csv: Path, default_test_actions: list sample[LABEL] = jtl_sample[LABEL_JTL] sample[SAMPLES] = 1 sample[ELAPSED_JTL_TMP] = [int(jtl_sample[ELAPSED_JTL])] # Temp list with 'elapsed' value for current label - sample[SUCCESS_JTL_TMP] = [jtl_sample[SUCCESS_JTL]] # Temp list with 'success' value for current label + # Temp list with 'success' value for current label + sample[SUCCESS_JTL_TMP] = [jtl_sample[SUCCESS_JTL].lower()] csv_list.append(sample) else: @@ -135,7 +136,7 @@ def convert_to_csv(input_jtl: Path, output_csv: Path, default_test_actions: list processed_sample = [row for row in csv_list if row[LABEL] == jtl_sample['label']][0] processed_sample[SAMPLES] = processed_sample[SAMPLES] + 1 # Count samples processed_sample[ELAPSED_JTL_TMP].append(int(jtl_sample[ELAPSED_JTL])) # list of elapsed values - processed_sample[SUCCESS_JTL_TMP].append(jtl_sample[SUCCESS_JTL]) # list of success values + processed_sample[SUCCESS_JTL_TMP].append(jtl_sample[SUCCESS_JTL].lower()) # list of success values # Calculation after the last row in kpi.jtl is processed if jtl_sample == jtl_list[-1]: diff --git a/app/util/pre_run/environment_checker.py b/app/util/pre_run/environment_checker.py index 888fb5c0d..b0c2d5955 100644 --- a/app/util/pre_run/environment_checker.py +++ b/app/util/pre_run/environment_checker.py @@ -1,6 +1,6 @@ from sys import version_info -SUPPORTED_PYTHON_VERSIONS = ["3.6", "3.7", "3.8"] +SUPPORTED_PYTHON_VERSIONS = ["3.7", "3.8"] python_full_version = '.'.join(map(str, version_info[0:3])) python_short_version = '.'.join(map(str, version_info[0:2])) diff --git a/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md b/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md index 2fce52933..05065d679 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md +++ b/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md @@ -4,7 +4,7 @@ platform: platform product: marketplace category: devguide subcategory: build -date: "2021-03-17" +date: "2021-04-26" --- # Data Center App Performance Toolkit User Guide For Bitbucket @@ -145,7 +145,7 @@ The **Master (admin) password** will be used later when restoring the SQL databa | Parameter | Recommended Value | | --------- | ----------------- | -| Elasticsearch master user password | Password1! | +| Elasticsearch master user password | (leave blank) | | Elasticsearch instance type | m4.xlarge.elasticsearch | | Elasticsearch disk-space per node (GB) | 1000 | @@ -453,7 +453,7 @@ This scenario helps to identify basic performance issues without a need to spin To receive performance baseline results **without** an app installed: 1. Use SSH to connect to execution environment. -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -479,7 +479,7 @@ To receive performance results with an app installed: 1. Install the app you want to test. 1. Setup app license. -1. Run bzt. +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -565,7 +565,7 @@ To receive scalability benchmark results for one-node Bitbucket DC **with** app- 1. Apply app-specific code changes to a new branch of forked repo. 1. Use SSH to connect to execution environment. 1. Pull cloned fork repo branch with app-specific actions. -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -592,7 +592,7 @@ To receive scalability benchmark results for two-node Bitbucket DC with app-spec 1. On the **Update** tab, select **Use current template**, and then click **Next**. 1. Enter `2` in the **Maximum number of cluster nodes** and the **Minimum number of cluster nodes** fields. 1. Click **Next > Next > Update stack** and wait until stack is updated. -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -615,7 +615,7 @@ The same article has instructions on how to increase limit if needed. To receive scalability benchmark results for four-node Bitbucket DC with app-specific actions: 1. Scale your Bitbucket Data Center deployment to 4 nodes the same way as in [Run 4](#run4). -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit diff --git a/docs/dc-apps-performance-toolkit-user-guide-confluence.md b/docs/dc-apps-performance-toolkit-user-guide-confluence.md index 0a7df4101..dc3202918 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-confluence.md +++ b/docs/dc-apps-performance-toolkit-user-guide-confluence.md @@ -4,7 +4,7 @@ platform: platform product: marketplace category: devguide subcategory: build -date: "2021-03-17" +date: "2021-04-26" --- # Data Center App Performance Toolkit User Guide For Confluence @@ -207,7 +207,7 @@ JMeter and Locust actions are interchangeable, so you could select the tool you {{% note %}} -We strongly recommend to develop your app-specific actions on the development environment to reduce AWS infrastructure costs. +We strongly recommend developing your app-specific actions on the development environment to reduce AWS infrastructure costs. {{% /note %}} @@ -277,6 +277,7 @@ For example, for app-specific action development you could set percentage of `st 1. Right-click on `View Results Tree` and disable this controller. It is important to disable `View Results Tree` controller before full-scale results generation. 1. Click **Save** button. 1. To make `standalone_extension` executable during toolkit run edit `dc-app-performance-toolkit/app/confluence.yml` and set execution percentage of `standalone_extension` accordingly to your use case frequency. +1. App-specific tests could be run (if needed) as a specific user. In the `standalone_extension` uncomment `login_as_specific_user` controller. Navigate to the `username:password` config element and update values for `app_specific_username` and `app_specific_password` names with your specific user credentials. Also make sure that you located your app-specific tests between `login_as_specific_user` and `login_as_default_user_if_specific_user_was_loggedin` controllers. 1. Run toolkit to ensure that all JMeter actions including `standalone_extension` are successful. ##### Using JMeter variables from the base script @@ -695,7 +696,7 @@ This scenario helps to identify basic performance issues without a need to spin To receive performance baseline results **without** an app installed: 1. Use SSH to connect to execution environment. -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -720,7 +721,7 @@ To receive performance results with an app installed: 1. Install the app you want to test. 1. Setup app license. -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -778,7 +779,7 @@ To receive scalability benchmark results for one-node Confluence DC **with** app 1. Apply app-specific code changes to a new branch of forked repo. 1. Use SSH to connect to execution environment. 1. Pull cloned fork repo branch with app-specific actions. -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -804,6 +805,7 @@ To receive scalability benchmark results for two-node Confluence DC **with** app 1. On the **Update** tab, select **Use current template**, and then click **Next**. 1. Enter `2` in the **Maximum number of cluster nodes** and the **Minimum number of cluster nodes** fields. 1. Click **Next > Next > Update stack** and wait until stack is updated. +1. Confirm new node is appeared on the **![cog icon](/platform/marketplace/images/cog.png) > General Configuration > Clustering** page. 1. Make sure that Confluence index successfully synchronized to the second node. To do that, use SSH to connect to the second node via Bastion (where `NODE_IP` is the IP of the second node): ```bash @@ -826,7 +828,7 @@ To receive scalability benchmark results for two-node Confluence DC **with** app main index recovered from shared home directory ``` -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -852,7 +854,7 @@ To receive scalability benchmark results for four-node Confluence DC with app-sp 1. Check Index is synchronized to the new node #3 the same way as in [Run 4](#run4). 1. Scale your Confluence Data Center deployment to 4 nodes as described in [Run 4](#run4). 1. Check Index is synchronized to the new node #4 the same way as in [Run 4](#run4). -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit diff --git a/docs/dc-apps-performance-toolkit-user-guide-jira.md b/docs/dc-apps-performance-toolkit-user-guide-jira.md index 8eceb42f0..4b945b280 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-jira.md +++ b/docs/dc-apps-performance-toolkit-user-guide-jira.md @@ -4,7 +4,7 @@ platform: platform product: marketplace category: devguide subcategory: build -date: "2021-03-17" +date: "2021-04-26" --- # Data Center App Performance Toolkit User Guide For Jira @@ -213,7 +213,7 @@ JMeter and Locust actions are interchangeable, so you could select the tool you {{% note %}} -We strongly recommend to develop your app-specific actions on the development environment to reduce AWS infrastructure costs. +We strongly recommend developing your app-specific actions on the development environment to reduce AWS infrastructure costs. {{% /note %}} @@ -283,6 +283,7 @@ For example, for app-specific action development you could set percentage of `st 1. Right-click on `View Results Tree` and disable this controller. It is important to disable `View Results Tree` controller before full-scale results generation. 1. Click **Save** button. 1. To make `standalone_extension` executable during toolkit run edit `dc-app-performance-toolkit/app/jira.yml` and set execution percentage of `standalone_extension` accordingly to your use case frequency. +1. App-specific tests could be run (if needed) as a specific user. In the `standalone_extension` uncomment `login_as_specific_user` controller. Navigate to the `username:password` config element and update values for `app_specific_username` and `app_specific_password` names with your specific user credentials. Also make sure that you located your app-specific tests between `login_as_specific_user` and `login_as_default_user_if_specific_user_was_loggedin` controllers. 1. Run toolkit to ensure that all JMeter actions including `standalone_extension` are successful. @@ -709,7 +710,7 @@ This scenario helps to identify basic performance issues without a need to spin To receive performance baseline results **without** an app installed: 1. Use SSH to connect to execution environment. -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -752,6 +753,8 @@ If your Amazon RDS DB instance class is lower than `db.m5.xlarge` it is required **Performance results generation with the app installed:** +1. Run toolkit with docker from the execution environment instance: + ``` bash cd dc-app-performance-toolkit docker pull atlassian/dcapt @@ -809,7 +812,7 @@ To receive scalability benchmark results for one-node Jira DC **with** app-speci 1. Apply app-specific code changes to a new branch of forked repo. 1. Use SSH to connect to execution environment. 1. Pull cloned fork repo branch with app-specific actions. -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -858,7 +861,11 @@ To receive scalability benchmark results for two-node Jira DC **with** app-speci indexes - 100% Index restore complete ``` -1. Run toolkit with docker: +{{% note %}} +If index synchronization is failed by some reason, you can manually copy index from the first node. To do it, login to the second node (use private browser window and check footer information to see which node is current), go to **System** > **Indexing**. In the **Copy the Search Index from another node**, choose the source node (first node) and the target node (current node). The index will copied from one instance to another. +{{% /note %}} + +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -884,7 +891,7 @@ To receive scalability benchmark results for four-node Jira DC with app-specific 1. Check Index is synchronized to the new node #3 the same way as in [Run 4](#run4). 1. Scale your Jira Data Center deployment to 4 nodes as described in [Run 4](#run4). 1. Check Index is synchronized to the new node #4 the same way as in [Run 4](#run4). -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit diff --git a/docs/dc-apps-performance-toolkit-user-guide-jsm.md b/docs/dc-apps-performance-toolkit-user-guide-jsm.md index 529954efb..7c6899c66 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-jsm.md +++ b/docs/dc-apps-performance-toolkit-user-guide-jsm.md @@ -4,7 +4,7 @@ platform: platform product: marketplace category: devguide subcategory: build -date: "2021-03-17" +date: "2021-04-26" --- # Data Center App Performance Toolkit User Guide For Jira Service Management @@ -333,7 +333,7 @@ JMeter and Locust actions are interchangeable, so you could select the tool you {{% note %}} -We strongly recommend to develop your app-specific actions on the development environment to reduce AWS infrastructure costs. +We strongly recommend developing your app-specific actions on the development environment to reduce AWS infrastructure costs. {{% /note %}} @@ -418,6 +418,7 @@ For example, for app-specific action development you could set percentage of `ag 1. Right-click on `View Results Tree` and disable this controller. It is important to disable `View Results Tree` controller before full-scale results generation. 1. Click **Save** button. 1. To make `agent_standalone_extension`/`customer_standalone_extension` executable during toolkit run edit `dc-app-performance-toolkit/app/jsm.yml` and set execution percentage of `agent_standalone_extension`/`customer_standalone_extension` accordingly to your use case frequency. +1. App-specific tests could be run (if needed) as a specific user. In the `agent_standalone_extension`/`customer_standalone_extension` uncomment `login_as_specific_user` controller. Navigate to the `username:password` config element and update values for `app_specific_username` and `app_specific_password` names with your specific user credentials. Also make sure that you located your app-specific tests between `login_as_specific_user` and `login_as_default_user_if_specific_user_was_loggedin` controllers. 1. Run toolkit to ensure that all JMeter actions including `agent_standalone_extension` and/or `customer_standalone_extension` are successful. @@ -854,7 +855,7 @@ This scenario helps to identify basic performance issues without a need to spin To receive performance baseline results **without** an app installed: 1. Use SSH to connect to execution environment. -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -897,6 +898,8 @@ If your Amazon RDS DB instance class is lower than `db.m5.xlarge` it is required **Performance results generation with the app installed:** +1. Run toolkit with docker from the execution environment instance: + ``` bash cd dc-app-performance-toolkit docker pull atlassian/dcapt @@ -954,7 +957,7 @@ To receive scalability benchmark results for one-node Jira Service Management DC 1. Apply app-specific code changes to a new branch of forked repo. 1. Use SSH to connect to execution environment. 1. Pull cloned fork repo branch with app-specific actions. -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -1003,7 +1006,11 @@ To receive scalability benchmark results for two-node Jira Service Management DC indexes - 100% Index restore complete ``` -1. Run toolkit with docker: +{{% note %}} +If index synchronization is failed by some reason, you can manually copy index from the first node. To do it, login to the second node (use private browser window and check footer information to see which node is current), go to **System** > **Indexing**. In the **Copy the Search Index from another node**, choose the source node (first node) and the target node (current node). The index will copied from one instance to another. +{{% /note %}} + +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit @@ -1029,7 +1036,7 @@ To receive scalability benchmark results for four-node Jira Service Management D 1. Check Index is synchronized to the new node #3 the same way as in [Run 4](#run4). 1. Scale your Jira Service Management Data Center deployment to 4 nodes as described in [Run 4](#run4). 1. Check Index is synchronized to the new node #4 the same way as in [Run 4](#run4). -1. Run toolkit with docker: +1. Run toolkit with docker from the execution environment instance: ``` bash cd dc-app-performance-toolkit diff --git a/requirements.txt b/requirements.txt index 65d784d83..8f93de340 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ -matplotlib==3.3.4 -pandas==1.1.5 -importlib-metadata==3.1.1 -bzt==1.15.2 -locust==1.4.3 +matplotlib==3.4.1 +pandas==1.2.4 +importlib-metadata==4.0.1 +bzt==1.15.3 +locust==1.4.4 filelock==3.0.12 \ No newline at end of file