Skip to content

Commit 39b8bbf

Browse files
Merge pull request atlassian#742 from atlassian/bamboo
Bamboo Data Center support added
2 parents b676cd0 + fcaba0d commit 39b8bbf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+3907
-122
lines changed

app/bamboo.yml

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
---
2+
settings:
3+
artifacts-dir: results/bamboo/%Y-%m-%d_%H-%M-%S
4+
aggregator: consolidator
5+
verbose: false
6+
env:
7+
application_hostname: test-bamboo.atlassian.com # Bamboo DC hostname without protocol and port e.g. test-bamboo.atlassian.com or localhost
8+
application_protocol: http # http or https
9+
application_port: 8085 # 80, 443, 8080, etc
10+
secure: True # Set False to allow insecure connections, e.g. when using self-signed SSL certificate
11+
application_postfix: # e.g. /bamboo in case of url like http://localhost/bamboo
12+
admin_login: admin
13+
admin_password: admin
14+
load_executor: jmeter
15+
concurrency: 200 # number of Bamboo users for Selenium actions
16+
test_duration: 45m
17+
ramp-up: 3m # time to spin all concurrent threads
18+
total_actions_per_hour: 2000 # number of total JMeter actions per hour
19+
WEBDRIVER_VISIBLE: False
20+
JMETER_VERSION: 5.2.1
21+
LANGUAGE: en_US.utf8
22+
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.
23+
view_all_builds: 15
24+
view_build_result: 15
25+
view_build_configuration: 10
26+
view_job_configuration: 10
27+
view_build_summary: 10
28+
view_projects_list: 10
29+
standalone_extension: 0 # By default disabled
30+
31+
number_of_agents: 50
32+
parallel_plans_count: 40
33+
start_plan_timeout: 60
34+
default_dataset_plan_duration: 60
35+
services:
36+
- module: shellexec
37+
prepare:
38+
- python util/pre_run/environment_checker.py
39+
- python util/data_preparation/bamboo_prepare_data.py
40+
shutdown:
41+
- python util/post_run/jmeter_post_check.py
42+
- python util/jtl_convertor/jtls-to-csv.py kpi.jtl kpi-1.jtl selenium.jtl
43+
post-process:
44+
- python util/analytics/analytics.py bamboo
45+
- python util/post_run/cleanup_results_dir.py
46+
execution:
47+
- scenario: jmeter
48+
executor: jmeter
49+
concurrency: ${concurrency}
50+
hold-for: ${test_duration}
51+
ramp-up: ${ramp-up}
52+
- scenario: locust
53+
executor: locust
54+
concurrency: ${parallel_plans_count}
55+
hold-for: ${test_duration}
56+
ramp-up: ${default_dataset_plan_duration}
57+
- scenario: selenium
58+
executor: selenium
59+
runner: pytest
60+
hold-for: ${test_duration}
61+
scenarios:
62+
selenium:
63+
script: selenium_ui/bamboo_ui.py
64+
locust:
65+
script: locustio/bamboo/locustfile.py
66+
jmeter:
67+
script: jmeter/bamboo.jmx
68+
properties:
69+
application_hostname: ${application_hostname}
70+
application_protocol: ${application_protocol}
71+
application_port: ${application_port}
72+
application_postfix: ${application_postfix}
73+
# Workload model
74+
total_actions_per_hr: ${total_actions_per_hour}
75+
perc_view_all_builds: ${view_all_builds}
76+
perc_view_build_result: ${view_build_result}
77+
perc_view_build_configuration: ${view_build_configuration}
78+
perc_view_job_configuration: ${view_job_configuration}
79+
perc_view_build_summary: ${view_build_summary}
80+
perc_view_projects_list: ${view_projects_list}
81+
perc_standalone_extension: ${standalone_extension}
82+
modules:
83+
consolidator:
84+
rtimes-len: 0 # CONFSRVDEV-7631 reduce sampling
85+
percentiles: [] # CONFSRVDEV-7631 disable all percentiles due to Taurus's excessive memory usage
86+
jmeter:
87+
version: ${JMETER_VERSION}
88+
detect-plugins: true
89+
memory-xmx: 8G # allow JMeter to use up to 8G of memory
90+
plugins:
91+
- bzm-parallel=0.4
92+
- bzm-random-csv=0.6
93+
- jpgc-casutg=2.5
94+
- jpgc-dummy=0.2
95+
- jpgc-ffw=2.0
96+
- jpgc-fifo=0.2
97+
- jpgc-functions=2.1
98+
- jpgc-json=2.6
99+
- jpgc-perfmon=2.1
100+
- jpgc-prmctl=0.4
101+
- jpgc-tst=2.4
102+
- jpgc-wsc=0.3
103+
- tilln-sshmon=1.0
104+
- jpgc-synthesis=2.2
105+
system-properties:
106+
server.rmi.ssl.disable: true
107+
java.rmi.server.hostname: localhost
108+
httpsampler.ignore_failed_embedded_resources: "true"
109+
selenium:
110+
chromedriver:
111+
version: "96.0.4664.45" # Supports Chrome version 96. You can refer to http://chromedriver.chromium.org/downloads
112+
reporting:
113+
- data-source: sample-labels
114+
module: junit-xml

app/extension/bamboo/__init__.py

Whitespace-only changes.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import random
2+
3+
from selenium.webdriver.common.by import By
4+
5+
from selenium_ui.base_page import BasePage
6+
from selenium_ui.conftest import print_timing
7+
from selenium_ui.bamboo.pages.pages import Login
8+
from util.conf import BAMBOO_SETTINGS
9+
10+
11+
def app_specific_action(webdriver, datasets):
12+
page = BasePage(webdriver)
13+
rnd_plan = random.choice(datasets["build_plans"])
14+
15+
build_plan_id = rnd_plan[1]
16+
17+
# To run action as specific user uncomment code bellow.
18+
# NOTE: If app_specific_action is running as specific user, make sure that app_specific_action is running
19+
# just before test_2_selenium_z_log_out action
20+
#
21+
# @print_timing("selenium_app_specific_user_login")
22+
# def measure():
23+
# def app_specific_user_login(username='admin', password='admin'):
24+
# login_page = Login(webdriver)
25+
# login_page.delete_all_cookies()
26+
# login_page.go_to()
27+
# login_page.set_credentials(username=username, password=password)
28+
# login_page.click_login_button()
29+
# app_specific_user_login(username='admin', password='admin')
30+
# measure()
31+
32+
@print_timing("selenium_app_custom_action")
33+
def measure():
34+
@print_timing("selenium_app_custom_action:view_plan_summary_page")
35+
def sub_measure():
36+
page.go_to_url(f"{BAMBOO_SETTINGS.server_url}/browse/{build_plan_id}")
37+
page.wait_until_visible((By.ID, "buildResultsTable")) # Wait for summary field visible
38+
page.wait_until_visible((By.ID, "ID_OF_YOUR_APP_SPECIFIC_UI_ELEMENT")) # Wait for you app-specific UI element by ID selector
39+
sub_measure()
40+
measure()

0 commit comments

Comments
 (0)