Page History
...
Anchor | ||||
---|---|---|---|---|
|
Guide til Udviklere
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
1 Introduktion
1.1 Formål
1.2 Læsevejledning
1.3 Dokumenthistorik
1.4 Definitioner og referencer
2 Opsætning af udviklingsmiljø
2.1 Krav til software
2.2 Tilpasning af miljø
2.3 Bygge War filen
2.4 Deployering til WildFly
2.5 Afvikling af integrationstests mod WildFly
2.6 Samtidig deployering og afvikling af integrationstests
3 Deployment på WildFly
3.1 Udviklers workstation
4 Beskrivelse af systemdesign
5 Beskrivelse af kildekodens strukturering og design
5.1 Kode-strukturering
5.2 Generelt design af Svareksponeringsservice XDS-adaptere
5.3 Svareksponeringsservice XDS Registry Adapter
5.4 Svareksponeringsservice XDS Repository Adapter
6 Beskrivelse af test-setup
6.1 Unittests (JUnit)
6.2 Integrationstests (Failsafe)
6.2.1 Krævet test setup
6.2.2 Afvikling af integrationstests
6.3 Code coverage
6.3.1 Code coverage for unittests
6.3.2 Code coverage for unittests og integrationstests
...
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Krav til applikationsserveren og operativsystemet er de samme som til produktionsmiljøet. De specifikke krav kan ses i \[Installationsvejledning\] afsnit 2.
Wiki Markup
Derudover er der en række krav til de anvendte udviklingsværktøjer :
- Maven 3.0.3 eller højere anvendes.unmigrated-wiki-markup
WildFly (se \[Installationsvejledning\])
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
...
Disse kan kopieres og tilpasses til aktuelt miljø. Efterfølgende Maven-kommandoer gør brug af de tilpassede property-filer gennem argumenterne:
Code Block |
---|
-Denvironment-property-file=<sti til tilpasset environment.properties> |
...
-Dtestclient-property-file=<sti til tilpasset testclient.properties> |
Er disse argumenter ikke anført benytter Maven-scripts de oprindelige property-filer.
...
- For at bygge projektet uden deployering til WildFly eller kørsel af integrationstest foretages følgende kommando fra <component base>:
Code Block |
---|
mvn clean install \ |
...
-Denvironment-property-file=<sti til tilpasset environment.properties> |
Anchor | ||||
---|---|---|---|---|
|
For at etablere og deployere properties til WildFly foretages følgende kommando fra <component base>:
Code Block |
---|
mvn install –Pdeploy-ds-appserver \ |
...
-Denvironment-property-file=<sti til tilpasset environment.properties> |
Bemærk, at dette afstedkommer deployering til WildFly, herunder at:
...
For at deployere war og ear filer til WildFly foretages følgende kommando fra <component base>:
Code Block |
---|
mvn install –Pdeploy-to-appserver \ |
...
-Denvironment-property-file=<sti til tilpasset environment.properties> |
Bemærk, at dette afstedkommer deployering til WildFly, herunder at:
...
Anchor | ||||
---|---|---|---|---|
|
For at afvikle integrationstests mod den deployerede instans på WildFly udføres kommandoen:
Wiki Markup
Code Block |
---|
mvn verify –Pexternal-test \
-Dtestclient-property-file={_}<sti til tilpasset testclient.properties> |
Bemærk, at afvikling af integrationstests kræver, at Dokumentdelingsservicen er deployeret (med sine afhængigheder) og konfigureret til at anvende Svareksponeringsservice XDS-adapterne, som beskrevet i _ <ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="c775b123-2ddc-47bd-a869-357f1f05cea1"><ac:parameter ac:name="">_Toc305606314</ac:parameter></ac:structured-macro>Bemærk, at afvikling af integrationstests kræver, at Dokumentdelingsservicen er deployeret (med sine afhængigheder) og konfigureret til at anvende Svareksponeringsservice XDS-adapterne, som beskrevet i \[Konfiguration\].
Anchor | ||||
---|---|---|---|---|
|
For at lette afvikling af integrationstests ifm. udvikling, kan deployering af war/ears til WildFly og afvikling af integrationstests udføres med kommandoen:
Code Block |
---|
mvn install -Ddev \ |
...
-Denvironment-property-file=<sti til tilpasset environment.properties> -Dtestclient-property-file=<sti til tilpasset testclient.properties> |
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
...
unmigrated-wiki-markup
Der henvises til installationsvejledningen \[Installationsvejledning\] for nærmere instrukser.
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
...
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
| ||||
Anchor | _Toc462245096 | _Toc462245096 |
Anchor | ||||
---|---|---|---|---|
|
Det overordnede design for Svareksponeringsservice XDS-adapterne er beskrevet i \[Design og <ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="aeda00bf-034c-401d-b0aa-34e1c03c42ec"><ac:parameter ac:name="">_Toc305606317</ac:parameter></ac:structured-macro>Det overordnede design for Svareksponeringsservice XDS-adapterne er beskrevet i \[Design og Arkitektur\]. Wiki Markup
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
...
JUnit anvendes til implementering af unit tests. Der er kontinuert gennemført unit tests på alle komponenter i projektet.
Unit tests kan afvikles ved at køre:
Code Block |
---|
mvn test |
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
...
Integrationstests kan afvikles ved at køre:
Code Block |
---|
mvn verify –Pexternal-test |
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
...
- I kommandoprompt i SXA hovedfolder (folderen med parent pom) udføres:
Code Block |
---|
mvn clean site cobertura:cobertura |
- Genereret code coverage-rapport kan nu læses i folderen target/site/cobertura
...
- Cobertura etableres, ved enten:
- Download fra fx sourceforge (https://sourceforge.net/projects/cobertura/) og udpakning
- Kildekode hentes fra https://github.com/cobertura/cobertura/releases og bygges
- Ant installeres
- Download fra http://archive.apache.org/dist/ant/binaries/apache-ant-1.9.4-bin.tar.gz
Kopier følgende afhængigheder til Ant's lib folder
Jar
Kilde
asm-5.0.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
asm-analysis-5.0.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
asm-commons-5.0.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
asm-tree-5.0.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
asm-util-5.0.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
cobertura-2.1.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
commons-lang3-3.3.2.jar
Indeholdende i Cobertura-2.1.1-bin-tar
oro-2.0.8.jar
Indeholdende i Cobertura-2.1.1-bin-tar
slf4j-api-1.7.5.jar
Indeholdende i Cobertura-2.1.1-bin-tar
slf4j-log4j12-1.6.4.jar
Bør være i lokal m2 folder
log4j-1.2.16.jar
Bør være i lokal m2 folder
- Installation af Cobertura modul på WildFly:
Følgende Cobertura afhængigheder kopieres fra cobertura-2.1.1-bin.tar.gz til <wildfly folder>/modules/net/sourceforge/cobertura/main
Jar
Destination
<arkiv>/cobertura-2.1.1.jar
<modul-main>/
<arkiv>/lib/asm-tree-5.0.1.jar
<modul-main>/lib/
<arkiv>/lib/asm-commons-5.0.1.jar
<modul-main>/lib/
<arkiv>/lib/asm-util-5.0.1.jar
<modul-main>/lib/
<arkiv>/lib/asm-analysis-5.0.1.jar
<modul-main>/lib/
<arkiv>/lib/oro-2.0.8.jar
<modul-main>/lib/
- En module.xml fil skabes i samme main mappe med følgende indhold:
Code Block |
---|
<?xml version="1.0" encoding="UTF-8"?> |
...
<module xmlns="urn:jboss:module:1.1" name="net.sourceforge.cobertura"> |
...
<resources> <resource-root path="."/> |
...
<resource-root path="cobertura-2.1.1.jar"/> |
...
<resource-root path="lib/asm-tree-5.0.1.jar"/> |
...
<resource-root path="lib/asm-commons-5.0.1.jar"/> |
...
<resource-root path="lib/asm-util-5.0.1.jar |
...
"/> <resource-root path="lib/asm-analysis-5.0.1.jar"/> |
...
<resource-root path="lib/oro-2.0.8.jar"/> |
...
</resources> |
...
<dependencies> <module name="asm.asm" /> |
...
<module name="javax.servlet.api" /> |
...
<module name="org.slf4j" /> |
...
</dependencies> |
...
</module> |
- Default udskrives coveragefilen (cobertura.ser) i <wildfly folder>/bin mappen. Ønskes filen udskrevet til en anden mappe skabes filen cobertura.properties i main mappen med indeholdet:
Code Block |
---|
net.sourceforge.cobertura.datafile=<sti>/cobertura.ser |
For at få Cobertura til at skrive coverage af integrationstests, er der to muligheder:
Metode
Installation og brug
coberturaFlush.war servicen
- coberturaFlush.war er at finde i Cobertura-2.1.1-bin-tar
- Før kopiering til <WildFly>/standalone/deployments skal følgende linje tilføjes til coberturaFlush.war/META-INF/MANIFEST.MF:
Code Block Dependencies: net.sourceforge.cobertura
- Efter ændring deployeres coberturaFlush.war og servicen udstiller
"<host>- ”<host>/coberturaFlush/
flushCobertura"- flushCobertura”. Kald til denne service ved f.eks. Curl får Cobertura til at skrive coverage filen. (Se trin 3.3).
|Genstart af WildFly - Cobertura skriver automatisk coverage fil ved genstart af WildFly
- Denne mulighed kræver følgende ændring i <wildfly folder>/bin/standalone.conf med tilføjelse af:
Code Block JAVA_OPTS="$JAVA_OPTS -Djboss.shutdown.forceHalt=false"
|- Genstart af WildFly
Anchor | ||||
---|---|---|---|---|
|
...
- Kontroller, at wildfly bruger-account kan skrive cobertura.ser filen i output folderen (Standard <wildfly>/bin/cobertura.ser eller bestemmes i cobertura.properties)
- Kontroller, at stien til cobertura.ser er korrekt i filen cobertura/src/main/coberturaScripts/cobertura.properties under SXA-projektets hovedfolder.
- Coberturas instrumentering af koden sker ved udførsel af følgende i kommandoprompt i SXA-projektets hovedfolder (folderen med parent pom):
Code Block |
---|
mvn clean install -Dcobertura-build \ |
...
-Pdeploy-to-appserver \ |
...
-Denvironment-property-file=<sti til tilpasset environment.properties> |
Bemærk, at argumentet –Pdeploy-to-appserver aktiverer en Maven-profil, der kopierer ear/war-filer til WildFly deployment folder vha. properties. Som alternativ til dette argument kan ear/war-filer deployeres manuelt.
- Gen-deployer SXA-projektets services på WildFly
- I samme folder udføres integrationstestene ved:
Code Block |
---|
mvn verify –Pexternal-test __ |
...
-Denvironment-property-file=<sti til tilpasset environment.properties> \ |
...
-Dtestclient-property-file=<sti til tilpasset testclient.properties> |
- Afslutning af coberturas optagelse gennemføres ved enten:
- Shutdown af WildFly, eller
- At åbne siden http://<host:port>/coberturaFlush/flushCobertura (fx via curl eller i browser. Bemærk at dette forudsætter at filen coberturaFlush.war blev kopieret og deployeret)
- Flet code coverage-rapporter ved i kommandoprompt i SXA hovedfolder at udføre:
Code Block |
---|
cd cobertura/target/coberturaReporting-coberturaReporting |
...
ant –f cobertura.xml create-report |
- Genereret code coverage-rapport kan nu læses i folderen cobertura/target/coberturaReporting-coberturaReporting/report