Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootNational Adviseringsservice 2 (NAS2) - Leverancebeskrivelse
includeroottrue


Table of Contents

Introduktion

...

Code Block
./services/subscriptionmanager/target/subscriptionmanager.war
./services/notificationbroker/target/notificationbroker.war
./services/pullpoint/target/pullpoint.war
./services/idlist/target/idlist.war
./services/pullpointfactory/target/pullpointfactory.war
./services/cleanup/target/cleanup.war
./services/administration/target/administration.war

Afvikling

Der henvises til installationsvejledningen NAS Driftsvejledning for nærmere instrukser.

...

Serviceport
pullpointfactory
8080
pullpoint
8081
idlist
8082
subscriptionmanager
8083
notificationbroker
8084
cleanup8085
administration8086

Deres endpoints findes på følgende måde: http://<navn>:<port>/<navn>. Alternativt kan alle services tilgås via en HTTP reverse proxy på port 8090. En service kan så tilgås via adressen http://<navn>:8090/<navn>.

...

  1. Tabelnavne er i snake case og der anvendes kun små bogstaver. 
  2. Kolonner er i snake case og der anvendes kun små bogstaver. 
  3. Navngivngning af indexer, constraints osv. er tabelnavn_kolonner_postfix. Hvor postfix er pk for primary key, uc for unique constraint, fk for foreign key og idx for index.

Databaseændringer

Databasemodel styres ved hjælp af liquibase. Det betyder at når der skal laves ændringer til databasemodellen så må man ikke rette i de eksisterende skemafiler. I stedet skal der laves nye filer der beskriver ændringerne.

Skemaændringer

Skal der tilføjes f.eks. en ny kolonne eller en ny tabel skal nedenstående gøres.

  1. Der oprettes en ny fil i folderen compose/database/ddl. Filen skal navngives liquibase-changelog-x.y.z.xml hvor x, y og z er det versionsnummer du forventer at release komponenten som. Filen skal beskrive ændringen der skal laves. Hvis man anvender liquibase SQL syntaxen får man typisk automatisk "rollback" med. Man kan også referere til rå SQL filer.
  2. Filen fra punkt 1 tilføjes compose/database/liquibase-changelog-master.xml.
  3. Done

Testdata

Opstår der en situation hvor der skal tilføjes yderlige testdata for at integrationstesten kan afvikles skal nedenstående udføres.

  1. Der oprettes en ny fil i folderen compose/database/test. Filen skal navngives liquibase-changelog-test-x.y.z.xml hvor x, y og z er det versionsnummer du forventer at release komponenten som. Filen skal beskrive ændringen der skal laves. Hvis man avender liquibase SQL syntaxen får man typisk automatisk "rollback" med. Man kan også referere til rå SQL filer.
  2. Filen fra punk 1 tilføjes compose/database/liquibase-changelog-test.xml
  3. Done

Beskrivelse af testsetup

Unittests (JUnit)

...

Dette forudsætter at alle services er startet som angivet i udviklet docker-compose setuppet. Hvis man ønsker af afvikle testen op mod en andet miljø, skal en række projekt variable defineres (se pom.xml-filen herom)

Udvikling af performance test

Performance testen foregår vha. et test framework udviklet af Arosii (version 2.0.0).

Performance testen består af 2 dele:

  1. Udvikling af selve testen. Dette foregår i JMeter og kræver både java udvikling og efterfølgende opsætning i JMeter.
  2. Udførsel af testen. Dette foregår vha. en række shell scripts på en master og flere slave maskiner. 

Udvikling og opsæt er beskrevet i nærværende dokument, mens den faktiske udførsel af testen er beskrevet i NAS Testvejledning.

Performance testen skal passe til NAS servicens snitflade for Notification Broker og Pullpoint. Ændres disse er det også nødvendigt at ændre performance testen.

I det følgende antages at koden er hentet ned fra SVN: https://svn.nspop.dk/svn/components/performance/trunk/  samt at man har docker installeret i sit udviklingsmiljø. JMeter skal også være tilgængelig.

Kildekodens struktur

Kildekoden indeholder også performance test til andre services, men i nedestående er NAS servicens dele trukket frem.



├── modules
    ├── ...
    ├── jmeter-nas/src/main
    │                    ├── java/dk/nsp/jmeter/
    │                    │   ├── protocol/nas/
    │                    │   │    ├── backgroundjob/
    │                    │   │    │    ├── NotificationBrokerBackgroundJob.java
    │                    │   │    ├── control/gui/
    │                    │   │    │    ├── AbstractNasSamplerGui.java
    │                    │   │    │    ├── CreateIDListRequestSamplerGui.java
    │                    │   │    │    ├── NotificationBrokerRequestSamplerGui.java
    │                    │   │    │    └── PullPointRequestSamplerGui.java
    │                    │   │    ├── sampler
    │                    │   │    │    ├── CreateIDListRequestSampler.java
    │                    │   │    │    ├── NotificationBrokerRequestSampler.java
    │                    │   │    │    └── PullPointRequestSampler.java
    │                    │   │    └── testdata
    │                    │   │         └── GenerateTestdataSql.java
    │                    │   └── resources/nas/
    │                    │        └── Messages.java
    │                    └── resources/dk/nsp/jmeter/
    │                        ├── protocol/nas/sampler/
    │                        │    ├── pullpoint.txt
    │                        └── resources/nas/
    │                             └── messages.properties

    └── ...
├── tests
    ├── ...
    ├── nas
    |   ├── start.sh
    |   ├── stop.sh
    |   └── /src/test/jmeter/templates
    |                         ├── distributions
    |                         │   ├── nbtest10.template.jmx
    |                         │   ├── nbtest900.template.jmx
    |                         │   ├── pptest10.template.jmx

    |                         │   └── pptest900.template.jmx
    │                         └── testplans
    |                             ├── notificationbroker.template.jmx

    |                             └── pullpoint.template.jmx
    └── ...



modules: indeholder kildekoden til de forskellige test

  • NotificationBrokerBackgroundJob anvendes til baggrundsbelastning under pullpoint testen. Det startes og stoppes med start.sh og stop.sh der findes under "tests" under performance testens afvikling.
  • GUI klasserne anvendes til indtastning  af test parametre (CreateIDListRequestSamplerGui anvendes ikke i den nuværende performance test, men gemmes til evt. fremtidig brug)
  • Sampler klasserne anvendes til at lave det faktiske web service kald (CreateIDListRequestSampler anvendes ikke i den nuværende performance test, men gemmes til evt. fremtidig brug)
  • GenerateTestdataSql anvendes til at skabe et sql script, som kan anvendes til at lave baggrundsdata til pullpoint testen
  • pullpoint.txt er en eksempel fil, skulle man i en fremtidig test gøre brug af fil import muligheden

tests: indeholder de generede test filer

  • distributioner
  • planer
  • baggrundsbelastning  start.sh og stop.sh. (Testframeworket tjekker under testkørslen for om disse script findes, og gør de det, udføres de.)

Versionskontrol

Test versionen styres vha. af revision i trunk. I dokumentet "testvejledning" afsnit performance test angives, hvilken version af performance testen der anvendes med en given version af NAS servicen.

Udvikling af test

NAS servicens performance test består af ovennævnte java sourcer. Disse vedligeholdes i takt med at NAS servicens snitflader for notification broker og pullpoint ændres og skal performance testes.

Lokal test kan gøres ved at bygge projektet og starte JMeter op.

Baggrundsbelastningenjobbet (NotificationBrokerBackgroundJob) testes ved at køre fra eksempelvis eclipse. Eksempel på parametre: http://localhost:8090/notificationbroker TESTNAS-TOPIC-PERFORMANCE-01 idtype01 40 1000 3000

Baggrundsdata klassen testes og anvendes ved at køre fra eksempelvis eclipse. Eksempel på parametre: pullPoint 1000 3000 idtype01 TESTNAS-TOPIC-PERFORMANCE-01 30808460SOSITEST 

Generering af testfiler

Når man har udviklet og bygget test projektet, startes JMeter. Herefter kan en eksisterende performance test åbnes og køres herfra. Eller en ny kan laves. 

Det følgende skærmbillede viser den skærm, som er udviklet i NotificationBrokerRequestSamplerGui med data hentet fra en gemt test:

Image Added


Skærmbilledet for PullPointRequestSamplerGui ser følgende ud:

Image Added


Når man starter testen (den grønne pil) aktiveres et kald mod den service, der er konfigureret under 'Host configuration' og hermed aktiveres koden fra NotificationBrokerRequestSampler eller PullPointRequestSampler respektivt.

Resultatet kan ses under 'View Result Tree',  hvor både kald og svar kan ses.

Den endelige kørsel af performance testen skal bruge en test plan (skabes når ovenstående test gemmes) samt en distribution, der indeholder 'Distribution' delen af ovenstående. De gemmes henholdsvis i tests/nas/src/test/jmeter/templates/testplans og tests/nas/src/test/jmeter/templates/distributions

Start.sh scriptet opdateres med korrekt parametre liste til baggrundsbelastningsjobbet.

Tredje parts moduler og software stack

...