Versions Compared

Key

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

...

Markering af referencer til filer.

...

     Målgruppe og læsevejledning

Den primære målgruppe for dokumentet er systemudviklere.

...

Hvert modul indeholder en ApplicationContextListener.java fil der fungerer som entry-point til applikationen. Det anbefales, at man som ny udvikler på projektet kigger koden igennem med denne fil som udgangspunkt.

...

     Seal

Stamdataservicen benytter Seal.java til håndtering af forespørgsler og svar i webservice snitfladen.

...

Derudover er XercesImpl også fjernet, da den på tilsvarende måde konflikter med JBoss AS6[1].

...

     Properties

Stamdataservicen benytter Guice til konfigurationsstyring. Konfiguration styres via filen config.properties, der pakkes sammen med WAR-filen.

...

Koden checkes ud på følgende måde:

...


     Byggemiljø

Stamdataprojektet anvender Maven som byggesystem [MAVEN]. Strukturen følger de generelle anbefalinger for Maven projekter, og er struktureret med en parent pom.xml og en projekt pom.xml fil for hvert underprojekt.

Subprojekterne er opbygget efter Maven layout konventionen.

 

...

    Database setup

Tester man med en ”NSP in a box” (NIAB) skal mysql databasen som udgangspunkt konfigureres i på NIAB hosten. (Se [NIAB] for konfiguration af NIAB)

...

Opret en bruger i mysql databasen med bruger navn ”sdm” og password ”papkasse”:


% mysql -uroot -p

Enter password: <root password til mysql>[2]

mysql> CREATE USER 'sdm'@'localhost' IDENTIFIED BY 'papkasse';



Stamdataservicens database og tabeller oprettes via:

db/schema.sql

db/batch_copy

db/dynamic_views.sql


Sql filerne eksekveres på følgende måde:

% mysqladmin -u root create sdm_warehouse -p


% mysql -u root -p

Enter password: <root password til mysql>


mysql> grant all privileges on sdm_warehouse.* to sdm@localhost identified by 'papkasse' with grant option;

mysql> exit


% mysql -u sdm sdm_warehouse < db/schema.sql -p

Enter password: papkasse 

% mysql -u sdm sdm_warehouse < db/batch_copy.sql -p

Enter password: papkasse 

% mysql -u sdm sdm_warehouse < db/dynamic_views.sql -p

Enter password: papkasse 



Det anbefales, at den nuværende navngivning af databasen bibeholdes. Ønsker man at etablere en database med et alternativt navn, skal dette tilrettes i modulernes konfigurationsfiler.

Bemærk, at ændringer i konfigurationsfilerne har systemmæssige konsekvenser, og derfor bør kun velovervejede ændringer committes.


     Autogenereret kode

Start med at køre følgende:

% mvn clean install


Stamdataprojektet benytter JAX-WS i webservice snitfladerne i CPR-WS projektet.

Snitfladekoden er autogeneret og skal ved opdatering af de associererede WSDL filer opdateres med kommandoen:

% mvn generate-sources



Som bagvedliggende implementering af JAX-WS benyttes Oracle’s reference implementering. Denne kan konfigureres ved at ændre i filen

<CPR-modul>/…/WEB-INF/sun-jaxws.properties


    Test

Installationen kan verificeres ved at eksekvere stamdataservicens test suite.

...

Testkoden er for hvert modul lokaliseret i:

src/test/java


Test suiten afvikles ved at udføre følgende kommando i projektroden:

% mvn test


Kommandoen kan også udføres under de individuelle moduler, hvorved kun undermodulets test udføres.

Installationen kan yderligere verificeres ved at udføre kommandoen:

% mvn verify


Denne kommando validerer code coverage og kode konventionerne for projektet.

Kode konventionerne følger reglerne defineret i filen:

config/checkstyle.xml

   IDE

Stamdataservicen kan principielt udvikles i enhver Java IDE, der forstår Maven projekters opbygning.

...

Eclipse er ikke født med Maven support, og det anbefales derfor, at man installerer m2eclipse inden stamdataservicen hentes ind i Eclipse:


Herefter importeres projekterne i Eclipse via ”import”:

Image Added

Alternativt kan man importere projektet ved at udføre følgende kommando:

% mvn eclipse:eclipse


Og herefter importere projektet på normal vis i Eclipse.

Kommandoen genererer Eclipse projektfilerne (.project og .classpath) for roden og hvert undermodul.  Denne metode kræver dog, at kommandoen udføres hver gang man ændrer i pom filerne.

...

     IntelliJ Idea IDE

IntelliJ Idea er født med Maven support, og stamdataservicen kan derfor direkte importeres. Projektet importeres i IntelliJ ved under ”Create new project” at vælge ”Import project from external model”. Herefter udvælges roden af stamdataservicen, hvorefter projektet importeres.

...

Alternativt kan man importere projektet ved at udføre følgende kommando:

% mvn idea:idea


Herefter kan projektet importeres på normal vis i IntelliJ.

...

Obs! Denne metode kræver dog, at kommandoen udføres hver gang man ændrer i pom filerne.

...

Stamdataservicen kan bygges til distribution eller lokal test ved at udføre:

% mvn package


Dette generer en række WAR filer, der efterfølgende kan deployeres lokalt eller i produktion.

...

Dette afsnit beskriver hvordan man kører performance af autorisationsservicen og kopi-register-servicen.

...

   Krav

For at køre performance test på Stamdata Projektet er det nødvendigt at have:


Krav

Installation og test

Stamdatas kildekode er checket ud.

%git clone https://github.com/trifork/sdm/ git clone https://github.com/trifork/sdm/

Maven3 installereret

Se maven.org for installation

% mvn –v (i prompt)

Adgang til internettet

-

Adgang til Test STS’en (dvs. være på et netværk hvor den er tilgængelig.)

Check at

http://niab01.nsp-test.netic.dk:8080/sts/services/SecurityTokenService?wsdl viser wsdl i browser. Udskift evt. niab01.nsp-test.netic.dk:8080 men den Test STS host og port du anvender.

NSP in a box (NIAB) kørende via vmware’s vmplayer

Følg vejledningen i [niab] og gennemfør smoketesten for at checke at den fungerer.

...

     Deployment

Fra Netic kan man downloade et vmware image der er opsat til at kunne afvikle NSP. Dette kaldes ”NSP in a box” (NIAB). Dette image kan rekvireres ved henvendelse hos operatøren.

...

     Konfiguration

Inden man kører test skal man konfigurere stamdata komponenterne til at køre i development mode. Fra kildekoden skal

/nsp/authorization-lookup-ws/src/test/resources/test-config.properties


omdøbes til

stamdata-authorization-lookup-ws.properties


og lægges i

$JBOSS_HOME/server/default/conf/


På samme måde skal

/nsp/batch-copy-ws/src/test/resources/test-config.properties


omdøbes til

stamdata-batch-copy-ws.properties


og lægges i

$JBOSS_HOME/server/default/conf/


Check at følgende property:

security=dgwsTest


er sat i

stamdata-batch-copy-ws.properties


Dette gør, at komponenterne godkender requests med ID Kort underskrevet af Test STS’en.

...

Når filerne er ændret skal JBoss genstartes:

% sudo /etc/init.d/jboss restart

...

     Konfiguration af database


Det CVR-nummer der bliver brugt til tests skal være oprettet i stamdatatabellerne ”Client” og ”Client_permissions”. Dette gøres på følgende måde:

...

  1. I tabellen ”Client” oprettes et element med:
    1. ”name” sat til ”Region Syd” og
    2. ”subjectSerialNumber ” sat til ”CVR:19343634-UID:1234”
    3. Aflæs det generede id og opret i tabellen ”Client_permission” en indgang med
      1. ”client_id” sat til det genererede i tabellen ”Client”
      2. ”permission” sat til ”cpr/person/v1”.

...

     Kørsel

Performance tests køres ved at køre følgende kommandoer fra folderen ”common/performance” i stamdata’s kildekode:

% mvn -Pperformancetest integration-test site -Dhostname=<host> -Dport=<port>


Hvor <host> er adressen på nsp-serveren, hvor Stamdataservice er deployet. Hvis du kører mod NIAB så anvend dens IP-adresse som <host> og anvend 8080 som <port>.

...

     Testrapporter


HTML-rapporter bliver lagt i

common/performance/target/site/


når alle tests er færdige.

...

Test køres med current dir i

nsp/cpr-ws


For StamdataPersonLookup testes den case, hvor request indeholder fornavn+efternavn, og der søges efter personer der matcher dette. Denne case er udvalgt, fordi den vurderes at belaste serveren mest (i forhold til fx casen med opslag ud fra cpr-numre).

...

     Krav

For at køre performance test på Stamdata Projektet er det nødvendigt at have:

Krav

Installation og test

Stamdatas kildekode er checket ud.

%git clone https://github.com/trifork/sdm/ git clone https://github.com/trifork/sdm/

Maven3 installereret

Se maven.org for installation

% mvn –v (i prompt)

Adgang til internettet

-

Adgang til Test STS’en (dvs. være på et netværk hvor den er tilgængelig.)

Check at

http://niab01.nsp-test.netic.dk:8080/sts/services/SecurityTokenService?wsdl viser wsdl i browser. Udskift evt. niab01.nsp-test.netic.dk:8080 men den Test STS host og port du anvender.

NSP in a box (NIAB) kørende via vmware’s vmplayer

Følg vejledningen i [niab] og gennemfør smoketesten for at checke at den fungerer.

CPRABBS servicen deployeret (på NIAB)

I dette dokument er der en miniguide hertil men det anbefales at konsultere dokumenterne

[BRS-guide til anvendere] og [BRS-driftvejledning]

...

     Konfiguration

Inden man kører test, skal man konfigurere stamdata komponenterne til at køre i development mode. Fra kildekoden skal

/nsp/cpr-ws/src/test/resources/test-config.properties


omdøbes til

stamdata-cpr-ws.properties


og lægges i (anvend sudo)

$JBOSS_HOME/server/default/conf/

...

     Performance testdata


Filen

nsp/cpr-ws/src/test/resources/getPersonDetailsQueryParameters.csv


indeholder komma-separerede par af fornavn, efternavn der benyttes til kaldene til StamdataPersonLookup-servicen.

...

På samme måde indeholder filen

nsp/cpr-ws/src/test/resources/ getSubscribedPersonDetailsQueryParameters.csv


et cvr-nummer pr. linie. Disse cvr-numre benyttes til kaldene til StamdataPersonLookupWithSubscription-servicen.

...

Cvr-numre giver hits, første gang der kaldes for dem, givet at det angivne cpr-nummer i Cpr subscription-servicen er angivet til at have abonnement på mindst ét cvr-nummer, der findes i databasen.

5.3     Forudsætninger

...

     Forudsætninger

     CPR-WS Konfiguration

Inden man kører test skal man konfigurere stamdata komponenterne til at køre i development mode. Fra kildekoden skal


/nsp/cpr-ws/src/test/resources/test-config.properties


omdøbes til

stamdata-cpr-ws.properties


og lægges i (anvend sudo)

$JBOSS_HOME/server/default/conf/

...

     CPR-WS database opsætning

For at kunne køre testen igennem med de leverede input-parametre, skal dette script indlæses i Stamdatas database:

src/test/resources/data_needed_for_performancetests.sql


f.eks. ved at køre (på NIAB hvis det er det man har valgt)

% mysql -usdm -p < nsp/cpr-ws/src/test/resources/data_needed_for_performancetests.sql

Password: papkasse


indeholder eksempeldata for henholdsvis cpr-abonnementer og ændrede cpr-numre til cprabbs-servicen.

...

Både Stamdata og cprabbs-servicen skal være konfigureret til at acceptere Id-kort udstedt af SOSI test-STS’en. Se vejledning til anvendere [BRS-guide til anvendere] og [BRS-driftvejledning] for detaljer og afsnit 5.4 for en miniguide.

...

     CPRABBS-Service miniguide

Der skal være adgang til en kørende cprabbs-service. Dette kan f.eks. opnås ved at deploye cpr-abbs war filen i på NIAB fra seneste BRS release. Denne cpr-abbs war fil ligger i et BRS release her:

<versions-nr>/cprabbs-war-<versions-nr>.war

...

     CPRABBS-service konfiguration

Fra kildekoden skal

/brs/common/src/main/resources/brs.local-deploy.properties


omdøbes til :

brs.properties


og lægges i (anvend sudo):

$JBOSS_HOME/server/default/conf/


I Stamdatas konfiguration skal property

cprabbs.service.endpoint.host

cprabbs.service.endpoint.port

cprabbs.service.endpoint.path


sættes til cprabbs-servicens endpoint, fx værdierne

cprabbs.service.endpoint.host=localhost

cprabbs.service.endpoint.port=8080

cprabbs.service.endpoint.path=/cprabbs/service/cprabbs

...

     CPRABBS-service databaseopsætning


Opret og tilpas CPRABBS notifikationsdatabasen:


$ mysql -f -uroot -p < init-mysql-nsp_reg_notification.sql

(ignorér fejl)

$ mysql --database=nsp_reg_noti -uroot -p < create-cprsubscription-tables.sql

$ mysql --database=nsp_reg_noti -uroot -p < mysql-cprsubscription-alter-tables.sql


Opret og tilpas testdatabase over personer med CPR-nummer opdateringer i stamdata databasen:

$ mysql -f -uroot -p < init-mysql-nsp_stamdata.sql

$ mysql --database=nsp_stamdata -uroot -p < create-test-stamdata-tables.sql

$ mysql --database=nsp_stamdata -uroot -p < mysql-test-stamdata-alter-tables.sql


Fyld data i CPRABBS notifikationsdatabasen:

$ mysql --database=nsp_stamdata -uroot -p < src/test/resources/cprabbs_data_needed_for_performancetests_nsp_stamdata.sql


Opret og tilpas testdatabase over personer med CPR-nummer opdateringer i stamdata databasen:

$ mysql --database=nsp_reg_noti -uroot -p < src/test/resources/cprabbs_data_needed_for_performancetests_nsp_reg_noti.sql

...

     Udførsel

Man udfører testen ved at køre følgende (som én linie, uden liniebrud):

rm -rf target/chronos/&& mvn integration-test site -Pperformancetest -DskipTests -DnumberOfIterations=5 -DnumberOfThreads=10 -Dhostname=localhost -Dport=8080


(rm-delen sørger for, at Chronos-pluginn’et kører testen igen, selvom der ligger et resultat fra tidligere).

Værdierne af de 4 properties til sidst kan rettes. De betyder følgende:

Property

Beskrivelse

numberOfIterations

hvor mange loops skal hver tråd køre

numberOfThreads

hvor mange tråde skal der startes

Hostname

på hvilken host kører StamdataPersonLookup-servicen

Port

på hvilken port kører StamdataPersonLookup-servicen

...

     Testrapporter


Når kommandoen har kørt, er testrapporter tilgængelige i

target/site


Denne html fil:

StamdataPersonLookupGetPersonDetails-report.html


Viser resultatet af den test, der forespørger på personer via fornavn, efternavn par. Resultater af den performancetest, der er abonnements (altså afhænger cpprabs-servicen) forefindes i

StamdataPersonLookupWithSubscriptionGetSubscribedPersonDetails-report.html


6       Tips og tricks

I de følgende beskrives problemer og deres løsninger:

...

     JBoss out of memory

...

     Beskrivelse


I JBoss’s boot.log:

$JBOSS_HOME/server/default/log/boot.log


Logger JBoss noget i stil med ”out of memory” og nævner “permgenspace”

...

     Løsning

Forøg JBoss permgen space ved at ændre linien indeholdende:

JAVA_OPTS="-Xms2048m -Xmx2048m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"


i filen

$JBOSS_HOME/bin/run.conf

 

til

JAVA_OPTS="-Xms2048m -Xmx2048m -XX:MaxPermSize=512m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

...

     JBoss kan ikke skrive til “trancsaction.log”        

...

     Beskrivelse

I JBoss’s boot.log:

$JBOSS_HOME/server/default/log/boot.log


Logger JBoss noget i stil med ”transaction.log” og ”cannot write”

...

Nyeste udgave af dette dokument kan erhverves ved henvendelse til NSP-operatøren.


Version

Dato

Ændring

Ansvarlig

1.0

28/4-2011

Initielt Dokument

Trifork

1.1

6/10-2011

Opdateret med CPR tjenester

Trifork

1.2

8/12-2011

Kvalitetssikret af Lakeside

Lakeside

1.3

22/12-2011

Opdateret bla. med performance test af autorisationsservicen og kopi-register-servicen

Trifork

1.4

14/5-2013

Opdateret afsnit omkring oprettelse af database

Trifork



8       Referencer og kilder

Reference-id

Indhold / Overskrift

Henvisning

[MAVEN]

Welcome to Apache Maven

http://maven.apache.org/

[NIAB]

NSP in a box

Kan rekvireres ved henvendelse til operatøren inklusiv vejledning i anvendelse og konfiguration.

[BRS-guide til anvendere]

Guide til anvendere

Ligger i doc bibliotek i en BRS release

[BRS-driftvejledning]

Driftvejledning

Ligger i doc bibliotek i en BRS release


...

[1] Fra Seal.java 2.1.2 er XercesImpl ikke længere inkluderet i Seal.java.

[2] Root password til mysql sættes med følgende kommando:


% mysqladmin -u root password NEWPASSWORD