Introduktion
Formål
Formålet med dette dokument er at beskrive hvordan et udviklingsmiljø til videreudvikling af XDSCleanup kan sættes op, samt hvordan koden bygges, deployes og testes.
Læsevejledning
Læseren forventes at have kendskab til Java softwareudvikling med anvendelse af Maven og WildFly. Derudover forventes kendskab til Docker samt docker-compose.
Hvor der i teksten er angivet <component base> refereres til topniveaufolderen for kildekoden for komponenten.
Dokumenthistorik
28-02-2022 | KvalitetsIT | Initiel udgave. |
Introduktion til XDSCleanup
XDSCleanup jobbet består af to war-filer:
- xdscleanup.war udstiller tre servlets. Disse snitflader er beskrevet i driftsvejledningen.
- xdscleanup-deprecated.war udstiller to servlets. Disse snitflader er beskrevet i driftsvejledningen.
Alle NXRG services er Java baserede komponenter, der baserer sig på Java 8 og Spring frameworket.
Design og arkitektur er beskrevet i XDSCleanup - Design- og arkitekturbeskrivelse.
Opsætning af udviklingsmiljø
I det følgende antages at koden er hentet fra Git: https://git.nspop.dk/projects/COM/repos/simple-xds-cleanup.
Krav til software
XDSCleanup 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:
- Maven 3.0.3 eller højere anvendes.
- docker-compose version 3.4 eller højere
Bygge WAR filer
Man skal bruge Maven til at bygge XDSCleanup, hvilket gøres ved at køre kommandoen
|
Efter byg kan WAR filer findes her:
|
Afvikling
Der henvises til installationsvejledningen for nærmere instruktioner.
Udviklers workstation
Når man udvikler kan det være praktisk at foretage lokal deployment.
Dette kan gøres vha. docker-compose:
|
Beskrivelse af systemdesign
Systemdesign er beskrevet i XDSCleanup - Design- og arkitekturbeskrivelse.
Beskrivelse af kildekodens struktur
Kildekoden bygges vha Maven, og kildekoden er organiseret i Maven-moduler. XDSCleanup består af følgende moduler:
cleanup-operations | Funktionalitet der er fælles for sletning fra registry og repository og indeholder servlets til oprydning af dokumenter i NXRG/OpenXDS. |
cleanup-deprecated | Funktionalitet til sletning af udløbne aftale-dokumenteri NXRG. |
cleanup-common | Diverse hjælpeklasser. |
cleanup-testreport | Modul der genererer Jacoco testrapport. |
cleanup-war | Modul, der er ansvarlig for at pakke XDSCleanup som en NSP service - herunder angivelse af modulafhængigheder i deployment descriptor. Indeholder også Dockerfile til selve byg af Docker image. |
nxrg-cleanup | Funktionalitet til sletning af dokumentmetadata fra NXRG. |
openxds-cleanup | Funktionalitet til sletning af dokumenter fra OpenXDS. |
Beskrivelse af testsetup
Unittests (JUnit)
JUnit anvendes til implementering af unit tests.
Unit tests afvikles under byg vha jacoco plugin for Maven, men kan separat afvikles ved at køre:
|
Hvis der derimod laves en verify
, så vil der også blive genereret code coverage, hvor fremkommende rapport kan ses itcleanup-estreport/target/site/jacoco-aggregate/index.html
Integrationstests
Integrationstestene er implementeret vha Cucumber og JUnit i modulet cleanup-qa.
Afvikling af Integrationstests aktiveres via Maven med følgende kommando:
mvn verify -pl cleanup-qa -Pintegration-test
Dette vil afvikle integrationstestene mod en lokalt kørende XDSCleanup. (Udviklers workstation)
Testene kan også afvilkes mod test miljøerne ved at sætte argumentet environment. F.eks.
mvn verify -pl cleanup-qa -Pintegration-test -Denvironment=test1
Der er følgende muligheder for test miljøer:
Miljø | Beskrivelse |
---|---|
local | Testen køres mod et lokalt docker-compose setup (denne vælges automatisk hvis environment argumentet ikke sættes). |
test1 | Testen køres mod service der er deployet på test1. |
test2 | Testen køres mod service der er deployet på test2. |