Підготовка оточення для запуску тестування навантаження
1. Підготовка реєстру
1.1. Налаштування файлу запуску
Для виконання прекондішнів по підготовці до запуску тестів навантаження необхідно підготувати файл, дана конфігурація виконає наступні кроки:
-
Створення реєстру за заданою назвою
-
Розгортання обраного регламенту
-
Додавання доступу для зовнішніх систем
-
Налаштування EDR
-
Налаштування піблічного доступу до заданого ендпоінту
Details
{ "registry": { "name": "perf-25", // Назва реєстру "instanceCount": "3", "isDefaultResources": true, "isGeoserver": true, // Присутність геосерверу "admins": [ { "firsName": "Admin", "lastName": "Control Plane", "email": "admin_role@epam.com", "password": "MTIzNA==" } ], "accessToPlatforms": [ { "name": "a-smoke" } ], //Налаштування назви доступу зовнішніх систем "accessToExternalSystems": [ { "name": "test-0000" } ], //Налаштування назви та ендпоінту публічного доступу "publicApiSettings" : { "name" : "laboratory-public", "integrationPoint" : "/laboratory-start-with-edrpou-contains-name", "numberOfRequests" : "10000000" //Ліміт за годину запитів }, "cleanUp": { "isCleanUp": false, "isDeleteRegistryRegulationsGerritRepository": false }, "description": "Опис реєстру", "template": "development", //Тип реєстру "repository": "certified-laboratories-registry-regulation", //Назва регламенту "branch": "performaceTesting", //Гілка регламенту "cloneByTag": false, "tag": "refs/tags/build/1.6.0.181", "regulationFoldersToExclude": [ "notifications/diia" ], "regulationDeployOnly": false, //Тип запуску прекондішн сьюту "onlyAutoTestsRun": false, "auto-tests": [] } }
Необхідно налаштувати параметри до котрих додані коментарі
Назва секції | Опис |
---|---|
name |
Назва реєстру. Необхідно вказати назву бажаного реєстру |
isGeoServer |
Присутність геосерверу. True - присутній, False - не присутній |
accessToExternalSystems |
Назва доступу до зовнішньої системи |
publicApiSettings |
Необхідно вказати назву публічного доступу, ендпоіну, ліміту на годину |
template |
Тип реєстру. Productuion - оточення продакшн типу, Development - оточення для розробки |
repository |
Назва регламенту. Доступні регламенти: * certified-laboratories-registry-regulation * consent-data |
branch |
Гілка регламенту для разгортання |
regulationDeployOnly |
Тип запуску тестів попереднього розгортання. True - запуск лише розгортання регламенту, False - повний флоу |
1.2. Запуск прекондішн тестів
Для виконнання прекондішн тестів необхідно перейти до Jenkins → Clusters → <cluster name> → <cluster name>-run-installer-validation-tests
-
Запуск пайплайну з параметрами
![run pipeline](../../../testing/_images/perf-test/test-preparation/run-pipeline.png)
-
Обрати виключно параметр RUN_REGISTRY_TESTS
![test params](../../../testing/_images/perf-test/test-preparation/test-params.png)
-
Вказати tag з Gerrit до відповідного очікуваного регламенту
![set build](../../../testing/_images/perf-test/test-preparation/set-build.png)
-
Вказати профайл для тестів які виконують пре кондішн як -PPerfTesting
![perf testing profile](../../../testing/_images/perf-test/test-preparation/perf-testing-profile.png)
-
Передати підготовлений файл як input param до пайплайну на кроку control-plane-tests
![file uplpad](../../../testing/_images/perf-test/test-preparation/file-uplpad.png)
1.3. Підготовка оточення до проведення тестування навантаження
Для подальшого налаштування реєстру необхідно виконати наступні дії:
-
Створення конфіг мапи в опеншифті для тестових користувачів
Конфіг мапа створюється у namespace реєстру який був створений за назвою sign-widget-mock-users
Details
kind: ConfigMap apiVersion: v1 metadata: name: sign-widget-mock-users namespace: <namespace> uid: 2c6a30e7-e00d-4cd8-9676-352d7277e3fc resourceVersion: '214529941' creationTimestamp: '2023-09-15T11:25:14Z' managedFields: - manager: Mozilla operation: Update apiVersion: v1 time: '2023-09-15T11:25:14Z' fieldsType: FieldsV1 fieldsV1: 'f:data': .: {} 'f:isolation-predefined-users.yml': {} 'f:users.js': {} data: isolation-predefined-users.yml: |- predefined-users: '[Key-6-common-organisation-erdpo.dat]': drfo: "111111113" edrpou: "99999999" fullName: Гендальф Сірий '[Key-6-common-organisation-erdpo2.dat]': drfo: "111111114" edrpou: "99999999" fullName: Легалас Легаласенко '[Key-6-cp-entrepreneur-business.dat]': drfo: "6774800300" edrpou: "6774800300" fullName: Чубака Энокин Дукович '[Key-6-cp-entrepreneur.dat]': drfo: "2145809873" edrpou: "2145809873" fullName: Потідейська Габрієль Геродотівна '[Key-6-cp-legal-business.dat]': drfo: "6774800300" edrpou: "67748003" fullName: Скайвокер Люк Дартвейдерович '[Key-6-cp-legal.dat]': drfo: "9093064723" edrpou: "90924909" fullName: Холмс Шерлок Артурович '[Key-6-entr-without-lab.dat]': drfo: "42044444" edrpou: "42044444" fullName: Бальбоа Роберт Рокки '[Key-6-entrepreneur-excerpt.dat]': drfo: "8080803333" edrpou: "8080803333" fullName: Кюрі Марія Соломонівна '[Key-6-entrepreneur-view-lab.dat]': drfo: "8065806733" edrpou: "8065806733" fullName: Вінфілд Джулс Квентінович '[Key-6-legal-excerpt.dat]': drfo: "0808080808" edrpou: "88888888" fullName: Поттер Гарри Джеймс '[Key-6-legal-view-lab.dat]': drfo: "0400010404" edrpou: "10014004" fullName: Вега Вінсент Квентінович '[Key-6-legal-without-lab.dat]': drfo: "42033333" edrpou: "42021212" fullName: Рэмбо Джон Джеймс '[Key-6-op-entrepreneur.dat]': drfo: "3135009313" edrpou: "3135009313" fullName: Ватсон Джон Артурович '[Key-6-op-legal.dat]': drfo: "8643063204" edrpou: "16324098" fullName: Амфіполійська Ксена Атріусівна '[Key-6-op-with-subject.dat]': drfo: "0000001312" edrpou: "1111111213" fullName: Петренко Петро Петрович '[Key-6.dat]': drfo: "1010101014" edrpou: "34554362" fullName: Сидоренко Василь Леонідович '[Key-6_cp-layout-empty.dat]': drfo: "42033333" edrpou: "42021212" fullName: Рэмбо Джон Джеймс '[Key-6_cp_automation.dat]': drfo: "1010101014" fullName: Сидоренко Василь Леонідович '[Key-6_cp_entrepreneur-auth.dat]': drfo: "42054321" edrpou: "42054321" fullName: Уотсон Мері Джейн '[Key-6_cp_entrepreneur_onboard.dat]': drfo: "0102030405" edrpou: "0102030405" fullName: Рибалко Карась Карпович '[Key-6_cp_individual_onboard.dat]': drfo: "0908070605" fullName: Чаклуненко Маг Візардович '[Key-6_cp_initiator.dat]': drfo: "0404040404" fullName: Сергієнко Сергій Сергійович '[Key-6_cp_layout.dat]': drfo: "0707070707" fullName: Котейко Кіт Котейович '[Key-6_cp_legal_auth.dat]': drfo: "4208523697" edrpou: "42074583" fullName: Роджерс Стівен Грант '[Key-6_cp_representative_entrepreneur_onboard.dat]': drfo: "42012345" edrpou: "42012345" fullName: Паркер Пітер Бенджамін '[Key-6_cp_representative_legal_onboard.dat]': drfo: "4209632587" edrpou: "42074125" fullName: Старк Тоні Едвард '[Key-6_cp_sorting.dat]': drfo: "0606060606" fullName: Слейв Дженкінс Дженкінсон '[Key-6_initiator.dat]': drfo: "0808080808" edrpou: "88888888" fullName: Поттер Гарри Джеймс '[Key-6_layout.dat]': drfo: "0707070707" edrpou: "77777777" fullName: Котейко Кіт Котейович '[Key-6_no_role.dat]': drfo: "0505050505" edrpou: "0505050505" fullName: Пчолкін Шмель Вуликович '[Key-6_op-layout-empty.dat]': drfo: "42044444" edrpou: "42044444" fullName: Бальбоа Роберт Рокки '[Key-6_op_assignment.dat]': drfo: "42066666" edrpou: "42066666" fullName: Кеноби Оби Ван '[Key-6_sorting.dat]': drfo: "0606060606" edrpou: "66666666" fullName: Слейв Дженкінс Дженкінсон '[user-35-Key-6.dat]': drfo: "42011111" edrpou: "42012121" fullName: Беннер Брюс Роберт '[user-36-Key-6.dat]': drfo: "42022222" edrpou: "42022222" fullName: Стрейндж Стивен Винсент users.js: |- var MOCK_USERS = { "[Key-6-common-organisation-erdpo.dat]": { "drfo": "111111113", "edrpou": "99999999", "fullName": "Гендальф Сірий" }, "[Key-6-common-organisation-erdpo2.dat]": { "drfo": "111111114", "edrpou": "99999999", "fullName": "Легалас Легаласенко" }, "[Key-6-cp-entrepreneur-business.dat]": { "drfo": "6774800300", "edrpou": "6774800300", "fullName": "Чубака Энокин Дукович" }, "[Key-6-cp-entrepreneur.dat]": { "drfo": "2145809873", "edrpou": "2145809873", "fullName": "Потідейська Габрієль Геродотівна" }, "[Key-6-cp-legal-business.dat]": { "drfo": "6774800300", "edrpou": "67748003", "fullName": "Скайвокер Люк Дартвейдерович" }, "[Key-6-cp-legal.dat]": { "drfo": "9093064723", "edrpou": "90924909", "fullName": "Холмс Шерлок Артурович" }, "[Key-6-entr-without-lab.dat]": { "drfo": "42044444", "edrpou": "42044444", "fullName": "Бальбоа Роберт Рокки" }, "[Key-6-entrepreneur-excerpt.dat]": { "drfo": "8080803333", "edrpou": "8080803333", "fullName": "Кюрі Марія Соломонівна" }, "[Key-6-entrepreneur-view-lab.dat]": { "drfo": "8065806733", "edrpou": "8065806733", "fullName": "Вінфілд Джулс Квентінович" }, "[Key-6-legal-excerpt.dat]": { "drfo": "0808080808", "edrpou": "88888888", "fullName": "Поттер Гарри Джеймс" }, "[Key-6-legal-view-lab.dat]": { "drfo": "0400010404", "edrpou": "10014004", "fullName": "Вега Вінсент Квентінович" }, "[Key-6-legal-without-lab.dat]": { "drfo": "42033333", "edrpou": "42021212", "fullName": "Рэмбо Джон Джеймс" }, "[Key-6-op-entrepreneur.dat]": { "drfo": "3135009313", "edrpou": "3135009313", "fullName": "Ватсон Джон Артурович" }, "[Key-6-op-legal.dat]": { "drfo": "8643063204", "edrpou": "16324098", "fullName": "Амфіполійська Ксена Атріусівна" }, "[Key-6-op-with-subject.dat]": { "drfo": "0000001312", "edrpou": "1111111213", "fullName": "Петренко Петро Петрович" }, "[Key-6.dat]": { "drfo": "1010101014", "edrpou": "34554362", "fullName": "Сидоренко Василь Леонідович" }, "[Key-6_cp-layout-empty.dat]": { "drfo": "42033333", "edrpou": "42021212", "fullName": "Рэмбо Джон Джеймс" }, "[Key-6_cp_automation.dat]": { "drfo": "1010101014", "fullName": "Сидоренко Василь Леонідович" }, "[Key-6_cp_entrepreneur-auth.dat]": { "drfo": "42054321", "edrpou": "42054321", "fullName": "Уотсон Мері Джейн" }, "[Key-6_cp_entrepreneur_onboard.dat]": { "drfo": "0102030405", "edrpou": "0102030405", "fullName": "Рибалко Карась Карпович" }, "[Key-6_cp_individual_onboard.dat]": { "drfo": "0908070605", "fullName": "Чаклуненко Маг Візардович" }, "[Key-6_cp_initiator.dat]": { "drfo": "0404040404", "fullName": "Сергієнко Сергій Сергійович" }, "[Key-6_cp_layout.dat]": { "drfo": "0707070707", "fullName": "Котейко Кіт Котейович" }, "[Key-6_cp_legal_auth.dat]": { "drfo": "4208523697", "edrpou": "42074583", "fullName": "Роджерс Стівен Грант" }, "[Key-6_cp_representative_entrepreneur_onboard.dat]": { "drfo": "42012345", "edrpou": "42012345", "fullName": "Паркер Пітер Бенджамін" }, "[Key-6_cp_representative_legal_onboard.dat]": { "drfo": "4209632587", "edrpou": "42074125", "fullName": "Старк Тоні Едвард" }, "[Key-6_cp_sorting.dat]": { "drfo": "0606060606", "fullName": "Слейв Дженкінс Дженкінсон" }, "[Key-6_initiator.dat]": { "drfo": "0808080808", "edrpou": "88888888", "fullName": "Поттер Гарри Джеймс" }, "[Key-6_layout.dat]": { "drfo": "0707070707", "edrpou": "77777777", "fullName": "Котейко Кіт Котейович" }, "[Key-6_no_role.dat]": { "drfo": "0505050505", "edrpou": "0505050505", "fullName": "Пчолкін Шмель Вуликович" }, "[Key-6_op-layout-empty.dat]": { "drfo": "42044444", "edrpou": "42044444", "fullName": "Бальбоа Роберт Рокки" }, "[Key-6_op_assignment.dat]": { "drfo": "42066666", "edrpou": "42066666", "fullName": "Кеноби Оби Ван" }, "[Key-6_sorting.dat]": { "drfo": "0606060606", "edrpou": "66666666", "fullName": "Слейв Дженкінс Дженкінсон" }, "[user-35-Key-6.dat]": { "drfo": "42011111", "edrpou": "42012121", "fullName": "Беннер Брюс Роберт" }, "[user-36-Key-6.dat]": { "drfo": "42022222", "edrpou": "42022222", "fullName": "Стрейндж Стивен Винсент" } };
-
Додати у Control Plane Gerrit, в репозиторії реєстру, файл values.yml наступну змінну
caIsolation: true
-
Встановити аутентифікацію через браузер у опеншифті
-
Необхідно перейти до Пошуку та занайти сутність Keycloak Realms для реєстру та обрати officer-portal
-
![keycloak realm path](../../../testing/_images/perf-test/test-preparation/keycloak-realm-path.png)
-
Встановити для browser-flow у ресурсі browser
![keycloak flow](../../../testing/_images/perf-test/test-preparation/keycloak-flow.png)
-
Проконтролювати розподілення ресурсів
Якщо реєстр розгорнутий на більш, ніж 1 машині певного типу - проконтролювати більш-менш рівномірне розподілення под, які використовують найбільше cpu та memory, між машинами.
![machine set config](../../../testing/_images/perf-test/test-preparation/machine-set-config.png)
До таких под належать bpms, operational-instance, kafka-cluster, registry-rest-api.
Перевірити розподілення ресурсів можливо у Grafana на дашборді Kubernetes / Compute Resources / Node (Pods).
Якщо присутнє нерівномірне розподілення навантажених под між машинами - в процесі тесту може виникнути тротлінг по cpu/memory в межах ноди, що негативно вплине на результатти тесту.
Найпростіша опція по перебалансуванню под між машинами - видалити машину, яка виділяється з рівномірного розподілення.
2. Запуск тестування навантаження
Для запуску тестування навантаження необхідно виконати наступні кроки:
-
Перейти до Carrier та обрати вкладку Backend, натиснути кнопку ран навпроти officer-processes
![carrier perf start](../../../testing/_images/perf-test/test-preparation/carrier-perf-start.png)
-
У Test parameters задати необхідні значення та перевірити налаштування Load configuration
Параметр | Значення |
---|---|
VUSERS |
Кількість віртуальних користувачів |
RAMP_UP |
Період нарощування кількості віртуальних користувачів, в секундах |
DURATION |
Тривалість тесту, в секундах |
ENVIRONMENTS |
Посилання на officer-portal реєстру |
KEYCLOAK_URL |
Посилання на keycloak кластеру |
![carrier perf params](../../../testing/_images/perf-test/test-preparation/carrier-perf-params.png)
-
Налаштувати секцію Load configuration:
-
для Engine location вибрати значення mdtu
-
для Runners - вибрати значення 1 або 2
-
Значення 2 для Runners застосовується при великому навантажені, понад 1000 віртуальних користувачів. В такому випадку в параметрі VUSERS має бути значення кількість віртуальних користувачів/2. Наприклад якщо планується тест з кількістю користувачів 1500, то в Test parameters задаємо значення VUSERS=750, а в Load configuration значення Runners=2: |
![carrier perf load config](../../../testing/_images/perf-test/test-preparation/carrier-perf-load-config.png)
-
Натиснути кнопку Run test у верхньому правому куту
2.1. Приклади налаштувань
Параметр | Значення |
---|---|
VUSERS |
10 |
RAMP_UP |
60 |
DURATION |
900 |
Engine location |
mdtu |
Runners |
1 |
Параметр | Значення |
---|---|
VUSERS |
750 |
RAMP_UP |
1800 |
DURATION |
3600 |
Engine location |
mdtu |
Runners |
2 |