Indhold

Introduktion

Formål

Formålet med dette dokument er at beskrive hvordan et udviklingsmiljø, til videreudvikling af CRA, 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.

Læsevejledning

Læser 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.

Introduktion til CRA

CRA servicen består af Java baserede komponenter, der baserer sig på Java 8 og Spring frameworket.

Design og arkitektur er beskrevet: CRA - Design- og arkitekturbeskrivelse.

Opsætning af udviklingsmiljø

I det følgende antages at koden er hentet fra SVN: https://svn.nspop.dk/svn/components/cra/.

Krav til software

CRA deployeres vha. docker og 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:

Bygge WAR filer

Man skal bruge Maven til at bygge CRA, hvilket gøres ved at køre kommandoen

mvn package


Efter byg kan WAR filer findes her:

./dros-war/target/dros.war

Afvikling

Der henvises til installationsvejledningen for nærmere instrukser.

Udviklers workstation

Når man udvikler kan det være praktisk at foretage lokal deployment.

Dette kan gøres vha. docker-compose:

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

Når CRA er startet er, svarer den på:

Testsetup

Unittests (JUnit)

JUnit anvendes til implementering af unit tests.

Unit tests afvikling under byg vha jacoco plugin for Maven, 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 cra-qa/target/site/jacoco-aggregate/index.html

Test med Cronjobs

Da CRA ikke har en service snitflade, er der ikke oprettet standard integrationstests. I stedet er det muligt at teste servicens funktionalitet ved at kalde start og status for de tilgængelige cron-jobs, når servicen er deployet lokalt med docker-compose. 

Disse kan f.eks. kaldes i en browser på følgende vis: 

CRL Stub

Når  CRA servicen skal hente crl filer, så kalder sender den et http request. Det er dog ikke altid at disse services der  udstiller CRL filerne er tilgængelige.
For at undgå afhængigheder  til andre services, så er det nu muligt at placere CRL filer i modulet cra-crl-stub.

For at CRA servicen sender sit request til stubben, så skal følgende gøres: