README.md added to clr_test
This commit is contained in:
parent
8b1eabafa8
commit
ef7bcd9c4f
1 changed files with 273 additions and 0 deletions
273
clr_test/README.md
Normal file
273
clr_test/README.md
Normal file
|
|
@ -0,0 +1,273 @@
|
||||||
|
# Описание тестирования клиринговой системы
|
||||||
|
## Описание проведения тестирования в GitLab CI/CD
|
||||||
|
Файл .gitlab-ci.yml определяет этапы тестирования, сейчас существуют 3 этапа:
|
||||||
|
|
||||||
|
* preflight - загрузка тест-кейсов из репозитория clearing_test
|
||||||
|
* build - сборка jar-файлов
|
||||||
|
* test - запуск тестирования
|
||||||
|
|
||||||
|
Во время запуска тестирования jar-файлы копируются в папку `./clr_test/clearing-all/bin`,
|
||||||
|
а sql-файлы в `./clr_test/clearing-all/db`
|
||||||
|
|
||||||
|
Основное взаимодействие с Docker'ом происходит посредством python-скрипта
|
||||||
|
|
||||||
|
Данный скрипт копирует следующие файлы:
|
||||||
|
|
||||||
|
* Тестовые файлы в `./clr_test/clearing-all/clearing_testing_utils/`
|
||||||
|
* Подготовленную базу данных в `./clr_test/db/data`
|
||||||
|
|
||||||
|
Для обновления базы данных скрипт ищет все файлы updateDDL_*.sql в `./clr_test/clearing-all/db` выше чем `DDL_VERSION_FROM` из скрипта и объединяет их в один sql-файл в `./clr_test/db-updater/combined_update_ddl.sql`
|
||||||
|
|
||||||
|
Удаляются старые образы:
|
||||||
|
* `docker rmi -f clr_test-db`
|
||||||
|
* `docker rmi -f clr_test-db-updater`
|
||||||
|
* `docker rmi -f clr_test-clearing_system`
|
||||||
|
|
||||||
|
Выполняется запуск Docker Compose командой `docker compose up --abort-on-container-exit --exit-code-from clearing_system --build --force-recreate`
|
||||||
|
|
||||||
|
В зависимости от кода выхода Docker заполняется файл `clr_test/results.txt`
|
||||||
|
|
||||||
|
После выполнения скрипта ищется строка со словом `failed`, если она есть, то тест завершается в ошибкой
|
||||||
|
|
||||||
|
## Описание создания подготовленной базы данных для тест-кейса
|
||||||
|
Репозиторий clearing_test содержит индивидуальные директории для каждого из тест-кейса:
|
||||||
|
* clearing_testing_utils – содержит входные и ожидаемые файлы клиринговой системы;
|
||||||
|
* data – сохраненное состояние базы данных для рассматриваемого тест-кейса;
|
||||||
|
* db – содержит, уникальные для конкретного тест-кейса, sql-файлы.
|
||||||
|
|
||||||
|
Для начала очистим папку data и добавим в директорию db следующие файлы с сохранением последовательности:
|
||||||
|
* DDL.sql
|
||||||
|
* DICTIONARIES.sql
|
||||||
|
* MARKET.sql
|
||||||
|
* export.sql – уникален для тест-кейса, уже присутствует в директории
|
||||||
|
* test-data.sql – уникален для тест-кейса, уже присутствует в директории
|
||||||
|
|
||||||
|
В корневой папке создадим файл docker-compose.yml со следующим содержанием:
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
test_db:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./data:/var/lib/postgresql/data
|
||||||
|
- ./db:/docker-entrypoint-initdb.d/
|
||||||
|
```
|
||||||
|
|
||||||
|
Запустим Docker командой docker compose up, после инициализации базы данных остановим контейнер командой docker compose down, сохраненное состояние базы данных будет находиться в директории data. Важно, для сохранения корректной структуры при загрузке в GitLab необходимо добавить пустые файлы в пустые директории.
|
||||||
|
Например, посредством данной PowerShell команды:
|
||||||
|
```
|
||||||
|
Get-ChildItem -Directory -Recurse | Where-Object {
|
||||||
|
(Get-ChildItem -Path $_.FullName -File).Count -eq 0 -and (Get-ChildItem -Path $_.FullName -Directory).Count -eq 0
|
||||||
|
} | ForEach-Object {
|
||||||
|
$newFilePath = Join-Path $_.FullName ".gitkeep"
|
||||||
|
New-Item -ItemType file -Path $newFilePath -Force | Out-Null
|
||||||
|
Write-Host "Created file in: $($_.FullName)"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Также, если добавить папки db и data в их соответствующие директории по наименованию тест-кейса, можно обновить базы данных для все тест-кейсов одновременно, например, посредством следующего docker-compose.yml файла:
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
1_0_sesn_mkr_curr:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./1_0_sesn_mkr_curr/data:/var/lib/postgresql/data
|
||||||
|
- ./1_0_sesn_mkr_curr/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
1_1_sesn_mkr_curr:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./1_1_sesn_mkr_curr/data:/var/lib/postgresql/data
|
||||||
|
- ./1_1_sesn_mkr_curr/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
1_2_sesn_mkr_curr_tsoper:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./1_2_sesn_mkr_curr_tsoper/data:/var/lib/postgresql/data
|
||||||
|
- ./1_2_sesn_mkr_curr_tsoper/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
2_0_sesn_mkr_medm:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./2_0_sesn_mkr_medm/data:/var/lib/postgresql/data
|
||||||
|
- ./2_0_sesn_mkr_medm/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
3_0_sesn_mkr_finl:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./3_0_sesn_mkr_finl/data:/var/lib/postgresql/data
|
||||||
|
- ./3_0_sesn_mkr_finl/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
5_0_sesn_fond_trdt:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./5_0_sesn_fond_trdt/data:/var/lib/postgresql/data
|
||||||
|
- ./5_0_sesn_fond_trdt/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
5_1_sesn_fond_trdt_nodepo:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./5_1_sesn_fond_trdt_nodepo/data:/var/lib/postgresql/data
|
||||||
|
- ./5_1_sesn_fond_trdt_nodepo/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
6_0_sesn_fond_ipob:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./6_0_sesn_fond_ipob/data:/var/lib/postgresql/data
|
||||||
|
- ./6_0_sesn_fond_ipob/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
7_0_sesn_fond_ipo0:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./7_0_sesn_fond_ipo0/data:/var/lib/postgresql/data
|
||||||
|
- ./7_0_sesn_fond_ipo0/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
8_0_sesn_fond_ipot:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./8_0_sesn_fond_ipot/data:/var/lib/postgresql/data
|
||||||
|
- ./8_0_sesn_fond_ipot/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
9_0_sessn_mult_unit:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./9_0_sessn_mult_unit/data:/var/lib/postgresql/data
|
||||||
|
- ./9_0_sessn_mult_unit/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
9_1_sessn_mult_unit_tcr:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./9_1_sessn_mult_unit_tcr/data:/var/lib/postgresql/data
|
||||||
|
- ./9_1_sessn_mult_unit_tcr/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
9_2_sessn_mult_unit_tkr:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./9_2_sessn_mult_unit_tkr/data:/var/lib/postgresql/data
|
||||||
|
- ./9_2_sessn_mult_unit_tkr/db:/docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
9_3_sessn_mult_unit_dmav:
|
||||||
|
image: postgres:14.1-alpine
|
||||||
|
restart: always
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: clearing
|
||||||
|
POSTGRES_PASSWORD: Aa111111
|
||||||
|
POSTGRES_DB: clearing
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
volumes:
|
||||||
|
- ./9_3_sessn_mult_unit_dmav/data:/var/lib/postgresql/data
|
||||||
|
- ./9_3_sessn_mult_unit_dmav/db:/docker-entrypoint-initdb.d/
|
||||||
|
```
|
||||||
Loading…
Add table
Reference in a new issue