Performance testing of Jira, Confluence and Bitbucket with dc_app_performance_toolkit Part4

Part 3

In part 3 we defined data which are needed to run tests for Jira.

That is why I created Scrum Software Development and Kanban Software Development projects in my empty Jira and ran again:

bzt jira.yml

This time the script ran successfully. Here is the output:

18:15:24 INFO: Taurus CLI Tool v1.14.0
18:15:24 INFO: Starting with configs: ['jira.yml']
18:15:24 INFO: Configuring...
18:15:24 INFO: Artifacts dir: /Users/alexm/PycharmProjects/easymigration/dc-app-performance-toolkit/app/results/jira/2020-05-02_18-15-24
18:15:24 INFO: Preparing...
18:15:25 INFO: Starting shell command: python util/environment_checker.py
18:15:25 INFO: Starting shell command: python util/data_preparation/jira/prepare-data.py
18:15:26 WARNING: There is newer version of Taurus 1.14.2 available, consider upgrading. What's new: http://gettaurus.org/docs/Changelog/
18:15:28 INFO: Will install JMeter into /Users/alexm/.bzt/jmeter-taurus/5.2.1
18:15:28 INFO: Downloading: https://apache-mirror.rbc.ru/pub/apache//jmeter/binaries/apache-jmeter-5.2.1.zip
100% [===========================================================] Time: 0:00:04
18:15:33 INFO: Unzipping /var/folders/4r/w8hkd4w51x787tw4ynb29v2w0000gn/T/tmp9g5rzqs1.zip to /Users/alexm/.bzt/jmeter-taurus/5.2.1
18:15:50 INFO: Downloading jmeter-plugins-manager-1.3.jar from https://search.maven.org/remotecontent?filepath=kg/apc/jmeter-plugins-manager/1.3/jmeter-plugins-manager-1.3.jar
18:15:51 INFO: Downloading cmdrunner-2.2.jar from https://search.maven.org/remotecontent?filepath=kg/apc/cmdrunner/2.2/cmdrunner-2.2.jar
100% [===========================================================] Time: 0:00:01
18:15:52 INFO: Installing JMeter plugins: jpgc-casutg,jpgc-dummy,jpgc-ffw,jpgc-fifo,jpgc-functions,jpgc-json,jpgc-perfmon,jpgc-prmctl,jpgc-tst,bzm-parallel=0.4,bzm-random-csv=0.6,jpgc-casutg=2.5,jpgc-dummy=0.2,jpgc-ffw=2.0,jpgc-fifo=0.2,jpgc-functions=2.1,jpgc-json=2.6,jpgc-perfmon=2.1,jpgc-prmctl=0.4,jpgc-tst=2.4,jpgc-wsc=0.3,tilln-sshmon=1.0,jpgc-cmd=2.2,jpgc-synthesis=2.2
18:16:38 INFO: 1 obsolete CookieManagers are found and fixed
18:16:56 INFO: Installing ChromeDriver...
18:16:56 INFO: Will install ChromeDriver into /Users/alexm/.bzt/selenium-taurus/tools/chromedriver/80.0.3987.106
18:16:56 INFO: Downloading: https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_mac64.zip
100% [===========================================================] Time: 0:00:01
18:16:57 INFO: Unzipping /var/folders/4r/w8hkd4w51x787tw4ynb29v2w0000gn/T/tmpurpp_7tz.zip to /Users/alexm/.bzt/selenium-taurus/tools/chromedriver/80.0.3987.106
18:16:57 INFO: Installing GeckoDriver...
18:16:57 INFO: Will install GeckoDriver into /Users/alexm/.bzt/selenium-taurus/tools/geckodriver/0.23.0
18:16:57 INFO: Downloading: https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-macos.tar.gz
100% [===========================================================] Time: 0:00:02
18:17:00 INFO: Untaring /var/folders/4r/w8hkd4w51x787tw4ynb29v2w0000gn/T/tmpiurqzzt4.zip to /Users/alexm/.bzt/selenium-taurus/tools/geckodriver/0.23.0
18:17:00 WARNING: You are using Python 3, make sure that your scripts are able to run in Python 3
18:17:00 INFO: Starting...
18:17:00 INFO: Waiting for results...
18:17:00 INFO: Waiting for finish...
18:17:00 ERROR: Console screen failure: ord() expected string of length 1, but int found
18:25:22 WARNING: Please wait for graceful shutdown...
18:25:22 INFO: Shutting down...
18:25:22 INFO: Starting shell command: python util/jmeter_post_check.py
18:25:22 INFO: Starting shell command: python util/jtl_convertor/jtls-to-csv.py kpi.jtl selenium.jtl
18:25:59 INFO: Post-processing...
18:25:59 INFO: Test duration: 0:08:22
18:25:59 INFO: Samples count: 3272, 0.06% failures
18:25:59 INFO: Average times: total 0.595, latency 0.000, connect 0.000
18:25:59 INFO: Percentiles:
┌───────────────┬───────────────┐
│ Percentile, % │ Resp. Time, s │
└───────────────┴───────────────┘
18:25:59 INFO: Request label stats:
┌───────────────────────────────────────┬────────┬─────────┬────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ label                                 │ status │    succ │ avg_rt │ error                                                                                                                                           │
├───────────────────────────────────────┼────────┼─────────┼────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ jmeter_browse_boards                  │   OK   │ 100.00% │  0.186 │                                                                                                                                                 │
│ jmeter_browse_projects                │   OK   │ 100.00% │  0.149 │                                                                                                                                                 │
│ jmeter_create_issue                   │   OK   │ 100.00% │  0.135 │                                                                                                                                                 │
│ jmeter_login_and_view_dashboard       │   OK   │ 100.00% │  0.497 │                                                                                                                                                 │
│ jmeter_open_comment                   │   OK   │ 100.00% │  0.210 │                                                                                                                                                 │
│ jmeter_open_editor                    │   OK   │ 100.00% │  0.287 │                                                                                                                                                 │
│ jmeter_open_quick_create              │   OK   │ 100.00% │  0.063 │                                                                                                                                                 │
│ jmeter_save_comment                   │   OK   │ 100.00% │  0.521 │                                                                                                                                                 │
│ jmeter_save_edit                      │   OK   │ 100.00% │  0.900 │                                                                                                                                                 │
│ jmeter_search_jql                     │   OK   │ 100.00% │  0.610 │                                                                                                                                                 │
│ jmeter_view_backlog                   │   OK   │ 100.00% │  0.387 │                                                                                                                                                 │
│ jmeter_view_dashboard                 │   OK   │ 100.00% │  0.267 │                                                                                                                                                 │
│ jmeter_view_issue                     │   OK   │ 100.00% │  0.593 │                                                                                                                                                 │
│ jmeter_view_kanban_board              │   OK   │ 100.00% │  0.344 │                                                                                                                                                 │
│ jmeter_view_project_summary           │   OK   │ 100.00% │  0.611 │                                                                                                                                                 │
│ jmeter_view_scrum_board               │   OK   │ 100.00% │  0.347 │                                                                                                                                                 │
│ selenium_a_login                      │   OK   │ 100.00% │ 28.460 │                                                                                                                                                 │
│ selenium_browse_boards_list           │   OK   │ 100.00% │  9.871 │                                                                                                                                                 │
│ selenium_browse_projects_list         │   OK   │ 100.00% │  6.376 │                                                                                                                                                 │
│ selenium_create_issue                 │   OK   │ 100.00% │  5.143 │                                                                                                                                                 │
│ selenium_edit_issue                   │   OK   │ 100.00% │ 16.305 │                                                                                                                                                 │
│ selenium_save_comment                 │   OK   │ 100.00% │ 19.909 │                                                                                                                                                 │
│ selenium_search_jql                   │   OK   │ 100.00% │ 32.249 │                                                                                                                                  │
│ selenium_view_backlog_for_scrum_board │   OK   │ 100.00% │ 14.223 │                                                                                                                                                 │
│ selenium_view_dashboard               │   OK   │ 100.00% │ 13.805 │                                                                                                                                                 │
│ selenium_view_issue                   │   OK   │ 100.00% │ 12.332 │                                                                                                                                                 │
│ selenium_view_kanban_board            │   OK   │ 100.00% │ 14.675 │                                                                                                                                                 │
│ selenium_view_project_summary         │   OK   │ 100.00% │ 12.710 │                                                                                                                                                 │
│ selenium_view_scrum_board             │   OK   │ 100.00% │ 14.893 │                                                                                                                                                 │
│ selenium_z_log_out                    │   OK   │ 100.00% │ 14.889 │                                                                                                                                                 │
└───────────────────────────────────────┴────────┴─────────┴────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
18:26:00 INFO: Writing JUnit XML report into: /Users/alexm/PycharmProjects/easymigration/dc-app-performance-toolkit/app/results/jira/2020-05-02_18-15-24/xunit.xml
18:26:00 INFO: Starting shell command: python util/analytics.py jira
18:26:06 INFO: Starting shell command: python util/cleanup_results_dir.py
18:26:06 INFO: Artifacts dir: /Users/alexm/PycharmProjects/easymigration/dc-app-performance-toolkit/app/results/jira/2020-05-02_18-15-24
18:26:06 INFO: Done performing with code: 0

You can see that Taurus ran prepare-data.py and created all csv files. Here are the files:

issues.csv

KAN-1,10023,KAN
KAN-2,10024,KAN
KAN-3,10025,KAN
KAN-4,10026,KAN
KAN-5,10027,KAN
...........

jqls.csv

text ~ "vqz*" order by key
text ~ "fpl*" order by key
text ~ "zjs*" order by key
text ~ "wph*" order by key
text ~ "xhx*" order by key
text ~ "pxt*" order by key
text ~ "deh*" order by key
text ~ "iri*" order by key
text ~ "jbr*" order by key
text ~ "snt*" order by key
...........

kanban-boards.csv

2

project_keys.csv

KAN
SCRUM

scrum-boards.csv

1

users.csv

performance_kqgdayqwfj,password
performance_zyqnwihaxr,password
performance_onfxfovior,password
performance_rrujzwrxlt,password
performance_agjbcxxeqy,password

Then Taurus installed JMeter and Chrome web driver, ran tests and produced results.

Next I will explain the prepare-data.py file for Confluence and Bitbucket.

Confluence

Now let's have a look at the prepare-data.py for Confluence.

Here is the function for getting test data from Confluence:

def __create_data_set(rest_client, rpc_client):
    dataset = dict()
    dataset[USERS] = __get_users(rest_client, rpc_client, CONFLUENCE_SETTINGS.concurrency)
    dataset[PAGES] = __get_pages(rest_client, 5000)
    dataset[BLOGS] = __get_blogs(rest_client, 5000)
    return dataset

 dataset[USERS] = __get_users(rest_client, rpc_client, CONFLUENCE_SETTINGS.concurrency)

We create users for performance testing with the same logic as for Jira.

dataset[PAGES] = __get_pages(rest_client, 5000)

We select pages from Confluence with the following cql: "type=page and title !~ JMeter and title !~ Selenium and title !~ Home".

dataset[BLOGS] = __get_blogs(rest_client, 5000)

We select blogs from Confluence with the following cql: "type=blogpost and title !~ Performance".

It means that we need to have pages and blogs in Confluence to run tests.

Bitbucket

Let's have a look at the prepare-data.py file for Bitbucket.

Here is the function to get test data for Bitbucket:

def __create_data_set(bitbucket_api):
    dataset = dict()
    dataset[USERS] = __get_users(bitbucket_api)
    dataset[PROJECTS] = __get_projects(bitbucket_api)
    dataset[REPOS] = __get_repos(bitbucket_api)
    dataset[PULL_REQUESTS] = __get_prs(bitbucket_api)
    return dataset

dataset[USERS] = __get_users(bitbucket_api)

We create Bitbucket users. This time users are created with the "dcapt-perf-user" prefix and the password of the user is the user name.

dataset[PROJECTS] = __get_projects(bitbucket_api)

we select Bitbucket projects.

dataset[REPOS] = __get_repos(bitbucket_api)

We select Bitbucket repositories.

dataset[PULL_REQUESTS] = __get_prs(bitbucket_api)

We select pull requests. The number of pull requests must be not less than the concurrency parameter in the bitbucket.yml.

It means in order to run tests on your Bitbucket instance you need to have at least one project and one repository and as many pull requests as the concurrency parameter in the bitbucket.yml file.

In this part I described how to prepare test data. Let's sum it up.

There are two options to create test data:

  • use backups which were prepared by Atlassian
  • use your own data but you need to make sure that your data contain information which is selected by the prepare-data.py file

In the Part 5 we will talk about test results and charts which are provided out of the box.

 

1 comment

M Amine
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
October 1, 2020

Intersting @Alexey Matveev Thank you.

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events