From a8aab60cee5fb5b066ffd318c9e1fe0a6dca0e90 Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Wed, 23 Jun 2021 14:38:53 +0300 Subject: [PATCH 01/45] bump toolkit version to 5.1.0 (#644) --- app/util/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/util/conf.py b/app/util/conf.py index ff1e0c5cb..b4b9b14ac 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, CROWD_YML -TOOLKIT_VERSION = '4.3.0' +TOOLKIT_VERSION = '5.1.0' def read_yml_file(file): From e403167f14abe1c7af39aae92d4675ec4a2cfb8a Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Thu, 1 Jul 2021 15:00:22 +0300 Subject: [PATCH 02/45] Docs improvements (#646) --- README.md | 2 +- docs/dc-apps-performance-toolkit-user-guide-jira.md | 1 + docs/dc-apps-performance-toolkit-user-guide-jsm.md | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f5fe77c47..bd0f5a418 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Data Center App Performance Toolkit The Data Center App Performance Toolkit extends [Taurus](https://gettaurus.org/) which is an open source performance framework that executes JMeter and Selenium. -This repository contains Taurus scripts for performance testing of Atlassian Data Center products: Jira, Jira Service Management, Confluence, and Bitbucket. +This repository contains Taurus scripts for performance testing of Atlassian Data Center products: Jira, Jira Service Management, Confluence, Bitbucket and Crowd. ## Supported versions * Supported Jira versions: diff --git a/docs/dc-apps-performance-toolkit-user-guide-jira.md b/docs/dc-apps-performance-toolkit-user-guide-jira.md index 7ca5e7e9a..5b596aaa5 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-jira.md +++ b/docs/dc-apps-performance-toolkit-user-guide-jira.md @@ -865,6 +865,7 @@ To receive scalability benchmark results for two-node Jira DC **with** app-speci indexes - 100% Index restore complete ``` + {{% 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 %}} diff --git a/docs/dc-apps-performance-toolkit-user-guide-jsm.md b/docs/dc-apps-performance-toolkit-user-guide-jsm.md index 3f0741aaa..d91b571fd 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-jsm.md +++ b/docs/dc-apps-performance-toolkit-user-guide-jsm.md @@ -1013,6 +1013,7 @@ To receive scalability benchmark results for two-node Jira Service Management DC indexes - 100% Index restore complete ``` + {{% 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 %}} From 975b2d1e430c492aa9212c06d5fcc63892e7ab40 Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Tue, 6 Jul 2021 08:55:52 +0300 Subject: [PATCH 03/45] DCA-1193 check for updates (#645) --- app/bitbucket.yml | 1 + app/confluence.yml | 1 + app/crowd.yml | 1 + app/jira.yml | 1 + app/jsm.yml | 1 + app/util/pre_run/check_for_updates.py | 28 +++++++++++++++++++++++++++ 6 files changed, 33 insertions(+) create mode 100644 app/util/pre_run/check_for_updates.py diff --git a/app/bitbucket.yml b/app/bitbucket.yml index 9a85bc45d..eb7e9deaa 100644 --- a/app/bitbucket.yml +++ b/app/bitbucket.yml @@ -24,6 +24,7 @@ services: - module: shellexec prepare: - python util/pre_run/environment_checker.py + - python util/pre_run/check_for_updates.py - python util/pre_run/git_client_check.py - python util/data_preparation/bitbucket_prepare_data.py shutdown: diff --git a/app/confluence.yml b/app/confluence.yml index 19a5affc2..91530c6dd 100644 --- a/app/confluence.yml +++ b/app/confluence.yml @@ -38,6 +38,7 @@ services: - module: shellexec prepare: - python util/pre_run/environment_checker.py + - python util/pre_run/check_for_updates.py - python util/data_preparation/confluence_prepare_data.py shutdown: - python util/post_run/jmeter_post_check.py diff --git a/app/crowd.yml b/app/crowd.yml index 9175f4d07..1ec900513 100644 --- a/app/crowd.yml +++ b/app/crowd.yml @@ -36,6 +36,7 @@ services: - module: shellexec prepare: - python util/pre_run/environment_checker.py + - python util/pre_run/check_for_updates.py - python util/data_preparation/crowd_prepare_data.py - python util/data_preparation/crowd_sync_check.py shutdown: diff --git a/app/jira.yml b/app/jira.yml index a8d16f8ff..790590eb4 100644 --- a/app/jira.yml +++ b/app/jira.yml @@ -40,6 +40,7 @@ services: - module: shellexec prepare: - python util/pre_run/environment_checker.py + - python util/pre_run/check_for_updates.py - python util/data_preparation/jira_prepare_data.py shutdown: - python util/post_run/jmeter_post_check.py diff --git a/app/jsm.yml b/app/jsm.yml index 9b856e24b..9a9b1f872 100644 --- a/app/jsm.yml +++ b/app/jsm.yml @@ -49,6 +49,7 @@ services: - module: shellexec prepare: - python util/pre_run/environment_checker.py + - python util/pre_run/check_for_updates.py - python util/data_preparation/jsm_prepare_data.py shutdown: - python util/post_run/jmeter_post_check.py diff --git a/app/util/pre_run/check_for_updates.py b/app/util/pre_run/check_for_updates.py new file mode 100644 index 000000000..b822e44c0 --- /dev/null +++ b/app/util/pre_run/check_for_updates.py @@ -0,0 +1,28 @@ +import requests +from packaging import version + +from util.conf import TOOLKIT_VERSION + +CONF_URL = "https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/master/app/util/conf.py" +VERSION_STR = "TOOLKIT_VERSION" + +r = requests.get(CONF_URL) + +if not r.ok: + print(f"Warning: DCAPT check for updates failed.\nURL: {r.url}. Status code: {r.status_code}. Reason: {r.reason}") + exit(0) + +conf = r.text.splitlines() +version_line = next((line for line in conf if VERSION_STR in line)) +latest_version_str = version_line.split('=')[1].replace("'", "").replace('"', "").strip() + +latest_version = version.parse(latest_version_str) +current_version = version.parse(TOOLKIT_VERSION) + +if current_version < latest_version: + print(f"Warning: DCAPT version {TOOLKIT_VERSION} is outdated. " + f"Consider upgrade to the latest version: {latest_version}.") +elif current_version == latest_version: + print(f"Info: DCAPT version {TOOLKIT_VERSION} is latest.") +else: + print(f"Info: DCAPT version {TOOLKIT_VERSION} is ahead of the latest production version: {latest_version}.") From a146803db14f3920c709784cf292cdf7ceb2ff32 Mon Sep 17 00:00:00 2001 From: mmizin Date: Tue, 20 Jul 2021 13:54:42 +0300 Subject: [PATCH 04/45] [JSM] DCA-1198: jsm stability improvements (#648) * DCA-1198:Refactor add comment action * DCA-1198:Fix view queue small * DCA-1198:Fix add comment and view queue small * DCA-1198:Fix actions * DCA-1198:Fix actions * DCA-1198:Fix issues * DCA-1198:Update view queue small action Co-authored-by: Ansible Admin --- app/selenium_ui/jsm/pages/agent_pages.py | 49 +++++++++++++------- app/selenium_ui/jsm/pages/agent_selectors.py | 1 + 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/app/selenium_ui/jsm/pages/agent_pages.py b/app/selenium_ui/jsm/pages/agent_pages.py index 412f6f3d0..91884e947 100644 --- a/app/selenium_ui/jsm/pages/agent_pages.py +++ b/app/selenium_ui/jsm/pages/agent_pages.py @@ -90,27 +90,38 @@ def __init__(self, driver, request_key=None): def wait_for_page_loaded(self): self.wait_until_visible(ViewCustomerRequestLocators.bread_crumbs) + def check_comment_text_is_displayed(self, text, rte_status=None): + if self.get_elements(ViewCustomerRequestLocators.comment_text_field_RTE) or \ + self.get_elements(ViewCustomerRequestLocators.comment_text_field): + if rte_status: + self.wait_until_available_to_switch(ViewCustomerRequestLocators.comment_text_field_RTE) + if self.wait_until_present(ViewCustomerRequestLocators.comment_tinymce_field).text != text: + self.wait_until_present(ViewCustomerRequestLocators.comment_tinymce_field).send_keys(text) + self.return_to_parent_frame() + self.wait_until_present(ViewCustomerRequestLocators.comment_internally_btn).click() + elif self.wait_until_present(ViewCustomerRequestLocators.comment_text_field).text != text: + self.wait_until_present(ViewCustomerRequestLocators.comment_text_field).send_keys(text) + self.wait_until_present(ViewCustomerRequestLocators.comment_internally_btn).click() + def add_request_comment(self, rte_status): comment_text = f"Add comment from selenium - {self.generate_random_string(30)}" textarea = self.get_element(ViewCustomerRequestLocators.comment_collapsed_textarea) self.driver.execute_script("arguments[0].scrollIntoView(true);", textarea) textarea.click() + comment_button = self.get_element(ViewCustomerRequestLocators.comment_internally_btn) + self.driver.execute_script("arguments[0].scrollIntoView(true);", comment_button) if rte_status: self.wait_until_available_to_switch(ViewCustomerRequestLocators.comment_text_field_RTE) - tinymce_field = self.get_element(ViewCustomerRequestLocators.comment_tinymce_field) - self.driver.execute_script("arguments[0].scrollIntoView(true);", tinymce_field) - self.action_chains().send_keys_to_element(tinymce_field, comment_text).perform() + self.wait_until_present(ViewCustomerRequestLocators.comment_tinymce_field).send_keys(comment_text) self.return_to_parent_frame() + comment_button.click() + self.check_comment_text_is_displayed(comment_text, True) else: - comment_text_field = self.get_element(ViewCustomerRequestLocators.comment_text_field) - self.driver.execute_script("arguments[0].scrollIntoView(true);", comment_text_field) - self.action_chains().move_to_element(comment_text_field).click()\ - .send_keys_to_element(comment_text_field, comment_text).perform() + self.wait_until_present(ViewCustomerRequestLocators.comment_text_field).send_keys(comment_text) + comment_button.click() + self.check_comment_text_is_displayed(comment_text) - comment_button = self.get_element(ViewCustomerRequestLocators.comment_internally_btn) - self.driver.execute_script("arguments[0].scrollIntoView(true);", comment_button) - comment_button.click() self.wait_until_visible(ViewCustomerRequestLocators.comment_collapsed_textarea) @@ -168,13 +179,15 @@ def __init__(self, driver, project_key=None, queue_id=None): self.page_url = url_manager.view_queue_all_open() def wait_for_page_loaded(self): - self.wait_until_visible(ViewQueueLocators.queues_status) + self.wait_until_any_ec_presented( + selector_names=[ViewQueueLocators.queues_status, ViewQueueLocators.queue_is_empty], timeout=self.timeout) def get_random_queue(self): - queues = self.get_elements(ViewQueueLocators.queues) - random_queue = random.choice([queue for queue in queues - if queue.text.partition('\n')[0] not in - ['All open', 'Recently resolved', 'Resolved past 7 days'] - and queue.text.partition('\n')[2] != '0']) - random_queue.click() - self.wait_until_visible(ViewQueueLocators.queues_status, timeout=self.timeout) + if not self.get_elements(ViewQueueLocators.queue_is_empty): + queues = self.get_elements(ViewQueueLocators.queues) + random_queue = random.choice([queue for queue in queues + if queue.text.partition('\n')[0] not in + ['All open', 'Recently resolved', 'Resolved past 7 days'] + and queue.text.partition('\n')[2] != '0']) + random_queue.click() + self.wait_until_present(ViewQueueLocators.queues_status, timeout=self.timeout) diff --git a/app/selenium_ui/jsm/pages/agent_selectors.py b/app/selenium_ui/jsm/pages/agent_selectors.py index 3dc0be557..dc928a538 100644 --- a/app/selenium_ui/jsm/pages/agent_selectors.py +++ b/app/selenium_ui/jsm/pages/agent_selectors.py @@ -119,3 +119,4 @@ class ViewQueueLocators: queues = (By.CSS_SELECTOR, "#pinnednav-opts-sd-queues-nav li") queues_status = (By.XPATH, "//span[contains(text(),'Status')]") + queue_is_empty = (By.CSS_SELECTOR, '.sd-queue-empty') From feb5cdca5b2df1a6a59a47034d83f11520db059d Mon Sep 17 00:00:00 2001 From: mmizin Date: Wed, 21 Jul 2021 11:05:34 +0300 Subject: [PATCH 05/45] DCA-1108:Remove importlib-metadata package from requirements file (#652) --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e191655b2..3b065fe7e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ matplotlib==3.4.2 pandas==1.2.4 -importlib-metadata==4.5.0 bzt==1.15.3 locust==1.4.4 filelock==3.0.12 \ No newline at end of file From 2244be13d6ed8309c1fe3314f0ac264ed288d839 Mon Sep 17 00:00:00 2001 From: OlehStefanyshyn Date: Wed, 21 Jul 2021 14:47:57 +0300 Subject: [PATCH 06/45] Chrome driver version bump up to 92.0.4515.43 (#653) --- app/bitbucket.yml | 2 +- app/confluence.yml | 2 +- app/jira.yml | 2 +- app/jsm.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/bitbucket.yml b/app/bitbucket.yml index eb7e9deaa..9730ceea9 100644 --- a/app/bitbucket.yml +++ b/app/bitbucket.yml @@ -86,7 +86,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "91.0.4472.101" # Supports Chrome version 91. You can refer to http://chromedriver.chromium.org/downloads + version: "92.0.4515.43" # Supports Chrome version 92. 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 91530c6dd..3800adcc1 100644 --- a/app/confluence.yml +++ b/app/confluence.yml @@ -110,7 +110,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "91.0.4472.101" # Supports Chrome version 91. You can refer to http://chromedriver.chromium.org/downloads + version: "92.0.4515.43" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/jira.yml b/app/jira.yml index 790590eb4..c7ef25a41 100644 --- a/app/jira.yml +++ b/app/jira.yml @@ -114,7 +114,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "91.0.4472.101" # Supports Chrome version 91. You can refer to http://chromedriver.chromium.org/downloads + version: "92.0.4515.43" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/jsm.yml b/app/jsm.yml index 9a9b1f872..bbaaad5b4 100644 --- a/app/jsm.yml +++ b/app/jsm.yml @@ -151,7 +151,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "91.0.4472.101" # Supports Chrome version 91. You can refer to http://chromedriver.chromium.org/downloads + version: "92.0.4515.43" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml \ No newline at end of file From f5d9b060b981ebc39d50c102f1b216c9c0ab5ee1 Mon Sep 17 00:00:00 2001 From: OlehStefanyshyn Date: Wed, 21 Jul 2021 15:26:35 +0300 Subject: [PATCH 07/45] Jira/dca 1200 update jira 8 13 8 (#649) * dca-1200:update-jira-8-13-8 * dca-1200:update-jira-8-13-8 Co-authored-by: mmizin --- README.md | 2 +- app/util/jira/populate_db.sh | 2 +- app/util/jira/upload_attachments.sh | 2 +- docs/dc-apps-performance-toolkit-user-guide-jira.md | 5 ++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index bd0f5a418..fee52ce76 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ This repository contains Taurus scripts for performance testing of Atlassian Dat ## Supported versions * Supported Jira versions: - * Jira [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `8.13.7`, `8.5.15` + * Jira [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `8.13.8`, `8.5.15` * Supported Jira Service Management versions: * Jira Service Management [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `4.13.7`, `4.5.15` diff --git a/app/util/jira/populate_db.sh b/app/util/jira/populate_db.sh index c659b1ac2..bed56aad5 100644 --- a/app/util/jira/populate_db.sh +++ b/app/util/jira/populate_db.sh @@ -45,7 +45,7 @@ JIRA_DB_PASS="Password1!" # Jira/JSM supported versions -SUPPORTED_JIRA_VERSIONS=(8.5.15 8.13.7) +SUPPORTED_JIRA_VERSIONS=(8.5.15 8.13.8) SUPPORTED_JSM_VERSIONS=(4.5.15 4.13.7) SUPPORTED_VERSIONS=("${SUPPORTED_JIRA_VERSIONS[@]}") diff --git a/app/util/jira/upload_attachments.sh b/app/util/jira/upload_attachments.sh index 5b60e1607..39cd53ad7 100644 --- a/app/util/jira/upload_attachments.sh +++ b/app/util/jira/upload_attachments.sh @@ -28,7 +28,7 @@ JIRA_VERSION_FILE="/media/atl/jira/shared/jira-software.version" # Jira/JSM supported versions -SUPPORTED_JIRA_VERSIONS=(8.5.15 8.13.7) +SUPPORTED_JIRA_VERSIONS=(8.5.15 8.13.8) SUPPORTED_JSM_VERSIONS=(4.5.15 4.13.7) SUPPORTED_VERSIONS=("${SUPPORTED_JIRA_VERSIONS[@]}") diff --git a/docs/dc-apps-performance-toolkit-user-guide-jira.md b/docs/dc-apps-performance-toolkit-user-guide-jira.md index 5b596aaa5..e3d219380 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-jira.md +++ b/docs/dc-apps-performance-toolkit-user-guide-jira.md @@ -66,7 +66,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended value | | --------- | ----------------- | | Jira Product | Software | -| Version | The Data Center App Performance Toolkit officially supports `8.13.7`, `8.5.15` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | +| Version | The Data Center App Performance Toolkit officially supports `8.13.8`, `8.5.15` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | **Cluster nodes** @@ -387,7 +387,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended Value | | --------- | ----------------- | | Jira Product | Software | -| Version | The Data Center App Performance Toolkit officially supports `8.13.7`, `8.5.15` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | +| Version | The Data Center App Performance Toolkit officially supports `8.13.8`, `8.5.15` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | **Cluster nodes** @@ -865,7 +865,6 @@ To receive scalability benchmark results for two-node Jira DC **with** app-speci indexes - 100% Index restore complete ``` - {{% 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 %}} From 56d72d344d510f9cd5c11a16aa8444f060a4ceb6 Mon Sep 17 00:00:00 2001 From: OlehStefanyshyn Date: Wed, 28 Jul 2021 14:53:12 +0300 Subject: [PATCH 08/45] DCA-1073: Update populate_db script (#656) * DCA-1073: Update populate_db script * DCA-1073: Update populate_db.sh --- app/util/bitbucket/populate_db.sh | 8 +++++++- app/util/confluence/populate_db.sh | 8 +++++++- app/util/jira/populate_db.sh | 8 +++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/util/bitbucket/populate_db.sh b/app/util/bitbucket/populate_db.sh index 442cb4a41..68c21915d 100644 --- a/app/util/bitbucket/populate_db.sh +++ b/app/util/bitbucket/populate_db.sh @@ -49,8 +49,14 @@ if [[ ! "${SUPPORTED_BITBUCKET_VERSIONS[*]}" =~ ${BITBUCKET_VERSION} ]]; then echo "!!! Warning !!! This may break your Bitbucket instance. Also, note that downgrade is not supported by Bitbucket." # Check if --force flag is passed into command if [[ "$1" == "--force" ]]; then + # Check if version was specified after --force flag + if [[ -z "$2" ]]; then + echo "Error: --force flag requires version after it." + echo "Specify one of these versions: ${SUPPORTED_BITBUCKET_VERSIONS[*]}" + exit 1 + fi # Check if passed Bitbucket version is in list of supported - if [[ "${SUPPORTED_BITBUCKET_VERSIONS[*]}" =~ ${2} ]]; then + if [[ " ${SUPPORTED_BITBUCKET_VERSIONS[@]} " =~ " ${2} " ]]; then DB_DUMP_URL="${DATASETS_AWS_BUCKET}/$2/${DATASETS_SIZE}/${DB_DUMP_NAME}" echo "Force mode. Dataset URL: ${DB_DUMP_URL}" else diff --git a/app/util/confluence/populate_db.sh b/app/util/confluence/populate_db.sh index ec189ff6f..51852bef6 100644 --- a/app/util/confluence/populate_db.sh +++ b/app/util/confluence/populate_db.sh @@ -53,8 +53,14 @@ if [[ ! "${SUPPORTED_CONFLUENCE_VERSIONS[*]}" =~ ${CONFLUENCE_VERSION} ]]; then echo "!!! Warning !!! This may break your Confluence instance. Also, note that downgrade is not supported by Confluence." # Check if --force flag is passed into command if [[ "$1" == "--force" ]]; then + # Check if version was specified after --force flag + if [[ -z "$2" ]]; then + echo "Error: --force flag requires version after it." + echo "Specify one of these versions: ${SUPPORTED_CONFLUENCE_VERSIONS[*]}" + exit 1 + fi # Check if passed Confluence version is in list of supported - if [[ "${SUPPORTED_CONFLUENCE_VERSIONS[*]}" =~ ${2} ]]; then + if [[ " ${SUPPORTED_CONFLUENCE_VERSIONS[@]} " =~ " ${2} " ]]; then DB_DUMP_URL="${DATASETS_AWS_BUCKET}/$2/${DATASETS_SIZE}/${DB_DUMP_NAME}" echo "Force mode. Dataset URL: ${DB_DUMP_URL}" else diff --git a/app/util/jira/populate_db.sh b/app/util/jira/populate_db.sh index bed56aad5..78d8205c2 100644 --- a/app/util/jira/populate_db.sh +++ b/app/util/jira/populate_db.sh @@ -90,8 +90,14 @@ if [[ ! "${SUPPORTED_VERSIONS[*]}" =~ ${JIRA_VERSION} ]]; then echo "!!! Warning !!! This may break your Jira instance." # Check if --force flag is passed into command if [[ ${force} == 1 ]]; then + # Check if version was specified after --force flag + if [[ -z ${version} ]]; then + echo "Error: --force flag requires version after it." + echo "Specify one of these versions: ${SUPPORTED_VERSIONS[*]}" + exit 1 + fi # Check if passed Jira version is in list of supported - if [[ "${SUPPORTED_VERSIONS[*]}" =~ ${version} ]]; then + if [[ " ${SUPPORTED_VERSIONS[@]} " =~ " ${version} " ]]; then DB_DUMP_URL="${DATASETS_AWS_BUCKET}/${version}/${DATASETS_SIZE}/${DB_DUMP_NAME}" echo "Force mode. Dataset URL: ${DB_DUMP_URL}" # If there is no DOWNGRADE_OPT - set it From fb9b27927a3220c1293a49b3a07160d9340bd966 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Fri, 30 Jul 2021 13:57:40 +0300 Subject: [PATCH 09/45] DCA-1016: Confluence prepare data script update --- .../confluence_prepare_data.py | 41 +++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/app/util/data_preparation/confluence_prepare_data.py b/app/util/data_preparation/confluence_prepare_data.py index 1982c4c0c..d542a9c5a 100644 --- a/app/util/data_preparation/confluence_prepare_data.py +++ b/app/util/data_preparation/confluence_prepare_data.py @@ -3,12 +3,15 @@ import urllib3 +from multiprocessing import cpu_count +from multiprocessing.pool import ThreadPool from util.conf import CONFLUENCE_SETTINGS from util.api.confluence_clients import ConfluenceRpcClient, ConfluenceRestClient from util.project_paths import CONFLUENCE_USERS, CONFLUENCE_PAGES, CONFLUENCE_BLOGS, CONFLUENCE_CUSTOM_PAGES urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) +NUM_CORES = cpu_count() USERS = "users" PAGES = "pages" CUSTOM_PAGES = "custom_pages" @@ -21,17 +24,44 @@ ENGLISH_GB = 'en_GB' +def print_timing(message, sep='-'): + assert message is not None, "Message is not passed to print_timing decorator" + + def deco_wrapper(func): + @functools.wraps(func) + def wrapper(*args, **kwargs) -> object: + start = timer() + print(sep * 20) + print(f'{message} started {datetime.datetime.now().strftime("%H:%M:%S")}') + result = func(*args, **kwargs) + end = timer() + print(f"{message} finished in {timedelta(seconds=end - start)}") + print(sep * 20) + return result + + return wrapper + + return deco_wrapper + + def generate_random_string(length=20): return "".join([random.choice(string.ascii_lowercase) for _ in range(length)]) +@print_timing('Creating dataset started') def __create_data_set(rest_client, rpc_client): dataset = dict() dataset[USERS] = __get_users(rest_client, rpc_client, CONFLUENCE_SETTINGS.concurrency) perf_user = random.choice(dataset[USERS])['user'] perf_user_api = ConfluenceRestClient(CONFLUENCE_SETTINGS.server_url, perf_user['username'], DEFAULT_USER_PASSWORD) - dataset[PAGES] = __get_pages(perf_user_api, 5000) - dataset[BLOGS] = __get_blogs(perf_user_api, 5000) + + def __get_pages_blogs(func): + return func(perf_user_api, 5000) + + pool = ThreadPool(processes=2) + blogs, pages = pool.map(__get_pages_blogs, [__get_blogs, __get_pages]) + dataset[PAGES] = pages + dataset[BLOGS] = blogs dataset[CUSTOM_PAGES] = __get_custom_pages(perf_user_api, 5000, CONFLUENCE_SETTINGS.custom_dataset_query) print(f'Users count: {len(dataset[USERS])}') print(f'Pages count: {len(dataset[PAGES])}') @@ -40,7 +70,7 @@ def __create_data_set(rest_client, rpc_client): print(f'Custom pages count: {len(dataset[CUSTOM_PAGES])}') return dataset - +@print_timing('Getting users') def __get_users(confluence_api, rpc_api, count): errors_count = 0 cur_perf_users = confluence_api.get_users(DEFAULT_USER_PREFIX, count) @@ -65,6 +95,7 @@ def __get_users(confluence_api, rpc_api, count): return cur_perf_users +@print_timing('Getting pages') def __get_pages(confluence_api, count): pages = confluence_api.get_content_search( 0, count, cql='type=page' @@ -79,6 +110,7 @@ def __get_pages(confluence_api, count): return pages +@print_timing('Getting custom pages') def __get_custom_pages(confluence_api, count, cql): pages = [] if cql: @@ -89,6 +121,7 @@ def __get_custom_pages(confluence_api, count, cql): return pages +@print_timing('Getting blogs') def __get_blogs(confluence_api, count): blogs = confluence_api.get_content_search( 0, count, cql='type=blogpost' @@ -110,6 +143,7 @@ def __write_to_file(file_path, items): f.write(f"{item}\n") +@print_timing('Started writing data to files') def write_test_data_to_files(dataset): pages = [f"{page['id']},{page['space']['key']}" for page in dataset[PAGES]] __write_to_file(CONFLUENCE_PAGES, pages) @@ -144,6 +178,7 @@ def __check_for_admin_permissions(confluence_api): raise SystemExit(f"The '{confluence_api.user}' user does not have admin permissions.") +@print_timing('Confluence data preparation') def main(): print("Started preparing data") From ea0bbf591b97529ed6f31e7df049ee47c9561727 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Mon, 2 Aug 2021 12:33:19 +0300 Subject: [PATCH 10/45] DCA-1016: Async code modified, added the new file util.py --- .../confluence_prepare_data.py | 42 ++++++------------- app/util/data_preparation/jsm_prepare_data.py | 28 ++----------- app/util/util.py | 24 +++++++++++ 3 files changed, 39 insertions(+), 55 deletions(-) create mode 100644 app/util/util.py diff --git a/app/util/data_preparation/confluence_prepare_data.py b/app/util/data_preparation/confluence_prepare_data.py index d542a9c5a..c05c7ee88 100644 --- a/app/util/data_preparation/confluence_prepare_data.py +++ b/app/util/data_preparation/confluence_prepare_data.py @@ -1,9 +1,8 @@ import random import string - import urllib3 -from multiprocessing import cpu_count +from util.util import print_timing from multiprocessing.pool import ThreadPool from util.conf import CONFLUENCE_SETTINGS from util.api.confluence_clients import ConfluenceRpcClient, ConfluenceRestClient @@ -11,7 +10,6 @@ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) -NUM_CORES = cpu_count() USERS = "users" PAGES = "pages" CUSTOM_PAGES = "custom_pages" @@ -24,44 +22,27 @@ ENGLISH_GB = 'en_GB' -def print_timing(message, sep='-'): - assert message is not None, "Message is not passed to print_timing decorator" - - def deco_wrapper(func): - @functools.wraps(func) - def wrapper(*args, **kwargs) -> object: - start = timer() - print(sep * 20) - print(f'{message} started {datetime.datetime.now().strftime("%H:%M:%S")}') - result = func(*args, **kwargs) - end = timer() - print(f"{message} finished in {timedelta(seconds=end - start)}") - print(sep * 20) - return result - - return wrapper - - return deco_wrapper - - def generate_random_string(length=20): return "".join([random.choice(string.ascii_lowercase) for _ in range(length)]) @print_timing('Creating dataset started') def __create_data_set(rest_client, rpc_client): - dataset = dict() + dataset = dict([]) dataset[USERS] = __get_users(rest_client, rpc_client, CONFLUENCE_SETTINGS.concurrency) perf_user = random.choice(dataset[USERS])['user'] perf_user_api = ConfluenceRestClient(CONFLUENCE_SETTINGS.server_url, perf_user['username'], DEFAULT_USER_PASSWORD) - def __get_pages_blogs(func): - return func(perf_user_api, 5000) - pool = ThreadPool(processes=2) - blogs, pages = pool.map(__get_pages_blogs, [__get_blogs, __get_pages]) - dataset[PAGES] = pages - dataset[BLOGS] = blogs + async_pages = pool.apply_async(__get_pages, (perf_user_api, 5000)) + async_blogs = pool.apply_async(__get_blogs, (perf_user_api, 5000)) + + async_pages.wait() + async_blogs.wait() + + dataset[PAGES] = async_pages.get() + dataset[BLOGS] = async_blogs.get() + dataset[CUSTOM_PAGES] = __get_custom_pages(perf_user_api, 5000, CONFLUENCE_SETTINGS.custom_dataset_query) print(f'Users count: {len(dataset[USERS])}') print(f'Pages count: {len(dataset[PAGES])}') @@ -70,6 +51,7 @@ def __get_pages_blogs(func): print(f'Custom pages count: {len(dataset[CUSTOM_PAGES])}') return dataset + @print_timing('Getting users') def __get_users(confluence_api, rpc_api, count): errors_count = 0 diff --git a/app/util/data_preparation/jsm_prepare_data.py b/app/util/data_preparation/jsm_prepare_data.py index 6c8713b01..5588504eb 100644 --- a/app/util/data_preparation/jsm_prepare_data.py +++ b/app/util/data_preparation/jsm_prepare_data.py @@ -1,14 +1,12 @@ -import datetime -import functools + import random import string from concurrent.futures.thread import ThreadPoolExecutor -from datetime import timedelta from itertools import repeat -from timeit import default_timer as timer -import urllib3 +import urllib3 +from util.util import print_timing from util.api.abstract_clients import JSM_EXPERIMENTAL_HEADERS from util.api.jira_clients import JiraRestClient from util.api.jsm_clients import JsmRestClient @@ -54,26 +52,6 @@ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) -def print_timing(message, sep='-'): - assert message is not None, "Message is not passed to print_timing decorator" - - def deco_wrapper(func): - @functools.wraps(func) - def wrapper(*args, **kwargs): - start = timer() - print(sep * 20) - print(f'{message} started {datetime.datetime.now().strftime("%H:%M:%S")}') - result = func(*args, **kwargs) - end = timer() - print(f"{message} finished in {timedelta(seconds=end - start)}") - print(sep * 20) - return result - - return wrapper - - return deco_wrapper - - def __calculate_issues_per_project(projects_count): calculated_issues_per_project_count = {} max_percentage_key = max(PROJECTS_ISSUES_PERC, key=int) diff --git a/app/util/util.py b/app/util/util.py new file mode 100644 index 000000000..3d3e35a6b --- /dev/null +++ b/app/util/util.py @@ -0,0 +1,24 @@ +from datetime import timedelta +from timeit import default_timer as timer +import datetime +import functools + + +def print_timing(message, sep='-'): + assert message is not None, "Message is not passed to print_timing decorator" + + def deco_wrapper(func): + @functools.wraps(func) + def wrapper(*args, **kwargs): + start = timer() + print(sep * 20) + print(f'{message} started {datetime.datetime.now().strftime("%H:%M:%S")}') + result = func(*args, **kwargs) + end = timer() + print(f"{message} finished in {timedelta(seconds=end - start)}") + print(sep * 20) + return result + + return wrapper + + return deco_wrapper From 6006fcb5523ea9651499a8d7497abb32eb1b7f34 Mon Sep 17 00:00:00 2001 From: opopovss <86659792+opopovss@users.noreply.github.com> Date: Mon, 2 Aug 2021 17:23:52 +0300 Subject: [PATCH 11/45] Chrome driver version bump up to 92.0.4515.107 (#658) --- app/bitbucket.yml | 2 +- app/confluence.yml | 2 +- app/jira.yml | 2 +- app/jsm.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/bitbucket.yml b/app/bitbucket.yml index 9730ceea9..41b28aeb0 100644 --- a/app/bitbucket.yml +++ b/app/bitbucket.yml @@ -86,7 +86,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "92.0.4515.43" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads + version: "92.0.4515.107" # Supports Chrome version 92. 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 3800adcc1..1f068dd59 100644 --- a/app/confluence.yml +++ b/app/confluence.yml @@ -110,7 +110,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "92.0.4515.43" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads + version: "92.0.4515.107" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/jira.yml b/app/jira.yml index c7ef25a41..cf02f1fc1 100644 --- a/app/jira.yml +++ b/app/jira.yml @@ -114,7 +114,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "92.0.4515.43" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads + version: "92.0.4515.107" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/jsm.yml b/app/jsm.yml index bbaaad5b4..d0d00f129 100644 --- a/app/jsm.yml +++ b/app/jsm.yml @@ -151,7 +151,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "92.0.4515.43" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads + version: "92.0.4515.107" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml \ No newline at end of file From 5c519cdbc040379a244b0b71f4013c15ba668c11 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Tue, 3 Aug 2021 11:39:06 +0300 Subject: [PATCH 12/45] DCA-1016:fixed my mistake --- app/util/data_preparation/confluence_prepare_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/util/data_preparation/confluence_prepare_data.py b/app/util/data_preparation/confluence_prepare_data.py index c05c7ee88..e5a8041aa 100644 --- a/app/util/data_preparation/confluence_prepare_data.py +++ b/app/util/data_preparation/confluence_prepare_data.py @@ -28,7 +28,7 @@ def generate_random_string(length=20): @print_timing('Creating dataset started') def __create_data_set(rest_client, rpc_client): - dataset = dict([]) + dataset = dict() dataset[USERS] = __get_users(rest_client, rpc_client, CONFLUENCE_SETTINGS.concurrency) perf_user = random.choice(dataset[USERS])['user'] perf_user_api = ConfluenceRestClient(CONFLUENCE_SETTINGS.server_url, perf_user['username'], DEFAULT_USER_PASSWORD) From fe84b0c6683a672d56035940714bdc376e198d56 Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Wed, 4 Aug 2021 15:18:34 +0300 Subject: [PATCH 13/45] Add Oleh and AlexP to codeowners (#660) --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 0cb83edd3..f18b20bf5 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,2 +1,2 @@ # Default code owners - Atlassian Data Center App Performance Toolkit -* @ometelytsia @SergeyMoroz0703 @astashys @mmizin \ No newline at end of file +* @ometelytsia @SergeyMoroz0703 @astashys @mmizin @opopovss @OlehStefanyshyn \ No newline at end of file From 2e36df2764ec88da57bc162c2293e7ce4d173b67 Mon Sep 17 00:00:00 2001 From: mmizin Date: Wed, 4 Aug 2021 17:24:58 +0300 Subject: [PATCH 14/45] DCA-1234:Update commits locator (#659) --- app/selenium_ui/bitbucket/pages/selectors.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/selenium_ui/bitbucket/pages/selectors.py b/app/selenium_ui/bitbucket/pages/selectors.py index a279875fe..54ca302e9 100644 --- a/app/selenium_ui/bitbucket/pages/selectors.py +++ b/app/selenium_ui/bitbucket/pages/selectors.py @@ -224,4 +224,4 @@ class UserSettingsLocator: class RepoCommitsLocator: - repo_commits_graph = (By.CSS_SELECTOR, 'svg.commit-graph') + repo_commits_graph = (By.ID, 'commits-table') From f2df05e79262218c3a745b6273cef1cfdc549d5d Mon Sep 17 00:00:00 2001 From: mmizin Date: Thu, 5 Aug 2021 12:11:10 +0300 Subject: [PATCH 15/45] [Bitbucket] DCA-1237 update sh scripts to use bb small dataset (#661) --- app/util/bitbucket/populate_db.sh | 21 ++++++++++++++++++++- app/util/bitbucket/upload_attachments.sh | 21 ++++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/app/util/bitbucket/populate_db.sh b/app/util/bitbucket/populate_db.sh index 68c21915d..2eae52265 100644 --- a/app/util/bitbucket/populate_db.sh +++ b/app/util/bitbucket/populate_db.sh @@ -3,6 +3,21 @@ ################### Check if NFS exists ################### pgrep nfsd > /dev/null && echo "NFS found" || { echo NFS process was not found. This script is intended to run only on the Bitbucket NFS Server machine. && exit 1; } +# Read command line arguments +while [[ "$#" -gt 0 ]]; do case $1 in + --small) small=1 ;; + --force) + if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then + force=1 + version=${2} + shift + else + force=1 + fi + ;; + *) echo "Unknown parameter passed: $1"; exit 1;; +esac; shift; done + ################### Variables section ################### # Command to install psql client for Amazon Linux 2. # In case of different distributive, please adjust accordingly or install manually. @@ -33,8 +48,12 @@ fi echo "Bitbucket version: ${BITBUCKET_VERSION}" # Datasets AWS bucket and db dump name -DATASETS_AWS_BUCKET="https://centaurus-datasets.s3.amazonaws.com/bitbucket" + DATASETS_SIZE="large" +if [[ ${small} == 1 ]]; then + DATASETS_SIZE="small" +fi +DATASETS_AWS_BUCKET="https://centaurus-datasets.s3.amazonaws.com/bitbucket" DB_DUMP_NAME="db.dump" DB_DUMP_URL="${DATASETS_AWS_BUCKET}/${BITBUCKET_VERSION}/${DATASETS_SIZE}/${DB_DUMP_NAME}" diff --git a/app/util/bitbucket/upload_attachments.sh b/app/util/bitbucket/upload_attachments.sh index e69bebd4b..6e03f0300 100644 --- a/app/util/bitbucket/upload_attachments.sh +++ b/app/util/bitbucket/upload_attachments.sh @@ -3,6 +3,21 @@ ################### Check if NFS exists ################### pgrep nfsd > /dev/null && echo "NFS found" || { echo NFS process was not found. This script is intended to run only on the Bitbucket NFS Server machine. && exit 1; } +# Read command line arguments +while [[ "$#" -gt 0 ]]; do case $1 in + --small) small=1 ;; + --force) + if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then + force=1 + version=${2} + shift + else + force=1 + fi + ;; + *) echo "Unknown parameter passed: $1"; exit 1;; +esac; shift; done + ################### Variables section ################### # Bitbucket version variables BITBUCKET_VERSION_FILE="/media/atl/bitbucket/shared/bitbucket.version" @@ -15,9 +30,13 @@ if [[ -z "$BITBUCKET_VERSION" ]]; then fi echo "Bitbucket Version: ${BITBUCKET_VERSION}" +DATASETS_SIZE="large" +if [[ ${small} == 1 ]]; then + DATASETS_SIZE="small" +fi + DATASETS_AWS_BUCKET="https://centaurus-datasets.s3.amazonaws.com/bitbucket" ATTACHMENTS_TAR="attachments.tar.gz" -DATASETS_SIZE="large" ATTACHMENTS_TAR_URL="${DATASETS_AWS_BUCKET}/${BITBUCKET_VERSION}/${DATASETS_SIZE}/${ATTACHMENTS_TAR}" NFS_DIR="/media/atl/bitbucket/shared" ATTACHMENT_DIR_DATA="data" From 67d5abd3bb23b778ab1ef7e59d9110a8f713298f Mon Sep 17 00:00:00 2001 From: mmizin Date: Thu, 5 Aug 2021 12:33:07 +0300 Subject: [PATCH 16/45] DCA-1216:Update BB user guide (#654) --- ...erformance-toolkit-user-guide-bitbucket.md | 264 +++++++++++++++--- 1 file changed, 224 insertions(+), 40 deletions(-) diff --git a/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md b/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md index 594098091..9eeca7ff2 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md +++ b/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md @@ -10,12 +10,21 @@ date: "2021-06-16" This document walks you through the process of testing your app on Bitbucket using the Data Center App Performance Toolkit. These instructions focus on producing the required [performance and scale benchmarks for your Data Center app](https://developer.atlassian.com/platform/marketplace/dc-apps-performance-and-scale-testing/). -To use the Data Center App Performance Toolkit, you'll need to: +In this document, we cover the use of the Data Center App Performance Toolkit on two types of environments: -1. [Set up Bitbucket Data Center on AWS](#instancesetup). -1. [Load an enterprise-scale dataset on your Bitbucket Data Center deployment](#preloading). -1. [Set up an execution environment for the toolkit](#executionhost). -1. [Run all the testing scenarios in the toolkit](#testscenario). +**[Development environment](#mainenvironmentdev)**: Bitbucket Data Center environment for a test run of Data Center App Performance Toolkit and development of [app-specific actions](#appspecificactions). We recommend you use the [AWS Quick Start for Bitbucket Data Center](https://aws.amazon.com/quickstart/architecture/bitbucket/) with the parameters prescribed here. + +1. [Set up a development environment Bitbucket Data Center on AWS](#devinstancesetup). +2. [Create a dataset for the development environment](#devdataset). +3. [Run toolkit on the development environment locally](#devtestscenario). +4. [Develop and test app-specific actions locally](#devappaction). + +**[Enterprise-scale environment](#mainenvironmententerprise)**: Bitbucket Data Center environment used to generate Data Center App Performance Toolkit test results for the Marketplace approval process. Preferably, use the [AWS Quick Start for Bitbucket Data Center](https://aws.amazon.com/quickstart/architecture/bitbucket/) with the parameters prescribed below. These parameters provision larger, more powerful infrastructure for your Bitbucket Data Center. + +5. [Set up an enterprise-scale environment Bitbucket Data Center on AWS](#instancesetup). +6. [Load an enterprise-scale dataset on your Bitbucket Data Center deployment](#preloading). +7. [Set up an execution environment for the toolkit](#executionhost). +8. [Run all the testing scenarios in the toolkit](#testscenario). {{% note %}} For simple spikes or tests, you can skip steps 1-2 and target any Bitbucket test instance. When you [set up your execution environment](#executionhost), you may need to edit the scripts according to your test instance's data set. @@ -23,7 +32,211 @@ For simple spikes or tests, you can skip steps 1-2 and target any Bitbucket test --- -## 1. Setting up Bitbucket Data Center +## Development environment + +Running the tests in a development environment helps familiarize you with the toolkit. It'll also provide you with a lightweight and less expensive environment for developing. Once you're ready to generate test results for the Marketplace Data Center Apps Approval process, run the toolkit in an **enterprise-scale environment**. + +### 1. Setting up Bitbucket Data Center development environment + +We recommend that you set up development environment using the [AWS Quick Start for Bitbucket Data Center](https://aws.amazon.com/quickstart/architecture/bitbucket/) (**How to deploy** tab). All the instructions on this page are optimized for AWS. If you already have an existing Bitbucket Data Center environment, you can also use that too (if so, skip to [Create a dataset for the development environment](#devdataset)). + +#### Using the AWS Quick Start for Bitbucket + +If you are a new user, perform an end-to-end deployment. This involves deploying Bitbucket into a _new_ ASI: + +Navigate to **[AWS Quick Start for Bitbucket Data Center](https://aws.amazon.com/quickstart/architecture/bitbucket/) > How to deploy** tab **> Deploy into a new ASI** link. + +If you have already deployed the ASI separately by using the [ASI Quick Start](https://aws.amazon.com/quickstart/architecture/atlassian-standard-infrastructure/)ASI Quick Start or by deploying another Atlassian product (Jira, Bitbucket, or Confluence Data Center development environment) with ASI, deploy Bitbucket into your existing ASI: + +Navigate to **[AWS Quick Start for Bitbucket Data Center](https://aws.amazon.com/quickstart/architecture/bitbucket/) > How to deploy** tab **> Deploy into your existing ASI** link. + +{{% note %}} +You are responsible for the cost of AWS services used while running this Quick Start reference deployment. This Quick Start doesn't have any additional prices. See [Amazon EC2 pricing](https://aws.amazon.com/ec2/pricing/) for more detail. +{{% /note %}} + +To reduce costs, we recommend you to keep your deployment up and running only during the performance runs. + +#### AWS cost estimation for the development environment + +AWS Bitbucket Data Center development environment infrastructure costs about 25 - 40$ per working week depending on such factors like region, instance type, deployment type of DB, and other. + +#### Quick Start parameters for development environment + +All important parameters are listed and described in this section. For all other remaining parameters, we recommend using the Quick Start defaults. + +**Bitbucket setup** + +| Parameter | Recommended value | +| --------- | ----------------- | +| Bitbucket Product | Software | +| Version | The Data Center App Performance Toolkit officially supports `7.6.7`, `6.10.11` ([Long Term Support releases](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) and `7.0.5` Platform Release | + +**Cluster nodes** + +| Parameter | Recommended value | +| --------- | ----------------- | +| Cluster node instance type | [t3.medium](https://aws.amazon.com/ec2/instance-types/t3/) (we recommend this instance type for its good balance between price and performance in testing environments) | +| Maximum number of cluster nodes | 1 | +| Minimum number of cluster nodes | 1 | +| Cluster node instance volume size | 50 | + +**File server** + +| Parameter | Recommended Value | +| --------- | ----------------- | +| File server instance type | m4.xlarge | +| Home directory size | 100 | + + +**Database** + +| Parameter | Recommended Value | +| --------- | ----------------- | +| The database engine to deploy with | PostgresSQL | +| The database engine version to use | 11 | +| Database instance class | [db.t3.medium](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#Concepts.DBInstanceClass.Summary) | +| RDS Provisioned IOPS | 1000 | +| Master password | Password1! | +| Enable RDS Multi-AZ deployment | false | +| Bitbucket database password | Password1! | +| Database storage | 100 | + +**Elasticsearch** + +| Parameter | Recommended Value | +| --------- | ----------------- | +| Elasticsearch master user password | (leave blank) | +| Elasticsearch instance type | m4.large.elasticsearch | +| Elasticsearch disk-space per node (GB) | 100 | + +**Networking (for new ASI)** + +| Parameter | Recommended Value | +| --------- | ----------------- | +| Trusted IP range | 0.0.0.0/0 _(for public access) or your own trusted IP range_ | +| Availability Zones | _Select two availability zones in your region_ | +| Permitted IP range | 0.0.0.0/0 _(for public access) or your own trusted IP range_ | +| Make instance internet facing | true | +| Key Name | _The EC2 Key Pair to allow SSH access. See [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) for more info._ | + +**Networking (for existing ASI)** + +| Parameter | Recommended Value | +| --------- | ----------------- | +| Make instance internet facing | true | +| Permitted IP range | 0.0.0.0/0 _(for public access) or your own trusted IP range_ | +| Key Name | _The EC2 Key Pair to allow SSH access. See [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) for more info._ | + +### Running the setup wizard + +After successfully deploying Bitbucket Data Center in AWS, you'll need to configure it: + +1. In the AWS console, go to **Services** > **CloudFormation** > **Stack** > **Stack details** > **Select your stack**. +1. On the **Outputs** tab, copy the value of the **LoadBalancerURL** key. +1. Open **LoadBalancerURL** in your browser. This will take you to the Bitbucket setup wizard. +1. On the **Bitbucket setup** page, populate the following fields: + - **Application title**: any name for your Bitbucket Data Center deployment + - **Base URL**: your stack's Elastic LoadBalancer URL + - **License key**: select new evaluation license or existing license checkbox + Click **Next**. +1. On the **Administrator account setup** page, populate the following fields: + - **Username**: admin _(recommended)_ + - **Full name**: any full name of the admin user + - **Email address**: email address of the admin user + - **Password**: admin _(recommended)_ + - **Confirm Password**: admin _(recommended)_ + Click **Go to Bitbucket**. + +--- + +### 2. Generate dataset for development environment + +After creating the development environment Bitbucket Data Center, generate test dataset to run Data Center App Performance Toolkit: +- Create at least one project +- Create repository with some files in a project +- Create a new branch from the repo, make and push changes to the branch and create a pull request + +--- + +### 3. Run toolkit on the development environment locally + +{{% warning %}} +Make sure **English (United States)** language is selected as a default language on the **![cog icon](/platform/marketplace/images/cog.png) > Server settings > Language** page. Other languages are **not supported** by the toolkit. +{{% /warning %}} + +1. Clone [Data Center App Performance Toolkit](https://github.com/atlassian/dc-app-performance-toolkit) locally. +1. Follow the [README.md](https://github.com/atlassian/dc-app-performance-toolkit/blob/master/README.md) instructions to set up toolkit locally. +1. Navigate to `dc-app-performance-toolkit/app` folder. +1. Open the `bitbucket.yml` file and fill in the following variables: + - `application_hostname`: your_dc_bitbucket_instance_hostname without protocol. + - `application_protocol`: http or https. + - `application_port`: for HTTP - 80, for HTTPS - 443, 8080, 7990 or your instance-specific port. + - `secure`: True or False. Default value is True. Set False to allow insecure connections, e.g. when using self-signed SSL certificate. + - `application_postfix`: it is empty by default; e.g., /bitbucket for url like this http://localhost:7990/bitbucket. + - `admin_login`: admin user username. + - `admin_password`: admin user password. + - `load_executor`: executor for load tests - [jmeter](https://jmeter.apache.org/) + - `concurrency`: `1` - number of concurrent JMeter users. + - `test_duration`: `5m` - duration of the performance run. + - `ramp-up`: `1s` - amount of time it will take JMeter to add all test users to test execution. + - `total_actions_per_hour`: `3270` - number of total JMeter actions per hour. + - `WEBDRIVER_VISIBLE`: visibility of Chrome browser during selenium execution (False is by default). + +1. Run bzt. + + ``` bash + bzt bitbucket.yml + ``` + +1. Review the resulting table in the console log. All JMeter and Selenium actions should have 95+% success rate. +In case some actions does not have 95+% success rate refer to the following logs in `dc-app-performance-toolkit/app/results/bitbucket/YY-MM-DD-hh-mm-ss` folder: + + - `results_summary.log`: detailed run summary + - `results.csv`: aggregated .csv file with all actions and timings + - `bzt.log`: logs of the Taurus tool execution + - `jmeter.*`: logs of the JMeter tool execution + - `pytest.*`: logs of Pytest-Selenium execution + +{{% warning %}} +Do not proceed with the next step until you have all actions 95+% success rate. Ask [support](#support) if above logs analysis did not help. +{{% /warning %}} + +--- + +### 4. Develop and test app-specific action locally +Data Center App Performance Toolkit has its own set of default test actions for Bitbucket Data Center: JMeter and Selenium for load and UI tests respectively. + +**App-specific action** - action (performance test) you have to develop to cover main use cases of your application. Performance test should focus on the common usage of your application and not to cover all possible functionality of your app. For example, application setup screen or other one-time use cases are out of scope of performance testing. + +1. Define main use case of your app. Usually it is one or two main app use cases. +1. Your app adds new UI elements in Bitbucket Data Center - Selenium app-specific action has to be developed. +1. Your app introduces new endpoint or extensively calls existing Bitbucket Data Center API - JMeter app-specific actions has to be developed. + + +{{% note %}} +We strongly recommend developing your app-specific actions on the development environment to reduce AWS infrastructure costs. +{{% /note %}} + +#### Example of app-specific Selenium action development +You develop an app that adds some additional fields to specific types of Bitbucket issues. In this case, you should develop Selenium app-specific action: + +1. Extend example of app-specific action in `dc-app-performance-toolkit/app/extension/bitbucket/extension_ui.py`. +[Code example.](https://github.com/atlassian/dc-app-performance-toolkit/blob/master/app/extension/bitbucket/extension_ui.py) +So, our test has to open app-specific issues and measure time to load of this app-specific issues. +1. If you need to run `app_speicifc_action` as specific user uncomment `app_specific_user_login` function in [code example](https://github.com/atlassian/dc-app-performance-toolkit/blob/master/app/extension/bitbucket/extension_ui.py). Note, that in this case `test_1_selenium_custom_action` should follow just before `test_2_selenium_z_log_out` action. +1. In `dc-app-performance-toolkit/app/selenium_ui/bitbucket-ui.py`, review and uncomment the following block of code to make newly created app-specific actions executed: +``` python +# def test_1_selenium_custom_action(webdriver, datasets, screen_shots): +# app_specific_action(webdriver, datasets) +``` + +4. Run toolkit with `bzt bitbucket.yml` command to ensure that all Selenium actions including `app_specific_action` are successful. + +## Enterprise-scale environment + +After adding your custom app-specific actions, you should now be ready to run the required tests for the Marketplace Data Center Apps Approval process. To do this, you'll need an **enterprise-scale environment**. + +### 5. Set up an enterprise-scale environment Bitbucket Data Center on AWS We recommend that you use the [AWS Quick Start for Bitbucket Data Center](https://aws.amazon.com/quickstart/architecture/bitbucket/) (**How to deploy** tab) to deploy a Bitbucket Data Center testing environment. This Quick Start will allow you to deploy Bitbucket Data Center with a new [Atlassian Standard Infrastructure](https://aws.amazon.com/quickstart/architecture/atlassian-standard-infrastructure/) (ASI) or into an existing one. @@ -193,7 +406,7 @@ After [Preloading your Bitbucket deployment with an enterprise-scale dataset](#p --- -## 2. Preloading your Bitbucket deployment with an enterprise-scale dataset +### 6. Preloading your Bitbucket deployment with an enterprise-scale dataset Data dimensions and values for an enterprise-scale dataset are listed and described in the following table. @@ -210,9 +423,9 @@ Data dimensions and values for an enterprise-scale dataset are listed and descri All the datasets use the standard `admin`/`admin` credentials. {{% /note %}} -Pre-loading the dataset is a three-step process: +Pre-loading the dataset is a two-step process: -1. [Importing the main dataset](#importingdataset). To help you out, we provide an enterprise-scale dataset you can import either via the [populate_db.sh](https://github.com/atlassian/dc-app-performance-toolkit/blob/master/app/util/bitbucket/populate_db.sh) script or restore from xml backup file. +1. [Importing the main dataset](#importingdataset). To help you out, we provide an enterprise-scale dataset you can import either via the [populate_db.sh](https://github.com/atlassian/dc-app-performance-toolkit/blob/master/app/util/bitbucket/populate_db.sh). 1. [Restoring attachments](#copyingattachments). We also provide attachments, which you can pre-load via an [upload_attachments.sh](https://github.com/atlassian/dc-app-performance-toolkit/blob/master/app/util/bitbucket/upload_attachments.sh) script. The following subsections explain each step in greater detail. @@ -391,7 +604,7 @@ In case of any difficulties with Index generation, contact us for support in the --- -## 3. Setting up an execution environment +### 7. Setting up an execution environment For generating performance results suitable for Marketplace approval process use dedicated execution environment. This is a separate AWS EC2 instance to run the toolkit from. Running the toolkit from a dedicated instance but not from a local machine eliminates network fluctuations and guarantees stable CPU and memory performance. @@ -435,7 +648,7 @@ You'll need to run the toolkit for each [test scenario](#testscenario) in the ne --- -## 4. Running the test scenarios on your execution environment +### 8. Running the test scenarios on your execution environment Using the Data Center App Performance Toolkit for [Performance and scale testing your Data Center app](/platform/marketplace/developing-apps-for-atlassian-data-center-products/) involves two test scenarios: @@ -534,35 +747,6 @@ The purpose of scalability testing is to reflect the impact on the customer expe For many apps and extensions to Atlassian products, there should not be a significant performance difference between operating on a single node or across many nodes in Bitbucket DC deployment. To demonstrate performance impacts of operating your app at scale, we recommend testing your Bitbucket DC app in a cluster. -#### Extending the base action - -You can find more info about the local Bitbucket setup for developer's purpose in the [README.md](https://github.com/atlassian/dc-app-performance-toolkit/blob/master/README.md) file. -Extension scripts, which extend the base Selenium (`bitbucket-ui.py`) scripts, are located in a separate folder (`dc-app-performance-toolkit/extension/bitbucket`). You can modify these scripts to include their app-specific actions. - -##### Modifying Selenium - -You can extend Selenium scripts to measure the end-to-end browser timings. - -We use **Pytest** to drive Selenium tests. The `bitbucket-ui.py` executor script is located in the `app/selenium_ui/` folder. This file contains all browser actions, defined by the `test_ functions`. These actions are executed one by one during the testing. - -#### Example of app-specific Selenium action development -You develop an app that adds additional UI elements to a repository page, in this case you should edit `dc-app-performance-toolkit/extension/bitbucket/extension_ui.py`: -[Code example.](https://github.com/atlassian/dc-app-performance-toolkit/blob/master/app/extension/bitbucket/extension_ui.py) - -In the `bitbucket-ui.py` script, view the following block of code: - -``` python -# def test_1_selenium_custom_action(webdriver, datasets, screen_shots): -# app_specific_action(webdriver, datasets) -``` -If you need to run `app_speicifc_action` as specific user uncomment `app_specific_user_login` function in [code example](https://github.com/atlassian/dc-app-performance-toolkit/blob/master/app/extension/bitbucket/extension_ui.py). Note, that in this case `test_1_selenium_custom_action` should follow just before `test_2_selenium_logout` action. - -To view more examples, see the `modules.py` file in the `selenium_ui/bitbucket` directory. - -#### Running tests with your modification - -To ensure that the test runs without errors in parallel, run your extension scripts with the base scripts as a sanity check. - ##### Run 3 (~1 hour) To receive scalability benchmark results for one-node Bitbucket DC **with** app-specific actions: From 6c8bbd66157733adb944e0afe0182eec417a3e84 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Fri, 6 Aug 2021 17:16:38 +0300 Subject: [PATCH 17/45] DCA-1230: Check the up-to-date version of the toolkit in the summary report --- app/util/analytics/analytics_utils.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app/util/analytics/analytics_utils.py b/app/util/analytics/analytics_utils.py index a4606cb68..fffda569b 100644 --- a/app/util/analytics/analytics_utils.py +++ b/app/util/analytics/analytics_utils.py @@ -4,8 +4,13 @@ import getpass import re import socket +import requests +from util.conf import TOOLKIT_VERSION +from packaging import version from datetime import datetime, timezone +CONF_URL = "https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/master/app/util/conf.py" +VERSION_STR = "TOOLKIT_VERSION" SUCCESS_TEST_RATE = 95.00 SUCCESS_RT_THRESHOLD = 20 OS = {'macOS': ['Darwin'], 'Windows': ['Windows'], 'Linux': ['Linux']} @@ -14,6 +19,13 @@ # Add an exception to these actions because of long time execution EXCEPTIONS = ['jmeter_clone_repo_via_http', 'jmeter_clone_repo_via_ssh', 'selenium_create_pull_request'] +r = requests.get(CONF_URL) +conf = r.text.splitlines() +version_line = next((line for line in conf if VERSION_STR in line)) +latest_version_str = version_line.split('=')[1].replace("'", "").replace('"', "").strip() +current_version = version.parse(TOOLKIT_VERSION) +latest_version = version.parse(latest_version_str) + def is_docker(): path = '/proc/self/cgroup' @@ -62,7 +74,14 @@ def generate_report_summary(collector): summary_report.append(f'Summary run status|{overall_status}\n') summary_report.append(f'Artifacts dir|{os.path.basename(collector.log_dir)}') summary_report.append(f'OS|{collector.os}') - summary_report.append(f'DC Apps Performance Toolkit version|{collector.tool_version}') + # summary_report.append(f'DC Apps Performance Toolkit version|{collector.tool_version}') + if latest_version > current_version: + summary_report.append( + f'DC Apps Performance Toolkit version|{collector.tool_version}. Please update your toolkit to the version {latest_version}') + elif latest_version == current_version: + summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} Your Toolkit version is up to date") + else: + summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} is ahead of the latest production version.") summary_report.append(f'Application|{collector.app_type} {collector.application_version}') summary_report.append(f'Dataset info|{collector.dataset_information}') summary_report.append(f'Application nodes count|{collector.nodes_count}') From 8a0962269f6c6c8507c0c5931ae0e58e99c42baf Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Sat, 7 Aug 2021 08:23:09 +0300 Subject: [PATCH 18/45] Modified some lines --- app/util/analytics/analytics_utils.py | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/app/util/analytics/analytics_utils.py b/app/util/analytics/analytics_utils.py index fffda569b..bedc32110 100644 --- a/app/util/analytics/analytics_utils.py +++ b/app/util/analytics/analytics_utils.py @@ -4,13 +4,10 @@ import getpass import re import socket -import requests -from util.conf import TOOLKIT_VERSION -from packaging import version + from datetime import datetime, timezone +from util.pre_run.check_for_updates import current_version,latest_version -CONF_URL = "https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/master/app/util/conf.py" -VERSION_STR = "TOOLKIT_VERSION" SUCCESS_TEST_RATE = 95.00 SUCCESS_RT_THRESHOLD = 20 OS = {'macOS': ['Darwin'], 'Windows': ['Windows'], 'Linux': ['Linux']} @@ -19,13 +16,6 @@ # Add an exception to these actions because of long time execution EXCEPTIONS = ['jmeter_clone_repo_via_http', 'jmeter_clone_repo_via_ssh', 'selenium_create_pull_request'] -r = requests.get(CONF_URL) -conf = r.text.splitlines() -version_line = next((line for line in conf if VERSION_STR in line)) -latest_version_str = version_line.split('=')[1].replace("'", "").replace('"', "").strip() -current_version = version.parse(TOOLKIT_VERSION) -latest_version = version.parse(latest_version_str) - def is_docker(): path = '/proc/self/cgroup' @@ -74,7 +64,6 @@ def generate_report_summary(collector): summary_report.append(f'Summary run status|{overall_status}\n') summary_report.append(f'Artifacts dir|{os.path.basename(collector.log_dir)}') summary_report.append(f'OS|{collector.os}') - # summary_report.append(f'DC Apps Performance Toolkit version|{collector.tool_version}') if latest_version > current_version: summary_report.append( f'DC Apps Performance Toolkit version|{collector.tool_version}. Please update your toolkit to the version {latest_version}') From b079b085b8ab86491b73b42eb219628d8a69b552 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Sat, 7 Aug 2021 08:32:25 +0300 Subject: [PATCH 19/45] Small fixes --- app/util/analytics/analytics_utils.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/util/analytics/analytics_utils.py b/app/util/analytics/analytics_utils.py index bedc32110..ba33f072a 100644 --- a/app/util/analytics/analytics_utils.py +++ b/app/util/analytics/analytics_utils.py @@ -6,7 +6,7 @@ import socket from datetime import datetime, timezone -from util.pre_run.check_for_updates import current_version,latest_version +from util.pre_run.check_for_updates import current_version, latest_version SUCCESS_TEST_RATE = 95.00 SUCCESS_RT_THRESHOLD = 20 @@ -66,11 +66,14 @@ def generate_report_summary(collector): summary_report.append(f'OS|{collector.os}') if latest_version > current_version: summary_report.append( - f'DC Apps Performance Toolkit version|{collector.tool_version}. Please update your toolkit to the version {latest_version}') + f'DC Apps Performance Toolkit version|{collector.tool_version}. Please update your toolkit ' + f'to the version {latest_version}') elif latest_version == current_version: - summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} Your Toolkit version is up to date") + summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} " + f"Your Toolkit version is up to date") else: - summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} is ahead of the latest production version.") + summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} " + f"is ahead of the latest production version.") summary_report.append(f'Application|{collector.app_type} {collector.application_version}') summary_report.append(f'Dataset info|{collector.dataset_information}') summary_report.append(f'Application nodes count|{collector.nodes_count}') From 48406955bd2cb07d99ad370f403b3bb7d24cb209 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Mon, 9 Aug 2021 16:42:47 +0300 Subject: [PATCH 20/45] Word improving --- app/util/analytics/analytics_utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/util/analytics/analytics_utils.py b/app/util/analytics/analytics_utils.py index ba33f072a..928455275 100644 --- a/app/util/analytics/analytics_utils.py +++ b/app/util/analytics/analytics_utils.py @@ -66,14 +66,14 @@ def generate_report_summary(collector): summary_report.append(f'OS|{collector.os}') if latest_version > current_version: summary_report.append( - f'DC Apps Performance Toolkit version|{collector.tool_version}. Please update your toolkit ' - f'to the version {latest_version}') + f'DC Apps Performance Toolkit version|{collector.tool_version}.' + f'FAIL: Please update toolkit to the latest version - {latest_version}') elif latest_version == current_version: summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} " - f"Your Toolkit version is up to date") + f"(OK: Toolkit is up to date)") else: summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} " - f"is ahead of the latest production version.") + f"(OK: Toolkit is ahead of the latest production version: {latest_version}") summary_report.append(f'Application|{collector.app_type} {collector.application_version}') summary_report.append(f'Dataset info|{collector.dataset_information}') summary_report.append(f'Application nodes count|{collector.nodes_count}') From f252d604a3639b879a11c8d5c7b6c3962b3ccab8 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Mon, 16 Aug 2021 18:48:16 +0300 Subject: [PATCH 21/45] Modified for local runs --- app/util/analytics/analytics_utils.py | 18 ++++---- app/util/common_util.py | 63 +++++++++++++++++++++++++++ app/util/util.py | 24 ---------- 3 files changed, 73 insertions(+), 32 deletions(-) create mode 100644 app/util/common_util.py delete mode 100644 app/util/util.py diff --git a/app/util/analytics/analytics_utils.py b/app/util/analytics/analytics_utils.py index 928455275..1e34d8bcf 100644 --- a/app/util/analytics/analytics_utils.py +++ b/app/util/analytics/analytics_utils.py @@ -6,8 +6,7 @@ import socket from datetime import datetime, timezone -from util.pre_run.check_for_updates import current_version, latest_version - +from util.common_util import current_version, latest_version SUCCESS_TEST_RATE = 95.00 SUCCESS_RT_THRESHOLD = 20 OS = {'macOS': ['Darwin'], 'Windows': ['Windows'], 'Linux': ['Linux']} @@ -64,16 +63,19 @@ def generate_report_summary(collector): summary_report.append(f'Summary run status|{overall_status}\n') summary_report.append(f'Artifacts dir|{os.path.basename(collector.log_dir)}') summary_report.append(f'OS|{collector.os}') - if latest_version > current_version: + if latest_version() is None: + summary_report.append(f'DC Apps Performance Toolkit version|{collector.tool_version}.' + ' (FAIL to check for updates due connection)') + elif latest_version() > current_version(): summary_report.append( - f'DC Apps Performance Toolkit version|{collector.tool_version}.' - f'FAIL: Please update toolkit to the latest version - {latest_version}') - elif latest_version == current_version: + f'DC Apps Performance Toolkit version|{collector.tool_version}. Please update your toolkit ' + f'to the version {latest_version()}') + elif latest_version() == current_version(): summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} " - f"(OK: Toolkit is up to date)") + f"Your Toolkit version is up to date") else: summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} " - f"(OK: Toolkit is ahead of the latest production version: {latest_version}") + f"is ahead of the latest production version.") summary_report.append(f'Application|{collector.app_type} {collector.application_version}') summary_report.append(f'Dataset info|{collector.dataset_information}') summary_report.append(f'Application nodes count|{collector.nodes_count}') diff --git a/app/util/common_util.py b/app/util/common_util.py new file mode 100644 index 000000000..05de2d0f8 --- /dev/null +++ b/app/util/common_util.py @@ -0,0 +1,63 @@ +import datetime +import functools +import requests +from datetime import timedelta +from timeit import default_timer as timer +from packaging import version +from util.conf import TOOLKIT_VERSION + +CONF_URL = "https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/master/app/util/conf.py" +VERSION_STR = "TOOLKIT_VERSION" +UNSUPPORTED_VERSION_STR = "UNSUPPORTED_VERSION" + + +def latest_version(): + try: + r = requests.get(CONF_URL, UNSUPPORTED_VERSION_STR) + r.raise_for_status() + conf = r.text.splitlines() + version_line = next((line for line in conf if VERSION_STR in line)) + latest_version_str = version_line.split('=')[1].replace("'", "").replace('"', "").strip() + latest_version_check = version.parse(latest_version_str) + return latest_version_check + except requests.exceptions.RequestException as e: + print(f"Warning: DCAPT check for update failed - {e}") + + +def unsupported_version(): + try: + r = requests.get(CONF_URL, UNSUPPORTED_VERSION_STR) + r.raise_for_status() + conf = r.text.splitlines() + unsupported_version_line = next((line for line in conf if UNSUPPORTED_VERSION_STR in line)) + unsupported_version_str = unsupported_version_line.split('=')[1].replace("'", "").replace('"', "").strip() + unsupported_version_check = version.parse(unsupported_version_str) + return unsupported_version_check + except requests.exceptions.RequestException as e: + print(f"Warning: DCAPT check for update failed - {e}") + + +def current_version(): + current_version_parse = version.parse(TOOLKIT_VERSION) + + return current_version_parse + + +def print_timing(message, sep='-'): + assert message is not None, "Message is not passed to print_timing decorator" + + def deco_wrapper(func): + @functools.wraps(func) + def wrapper(*args, **kwargs): + start = timer() + print(sep * 20) + print(f'{message} started {datetime.datetime.now().strftime("%H:%M:%S")}') + result = func(*args, **kwargs) + end = timer() + print(f"{message} finished in {timedelta(seconds=end - start)}") + print(sep * 20) + return result + + return wrapper + + return deco_wrapper diff --git a/app/util/util.py b/app/util/util.py deleted file mode 100644 index 3d3e35a6b..000000000 --- a/app/util/util.py +++ /dev/null @@ -1,24 +0,0 @@ -from datetime import timedelta -from timeit import default_timer as timer -import datetime -import functools - - -def print_timing(message, sep='-'): - assert message is not None, "Message is not passed to print_timing decorator" - - def deco_wrapper(func): - @functools.wraps(func) - def wrapper(*args, **kwargs): - start = timer() - print(sep * 20) - print(f'{message} started {datetime.datetime.now().strftime("%H:%M:%S")}') - result = func(*args, **kwargs) - end = timer() - print(f"{message} finished in {timedelta(seconds=end - start)}") - print(sep * 20) - return result - - return wrapper - - return deco_wrapper From 0cc4944897002347c53c29bcbf86db7f5723be39 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Fri, 20 Aug 2021 11:57:21 +0300 Subject: [PATCH 22/45] Added changes from from DCA-1231 --- app/util/conf.py | 1 + app/util/pre_run/check_for_updates.py | 41 +++++++++------------------ 2 files changed, 15 insertions(+), 27 deletions(-) diff --git a/app/util/conf.py b/app/util/conf.py index b4b9b14ac..e4193d68b 100644 --- a/app/util/conf.py +++ b/app/util/conf.py @@ -3,6 +3,7 @@ from util.project_paths import JIRA_YML, CONFLUENCE_YML, BITBUCKET_YML, JSM_YML, CROWD_YML TOOLKIT_VERSION = '5.1.0' +UNSUPPORTED_VERSION = '3.0.0' def read_yml_file(file): diff --git a/app/util/pre_run/check_for_updates.py b/app/util/pre_run/check_for_updates.py index b822e44c0..e791aee02 100644 --- a/app/util/pre_run/check_for_updates.py +++ b/app/util/pre_run/check_for_updates.py @@ -1,28 +1,15 @@ -import requests -from packaging import version - -from util.conf import TOOLKIT_VERSION - -CONF_URL = "https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/master/app/util/conf.py" -VERSION_STR = "TOOLKIT_VERSION" - -r = requests.get(CONF_URL) - -if not r.ok: - print(f"Warning: DCAPT check for updates failed.\nURL: {r.url}. Status code: {r.status_code}. Reason: {r.reason}") - exit(0) - -conf = r.text.splitlines() -version_line = next((line for line in conf if VERSION_STR in line)) -latest_version_str = version_line.split('=')[1].replace("'", "").replace('"', "").strip() - -latest_version = version.parse(latest_version_str) -current_version = version.parse(TOOLKIT_VERSION) - -if current_version < latest_version: - print(f"Warning: DCAPT version {TOOLKIT_VERSION} is outdated. " - f"Consider upgrade to the latest version: {latest_version}.") -elif current_version == latest_version: - print(f"Info: DCAPT version {TOOLKIT_VERSION} is latest.") +from util.common_util import latest_version, current_version, unsupported_version + +if latest_version() is None: + print('Please check your connection to the internet') +elif current_version() <= unsupported_version(): + raise SystemExit(f"DCAPT version {current_version()} is no longer supported. " + f"Consider an upgrade to the latest version: {latest_version()}") +elif current_version() < latest_version(): + print(f"Warning: DCAPT version {current_version()} is outdated. " + f"Consider upgrade to the latest version: {latest_version()}.") +elif current_version() == latest_version(): + print(f"Info: DCAPT version {current_version()} is latest.") else: - print(f"Info: DCAPT version {TOOLKIT_VERSION} is ahead of the latest production version: {latest_version}.") + print(f"Info: DCAPT version {current_version()} " + f"is ahead of the latest production version: {latest_version()}.") From 41a60673a26117dad4953c55c15cb55abc7c30e0 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Fri, 20 Aug 2021 14:39:10 +0300 Subject: [PATCH 23/45] bug fixing --- app/util/data_preparation/confluence_prepare_data.py | 2 +- app/util/data_preparation/jsm_prepare_data.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/util/data_preparation/confluence_prepare_data.py b/app/util/data_preparation/confluence_prepare_data.py index e5a8041aa..9a505f5b4 100644 --- a/app/util/data_preparation/confluence_prepare_data.py +++ b/app/util/data_preparation/confluence_prepare_data.py @@ -2,7 +2,7 @@ import string import urllib3 -from util.util import print_timing +from util.common_util import print_timing from multiprocessing.pool import ThreadPool from util.conf import CONFLUENCE_SETTINGS from util.api.confluence_clients import ConfluenceRpcClient, ConfluenceRestClient diff --git a/app/util/data_preparation/jsm_prepare_data.py b/app/util/data_preparation/jsm_prepare_data.py index 5588504eb..4000f027d 100644 --- a/app/util/data_preparation/jsm_prepare_data.py +++ b/app/util/data_preparation/jsm_prepare_data.py @@ -6,7 +6,7 @@ import urllib3 -from util.util import print_timing +from util.common_util import print_timing from util.api.abstract_clients import JSM_EXPERIMENTAL_HEADERS from util.api.jira_clients import JiraRestClient from util.api.jsm_clients import JsmRestClient From bcb43c5a5dd0155c7c013d6f1eee13453c24135a Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Wed, 25 Aug 2021 15:41:33 +0300 Subject: [PATCH 24/45] fix after comments --- app/util/analytics/analytics_utils.py | 15 ++++++++------ app/util/common_util.py | 29 +++++++++++--------------- app/util/pre_run/check_for_updates.py | 30 ++++++++++++++++----------- 3 files changed, 39 insertions(+), 35 deletions(-) diff --git a/app/util/analytics/analytics_utils.py b/app/util/analytics/analytics_utils.py index 1e34d8bcf..32f668b3e 100644 --- a/app/util/analytics/analytics_utils.py +++ b/app/util/analytics/analytics_utils.py @@ -7,6 +7,9 @@ from datetime import datetime, timezone from util.common_util import current_version, latest_version + +latest_version = latest_version() +current_version = current_version() SUCCESS_TEST_RATE = 95.00 SUCCESS_RT_THRESHOLD = 20 OS = {'macOS': ['Darwin'], 'Windows': ['Windows'], 'Linux': ['Linux']} @@ -63,14 +66,14 @@ def generate_report_summary(collector): summary_report.append(f'Summary run status|{overall_status}\n') summary_report.append(f'Artifacts dir|{os.path.basename(collector.log_dir)}') summary_report.append(f'OS|{collector.os}') - if latest_version() is None: - summary_report.append(f'DC Apps Performance Toolkit version|{collector.tool_version}.' - ' (FAIL to check for updates due connection)') - elif latest_version() > current_version(): + if latest_version is None: + summary_report.append((f"DC Apps Performance Toolkit version|{collector.tool_version} " + f"(FAIL: Could not get the latest version.)")) + elif latest_version > current_version: summary_report.append( f'DC Apps Performance Toolkit version|{collector.tool_version}. Please update your toolkit ' - f'to the version {latest_version()}') - elif latest_version() == current_version(): + f'to the version {latest_version}') + elif latest_version == current_version: summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} " f"Your Toolkit version is up to date") else: diff --git a/app/util/common_util.py b/app/util/common_util.py index 05de2d0f8..402c32f4b 100644 --- a/app/util/common_util.py +++ b/app/util/common_util.py @@ -6,14 +6,13 @@ from packaging import version from util.conf import TOOLKIT_VERSION -CONF_URL = "https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/master/app/util/conf.py" -VERSION_STR = "TOOLKIT_VERSION" -UNSUPPORTED_VERSION_STR = "UNSUPPORTED_VERSION" +CONF_URL = "https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/dca-1230-check-up-to-date-version-of-the-toolkit-in-the-summary-report/app/util/conf.py" -def latest_version(): +def latest_version(supported=True): + VERSION_STR = "TOOLKIT_VERSION" if supported else "UNSUPPORTED_VERSION" try: - r = requests.get(CONF_URL, UNSUPPORTED_VERSION_STR) + r = requests.get(CONF_URL) r.raise_for_status() conf = r.text.splitlines() version_line = next((line for line in conf if VERSION_STR in line)) @@ -22,25 +21,21 @@ def latest_version(): return latest_version_check except requests.exceptions.RequestException as e: print(f"Warning: DCAPT check for update failed - {e}") + except StopIteration: + print("Warning: failed to get the unsupported version") def unsupported_version(): - try: - r = requests.get(CONF_URL, UNSUPPORTED_VERSION_STR) - r.raise_for_status() - conf = r.text.splitlines() - unsupported_version_line = next((line for line in conf if UNSUPPORTED_VERSION_STR in line)) - unsupported_version_str = unsupported_version_line.split('=')[1].replace("'", "").replace('"', "").strip() - unsupported_version_check = version.parse(unsupported_version_str) - return unsupported_version_check - except requests.exceptions.RequestException as e: - print(f"Warning: DCAPT check for update failed - {e}") + + unsupported_version_str = latest_version(supported=False) + + return unsupported_version_str def current_version(): - current_version_parse = version.parse(TOOLKIT_VERSION) + version.parse(TOOLKIT_VERSION) - return current_version_parse + return version.parse(TOOLKIT_VERSION) def print_timing(message, sep='-'): diff --git a/app/util/pre_run/check_for_updates.py b/app/util/pre_run/check_for_updates.py index e791aee02..532db9b51 100644 --- a/app/util/pre_run/check_for_updates.py +++ b/app/util/pre_run/check_for_updates.py @@ -1,15 +1,21 @@ from util.common_util import latest_version, current_version, unsupported_version -if latest_version() is None: - print('Please check your connection to the internet') -elif current_version() <= unsupported_version(): - raise SystemExit(f"DCAPT version {current_version()} is no longer supported. " - f"Consider an upgrade to the latest version: {latest_version()}") -elif current_version() < latest_version(): - print(f"Warning: DCAPT version {current_version()} is outdated. " - f"Consider upgrade to the latest version: {latest_version()}.") -elif current_version() == latest_version(): - print(f"Info: DCAPT version {current_version()} is latest.") +latest_version = latest_version() +current_version = current_version() +unsupported_version = unsupported_version() + +if latest_version is None: + print('Warning: failed to get the latest version') +elif current_version < latest_version: + print(f"Warning: DCAPT version {current_version} is outdated. " + f"Consider upgrade to the latest version: {latest_version}.") +elif current_version == latest_version: + print(f"Info: DCAPT version {current_version} is the latest.") +elif unsupported_version is None: + print('Warning: failed to get the unsupported version') +elif current_version <= unsupported_version: + raise SystemExit(f"DCAPT version {current_version} is no longer supported. " + f"Consider an upgrade to the latest version: {latest_version}") else: - print(f"Info: DCAPT version {current_version()} " - f"is ahead of the latest production version: {latest_version()}.") + print(f"Info: DCAPT version {current_version} " + f"is ahead of the latest production version: {latest_version}.") From a9ca1e2f526e9d7e49dcbe57a9bb463947afe691 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Wed, 25 Aug 2021 15:47:36 +0300 Subject: [PATCH 25/45] bot comment fix --- app/util/common_util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/util/common_util.py b/app/util/common_util.py index 402c32f4b..f838e9a29 100644 --- a/app/util/common_util.py +++ b/app/util/common_util.py @@ -6,7 +6,7 @@ from packaging import version from util.conf import TOOLKIT_VERSION -CONF_URL = "https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/dca-1230-check-up-to-date-version-of-the-toolkit-in-the-summary-report/app/util/conf.py" +CONF_URL = "https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/master/app/util/conf.py" def latest_version(supported=True): From c1125f1e03ed145bc8cb356e12c8b908fbd6e760 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Thu, 26 Aug 2021 16:08:34 +0300 Subject: [PATCH 26/45] Changes regarding to comments --- app/util/analytics/analytics_utils.py | 17 ++++++++--------- app/util/common_util.py | 14 ++++++-------- app/util/pre_run/check_for_updates.py | 8 ++++---- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/app/util/analytics/analytics_utils.py b/app/util/analytics/analytics_utils.py index 32f668b3e..c19048b17 100644 --- a/app/util/analytics/analytics_utils.py +++ b/app/util/analytics/analytics_utils.py @@ -6,10 +6,10 @@ import socket from datetime import datetime, timezone -from util.common_util import current_version, latest_version +from util.common_util import get_current_version, get_latest_version -latest_version = latest_version() -current_version = current_version() +latest_version = get_latest_version() +current_version = get_current_version() SUCCESS_TEST_RATE = 95.00 SUCCESS_RT_THRESHOLD = 20 OS = {'macOS': ['Darwin'], 'Windows': ['Windows'], 'Linux': ['Linux']} @@ -68,17 +68,16 @@ def generate_report_summary(collector): summary_report.append(f'OS|{collector.os}') if latest_version is None: summary_report.append((f"DC Apps Performance Toolkit version|{collector.tool_version} " - f"(FAIL: Could not get the latest version.)")) + f"(WARNING: Could not get the latest version.)")) elif latest_version > current_version: - summary_report.append( - f'DC Apps Performance Toolkit version|{collector.tool_version}. Please update your toolkit ' - f'to the version {latest_version}') + summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} " + f"(FAIL: Please update toolkit to the latest version - {latest_version})") elif latest_version == current_version: summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} " - f"Your Toolkit version is up to date") + f"(OK: Toolkit is up to date)") else: summary_report.append(f"DC Apps Performance Toolkit version|{collector.tool_version} " - f"is ahead of the latest production version.") + f"(OK: Toolkit is ahead of the latest production version: {latest_version})") summary_report.append(f'Application|{collector.app_type} {collector.application_version}') summary_report.append(f'Dataset info|{collector.dataset_information}') summary_report.append(f'Application nodes count|{collector.nodes_count}') diff --git a/app/util/common_util.py b/app/util/common_util.py index f838e9a29..4a77a3544 100644 --- a/app/util/common_util.py +++ b/app/util/common_util.py @@ -9,7 +9,7 @@ CONF_URL = "https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/master/app/util/conf.py" -def latest_version(supported=True): +def get_latest_version(supported=True): VERSION_STR = "TOOLKIT_VERSION" if supported else "UNSUPPORTED_VERSION" try: r = requests.get(CONF_URL) @@ -17,26 +17,24 @@ def latest_version(supported=True): conf = r.text.splitlines() version_line = next((line for line in conf if VERSION_STR in line)) latest_version_str = version_line.split('=')[1].replace("'", "").replace('"', "").strip() - latest_version_check = version.parse(latest_version_str) - return latest_version_check + latest_version = version.parse(latest_version_str) + return latest_version except requests.exceptions.RequestException as e: print(f"Warning: DCAPT check for update failed - {e}") except StopIteration: print("Warning: failed to get the unsupported version") -def unsupported_version(): +def get_unsupported_version(): - unsupported_version_str = latest_version(supported=False) + unsupported_version_str = get_latest_version(supported=False) return unsupported_version_str -def current_version(): +def get_current_version(): version.parse(TOOLKIT_VERSION) - return version.parse(TOOLKIT_VERSION) - def print_timing(message, sep='-'): assert message is not None, "Message is not passed to print_timing decorator" diff --git a/app/util/pre_run/check_for_updates.py b/app/util/pre_run/check_for_updates.py index 532db9b51..1c214292f 100644 --- a/app/util/pre_run/check_for_updates.py +++ b/app/util/pre_run/check_for_updates.py @@ -1,8 +1,8 @@ -from util.common_util import latest_version, current_version, unsupported_version +from util.common_util import get_latest_version, get_current_version, get_unsupported_version -latest_version = latest_version() -current_version = current_version() -unsupported_version = unsupported_version() +latest_version = get_latest_version() +current_version = get_current_version() +unsupported_version = get_unsupported_version() if latest_version is None: print('Warning: failed to get the latest version') From ee96e0ca21637d4262a2c20c9a64a870209b4100 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Thu, 26 Aug 2021 16:12:25 +0300 Subject: [PATCH 27/45] Changes regarding to comments --- app/util/common_util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/util/common_util.py b/app/util/common_util.py index 4a77a3544..c6707c91b 100644 --- a/app/util/common_util.py +++ b/app/util/common_util.py @@ -33,7 +33,7 @@ def get_unsupported_version(): def get_current_version(): - version.parse(TOOLKIT_VERSION) + return version.parse(TOOLKIT_VERSION) def print_timing(message, sep='-'): From 7ee8f55a8d5b82225b6d18140cfadb268f787317 Mon Sep 17 00:00:00 2001 From: Oleksandr Popov Date: Wed, 1 Sep 2021 16:17:05 +0300 Subject: [PATCH 28/45] Codeowners changes --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index f18b20bf5..2fc9da383 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,2 +1,2 @@ # Default code owners - Atlassian Data Center App Performance Toolkit -* @ometelytsia @SergeyMoroz0703 @astashys @mmizin @opopovss @OlehStefanyshyn \ No newline at end of file +* @ometelytsia @SergeyMoroz0703 @astashys @opopovss @OlehStefanyshyn \ No newline at end of file From fbb15399a0491f0882a6767a1777db7206b8a05e Mon Sep 17 00:00:00 2001 From: OlehStefanyshyn Date: Fri, 3 Sep 2021 12:29:25 +0300 Subject: [PATCH 29/45] jira/update 8.13.10 and 8.5.18 (#669) --- README.md | 2 +- app/util/jira/populate_db.sh | 2 +- app/util/jira/upload_attachments.sh | 2 +- docs/dc-apps-performance-toolkit-user-guide-jira.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fee52ce76..187e983cb 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ This repository contains Taurus scripts for performance testing of Atlassian Dat ## Supported versions * Supported Jira versions: - * Jira [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `8.13.8`, `8.5.15` + * Jira [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `8.13.10`, `8.5.18` * Supported Jira Service Management versions: * Jira Service Management [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `4.13.7`, `4.5.15` diff --git a/app/util/jira/populate_db.sh b/app/util/jira/populate_db.sh index 78d8205c2..1b9043205 100644 --- a/app/util/jira/populate_db.sh +++ b/app/util/jira/populate_db.sh @@ -45,7 +45,7 @@ JIRA_DB_PASS="Password1!" # Jira/JSM supported versions -SUPPORTED_JIRA_VERSIONS=(8.5.15 8.13.8) +SUPPORTED_JIRA_VERSIONS=(8.5.18 8.13.10) SUPPORTED_JSM_VERSIONS=(4.5.15 4.13.7) SUPPORTED_VERSIONS=("${SUPPORTED_JIRA_VERSIONS[@]}") diff --git a/app/util/jira/upload_attachments.sh b/app/util/jira/upload_attachments.sh index 39cd53ad7..74c8ce63c 100644 --- a/app/util/jira/upload_attachments.sh +++ b/app/util/jira/upload_attachments.sh @@ -28,7 +28,7 @@ JIRA_VERSION_FILE="/media/atl/jira/shared/jira-software.version" # Jira/JSM supported versions -SUPPORTED_JIRA_VERSIONS=(8.5.15 8.13.8) +SUPPORTED_JIRA_VERSIONS=(8.5.18 8.13.10) SUPPORTED_JSM_VERSIONS=(4.5.15 4.13.7) SUPPORTED_VERSIONS=("${SUPPORTED_JIRA_VERSIONS[@]}") diff --git a/docs/dc-apps-performance-toolkit-user-guide-jira.md b/docs/dc-apps-performance-toolkit-user-guide-jira.md index e3d219380..a8f8ae988 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-jira.md +++ b/docs/dc-apps-performance-toolkit-user-guide-jira.md @@ -66,7 +66,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended value | | --------- | ----------------- | | Jira Product | Software | -| Version | The Data Center App Performance Toolkit officially supports `8.13.8`, `8.5.15` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | +| Version | The Data Center App Performance Toolkit officially supports `8.13.10`, `8.5.18` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | **Cluster nodes** @@ -387,7 +387,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended Value | | --------- | ----------------- | | Jira Product | Software | -| Version | The Data Center App Performance Toolkit officially supports `8.13.8`, `8.5.15` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | +| Version | The Data Center App Performance Toolkit officially supports `8.13.10`, `8.5.18` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | **Cluster nodes** From c1313d49ea3167c628f18ee7f13ef83b5c70b505 Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Fri, 3 Sep 2021 13:59:49 +0300 Subject: [PATCH 30/45] Bump chromedriver version up to 93.0.4577.15 (#670) --- app/bitbucket.yml | 2 +- app/confluence.yml | 2 +- app/jira.yml | 2 +- app/jsm.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/bitbucket.yml b/app/bitbucket.yml index 41b28aeb0..0b6739155 100644 --- a/app/bitbucket.yml +++ b/app/bitbucket.yml @@ -86,7 +86,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "92.0.4515.107" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads + version: "93.0.4577.15" # Supports Chrome version 93. 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 1f068dd59..7d3472c96 100644 --- a/app/confluence.yml +++ b/app/confluence.yml @@ -110,7 +110,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "92.0.4515.107" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads + version: "93.0.4577.15" # Supports Chrome version 93. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/jira.yml b/app/jira.yml index cf02f1fc1..6b45eca1b 100644 --- a/app/jira.yml +++ b/app/jira.yml @@ -114,7 +114,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "92.0.4515.107" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads + version: "93.0.4577.15" # Supports Chrome version 93. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/jsm.yml b/app/jsm.yml index d0d00f129..c8c247a2b 100644 --- a/app/jsm.yml +++ b/app/jsm.yml @@ -151,7 +151,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "92.0.4515.107" # Supports Chrome version 92. You can refer to http://chromedriver.chromium.org/downloads + version: "93.0.4577.15" # Supports Chrome version 93. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml \ No newline at end of file From b7ef1817e9ec34b1a9dc38565b50df6b218b169d Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Fri, 3 Sep 2021 16:33:04 +0300 Subject: [PATCH 31/45] Fix bitbucket sh scripts force flag (#672) --- app/util/bitbucket/populate_db.sh | 8 ++++---- app/util/bitbucket/upload_attachments.sh | 6 +++--- app/util/confluence/upload_attachments.sh | 2 +- app/util/jira/upload_attachments.sh | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/util/bitbucket/populate_db.sh b/app/util/bitbucket/populate_db.sh index 2eae52265..151dc5d99 100644 --- a/app/util/bitbucket/populate_db.sh +++ b/app/util/bitbucket/populate_db.sh @@ -67,16 +67,16 @@ if [[ ! "${SUPPORTED_BITBUCKET_VERSIONS[*]}" =~ ${BITBUCKET_VERSION} ]]; then echo "e.g. ./populate_db.sh --force 6.10.0" echo "!!! Warning !!! This may break your Bitbucket instance. Also, note that downgrade is not supported by Bitbucket." # Check if --force flag is passed into command - if [[ "$1" == "--force" ]]; then + if [[ ${force} == 1 ]]; then # Check if version was specified after --force flag - if [[ -z "$2" ]]; then + if [[ -z ${version} ]]; then echo "Error: --force flag requires version after it." echo "Specify one of these versions: ${SUPPORTED_BITBUCKET_VERSIONS[*]}" exit 1 fi # Check if passed Bitbucket version is in list of supported - if [[ " ${SUPPORTED_BITBUCKET_VERSIONS[@]} " =~ " ${2} " ]]; then - DB_DUMP_URL="${DATASETS_AWS_BUCKET}/$2/${DATASETS_SIZE}/${DB_DUMP_NAME}" + if [[ " ${SUPPORTED_BITBUCKET_VERSIONS[@]} " =~ " ${version} " ]]; then + DB_DUMP_URL="${DATASETS_AWS_BUCKET}/${version}/${DATASETS_SIZE}/${DB_DUMP_NAME}" echo "Force mode. Dataset URL: ${DB_DUMP_URL}" else LAST_DATASET_VERSION=${SUPPORTED_BITBUCKET_VERSIONS[${#SUPPORTED_BITBUCKET_VERSIONS[@]}-1]} diff --git a/app/util/bitbucket/upload_attachments.sh b/app/util/bitbucket/upload_attachments.sh index 6e03f0300..66c42dbe9 100644 --- a/app/util/bitbucket/upload_attachments.sh +++ b/app/util/bitbucket/upload_attachments.sh @@ -50,10 +50,10 @@ if [[ ! "${SUPPORTED_BITBUCKET_VERSIONS[*]}" =~ ${BITBUCKET_VERSION} ]]; then echo "e.g. ./upload_attachments --force 6.10.0" echo "!!! Warning !!! This may broke your Bitbucket instance." # Check if --force flag is passed into command - if [[ "$1" == "--force" ]]; then + if [[ ${force} == 1 ]]; then # Check if passed Bitbucket version is in list of supported - if [[ "${SUPPORTED_BITBUCKET_VERSIONS[*]}" =~ ${2} ]]; then - ATTACHMENTS_TAR_URL="${DATASETS_AWS_BUCKET}/$2/${DATASETS_SIZE}/${ATTACHMENTS_TAR}" + if [[ "${SUPPORTED_BITBUCKET_VERSIONS[*]}" =~ ${version} ]]; then + ATTACHMENTS_TAR_URL="${DATASETS_AWS_BUCKET}/${version}/${DATASETS_SIZE}/${ATTACHMENTS_TAR}" echo "Force mode. Dataset URL: ${ATTACHMENTS_TAR_URL}" else LAST_DATASET_VERSION=${SUPPORTED_BITBUCKET_VERSIONS[${#SUPPORTED_BITBUCKET_VERSIONS[@]}-1]} diff --git a/app/util/confluence/upload_attachments.sh b/app/util/confluence/upload_attachments.sh index 50a62d58f..e3e0f29c7 100644 --- a/app/util/confluence/upload_attachments.sh +++ b/app/util/confluence/upload_attachments.sh @@ -73,7 +73,7 @@ fi echo "Step1: Download msrcync" # https://github.com/jbd/msrsync -cd ${TMP_DIR} || exit +cd ${TMP_DIR} || exit 1 if [[ -s msrsync ]]; then echo "msrsync already downloaded" else diff --git a/app/util/jira/upload_attachments.sh b/app/util/jira/upload_attachments.sh index 74c8ce63c..0f3c6815e 100644 --- a/app/util/jira/upload_attachments.sh +++ b/app/util/jira/upload_attachments.sh @@ -107,7 +107,7 @@ fi echo "Step1: Download msrcync" # https://github.com/jbd/msrsync -cd ${TMP_DIR} +cd ${TMP_DIR} || exit 1 if [[ -s msrsync ]]; then echo "msrsync already downloaded" else From 07ba17129d69babeca717bc80cc40325d9279853 Mon Sep 17 00:00:00 2001 From: OlehStefanyshyn Date: Mon, 6 Sep 2021 17:26:06 +0300 Subject: [PATCH 32/45] jsm/update 4.13.10 and 4.5.18 (#671) * jsm/update 4.13.10 and 4.5.18 * jsm/update 4.5.18 and 4.13.10 --- README.md | 2 +- app/util/jira/populate_db.sh | 2 +- app/util/jira/upload_attachments.sh | 2 +- docs/dc-apps-performance-toolkit-user-guide-jsm.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 187e983cb..88071c75e 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This repository contains Taurus scripts for performance testing of Atlassian Dat * Jira [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `8.13.10`, `8.5.18` * Supported Jira Service Management versions: - * Jira Service Management [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `4.13.7`, `4.5.15` + * Jira Service Management [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `4.13.10`, `4.5.18` * Supported Confluence versions: * Confluence [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.4.9` diff --git a/app/util/jira/populate_db.sh b/app/util/jira/populate_db.sh index 1b9043205..8c9b6f673 100644 --- a/app/util/jira/populate_db.sh +++ b/app/util/jira/populate_db.sh @@ -46,7 +46,7 @@ JIRA_DB_PASS="Password1!" # Jira/JSM supported versions SUPPORTED_JIRA_VERSIONS=(8.5.18 8.13.10) -SUPPORTED_JSM_VERSIONS=(4.5.15 4.13.7) +SUPPORTED_JSM_VERSIONS=(4.5.18 4.13.10) SUPPORTED_VERSIONS=("${SUPPORTED_JIRA_VERSIONS[@]}") # JSM section diff --git a/app/util/jira/upload_attachments.sh b/app/util/jira/upload_attachments.sh index 0f3c6815e..6ef63364c 100644 --- a/app/util/jira/upload_attachments.sh +++ b/app/util/jira/upload_attachments.sh @@ -29,7 +29,7 @@ JIRA_VERSION_FILE="/media/atl/jira/shared/jira-software.version" # Jira/JSM supported versions SUPPORTED_JIRA_VERSIONS=(8.5.18 8.13.10) -SUPPORTED_JSM_VERSIONS=(4.5.15 4.13.7) +SUPPORTED_JSM_VERSIONS=(4.5.18 4.13.10) SUPPORTED_VERSIONS=("${SUPPORTED_JIRA_VERSIONS[@]}") if [[ ${jsm} == 1 ]]; then diff --git a/docs/dc-apps-performance-toolkit-user-guide-jsm.md b/docs/dc-apps-performance-toolkit-user-guide-jsm.md index d91b571fd..50e455829 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-jsm.md +++ b/docs/dc-apps-performance-toolkit-user-guide-jsm.md @@ -66,7 +66,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended value | | --------- | ----------------- | | Jira Product | ServiceManagement | -| Version | The Data Center App Performance Toolkit officially supports `4.13.7`, `4.5.15` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | +| Version | The Data Center App Performance Toolkit officially supports `4.13.10`, `4.5.18` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | **Cluster nodes** @@ -543,7 +543,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended Value | | --------- | ----------------- | | Jira Product | ServiceManagement | -| Version | The Data Center App Performance Toolkit officially supports `4.13.7`, `4.5.15` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | +| Version | The Data Center App Performance Toolkit officially supports `4.13.10`, `4.5.18` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | **Cluster nodes** From 8f86275a86133f30c504451ff030253febf34b3d Mon Sep 17 00:00:00 2001 From: OlehStefanyshyn Date: Wed, 8 Sep 2021 11:39:59 +0300 Subject: [PATCH 33/45] bitbucket/update 6.10.13 and 7.6.9 (#673) --- README.md | 2 +- app/util/bitbucket/populate_db.sh | 2 +- app/util/bitbucket/upload_attachments.sh | 2 +- docs/dc-apps-performance-toolkit-user-guide-bitbucket.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 88071c75e..2fc3fbe9f 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ This repository contains Taurus scripts for performance testing of Atlassian Dat * Confluence Platform release: `7.0.5` * Supported Bitbucket Server versions: - * Bitbucket Server [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.6.7`, `6.10.11` + * Bitbucket Server [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.6.9`, `6.10.13` * Bitbucket Server Platform release: `7.0.5` * Supported Crowd versions: diff --git a/app/util/bitbucket/populate_db.sh b/app/util/bitbucket/populate_db.sh index 151dc5d99..fb098c65a 100644 --- a/app/util/bitbucket/populate_db.sh +++ b/app/util/bitbucket/populate_db.sh @@ -38,7 +38,7 @@ BITBUCKET_DB_PASS="Password1!" BITBUCKET_AUTO_DECLINE_VERSION="7.7.0" # BITBUCKET version variables -SUPPORTED_BITBUCKET_VERSIONS=(6.10.11 7.0.5 7.6.7) +SUPPORTED_BITBUCKET_VERSIONS=(6.10.13 7.0.5 7.6.9) BITBUCKET_VERSION=$(sudo su bitbucket -c "cat ${BITBUCKET_VERSION_FILE}") if [[ -z "$BITBUCKET_VERSION" ]]; then echo The $BITBUCKET_VERSION_FILE file does not exists or emtpy. Please check if BITBUCKET_VERSION_FILE variable \ diff --git a/app/util/bitbucket/upload_attachments.sh b/app/util/bitbucket/upload_attachments.sh index 66c42dbe9..1d066bf8f 100644 --- a/app/util/bitbucket/upload_attachments.sh +++ b/app/util/bitbucket/upload_attachments.sh @@ -21,7 +21,7 @@ esac; shift; done ################### Variables section ################### # Bitbucket version variables BITBUCKET_VERSION_FILE="/media/atl/bitbucket/shared/bitbucket.version" -SUPPORTED_BITBUCKET_VERSIONS=(6.10.11 7.0.5 7.6.7) +SUPPORTED_BITBUCKET_VERSIONS=(6.10.13 7.0.5 7.6.9) BITBUCKET_VERSION=$(sudo su bitbucket -c "cat ${BITBUCKET_VERSION_FILE}") if [[ -z "$BITBUCKET_VERSION" ]]; then echo The $BITBUCKET_VERSION_FILE file does not exists or emtpy. Please check if BITBUCKET_VERSION_FILE variable \ diff --git a/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md b/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md index 9eeca7ff2..dc26d311e 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md +++ b/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md @@ -69,7 +69,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended value | | --------- | ----------------- | | Bitbucket Product | Software | -| Version | The Data Center App Performance Toolkit officially supports `7.6.7`, `6.10.11` ([Long Term Support releases](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) and `7.0.5` Platform Release | +| Version | The Data Center App Performance Toolkit officially supports `7.6.9`, `6.10.13` ([Long Term Support releases](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) and `7.0.5` Platform Release | **Cluster nodes** @@ -312,7 +312,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended Value | | --------- | ----------------- | -| Version | The Data Center App Performance Toolkit officially supports `7.6.7`, `6.10.11` ([Long Term Support releases](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) and `7.0.5` Platform Release | +| Version | The Data Center App Performance Toolkit officially supports `7.6.9`, `6.10.13` ([Long Term Support releases](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) and `7.0.5` Platform Release | **Cluster nodes** From 39e9d6eb28a0191113ad9b95252541fe1d87d1b4 Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Thu, 9 Sep 2021 14:09:39 +0300 Subject: [PATCH 34/45] Add confluence 7.4.11 support (#677) --- README.md | 3 +-- app/util/confluence/populate_db.sh | 2 +- app/util/confluence/upload_attachments.sh | 2 +- docs/dc-apps-performance-toolkit-user-guide-confluence.md | 4 ++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2fc3fbe9f..893a9a1be 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,7 @@ This repository contains Taurus scripts for performance testing of Atlassian Dat * Jira Service Management [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `4.13.10`, `4.5.18` * Supported Confluence versions: - * Confluence [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.4.9` - * Confluence Platform release: `7.0.5` + * Confluence [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.4.11` * Supported Bitbucket Server versions: * Bitbucket Server [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.6.9`, `6.10.13` diff --git a/app/util/confluence/populate_db.sh b/app/util/confluence/populate_db.sh index 51852bef6..9fa8d1d0a 100644 --- a/app/util/confluence/populate_db.sh +++ b/app/util/confluence/populate_db.sh @@ -20,7 +20,7 @@ CONFLUENCE_DB_PASS="Password1!" SELECT_CONFLUENCE_SETTING_SQL="select BANDANAVALUE from BANDANA where BANDANACONTEXT = '_GLOBAL' and BANDANAKEY = 'atlassian.confluence.settings';" # Confluence version variables -SUPPORTED_CONFLUENCE_VERSIONS=(7.0.5 7.4.9) +SUPPORTED_CONFLUENCE_VERSIONS=(7.4.11) if [[ ! $(systemctl status confluence) ]]; then echo "The Confluence service was not found on this host." \ diff --git a/app/util/confluence/upload_attachments.sh b/app/util/confluence/upload_attachments.sh index e3e0f29c7..09d3cdc0f 100644 --- a/app/util/confluence/upload_attachments.sh +++ b/app/util/confluence/upload_attachments.sh @@ -4,7 +4,7 @@ ################### Variables section ################### # Confluence version variables CONFLUENCE_VERSION_FILE="/media/atl/confluence/shared-home/confluence.version" -SUPPORTED_CONFLUENCE_VERSIONS=(7.0.5 7.4.9) +SUPPORTED_CONFLUENCE_VERSIONS=(7.4.11) CONFLUENCE_VERSION=$(sudo su confluence -c "cat ${CONFLUENCE_VERSION_FILE}") if [[ -z "$CONFLUENCE_VERSION" ]]; then echo The $CONFLUENCE_VERSION_FILE file does not exists or emtpy. Please check if CONFLUENCE_VERSION_FILE variable \ diff --git a/docs/dc-apps-performance-toolkit-user-guide-confluence.md b/docs/dc-apps-performance-toolkit-user-guide-confluence.md index d9777b177..9bc1c601d 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-confluence.md +++ b/docs/dc-apps-performance-toolkit-user-guide-confluence.md @@ -66,7 +66,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended value | | --------- | ----------------- | | Collaborative editing mode | synchrony-local | -| Confluence Version | The Data Center App Performance Toolkit officially supports `7.4.9` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) and `7.0.5` Platform Release | +| Confluence Version | The Data Center App Performance Toolkit officially supports `7.4.11` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | **Cluster nodes** @@ -380,7 +380,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended value | | --------- | ----------------- | | Collaborative editing mode | synchrony-local | -| Confluence Version | The Data Center App Performance Toolkit officially supports `7.4.9` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) and `7.0.5` Platform Release | +| Confluence Version | The Data Center App Performance Toolkit officially supports `7.4.11` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | **Cluster nodes** From 042f3cbabca4bf9069a3d578a596b0446c2afb45 Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Mon, 13 Sep 2021 11:39:29 +0300 Subject: [PATCH 35/45] Bump lib version and chromedriver (#679) --- app/bitbucket.yml | 2 +- app/confluence.yml | 2 +- app/jira.yml | 2 +- app/jsm.yml | 2 +- requirements.txt | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/bitbucket.yml b/app/bitbucket.yml index 0b6739155..45f8e7cc2 100644 --- a/app/bitbucket.yml +++ b/app/bitbucket.yml @@ -86,7 +86,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "93.0.4577.15" # Supports Chrome version 93. You can refer to http://chromedriver.chromium.org/downloads + version: "93.0.4577.63" # Supports Chrome version 93. 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 7d3472c96..065eb6360 100644 --- a/app/confluence.yml +++ b/app/confluence.yml @@ -110,7 +110,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "93.0.4577.15" # Supports Chrome version 93. You can refer to http://chromedriver.chromium.org/downloads + version: "93.0.4577.63" # Supports Chrome version 93. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/jira.yml b/app/jira.yml index 6b45eca1b..7a78e3532 100644 --- a/app/jira.yml +++ b/app/jira.yml @@ -114,7 +114,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "93.0.4577.15" # Supports Chrome version 93. You can refer to http://chromedriver.chromium.org/downloads + version: "93.0.4577.63" # Supports Chrome version 93. You can refer to http://chromedriver.chromium.org/downloads reporting: - data-source: sample-labels module: junit-xml diff --git a/app/jsm.yml b/app/jsm.yml index c8c247a2b..96dbb99ed 100644 --- a/app/jsm.yml +++ b/app/jsm.yml @@ -151,7 +151,7 @@ modules: httpsampler.ignore_failed_embedded_resources: "true" selenium: chromedriver: - version: "93.0.4577.15" # Supports Chrome version 93. You can refer to http://chromedriver.chromium.org/downloads + version: "93.0.4577.63" # Supports Chrome version 93. 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/requirements.txt b/requirements.txt index 3b065fe7e..dbc977900 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -matplotlib==3.4.2 -pandas==1.2.4 -bzt==1.15.3 -locust==1.4.4 +matplotlib==3.4.3 +pandas==1.3.3 +bzt==1.15.4 +locust==1.6.0 filelock==3.0.12 \ No newline at end of file From 9f4fc7b825b4010636f8a4bd7389c116344c4a44 Mon Sep 17 00:00:00 2001 From: OlehStefanyshyn Date: Mon, 13 Sep 2021 19:03:14 +0300 Subject: [PATCH 36/45] crowd/update 4.3.5 test (#681) --- app/util/crowd/populate_db.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/util/crowd/populate_db.sh b/app/util/crowd/populate_db.sh index bc5be2cac..f651deb03 100644 --- a/app/util/crowd/populate_db.sh +++ b/app/util/crowd/populate_db.sh @@ -17,7 +17,8 @@ CROWD_DB_USER="postgres" CROWD_DB_PASS="Password1!" # Crowd version variables -SUPPORTED_CROWD_VERSIONS=(4.3.0) +BASE_CROWD_VERSION=4.3.0 +SUPPORTED_CROWD_VERSIONS=(4.3.5) if [[ ! $(systemctl status crowd) ]]; then echo "The Crowd service was not found on this host." \ @@ -44,10 +45,10 @@ DB_DUMP_NAME="db.dump" if [[ ! "${SUPPORTED_CROWD_VERSIONS[*]}" =~ ${CROWD_VERSION} ]]; then echo "Crowd Version: ${CROWD_VERSION} is not officially supported by Data Center App Performance Toolkit." echo "Supported Crowd Versions: ${SUPPORTED_CROWD_VERSIONS[*]}" - echo "!!! Warning !!! Dump from version ${SUPPORTED_CROWD_VERSIONS[0]} would be used" + echo "!!! Warning !!! Dump from version $BASE_CROWD_VERSION would be used" fi -DB_DUMP_URL="${DATASETS_AWS_BUCKET}/${SUPPORTED_CROWD_VERSIONS[0]}/${DATASETS_SIZE}/${DB_DUMP_NAME}" +DB_DUMP_URL="${DATASETS_AWS_BUCKET}/$BASE_CROWD_VERSION/${DATASETS_SIZE}/${DB_DUMP_NAME}" echo "!!! Warning !!!" echo # move to a new line @@ -159,4 +160,4 @@ echo "DCAPT util script execution is finished successfully." echo # move to a new line echo "Important: new admin user credentials are admin/admin" -echo "Wait a couple of minutes until Crowd is started." +echo "Wait a couple of minutes until Crowd is started." \ No newline at end of file From 623d85b6cb4ba8d2069851d88f17680611908a70 Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Tue, 14 Sep 2021 21:14:52 +0300 Subject: [PATCH 37/45] Add confluence 7.13.0 support (#680) --- README.md | 2 +- app/util/confluence/populate_db.sh | 2 +- app/util/confluence/upload_attachments.sh | 2 +- docs/dc-apps-performance-toolkit-user-guide-confluence.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 893a9a1be..a81f6af81 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ This repository contains Taurus scripts for performance testing of Atlassian Dat * Jira Service Management [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `4.13.10`, `4.5.18` * Supported Confluence versions: - * Confluence [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.4.11` + * Confluence [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.13.0`, `7.4.11` * Supported Bitbucket Server versions: * Bitbucket Server [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.6.9`, `6.10.13` diff --git a/app/util/confluence/populate_db.sh b/app/util/confluence/populate_db.sh index 9fa8d1d0a..4733d0638 100644 --- a/app/util/confluence/populate_db.sh +++ b/app/util/confluence/populate_db.sh @@ -20,7 +20,7 @@ CONFLUENCE_DB_PASS="Password1!" SELECT_CONFLUENCE_SETTING_SQL="select BANDANAVALUE from BANDANA where BANDANACONTEXT = '_GLOBAL' and BANDANAKEY = 'atlassian.confluence.settings';" # Confluence version variables -SUPPORTED_CONFLUENCE_VERSIONS=(7.4.11) +SUPPORTED_CONFLUENCE_VERSIONS=(7.4.11 7.13.0) if [[ ! $(systemctl status confluence) ]]; then echo "The Confluence service was not found on this host." \ diff --git a/app/util/confluence/upload_attachments.sh b/app/util/confluence/upload_attachments.sh index 09d3cdc0f..b9cd65c6a 100644 --- a/app/util/confluence/upload_attachments.sh +++ b/app/util/confluence/upload_attachments.sh @@ -4,7 +4,7 @@ ################### Variables section ################### # Confluence version variables CONFLUENCE_VERSION_FILE="/media/atl/confluence/shared-home/confluence.version" -SUPPORTED_CONFLUENCE_VERSIONS=(7.4.11) +SUPPORTED_CONFLUENCE_VERSIONS=(7.4.11 7.13.0) CONFLUENCE_VERSION=$(sudo su confluence -c "cat ${CONFLUENCE_VERSION_FILE}") if [[ -z "$CONFLUENCE_VERSION" ]]; then echo The $CONFLUENCE_VERSION_FILE file does not exists or emtpy. Please check if CONFLUENCE_VERSION_FILE variable \ diff --git a/docs/dc-apps-performance-toolkit-user-guide-confluence.md b/docs/dc-apps-performance-toolkit-user-guide-confluence.md index 9bc1c601d..615391ad1 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-confluence.md +++ b/docs/dc-apps-performance-toolkit-user-guide-confluence.md @@ -66,7 +66,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended value | | --------- | ----------------- | | Collaborative editing mode | synchrony-local | -| Confluence Version | The Data Center App Performance Toolkit officially supports `7.4.11` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | +| Confluence Version | The Data Center App Performance Toolkit officially supports `7.13.0` and `7.4.11` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | **Cluster nodes** @@ -380,7 +380,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended value | | --------- | ----------------- | | Collaborative editing mode | synchrony-local | -| Confluence Version | The Data Center App Performance Toolkit officially supports `7.4.11` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | +| Confluence Version | The Data Center App Performance Toolkit officially supports `7.13.0` and `7.4.11` ([Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html)) | **Cluster nodes** From 0268336f1e439374a7e715ba0523401c9352f993 Mon Sep 17 00:00:00 2001 From: Oleksandr Metelytsia Date: Tue, 14 Sep 2021 21:17:13 +0300 Subject: [PATCH 38/45] DCA-1295 index wait script --- .../confluence/index-wait-till-finished.sh | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 app/util/confluence/index-wait-till-finished.sh diff --git a/app/util/confluence/index-wait-till-finished.sh b/app/util/confluence/index-wait-till-finished.sh new file mode 100644 index 000000000..36c281e8e --- /dev/null +++ b/app/util/confluence/index-wait-till-finished.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# Wait for full re index finished + +SEARCH_LOG="/var/atlassian/application-data/confluence/logs/atlassian-confluence-index*" +CONFLUENCE_VERSION_FILE="/media/atl/confluence/shared-home/confluence.version" +PROGRESS="Re-index progress:.*" +FINISHED="Re-index progress: 100% complete" + +CONFLUENCE_VERSION=$(sudo su confluence -c "cat ${CONFLUENCE_VERSION_FILE}") +if [[ -z "$CONFLUENCE_VERSION" ]]; then + echo The $CONFLUENCE_VERSION_FILE file does not exists or emtpy. Please check if CONFLUENCE_VERSION_FILE variable \ + has a valid file path of the Confluence version file or set your Cluster CONFLUENCE_VERSION explicitly. + exit 1 +fi +echo "Confluence Version: ${CONFLUENCE_VERSION}" + +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 "ERROR: There are no log files found like $SEARCH_LOG" + echo "Make sure your Confluence version is 7.7.x or higher." + exit 1 +fi + +TIMEOUT=21600 # 6 hour +COUNTER=0 +SLEEP_TIME=60 +ATTEMPTS=$((TIMEOUT / SLEEP_TIME)) + +while [ ${COUNTER} -lt ${ATTEMPTS} ];do + grep_result=$(sudo su -c "grep -h -o \"$PROGRESS\" $SEARCH_LOG" 2>/dev/null | tail -1) + echo "Status:" + echo "$grep_result" + if [ -z "$grep_result" ];then + echo "ERROR: $PROGRESS was not found in $SEARCH_LOG" + echo "Check if index process was started." + exit 1 + fi + finished=$(echo "$grep_result" | grep "$FINISHED") + if [ -z "$finished" ];then + echo "Waiting for index finished, attempt ${COUNTER}/${ATTEMPTS} at waiting ${SLEEP_TIME} seconds." + echo # New line + sleep ${SLEEP_TIME} + (( COUNTER++ )) || true + else + echo "Index finished successfully." + break + fi +done + +if [ "${COUNTER}" -eq ${ATTEMPTS} ]; then + echo # move to a new line + echo "ERROR: Wait for index finished failed" + echo "See logs for more details:" + sudo su -c "ls -a $SEARCH_LOG" + exit 1 +fi + +echo "DCAPT util script execution is finished successfully." \ No newline at end of file From 2e5c0459dc8f1f4a536e35428b196f9ed5dddf1a Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Wed, 15 Sep 2021 15:40:31 +0300 Subject: [PATCH 39/45] Remove bintray workaround in dockerfile (#682) --- Dockerfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index a8518e833..979a32881 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,9 +8,6 @@ FROM blazemeter/taurus ENV APT_INSTALL="apt-get -y install --no-install-recommends" -# Remove bintray manually until PR https://github.com/Blazemeter/taurus/pull/1484/files is promoted to prod -RUN sed -i '/dl.bintray.com/d' /etc/apt/sources.list - RUN apt-get -y update \ && $APT_INSTALL vim git openssh-server python3.8-dev python3-pip wget \ && update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 \ From 36a2fa8c23f3581b77f666ba299fae4e7a37b934 Mon Sep 17 00:00:00 2001 From: OlehStefanyshyn Date: Thu, 16 Sep 2021 10:52:58 +0300 Subject: [PATCH 40/45] crowd/DCA-1242-base-url-fix (#685) --- app/util/crowd/populate_db.sh | 38 ++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/app/util/crowd/populate_db.sh b/app/util/crowd/populate_db.sh index f651deb03..185ac8bf0 100644 --- a/app/util/crowd/populate_db.sh +++ b/app/util/crowd/populate_db.sh @@ -110,7 +110,21 @@ if [[ $? -ne 0 ]]; then exit 1 fi -echo "Step4: Download DB dump" +echo "Step4: Write 'base.url' property to file" +CROWD_BASE_URL_FILE="base_url" +if [[ -s ${CROWD_BASE_URL_FILE} ]]; then + echo "File ${CROWD_BASE_URL_FILE} was found. Base url: $(cat ${CROWD_BASE_URL_FILE})." +else + PGPASSWORD=${CROWD_DB_PASS} psql -h ${DB_HOST} -d ${CROWD_DB_NAME} -U ${CROWD_DB_USER} -Atc \ + "select property_value from cwd_property where property_name='base.url';" > ${CROWD_BASE_URL_FILE} + if [[ ! -s ${CROWD_BASE_URL_FILE} ]]; then + echo "Failed to get Base URL value from database. Check DB configuration variables." + exit 1 + fi + echo "$(cat ${CROWD_BASE_URL_FILE}) was written to the ${CROWD_BASE_URL_FILE} file." +fi + +echo "Step5: Download DB dump" rm -rf ${DB_DUMP_NAME} ARTIFACT_SIZE_BYTES=$(curl -sI ${DB_DUMP_URL} | grep "Content-Length" | awk {'print $2'} | tr -d '[:space:]') ARTIFACT_SIZE_GB=$((${ARTIFACT_SIZE_BYTES}/1024/1024/1024)) @@ -130,7 +144,7 @@ if [[ $? -ne 0 ]]; then exit 1 fi -echo "Step5: SQL Restore" +echo "Step6: SQL Restore" echo "Drop DB" PGPASSWORD=${CROWD_DB_PASS} dropdb -U ${CROWD_DB_USER} -h ${DB_HOST} ${CROWD_DB_NAME} if [[ $? -ne 0 ]]; then @@ -152,10 +166,28 @@ if [[ $? -ne 0 ]]; then exit 1 fi -echo "Step6: Start Crowd" +echo "Step7: Update 'base.url' property in database" +if [[ -s ${CROWD_BASE_URL_FILE} ]]; then + BASE_URL=$(cat ${CROWD_BASE_URL_FILE}) + if [[ $(PGPASSWORD=${CROWD_DB_PASS} psql -h ${DB_HOST} -d ${CROWD_DB_NAME} -U ${CROWD_DB_USER} -c \ + "UPDATE cwd_property SET property_value = '${BASE_URL}' WHERE property_name = 'base.url';") != "UPDATE 1" ]]; then + echo "Couldn't update database 'base.url' property. Please check your database connection." + exit 1 + else + echo "The database 'base.url' property was updated with ${BASE_URL}" + fi +else + echo "The ${CROWD_BASE_URL_FILE} file doesn't exist or empty. Please check file existence or 'base.url' property in the database." + exit 1 +fi + +echo "Step8: Start Crowd" sudo systemctl start crowd rm -rf ${DB_DUMP_NAME} +echo "Step9: Remove ${CROWD_BASE_URL_FILE} file" +sudo rm ${CROWD_BASE_URL_FILE} + echo "DCAPT util script execution is finished successfully." echo # move to a new line From 8f11d1040dfa54c13ceb14d4df6607a9fca553f2 Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Thu, 16 Sep 2021 11:58:24 +0300 Subject: [PATCH 41/45] docs update: confluence 7.13 reindex (#684) --- ...rformance-toolkit-user-guide-confluence.md | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/docs/dc-apps-performance-toolkit-user-guide-confluence.md b/docs/dc-apps-performance-toolkit-user-guide-confluence.md index 615391ad1..0dbabf26b 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-confluence.md +++ b/docs/dc-apps-performance-toolkit-user-guide-confluence.md @@ -597,16 +597,39 @@ Do not close or interrupt the session. It will take some time to upload attachme For more information, go to [Re-indexing Confluence](https://confluence.atlassian.com/doc/content-index-administration-148844.html). -{{% note %}} -For Confluence 7, `populate_db.sh` script triggers index process automatically. So no need to start index manually once again, just wait until current index process is finished. -{{% /note %}} +Index process is triggered automatically after `polulate_db.sh` script execution. + +For Confluence **7.4.x**: -For Confluence 6: 1. Log in as a user with the **Confluence System Administrators** [global permission](https://confluence.atlassian.com/doc/global-permissions-overview-138709.html). 1. Go to **![cog icon](/platform/marketplace/images/cog.png) > General Configuration > Content Indexing**. -1. Click **Rebuild** and wait until re-indexing is completed. +1. Wait until re-indexing is completed. + +For Confluence **7.13.x**: + +1. Using SSH, connect to the Confluence node via the Bastion instance: + + For Linux or MacOS run following commands in terminal (for Windows use [Git Bash](https://git-scm.com/downloads) terminal): + + ```bash + ssh-add path_to_your_private_key_pem + export BASTION_IP=bastion_instance_public_ip + export NODE_IP=node_private_ip + export SSH_OPTS1='-o ServerAliveInterval=60' + export SSH_OPTS2='-o ServerAliveCountMax=30' + ssh ${SSH_OPTS1} ${SSH_OPTS2} -o "proxycommand ssh -W %h:%p ${SSH_OPTS1} ${SSH_OPTS2} ec2-user@${BASTION_IP}" ec2-user@${NODE_IP} + ``` + For more information, go to [Connecting your nodes over SSH](https://confluence.atlassian.com/adminjiraserver/administering-jira-data-center-on-aws-938846969.html#AdministeringJiraDataCenteronAWS-ConnectingtoyournodesoverSSH). +1. Download the [index-wait-till-finished.sh](https://github.com/atlassian/dc-app-performance-toolkit/blob/master/app/util/confluence/index-wait-till-finished.sh) script and make it executable: -Confluence will be unavailable for some time during the re-indexing process. + ``` bash + wget https://raw.githubusercontent.com/atlassian/dc-app-performance-toolkit/master/app/util/confluence/index-wait-till-finished.sh && chmod +x index-wait-till-finished.sh + ``` +1. Run the script: + + ``` bash + ./index-wait-till-finished.sh 2>&1 | tee -a index-wait-till-finished.log + ``` ### Create Index Snapshot (~30 min) From 198869c36e81aa8dae0b35c5e56cf79ff2d1472a Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Thu, 16 Sep 2021 15:46:33 +0300 Subject: [PATCH 42/45] update docs last edit date (#686) --- docs/dc-apps-performance-toolkit-user-guide-bitbucket.md | 2 +- docs/dc-apps-performance-toolkit-user-guide-confluence.md | 2 +- docs/dc-apps-performance-toolkit-user-guide-crowd.md | 2 +- docs/dc-apps-performance-toolkit-user-guide-jira.md | 2 +- docs/dc-apps-performance-toolkit-user-guide-jsm.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md b/docs/dc-apps-performance-toolkit-user-guide-bitbucket.md index dc26d311e..bb9f555e4 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-06-16" +date: "2021-09-16" --- # Data Center App Performance Toolkit User Guide For Bitbucket diff --git a/docs/dc-apps-performance-toolkit-user-guide-confluence.md b/docs/dc-apps-performance-toolkit-user-guide-confluence.md index 0dbabf26b..1151488c1 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-06-16" +date: "2021-09-16" --- # Data Center App Performance Toolkit User Guide For Confluence diff --git a/docs/dc-apps-performance-toolkit-user-guide-crowd.md b/docs/dc-apps-performance-toolkit-user-guide-crowd.md index 87e6f737d..57645accd 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-crowd.md +++ b/docs/dc-apps-performance-toolkit-user-guide-crowd.md @@ -4,7 +4,7 @@ platform: platform product: marketplace category: devguide subcategory: build -date: "2021-06-16" +date: "2021-09-16" --- # Data Center App Performance Toolkit User Guide For Crowd diff --git a/docs/dc-apps-performance-toolkit-user-guide-jira.md b/docs/dc-apps-performance-toolkit-user-guide-jira.md index a8f8ae988..8d4be5fc8 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-06-16" +date: "2021-09-16" --- # Data Center App Performance Toolkit User Guide For Jira diff --git a/docs/dc-apps-performance-toolkit-user-guide-jsm.md b/docs/dc-apps-performance-toolkit-user-guide-jsm.md index 50e455829..e8a8658ba 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-06-16" +date: "2021-09-16" --- # Data Center App Performance Toolkit User Guide For Jira Service Management From 5572debb7b4426e61d2aebbde059d71a155e6a31 Mon Sep 17 00:00:00 2001 From: Alex Metelytsia Date: Mon, 20 Sep 2021 12:37:49 +0300 Subject: [PATCH 43/45] Add support of crowd 4.3.5 (#687) --- README.md | 2 +- docs/dc-apps-performance-toolkit-user-guide-crowd.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a81f6af81..a64cf06e7 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ This repository contains Taurus scripts for performance testing of Atlassian Dat * Bitbucket Server Platform release: `7.0.5` * Supported Crowd versions: - * Crowd [Long Term Support release](https://confluence.atlassian.com/crowd/crowd-release-notes-199094.html): `4.3.0` + * Crowd [Long Term Support release](https://confluence.atlassian.com/crowd/crowd-release-notes-199094.html): `4.3.5` ## Support In case of technical questions, issues or problems with DC Apps Performance Toolkit, contact us for support in the [community Slack](http://bit.ly/dcapt_slack) **#data-center-app-performance-toolkit** channel. diff --git a/docs/dc-apps-performance-toolkit-user-guide-crowd.md b/docs/dc-apps-performance-toolkit-user-guide-crowd.md index 57645accd..8cf548df2 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-crowd.md +++ b/docs/dc-apps-performance-toolkit-user-guide-crowd.md @@ -99,7 +99,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended Value | | --------- | ----------------- | -| Version | The Data Center App Performance Toolkit officially supports `4.3.0` ([Long Term Support release](https://confluence.atlassian.com/crowd/crowd-release-notes-199094.html)) | +| Version | The Data Center App Performance Toolkit officially supports `4.3.5` ([Long Term Support release](https://confluence.atlassian.com/crowd/crowd-release-notes-199094.html)) | **Cluster nodes** From 443bfc1045d9eb2ce00a08eed63209f67c5e6515 Mon Sep 17 00:00:00 2001 From: Oleksandr Metelytsia Date: Mon, 20 Sep 2021 12:50:56 +0300 Subject: [PATCH 44/45] Release 5.1.0 --- app/bitbucket.yml | 2 +- app/confluence.yml | 2 +- app/crowd.yml | 2 +- app/jira.yml | 2 +- app/jsm.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/bitbucket.yml b/app/bitbucket.yml index 45f8e7cc2..87b31930c 100644 --- a/app/bitbucket.yml +++ b/app/bitbucket.yml @@ -19,7 +19,7 @@ settings: WEBDRIVER_VISIBLE: False JMETER_VERSION: 5.2.1 LANGUAGE: en_US.utf8 - allow_analytics: No # 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. services: - module: shellexec prepare: diff --git a/app/confluence.yml b/app/confluence.yml index 065eb6360..372f55bfe 100644 --- a/app/confluence.yml +++ b/app/confluence.yml @@ -19,7 +19,7 @@ settings: WEBDRIVER_VISIBLE: False JMETER_VERSION: 5.2.1 LANGUAGE: en_US.utf8 - allow_analytics: No # 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 view_page: 46 view_dashboard: 8 diff --git a/app/crowd.yml b/app/crowd.yml index 1ec900513..f1b100d44 100644 --- a/app/crowd.yml +++ b/app/crowd.yml @@ -31,7 +31,7 @@ settings: JMETER_VERSION: 5.2.1 LANGUAGE: en_US.utf8 - allow_analytics: No # 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. services: - module: shellexec prepare: diff --git a/app/jira.yml b/app/jira.yml index 7a78e3532..871cb4025 100644 --- a/app/jira.yml +++ b/app/jira.yml @@ -19,7 +19,7 @@ settings: WEBDRIVER_VISIBLE: False JMETER_VERSION: 5.2.1 LANGUAGE: en_US.utf8 - allow_analytics: No # 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 create_issue: 4 search_jql: 11 diff --git a/app/jsm.yml b/app/jsm.yml index 96dbb99ed..c96fa9e17 100644 --- a/app/jsm.yml +++ b/app/jsm.yml @@ -21,7 +21,7 @@ settings: WEBDRIVER_VISIBLE: False JMETER_VERSION: 5.2.1 LANGUAGE: en_US.utf8 - allow_analytics: No # 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: 24 From 09be6706365aac626a0e2c26936d888460207653 Mon Sep 17 00:00:00 2001 From: Oleksandr Metelytsia Date: Mon, 20 Sep 2021 13:10:41 +0300 Subject: [PATCH 45/45] remove redundant comment --- docs/dc-apps-performance-toolkit-user-guide-crowd.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dc-apps-performance-toolkit-user-guide-crowd.md b/docs/dc-apps-performance-toolkit-user-guide-crowd.md index 8cf548df2..81c0aab14 100644 --- a/docs/dc-apps-performance-toolkit-user-guide-crowd.md +++ b/docs/dc-apps-performance-toolkit-user-guide-crowd.md @@ -99,7 +99,7 @@ All important parameters are listed and described in this section. For all other | Parameter | Recommended Value | | --------- | ----------------- | -| Version | The Data Center App Performance Toolkit officially supports `4.3.5` ([Long Term Support release](https://confluence.atlassian.com/crowd/crowd-release-notes-199094.html)) | +| Version | The Data Center App Performance Toolkit officially supports `4.3.5` | **Cluster nodes**