Skip to content

Commit

Permalink
Merge pull request #1090 from atlassian/release/7.5.0
Browse files Browse the repository at this point in the history
Release 7.5.0
  • Loading branch information
ometelytsia committed Aug 16, 2023
2 parents 625dd22 + 1405557 commit 378d8bf
Show file tree
Hide file tree
Showing 35 changed files with 1,653 additions and 816 deletions.
2 changes: 1 addition & 1 deletion CODEOWNERS
Validating CODEOWNERS rules …
@@ -1,2 +1,2 @@
# Default code owners - Atlassian Data Center App Performance Toolkit
* @ometelytsia @SergeyMoroz0703 @opopovss @OlehStefanyshyn @dmika1
* @ometelytsia @SergeyMoroz0703 @OlehStefanyshyn
2 changes: 1 addition & 1 deletion Dockerfile
Expand Up @@ -4,7 +4,7 @@
# bzt run: docker run --shm-size=4g -v "$PWD:/dc-app-performance-toolkit" atlassian/dcapt jira.yml
# interactive run: docker run -it --entrypoint="/bin/bash" -v "$PWD:/dc-app-performance-toolkit" atlassian/dcapt

FROM python:3.11-slim
FROM python:3.11-slim-bullseye

ENV APT_INSTALL="apt-get -y install --no-install-recommends"

Expand Down
14 changes: 7 additions & 7 deletions README.md
Expand Up @@ -5,22 +5,22 @@ 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.20.22` and `9.4.6`
* Jira [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `9.4.8` and `8.20.24`

* Supported Jira Service Management versions:
* Jira Service Management [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `4.20.22` and `5.4.6`
* Jira Service Management [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `5.4.8` and `4.20.24`

* Supported Confluence versions:
* Confluence [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.19.9`, `7.13.17` and `8.1.4` platform release
* Confluence [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.19.11`, `7.13.18` and `8.1.4` platform release

* Supported Bitbucket Server versions:
* Bitbucket Server [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.21.11`, `7.17.16`, and `8.8.3` platform release.
* Bitbucket Server [Long Term Support release](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html): `7.21.14` and `8.9.2`

* Supported Crowd versions:
* Crowd [release notes](https://confluence.atlassian.com/crowd/crowd-release-notes-199094.html): `5.0.5`
* Crowd [release notes](https://confluence.atlassian.com/crowd/crowd-release-notes-199094.html): `5.1.4`

* Supported Bamboo versions:
* Bamboo [Long Term Support release](https://confluence.atlassian.com/bamboo/bamboo-release-notes-671089224.html): `9.2.1`
* Bamboo [Long Term Support release](https://confluence.atlassian.com/bamboo/bamboo-release-notes-671089224.html): `9.2.3`

## 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.
Expand Down Expand Up @@ -95,7 +95,7 @@ git --version
```
We recommend using [virtualenv](https://virtualenv.pypa.io/en/latest/) for Taurus. See example setup below.

## Example setup for clean Ubuntu 20.04
## Example setup for clean Ubuntu 22.04
JDK setup (if missing):
```
sudo apt-get update
Expand Down
4 changes: 2 additions & 2 deletions app/bamboo.yml
Expand Up @@ -18,7 +18,7 @@ settings:
ramp-up: 5m # time to spin all concurrent threads
total_actions_per_hour: 2000 # number of total JMeter actions per hour
WEBDRIVER_VISIBLE: False
JMETER_VERSION: 5.4.3
JMETER_VERSION: 5.5
LANGUAGE: en_US.utf8
allow_analytics: Yes # Allow sending basic run analytics to Atlassian. These analytics help us to understand how the tool is being used and help us to continue to invest in this tooling. For more details please see our README.
# Action percentage for JMeter load executor
Expand Down Expand Up @@ -49,7 +49,7 @@ services:
- python util/post_run/cleanup_results_dir.py
- module: pip-install
packages:
- selenium==4.9.0
- selenium==4.10.0
execution:
- scenario: jmeter
executor: jmeter
Expand Down
4 changes: 2 additions & 2 deletions app/bitbucket.yml
Expand Up @@ -18,7 +18,7 @@ settings:
ramp-up: 10m # time to spin all concurrent users
total_actions_per_hour: 32700
WEBDRIVER_VISIBLE: False
JMETER_VERSION: 5.4.3
JMETER_VERSION: 5.5
LANGUAGE: en_US.utf8
allow_analytics: Yes # Allow sending basic run analytics to Atlassian. These analytics help us to understand how the tool is being used and help us to continue to invest in this tooling. For more details please see our README.
services:
Expand All @@ -36,7 +36,7 @@ services:
- python util/post_run/cleanup_results_dir.py
- module: pip-install
packages:
- selenium==4.9.0
- selenium==4.10.0
execution:
- scenario: ${load_executor}
concurrency: ${concurrency}
Expand Down
4 changes: 2 additions & 2 deletions app/confluence.yml
Expand Up @@ -18,7 +18,7 @@ settings:
ramp-up: 5m # time to spin all concurrent users
total_actions_per_hour: 20000
WEBDRIVER_VISIBLE: False
JMETER_VERSION: 5.4.3
JMETER_VERSION: 5.5
LANGUAGE: en_US.utf8
allow_analytics: Yes # Allow sending basic run analytics to Atlassian. These analytics help us to understand how the tool is being used and help us to continue to invest in this tooling. For more details please see our README.
# Action percentage for JMeter and Locust load executors
Expand Down Expand Up @@ -51,7 +51,7 @@ services:
- python util/post_run/cleanup_results_dir.py
- module: pip-install
packages:
- selenium==4.9.0
- selenium==4.10.0
execution:
- scenario: ${load_executor}
executor: ${load_executor}
Expand Down
4 changes: 2 additions & 2 deletions app/crowd.yml
Expand Up @@ -9,7 +9,7 @@ settings:
application_protocol: http # http or https
application_port: 80 # 80, 443, 8080, 4990, etc
secure: True # Set False to allow insecure connections, e.g. when using self-signed SSL certificate
application_postfix: # e.g. /crowd in case of url like http://localhost:4990/crowd
application_postfix: /crowd # e.g. /crowd in case of url like http://localhost:4990/crowd
admin_login: admin
admin_password: admin
application_name: crowd
Expand All @@ -30,7 +30,7 @@ settings:
# ramp-up: 5s # time to spin all concurrent threads
# total_actions_per_hour: 720000 # number of total JMeter actions per hour

JMETER_VERSION: 5.4.3
JMETER_VERSION: 5.5
LANGUAGE: en_US.utf8
allow_analytics: Yes # Allow sending basic run analytics to Atlassian. These analytics help us to understand how the tool is being used and help us to continue to invest in this tooling. For more details please see our README.
services:
Expand Down
6 changes: 3 additions & 3 deletions app/jira.yml
Expand Up @@ -9,7 +9,7 @@ settings:
application_protocol: http # http or https
application_port: 80 # 80, 443, 8080, 2990, etc
secure: True # Set False to allow insecure connections, e.g. when using self-signed SSL certificate
application_postfix: # e.g. /jira for TerraForm deployment url like `http://a1234-54321.us-east-2.elb.amazonaws.com/jira`. Leave this value blank for url without postfix.
application_postfix: /jira # e.g. /jira for TerraForm deployment url like `http://a1234-54321.us-east-2.elb.amazonaws.com/jira`. Leave this value blank for url without postfix.
admin_login: admin
admin_password: admin
load_executor: jmeter # jmeter and locust are supported. jmeter by default.
Expand All @@ -18,7 +18,7 @@ settings:
ramp-up: 3m # time to spin all concurrent users
total_actions_per_hour: 54500 # number of total JMeter/Locust actions per hour
WEBDRIVER_VISIBLE: False
JMETER_VERSION: 5.4.3
JMETER_VERSION: 5.5
LANGUAGE: en_US.utf8
allow_analytics: Yes # Allow sending basic run analytics to Atlassian. These analytics help us to understand how the tool is being used and help us to continue to invest in this tooling. For more details please see our README.
# Action percentage for Jmeter and Locust load executors
Expand Down Expand Up @@ -51,7 +51,7 @@ services:
- python util/post_run/cleanup_results_dir.py
- module: pip-install
packages:
- selenium==4.9.0
- selenium==4.10.0
execution:
- scenario: ${load_executor}
executor: ${load_executor}
Expand Down
2 changes: 1 addition & 1 deletion app/jmeter/confluence.jmx
Expand Up @@ -5362,7 +5362,7 @@ if (response.contains("Successfully added emoji")) {
<stringProp name="HTTPSampler.port"></stringProp>
<stringProp name="HTTPSampler.protocol"></stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.path">${application.postfix}/rest/emoticons/1.0/custom/delete-your-upload/${emoji_shortcut}</stringProp>
<stringProp name="HTTPSampler.path">${application.postfix}/rest/emoticons/1.0/custom/delete-your-upload?shortcut=${emoji_shortcut}</stringProp>
<stringProp name="HTTPSampler.method">DELETE</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
Expand Down
6 changes: 3 additions & 3 deletions app/jsm.yml
Expand Up @@ -9,7 +9,7 @@ settings:
application_protocol: http # http or https
application_port: 80 # 80, 443, 8080, 2990, etc
secure: True # Set False to allow insecure connections, e.g. when using self-signed SSL certificate
application_postfix: # e.g. /jira for TerraForm deployment url like `http://a1234-54321.us-east-2.elb.amazonaws.com/jira`. Leave this value blank for url without postfix.
application_postfix: /jira # e.g. /jira for TerraForm deployment url like `http://a1234-54321.us-east-2.elb.amazonaws.com/jira`. Leave this value blank for url without postfix.
admin_login: admin
admin_password: admin
load_executor: jmeter # jmeter and locust are supported. jmeter by default.
Expand All @@ -21,7 +21,7 @@ settings:
total_actions_per_hour_customers: 15000
insight: False # Set True to enable Insight specific tests
WEBDRIVER_VISIBLE: False
JMETER_VERSION: 5.4.3
JMETER_VERSION: 5.5
LANGUAGE: en_US.utf8
allow_analytics: Yes # Allow sending basic run analytics to Atlassian. These analytics help us to understand how the tool is being used and help us to continue to invest in this tooling. For more details please see our README.
# Action percentage for Jmeter and Locust load executors
Expand Down Expand Up @@ -67,7 +67,7 @@ services:
- python util/post_run/cleanup_results_dir.py
- module: pip-install
packages:
- selenium==4.9.0
- selenium==4.10.0
execution:
- scenario: ${load_executor}_agents
executor: ${load_executor}
Expand Down
29 changes: 13 additions & 16 deletions app/selenium_ui/conftest.py
Expand Up @@ -4,27 +4,25 @@
import functools
import json
import os
import re
import sys
import time
from datetime import timezone
import re
from pprint import pprint
from time import sleep, time

import filelock
import pytest
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from time import sleep

from util.conf import CONFLUENCE_SETTINGS, JIRA_SETTINGS, BITBUCKET_SETTINGS, JSM_SETTINGS, BAMBOO_SETTINGS
from util.exceptions import WebDriverExceptionPostpone
from util.project_paths import JIRA_DATASET_ISSUES, JIRA_DATASET_JQLS, JIRA_DATASET_KANBAN_BOARDS, \
JIRA_DATASET_PROJECTS, JIRA_DATASET_SCRUM_BOARDS, JIRA_DATASET_USERS, JIRA_DATASET_CUSTOM_ISSUES, BITBUCKET_USERS, \
BITBUCKET_PROJECTS, BITBUCKET_REPOS, BITBUCKET_PRS, CONFLUENCE_BLOGS, CONFLUENCE_PAGES, CONFLUENCE_CUSTOM_PAGES, \
CONFLUENCE_USERS, ENV_TAURUS_ARTIFACT_DIR, JSM_DATASET_REQUESTS, JSM_DATASET_CUSTOMERS, JSM_DATASET_AGENTS, \
JSM_DATASET_SERVICE_DESKS_L, JSM_DATASET_SERVICE_DESKS_M, JSM_DATASET_SERVICE_DESKS_S, JSM_DATASET_CUSTOM_ISSUES,\
JSM_DATASET_SERVICE_DESKS_L, JSM_DATASET_SERVICE_DESKS_M, JSM_DATASET_SERVICE_DESKS_S, JSM_DATASET_CUSTOM_ISSUES, \
JSM_DATASET_INSIGHT_SCHEMAS, JSM_DATASET_INSIGHT_ISSUES, BAMBOO_USERS, BAMBOO_BUILD_PLANS

SCREEN_WIDTH = 1920
Expand Down Expand Up @@ -134,7 +132,7 @@ def wrapper(*args, **kwargs):
if globals.login_failed:
pytest.skip("login is failed")
node_ip = ""
start = time.time()
start = time()
error_msg = 'Success'
full_exception = ''
if args:
Expand All @@ -148,14 +146,14 @@ def wrapper(*args, **kwargs):
# https://docs.python.org/2/library/sys.html#sys.exc_info
exc_type, full_exception = sys.exc_info()[:2]
error_msg = f"Failed measure: {interaction} - {exc_type.__name__}"
end = time.time()
end = time()
timing = str(int((end - start) * 1000))

lockfile = f'{selenium_results_file}.lock'

with filelock.SoftFileLock(lockfile):
with open(selenium_results_file, "a+") as jtl_file:
timestamp = round(time.time() * 1000)
timestamp = round(time() * 1000)
if explicit_timing:
jtl_file.write(f"{timestamp},{explicit_timing*1000},{interaction},,{error_msg},"
f",{success},0,0,0,0,,0\n")
Expand All @@ -178,10 +176,8 @@ def wrapper(*args, **kwargs):
def webdriver(app_settings):
def driver_init():
chrome_options = Options()
capabilities = DesiredCapabilities.CHROME
capabilities["goog:loggingPrefs"] = {"performance": "ALL"}
if app_settings.webdriver_visible and is_docker():
raise SystemExit("ERROR: WEBDRIVER_VISIBLE is True in .yml, but Docker container does not have a display.")
raise Exception("ERROR: WEBDRIVER_VISIBLE is True in .yml, but Docker container does not have a display.")
if not app_settings.webdriver_visible:
chrome_options.add_argument("--headless")
if not app_settings.secure:
Expand All @@ -191,7 +187,8 @@ def driver_init():
chrome_options.add_argument("--disable-infobars")
chrome_options.add_argument('lang=en')
chrome_options.add_experimental_option('prefs', {'intl.accept_languages': 'en,en_US'})
driver = Chrome(options=chrome_options, desired_capabilities=capabilities)
chrome_options.set_capability('goog:loggingPrefs', {'performance': 'ALL'})
driver = Chrome(options=chrome_options)
driver.app_settings = app_settings
return driver

Expand Down Expand Up @@ -271,7 +268,7 @@ def get_wait_browser_metrics(webdriver, expected_metrics):
return data

print(f'Waiting for browser metrics, attempt {i}, sleep {sleep_time}')
time.sleep(sleep_time)
sleep(sleep_time)

return {}

Expand All @@ -287,7 +284,7 @@ def measure_dom_requests(webdriver, interaction, description=''):
success = True
with filelock.SoftFileLock(lockfile):
with open(selenium_results_file, "a+") as jtl_file:
timestamp = round(time.time() * 1000)
timestamp = round(time() * 1000)
jtl_file.write(
f"{timestamp},{timing},{interaction},,{error_msg},,{success},0,0,0,0,{webdriver.node_ip},0\n")
print(f"{timestamp},{timing},{interaction},,{error_msg},,{success},0,0,0,0,{webdriver.node_ip},0\n")
Expand Down Expand Up @@ -351,7 +348,7 @@ def measure_browser_navi_metrics(webdriver, dataset, expected_metrics):
for metric in metrics:
interaction = metric['key']
ready_for_user_timing = metric['ready_for_user']
timestamp = round(time.time() * 1000)
timestamp = round(time() * 1000)
node_ip = webdriver.node_ip
jtl_file.write(
f"{timestamp},{ready_for_user_timing},{interaction},,{error_msg},,{success},0,0,0,0,{node_ip},0\n")
Expand Down Expand Up @@ -430,7 +427,7 @@ def get_screen_shots(request, webdriver):
action_name = request.node.rep_call.head_line
error_text = request.node.rep_call.longreprtext
with open(selenium_error_file, mode) as err_file:
timestamp = round(time.time() * 1000)
timestamp = round(time() * 1000)
dt = datetime.datetime.now()
utc_time = dt.replace(tzinfo=timezone.utc)
str_time = utc_time.strftime("%m-%d-%Y, %H:%M:%S")
Expand Down
2 changes: 1 addition & 1 deletion app/selenium_ui/jsm/pages/customer_pages.py
Expand Up @@ -36,7 +36,7 @@ def open_profile_menu(self):

def logout(self):
self.get_element(TopPanelSelectors.logout_button).click()
self.wait_until_invisible(TopPanelSelectors.profile_icon)
self.wait_until_visible(LoginPageLocators.login_field)


class CustomerPortals(BasePage):
Expand Down
5 changes: 5 additions & 0 deletions app/util/bamboo/bamboo_dataset_generator/README.md
Expand Up @@ -7,6 +7,11 @@ Configuration located inside: [src/main/java/bamboogenerator/Main.java](src/main
**Client Configuration**

- `BAMBOO_SERVER_URL` - the URL of Bamboo

For TerraForm deployment URL should have port and postfix
```
BAMBOO_SERVER_URL = "http://my-bamboo.amazonaws.com:80/bamboo"
```
- `ADMIN_USER_NAME` - the username of admin account


Expand Down
2 changes: 1 addition & 1 deletion app/util/bamboo/bamboo_dataset_generator/pom.xml
Expand Up @@ -62,7 +62,7 @@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>29.0-jre</version>
<version>32.0.0-jre</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
Expand Down
Expand Up @@ -27,7 +27,9 @@
public class Main {
private static final Logger LOG = LoggerFactory.getLogger(Main.class);

private static final String BAMBOO_SERVER_URL = "http://0.0.0.0:8085";
// e.g. for TerraForm deployment: BAMBOO_SERVER_URL = "http://my-babmoo.amazonaws.com:80/bamboo"
// e.g. for localhost deployment: BAMBOO_SERVER_URL = "http://0.0.0.0:8085"
private static final String BAMBOO_SERVER_URL = "http://my-babmoo.amazonaws.com:80/bamboo";
private static final String ADMIN_USER_NAME = "admin";

// NOTE: Please make sure you haven't changed these values after initial run
Expand Down
2 changes: 1 addition & 1 deletion app/util/conf.py
Expand Up @@ -2,7 +2,7 @@

from util.project_paths import JIRA_YML, CONFLUENCE_YML, BITBUCKET_YML, JSM_YML, CROWD_YML, BAMBOO_YML

TOOLKIT_VERSION = '7.4.1'
TOOLKIT_VERSION = '7.5.0'
UNSUPPORTED_VERSION = '6.3.0'


Expand Down
4 changes: 2 additions & 2 deletions app/util/jira/populate_db.sh
Expand Up @@ -43,8 +43,8 @@ JIRA_DB_PASS="Password1!"

# Jira/JSM supported versions

SUPPORTED_JIRA_VERSIONS=(8.20.22 9.4.6)
SUPPORTED_JSM_VERSIONS=(4.20.22 5.4.6)
SUPPORTED_JIRA_VERSIONS=(8.20.24 9.4.8)
SUPPORTED_JSM_VERSIONS=(4.20.24 5.4.8)

SUPPORTED_VERSIONS=("${SUPPORTED_JIRA_VERSIONS[@]}")
# JSM section
Expand Down
4 changes: 2 additions & 2 deletions app/util/jira/upload_attachments.sh
Expand Up @@ -29,8 +29,8 @@ JIRA_VERSION_FILE="/media/atl/jira/shared/jira-software.version"

# Jira/JSM supported versions

SUPPORTED_JIRA_VERSIONS=(8.20.22 9.4.6)
SUPPORTED_JSM_VERSIONS=(4.20.22 5.4.6)
SUPPORTED_JIRA_VERSIONS=(8.20.24 9.4.8)
SUPPORTED_JSM_VERSIONS=(4.20.24 5.4.8)

SUPPORTED_VERSIONS=("${SUPPORTED_JIRA_VERSIONS[@]}")
if [[ ${jsm} == 1 ]]; then
Expand Down
2 changes: 1 addition & 1 deletion app/util/jmeter/start_jmeter_ui.py
Expand Up @@ -137,7 +137,7 @@ def print_settings(self, settings):
print(setting.replace('\n', ''))

def launch_jmeter_ui(self):
jmeter_path = JMETER_HOME / self.env_settings['JMETER_VERSION'] / 'bin' / 'jmeter'
jmeter_path = JMETER_HOME / str(self.env_settings['JMETER_VERSION']) / 'bin' / 'jmeter'
command = [str(jmeter_path), "-p", str(PROPERTIES), "-t", str(self.jmx)]
print("JMeter start command: {}".format(' '.join(command)))
print("Working dir: {}".format(APP_DIR))
Expand Down

0 comments on commit 378d8bf

Please sign in to comment.