लोड टेस्टिंग एटलसियन जीरा, कंफ्लुएंस, बिटबकेट पार्ट 2

यहाँ यहाँ आप इस लेख के भाग 1 पढ़ सकते हैं।
भाग 2 में, हम dc-app-performance-toolkit टूल का उपयोग करके तनाव परीक्षण के लिए डेटा तैयार करने के तरीके के बारे में बात करेंगे 

परीक्षण डेटा तैयार करना


परीक्षण डेटा तैयार करने के दो तरीके हैं:

  • एटलसियन द्वारा प्रदान किए गए बैकअप का उपयोग करें। आप इस विकल्प का उपयोग कर सकते हैं यदि, उदाहरण के लिए, आप अपना स्वयं का प्लगइन लिख रहे हैं और इससे कोई फर्क नहीं पड़ता कि यह प्लगइन किस डेटा पर काम करेगा।
  • अपने खुद के डेटा का उपयोग करें। यह विकल्प आपके काम आएगा यदि आपके पास जीरा, कंफ्लुएंस या बिटबकेट की अपनी प्रति है, जिसे आप मानक कार्यक्षमता, स्क्रिप्ट, प्लगइन्स और अन्य संभावित तरीकों का उपयोग करके संशोधित करते हैं।

बैकअप एटलसियन


एटलसियन जीरा, कंफ्लुएंस और बिटबकेट के लिए बैकअप प्रदान करता है, जिसका उपयोग लोड परीक्षण के लिए किया जा सकता है।

इन बैकअप को स्थापित करने के लिए, आपको ऐप-डीसी-प्रदर्शन-टूलकिट / ऐप / उपयोग / जीरा फ़ोल्डर में जाने की आवश्यकता है यदि आप जीरा,  ऐप-डीसी-प्रदर्शन-टूलकिट / ऐप / उपयोग / संगम का परीक्षण कर रहे हैं यदि आप संघर्ष का परीक्षण कर रहे हैं या  यदि आप Bitbucket का परीक्षण कर रहे हैं तो ऐप-डीसी-प्रदर्शन-टूलकिट / ऐप / उपयोग / बिटबकेट।

इन फ़ोल्डरों में वे फ़ाइलें होती हैं, जिन्हें आपको Atlassian backups को चलाने के लिए चलाने की आवश्यकता होती है। इन फ़ाइलों का विवरण इस प्रकार है:

  • index-sync.sh ( Jira Confluence) – atlassian-jira.log (atlassian-confluence.log) “indexes – 100%”. , . , , Jira/Confluence. , , , , , , .
  • populate_db.sh – Postgres Jira/Confluence/Bitbucket.
  • upload_attachments.sh – data.
  • index-snapshot.sh ( Confluence) – , .

उपरोक्त सभी लिपियाँ उसी वर्चुअल मशीन पर चलाई जानी चाहिए जिस पर आप जिस उदाहरण का परीक्षण करने जा रहे हैं वह स्थापित है। चूंकि ये स्क्रिप्ट एक ही वर्चुअल मशीन से चलाई जाती हैं, वे स्वतंत्र रूप से आपके उदाहरण के संस्करण को निर्धारित करेंगे और आपके संस्करण के लिए डेटाबेस डंप और अटैचमेंट डाउनलोड करेंगे।

ठीक है, अगर आप पोस्टग्रेज का उपयोग नहीं करना चाहते हैं तो क्या होगा? आखिरकार, populate_db.sh केवल Postgres डेटाबेस के लिए काम करता है।

इस स्थिति में, केवल जीरा के लिए आप xml बैकअप डाउनलोड कर सकते हैं और मानक जीरा कार्यक्षमता का उपयोग करके इसे पुनर्स्थापित कर सकते हैं । यहाँ इस बैकअप का लिंक दिया गया है: https://centaurus-datasets.s3.amazonaws.com/jira/$ {Jira_Verson} /large/xml_backup.zip - Jira 8.0.3, 7.13.6, 8.5.0 के समर्थित संस्करण।

एटलसियन ने कॉन्फ्लुएंस और बिटबकैट के लिए एक्सएमएल बैकअप तैयार नहीं किया। आपको स्क्रिप्ट populate_db.sh का उपयोग करने या स्वयं डेटा तैयार करने की आवश्यकता है, जिसे मैं बाद में "हमारे डेटा का उपयोग कर" अनुभाग में चर्चा करूंगा।

हम अपने खुद के डेटा का उपयोग करते हैं।


यदि आप अपने डेटा पर अपने उदाहरण का परीक्षण करना चाहते हैं, तो यह भी संभव है। आपको केवल यह सुनिश्चित करना है कि आपके डेटा का उपयोग dc-app-performance-toolkit टूल द्वारा किया जा सकता है।

जब dc-app-performance-toolkit परीक्षण करना शुरू करता है, तो वृषभ तैयार करता है- data.py स्क्रिप्ट, जो उस डेटा का चयन करता है जिससे आप अपने उदाहरण से परीक्षण करेंगे। परिणामस्वरूप, आपके उदाहरण से डेटा वाली कई सीएसवी फाइलें बनाई जाती हैं।

यदि तैयारी- data.py आवश्यक डेटा का चयन नहीं कर सकता है, तो परीक्षण विफल हो जाएगा। इसलिए, आपको यह सुनिश्चित करने की आवश्यकता है कि आवश्यक डेटा आपकी कॉपी में है।

यह समझने के लिए कि डेटा क्या होना चाहिए, आपको उस उत्पाद के लिए तैयार- data.py फ़ाइल का अध्ययन करना होगा जिसे आप परीक्षण करने जा रहे हैं।

आइए इन फाइलों की जांच करें।

Jira


 जीरा के लिए  तैयार- data.py फ़ाइल  dc-app-performance-टूलकिट / बूँद / मास्टर / ऐप / उपयोग / data_preparation / jira / फ़ोल्डर में स्थित है

यह स्क्रिप्ट जीरा के डेटा का चयन करती है और निम्नलिखित फाइलें बनाती है:

  • issues.csv - ish की सूची।
  • jqls.csv - jql प्रश्नों की सूची।
  • kanban-board.scv - kanban पैनलों की सूची।
  • प्रोजेक्ट- keys.csv - प्रोजेक्ट कुंजी की सूची।
  • स्क्रैम-बोर्ड्स।एससीवी- स्क्रैम पैनल की सूची।
  • users.scv - उपयोगकर्ताओं की सूची।

हम पूरी तरह से तैयार- data.py फ़ाइल का अध्ययन नहीं करेंगे, हमें बस इस पद्धति को देखने की आवश्यकता है:

def __create_data_set(jira_api):
    dataset = dict()
    dataset[USERS] = __get_users(jira_api)
    software_project_keys = __get_software_project_keys(jira_api, PROJECTS_COUNT_LIMIT)
    dataset[PROJECT_KEYS] = software_project_keys
    dataset[ISSUES] = __get_issues(jira_api, software_project_keys)
    dataset[SCRUM_BOARDS] = __get_boards(jira_api, 'scrum')
    dataset[KANBAN_BOARDS] = __get_boards(jira_api, 'kanban')
    dataset[JQLS] = __generate_jqls(count=150)

    return dataset

जैसा कि आप इस विधि में देख सकते हैं, परीक्षण के दौरान आवश्यक सभी डेटा चयनित हैं:

dataset[USERS] = __get_users(jira_api)

हम अपने जीरा उदाहरण से उपयोगकर्ताओं का चयन करते हैं। उपयोगकर्ता नाम "performance_" से शुरू होना चाहिए। हमें जितने भी यूजर्स सेलेक्ट करना है हमने जितने समवर्ती यूजर्स के साथ काम किया है उतना ही jira.yml फाइल में कंसीडर पैरामीटर में यदि ऐसा कोई उपयोगकर्ता नहीं मिला है या उनकी संख्या अपर्याप्त है, तो उपयोगकर्ता बनाए जाएंगे। उपयोगकर्ताओं के पास "प्रदर्शन_" और पासवर्ड पासवर्ड होगा।

software_project_keys = __get_software_project_keys(jira_api, PROJECTS_COUNT_LIMIT)
dataset[PROJECT_KEYS] = software_project_keys

हम टाइप सॉफ्टवेयर के प्रोजेक्ट कीज का चयन करते हैं।

__get_issues(jira_api, software_project_keys)

हम सॉफ़्टवेयर प्रोजेक्ट्स में से 8000 से अधिक सॉफ़्टवेयर का चयन करते हैं जो बंद स्थिति में नहीं हैं।

dataset[SCRUM_BOARDS] = __get_boards(jira_api, 'scrum')

हम 250 से अधिक पैन पैनलों का चयन नहीं करते हैं।

dataset[KANBAN_BOARDS] = __get_boards(jira_api, 'kanban')

हम 250 से अधिक kanban पैनलों का चयन नहीं करते हैं।

dataset[JQLS] = __generate_jqls(count=150)

हम निम्नलिखित सामग्री के साथ jql क्वेरी उत्पन्न करते हैं: 'टेक्स्ट ~ "एबीसी *"।

इस प्रकार, त्रुटियों के बिना चलाने के लिए परीक्षणों के लिए, आपको ईश और स्क्रैम और कानबन बोर्डों के साथ सॉफ्टवेयर परियोजनाओं की उपलब्धता सुनिश्चित करने की आवश्यकता है। यदि आपके पास पहले से ये ऑब्जेक्ट हैं, तो आपको कुछ भी करने की आवश्यकता नहीं है (परीक्षण बिना किसी बदलाव के सफल होगा), यदि नहीं, तो आपको लापता ऑब्जेक्ट बनाने की आवश्यकता है।

चूँकि मेरा जीरा उदाहरण खाली है, इसलिए मैंने स्क्रैम सॉफ्टवेयर डेवलपमेंट और कानबन सॉफ्टवेयर डेवलपमेंट प्रोजेक्ट बनाए और लोड टेस्ट फिर से चलाया:

bzt jira.yml

इस बार स्क्रिप्ट बिना त्रुटियों के पूरी हुई। यहाँ स्क्रिप्ट आउटपुट है:

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

यह स्क्रिप्ट आउटपुट से देखा जा सकता है कि वृषभ ने तैयार- data.py फ़ाइल लॉन्च की और निम्न csv फाइलें

बनाईं : 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

स्क्रम-boards.csv

1

users.csv

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

तब वृषभ ने जेमीटर और क्रोम वेब ड्राइवर स्थापित किया, परीक्षण चलाए, और परिणाम मुद्रित किया।

अब आइए Confluence और Bitbucket के लिए तैयार-data.py फ़ाइल देखें।

संगम


 Confluence के लिए तैयार- data.py फ़ाइल पर विचार करें 

यहाँ मुख्य विधि है:

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)

हम उसी तर्क के अनुसार लोड परीक्षण के लिए उपयोगकर्ताओं का चयन या निर्माण करते हैं जैसे कि जीरा के मामले में।

dataset[PAGES] = __get_pages(rest_client, 5000)

हम निम्नलिखित cql का उपयोग करके Confluence से पृष्ठों का चयन करते हैं: "टाइप = पृष्ठ और शीर्षक! ~ JMeter और शीर्षक! ~ सेलेनियम और शीर्षक! ~ होम"।

dataset[BLOGS] = __get_blogs(rest_client, 5000)

हम निम्नलिखित cql द्वारा संगम से ब्लॉगों का चयन करते हैं: "टाइप = ब्लॉगपोस्ट और शीर्षक! ~ प्रदर्शन"।

इस प्रकार, Confluence के लिए परीक्षण शुरू करने के लिए आपको अपनी कॉपी में पृष्ठ और ब्लॉग होना चाहिए।

बिट बकेट


अब Bitbucket के  लिए तैयार- data.py फ़ाइल  को देखें।

यहाँ मुख्य कार्य है:

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)

हम उसी तर्क के अनुसार उपयोगकर्ताओं का चयन या निर्माण करते हैं जैसा कि जीरा के लिए है, लेकिन इस बार उपयोगकर्ताओं के पास “dcapt-perf-user” उपसर्ग होना चाहिए। और उपयोगकर्ता बनाते समय, पासवर्ड उपयोगकर्ता नाम के बराबर है।

dataset[PROJECTS] = __get_projects(bitbucket_api)

हम परियोजनाओं का चयन करते हैं।

dataset[REPOS] = __get_repos(bitbucket_api)

हम रिपॉजिटरी का चयन करते हैं।

dataset[PULL_REQUESTS] = __get_prs(bitbucket_api)

हम अनुरोध पूल का चयन करते हैं। अनुरोध पूल की संख्या बिटबैकेट.आईएमएल फ़ाइल में कंसीडर पैरामीटर से कम नहीं होनी चाहिए 

इस प्रकार, Bitbucket के लिए परीक्षण चलाने के लिए, आपको अपने उदाहरण प्रोजेक्ट्स, रिपॉजिटरी और आवश्यक पूल में बिटबैकेट.yml फ़ाइल में संगामिति पैरामीटर से कम नहीं होना चाहिए।

इसलिए, हमने देखा कि एटलसियन द्वारा तैयार बैकअप का उपयोग करके लोड परीक्षण के लिए डेटा कैसे तैयार किया जाए, और हमारे डेटा पर लोड परीक्षण कैसे चलाया जाए। अगले भाग में, हम बात करेंगे कि तनाव परीक्षण के बाद कौन सी कलाकृतियाँ बनाई जाती हैं, वे कौन सी जानकारी प्रदान करती हैं और किस तरह के ग्राफिक्स हम बॉक्स से उत्पन्न कर सकते हैं।

All Articles