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. Servicen er indelt i følgende maven-moduler:
- cra-app: Indeholder logik for opdaterings- og oprydningsjob. Desuden er der filer til at bygge cra.war filen. Det er basalt set de filer, der før var indeholdt i cra-projektet inden dockerfisering.
- cra-db: De filer der bruges til at bygge 'cradb'. Før har dette ligget udenfor CRA modulet.
- cra-crl-stub: Løsning der udstiller en servlet, hvor man kan hente CRL-filer. Hvis ikke man inkludere cra-crl-stub i docker-compose, så hentes CRL på www.
- cra-qa: Her samles test-rapporter (jacoco) fra andre moduler og aggregeres.
- cra-parent: Rod modulet til ovenstående moduler. Indeholder desuden compose folder, hvor docker-compose-, konfigurations- og databasefiler er placeret.
Design og arkitektur for servicen 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:
- 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 CRA, hvilket gøres ved at køre kommandoen
|
Efter byg kan WAR filer findes her:
|
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:
|
Når CRA er startet er, svarer den på:
- StatusURL: Se CRA - Driftsvejledning
- VersionsURL: Se CRA - Driftsvejledning
- JobURLs: Se CRA - Driftsvejledning
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:
|
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
Integrationstest
Se Testvejledning for detaljer omkring integrationstesten.
Test med Cronjobs
CRA har tidligere ikke haft en integrationstest. Og de nuværende test kan ikke kontrollere resultatetet som sådan, andet end kald gik godt. Pt findes der kun integrationstest for FetchIntermediateCraJob
I stedet kan servicens samlede funktionalitet verificeres ved at tjekke docker loggen for cron-jobs, når servicen er deployet lokalt med docker-compose.
Når servicen er startet op i docker-compose fra development-opsætningen, startes de jobs, som er beskrevet i jobcron/entrypoint.sh.
Med kommandoen docker logs development_jobs_1 -f, kan afviklingen af jobs'ne følges i loggen, hvor det er muligt at se at de afsluttes med statuskode 200 for succes.
De forskellige endpoints kan også kaldes fra f.eks. en browser:
- http://localhost:8080/cra/job/revokeUpdate/start
- http://localhost:8080/cra/job/revokeUpdate/status
- http://localhost:8080/cra/job/cleanupRevocationLists/start
- http://localhost:8080/cra/job/cleanupRevocationLists/status
- http://localhost:8080/cra/version
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:
- Hvis vi antager at den CRL file vi skal bruge finde på denne http adresse: http://crl.XYZ.com/ABC.crl
I docker-compose tilføjes crl.XYZ.com som alias
docker-compose.ymlcrl-stub: networks: cra_net: aliases: - crl.XYZ.com
- Under compose/configuration/crl/resources oprettes en folder 'crl.XYZ.com'
- Filen ABC.crl downloades fra http://crl.XYZ.com/ABC.crl og placeres i folderen 'compose/configuration/crl/resources/crl.XYZ.com/'
- Applikationerne skal genstartes vha. "docker-compose down" og "docker-compose up"