Formålet med dette dokument er at beskrive hvordan et udviklingsmiljø, til videreudvikling af NAS Multiplexer, kan sættes op, samt hvordan koden bygges, deployes og testes.
Først beskrives de softwaremæssige krav, der er til miljøet, samt hvordan kode hentes og bygges. Dernæst beskrives deploymentmiljøet.
Kodestrukturen, kodemæssige afhængigheder til tredjeparts moduler og de forskellige servicemodulers ansvar og design beskrives sidst i dette dokument sammen med testdesign.
Dette dokument er en del af den samlede dokumentation for NAS Multiplexer.
Dokumentets relation til de øvrige dokumenter er beskrevet i dokumentationsoversigten for projektet NAS Multiplexer.
Læser forventes at have kendskab til Java softwareudvikling med anvendelse af Maven og WildFly. Derudover forventes kendskab til docker-compose.
Hvor der i teksten er angivet <component base> refereres til topniveaufolderen for kildekoden for komponenten.
I det følgende antages at koden er hentet fra SVN: https://svn.nspop.dk/svn/components/nas-multiplexer.
Alle NAS services deployeres vha. docker, hvorfor de alle baserer sig på NSP platformens base image, hvori der findes nødvendigt software til afvikling.
Derudover er der krav til de anvendte udviklingsværktøjer:
Man skal bruge Apache Maven til at bygge NAS Multiplexer, hvilket gøres ved at køre kommandoen
mvn package |
Efter byg kan WAR filer findes her:
./services/multiplexer/target/multiplexer.war |
Når man udvikler kan det være praktisk at foretage deploy. Dette kan gøres vha. docker-compose:
docker-compose -f compose/development/docker-compose.yml up --bulid |
Når servicen er startet er den at finde på følgende port:
Service | port |
---|---|
multiplexer | 9090 |
Deres endpoints findes på følgende måde: http://<navn>:<port>/<navn>.
Kildekoden bygges vha Apache Maven, og kildekoden er struktureret som Maven moduler. Følgende moduler er support moduler, som inkluderes efter behov:
Modul | Beskrivelse |
---|---|
log | Opsætning af generel log findes her samt hjælpekode til SLA logning. |
Derudover findes alle services som moduler under services.
JUnit anvendes til implementering af unit tests. Der er kontinuert gennemført unit tests på alle komponenter i projektet.
Unit tests afvikling under byg, men kan separat afvikles ved at køre:
mvn test |
Hvis der derimod laves en verify
, så vil der også blive genereret code coverage, hvor fremkommende rapport kan ses i testreport/target/site/jacoco-aggregate/index.html
Integrationstests kan afvikles ved at køre følgende under integration-test modulet:
mvn test |
Dette afvikles op mod indlejrede udgaver af alle NAS services. Hvis man derimod ønsker at afvikle testen op mod det kørende udviklingsmiljø (docker-compose setup), så kan man bruge development profilen:
mvn -Pdevelopment test |
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)