Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Anchor
_Toc40578283
_Toc40578283
Svareksponeringsservice XDS-adaptere
Guide til Udviklere
Anchor
_Toc292960798
_Toc292960798
Anchor
_Toc327798371
_Toc327798371
Anchor
_Toc277248668
_Toc277248668
Anchor
_Toc44403513
_Toc44403513
Indh
Anchor
_GoBack
_GoBack
old

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
_Toc327543159
_Toc327543159
Anchor
_Toc462245088
_Toc462245088
Krav til software

Wiki MarkupKrav til applikationsserveren og operativsystemet er de samme som til produktionsmiljøet. De specifikke krav kan ses i \[Installationsvejledning\] afsnit 2.
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
_Toc305606313
_Toc305606313
Anchor
_Toc327543160
_Toc327543160
Anchor
_Toc462245089
_Toc462245089
Tilpasning af miljø

...


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.

...

  1. 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
_Toc462245091
_Toc462245091
Deployering til WildFly

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
_Toc462245092
_Toc462245092
Afvikling af integrationstests mod WildFly

Wiki MarkupFor at afvikle integrationstests mod den deployerede instans WildFly udføres kommandoen:

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
_Toc462245093
_Toc462245093
Samtidig deployering og afvikling af integrationstests

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
_Toc305606315
_Toc305606315
Anchor
_Ref327298694
_Ref327298694
Anchor
_Toc327543162
_Toc327543162
Anchor
_Toc462245094
_Toc462245094
Deployment på WildFly

...

unmigrated-wiki-markup

Der henvises til installationsvejledningen \[Installationsvejledning\] for nærmere instrukser.

Anchor
_Toc327543163
_Toc327543163
Anchor
_Toc462245095
_Toc462245095
Udviklers workstation

...

Anchor
_Toc305606316
_Toc305606316
Anchor
_Toc327543165
_Toc327543165
Anchor
_Ref416360341
_Ref416360341
Anchor
_Toc462245096_Toc462245096
Beskrivelse af systemdesign
Anchor
_Toc462245096
_Toc462245096
Beskrivelse af systemdesign

Det overordnede design for Svareksponeringsservice XDS-adapterne er beskrevet i \[Design og Wiki Markup<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\].


Anchor
_Ref327298792
_Ref327298792
Anchor
_Toc327543166
_Toc327543166
Anchor
_Toc462245097
_Toc462245097
Beskrivelse af kildekodens strukturering og design

...

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
_Ref327342192
_Ref327342192
Anchor
_Toc327543171
_Toc327543171
Anchor
_Toc462245104
_Toc462245104
Integrationstests (Failsafe)

...

Integrationstests kan afvikles ved at køre:

Code Block
mvn verify –Pexternal-test


Anchor
_Toc434997539
_Toc434997539
Anchor
_Toc435777514
_Toc435777514
Anchor
_Toc327543172
_Toc327543172
Anchor
_Toc333227802
_Toc333227802
Anchor
_Toc462245107
_Toc462245107
Code coverage

...

  1. I kommandoprompt i SXA hovedfolder (folderen med parent pom) udføres:
Code Block
mvn clean site cobertura:cobertura


  1. Genereret code coverage-rapport kan nu læses i folderen target/site/cobertura

...

  1. Cobertura etableres, ved enten:
    1. Download fra fx sourceforge (https://sourceforge.net/projects/cobertura/) og udpakning
    2. Kildekode hentes fra https://github.com/cobertura/cobertura/releases og bygges
  2. Ant installeres
    1. Download fra http://archive.apache.org/dist/ant/binaries/apache-ant-1.9.4-bin.tar.gz
    2. 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

  3. Installation af Cobertura modul på WildFly:
    1. 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/

    2. 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>
    1. 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
    1. 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
  1. "<host>
      • ”<host>/coberturaFlush/
  2. flushCobertura"
      • flushCobertura”. Kald til denne service ved f.eks. Curl får Cobertura til at skrive coverage filen. (Se trin 3.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"
  4. |
    Bemærk at når WildFly startes med instrumenteret kode, da startes "optagelse" af code coverage. Ved kald til coberturaFlush servicen skabes et billede af hvordan coverage ser ud nu. Dette billede skrives til <wildfly>/bin/cobertura.ser, hvor filen bliver additivt opdateret, hvis filen findes i forvejen, eller skabes, hvis den ikke findes. "Optagelse" af code coverage bliver først reset ved genstart af WildFly og fjernelse af <wildfly>/bin/cobertura.ser.
    • Genstart af WildFly

Anchor
_Toc417550120
_Toc417550120
Gennemførelse

...

  1. Kontroller, at wildfly bruger-account kan skrive cobertura.ser filen i output folderen (Standard <wildfly>/bin/cobertura.ser eller bestemmes i cobertura.properties)
  2. Kontroller, at stien til cobertura.ser er korrekt i filen cobertura/src/main/coberturaScripts/cobertura.properties under SXA-projektets hovedfolder.
  3. 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:
    1. Shutdown af WildFly, eller
    2. 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