Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Unittests kan køres ved at eksekvere

mvn test

Tests i Camel

I det Camel kører asynkront, er det nødvendigt for unittests at vide, hvornår Camel er færdig med at indlæse en fil, hvis testen skal vide, hvornår den kan kontrollere, om det gik som forventet. Dette gøres i yder indlæseren, ved i YderRouteBuilderTestSetup at holde øje med confirm filerne (.done og failure) og frigive en Semaphore (routeHandshake) der først frigives når de forventede filer er fundne.

Yderindlæseren anvender fælles bibliotekets test pakke, til at understøtte en lang række unit test.

Der kan læses mere om unit test i indlæseren i "Guide til udviklere fælles for alle stamdataindlæserne"Hvis ikke der benyttes dette trick til Camel kan man være nødsaget til at indsætte waits, hvilket gør testeksekveringen langsommere, samt kan være afhængig af eksekveringsmaskinens computerkraft.

Unittests med en kørende MariaDb

...

Integrations test kan køres ved at eksekvere

cd dk.nsp.sdm.yder-integrationtest

mvn verify -Pintegrationtest

Disse tests kræver at indlæseren samt de korrekte afhængigheder allerede kører, hvilket typisk laves via docker-compose. For yder indlæseren er compose/test/docker-compose.yml lavet således, at denne starter en yder indlæser, database samt SKRS i en opsætning, som kan testes via integrationstestene. Så man kan starte denne docker-compose fil lokalt (docker-compose up) og så ved siden af køre integrationstestene, som vil lægge en fil op, vente på at den bliver indlæst, og herefter se efter i både database samt SKRS om indlæsningerne er gået godt. Det local development compose setup er lavet med et galera cluster med flere instanser.

Docker compose startes med:

docker-compose -f compose/development/docker-compose.yml up --build

Testene kan fejle pga. manglende rettigheder til de anvendte ftp foldere (sker når docker selv opretter dem). Dette kan løses med "sudo chmod 777 test_sftp" (og test_sftp_ekstern).

...

En sådan rudimentær performancetest er ment til at afdække eventuelle flaskehalse som kan blive optimeret før release, samt også give en idé til hvor lang tid yder indlæseren vil indlæseren vil skulle bruge for at indlæse de typiske filer der modtages.

Manuelle Test

Manuel test af Beckup

Yderindlæseren har 3 mulige indstillinger for at backup ifm. indlæsningen. Enten kan indlæsning ske uden backup (NoBackup), almindeligt backup, hvor filen gemmes i originalt format (RawBackup) eller komprimeret backup, hvor filen gemmes som zip fil (ZipBackup).

Under udvikling er det muligt at teste funktionaliteten af backup. I nedenstående eksempel testes Zip backup. Der er testet vha. scripts afviklet mod en lokal YderIndlæser startet op i Docker.

  1. Tjek indhold af yder.properties
    Code Block
    languagebash
    titleTerminal
    yderindlaeser % grep backup.type compose/configuration/yder.properties                                                 
    backup.type=ZipBackup
  2. Indlæse en valid fil
    Code Block
    languagebash
    titleTerminal
    yderindlaeser % cp dk.nsp.sdm.yder-service/src/test/resources/data/ny_yder/FourYder.xml compose/development/test_input/
  3. Tjek indhold af backup-folder
    Code Block
    languagebash
    titleTerminal
    yderindlaeser % ls -liatr compose/development/test_backup                                                       
    total 40
    17035342 drwxr-xr-x@ 12 user  group    384 Dec 17 14:10 ..
    21276796 drwxr-xr-x   3 user  group     96 Dec 17 14:12 .
    21277072 -rw-r--r--   1 user  group  18216 Dec 17 14:12 FourYder-20407418-3538-42f7-902c-fb897de32842.zip
  4. Tjek status af service
    Code Block
    languagebash
    titleTerminal
    yderindlaeser % curl http://localhost:8080/yderindlaeser/status                                                                
    {"DataSetLog":"OK","SFTP YDER_EXTERNAL":"OK","SFTP YDER":"OK","Database":"OK","Processing":"Dataprocessering OK"}
  5. Tjek status fra databasen
    Code Block
    languagebash
    titleTerminal
    yderindlaeser % docker exec -it development-mariadb-galera-0-1 mysql -uyder -pyder -Dyder -e"select * from YDS_dataset_status;"
    +-----+--------------------------------------+-------------+---------------------+
    | PID | UUID                                 | StatusValue | Status              |
    +-----+--------------------------------------+-------------+---------------------+
    |   1 | 20407418-3538-42f7-902c-fb897de32842 |          10 | RECEIVED            |
    |   4 | 20407418-3538-42f7-902c-fb897de32842 |          30 | PREPARSED           |
    |   7 | 20407418-3538-42f7-902c-fb897de32842 |          50 | PARSED_AND_SPLITTED |
    |  10 | 20407418-3538-42f7-902c-fb897de32842 |          70 | COMPLETED           |
    +-----+--------------------------------------+-------------+---------------------+