Підготовка оточення для запуску тестування навантаження

1. Підготовка реєстру

1.1. Налаштування файлу запуску

Для виконання прекондішнів по підготовці до запуску тестів навантаження необхідно підготувати файл, дана конфігурація виконає наступні кроки:

  • Створення реєстру за заданою назвою

  • Розгортання обраного регламенту

  • Додавання доступу для зовнішніх систем

  • Налаштування EDR

  • Налаштування піблічного доступу до заданого ендпоінту

Файл підготовки оточення registry.json

(Завантажити)

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
  • Обрати виключно параметр RUN_REGISTRY_TESTS

test params
  • Вказати tag з Gerrit до відповідного очікуваного регламенту

set build
  • Вказати профайл для тестів які виконують пре кондішн як -PPerfTesting

perf testing profile
  • Передати підготовлений файл як input param до пайплайну на кроку control-plane-tests

file uplpad

1.3. Підготовка оточення до проведення тестування навантаження

Для подальшого налаштування реєстру необхідно виконати наступні дії:

  • Створення конфіг мапи в опеншифті для тестових користувачів

Конфіг мапа створюється у namespace реєстру який був створений за назвою sign-widget-mock-users

Файл контенту секрету 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
  • Встановити для browser-flow у ресурсі browser

keycloak flow
  • Проконтролювати розподілення ресурсів

Якщо реєстр розгорнутий на більш, ніж 1 машині певного типу - проконтролювати більш-менш рівномірне розподілення под, які використовують найбільше cpu та memory, між машинами.

machine set config

До таких под належать bpms, operational-instance, kafka-cluster, registry-rest-api.

Перевірити розподілення ресурсів можливо у Grafana на дашборді Kubernetes / Compute Resources / Node (Pods).

Якщо присутнє нерівномірне розподілення навантажених под між машинами - в процесі тесту може виникнути тротлінг по cpu/memory в межах ноди, що негативно вплине на результатти тесту.

Найпростіша опція по перебалансуванню под між машинами - видалити машину, яка виділяється з рівномірного розподілення.

2. Запуск тестування навантаження

Для запуску тестування навантаження необхідно виконати наступні кроки:

  • Перейти до Carrier та обрати вкладку Backend, натиснути кнопку ран навпроти officer-processes

carrier perf start
  • У Test parameters задати необхідні значення та перевірити налаштування Load configuration

Параметр Значення

VUSERS

Кількість віртуальних користувачів

RAMP_UP

Період нарощування кількості віртуальних користувачів, в секундах

DURATION

Тривалість тесту, в секундах

ENVIRONMENTS

Посилання на officer-portal реєстру

KEYCLOAK_URL

Посилання на keycloak кластеру

carrier perf params
  • Налаштувати секцію 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
  • Натиснути кнопку Run test у верхньому правому куту

2.1. Приклади налаштувань

Таблиця 1. Smoke test
Параметр Значення

VUSERS

10

RAMP_UP

60

DURATION

900

Engine location

mdtu

Runners

1

Таблиця 2. 1500 users for an hour
Параметр Значення

VUSERS

750

RAMP_UP

1800

DURATION

3600

Engine location

mdtu

Runners

2