Fælles udviklingsmiljø

For at have et fælles miljø, der ligner et rigtigt NSP testmiljø, så er der blevet opsat et miljø hos medcom.


NR-106


Cdaviewer: https://cdaviewer.nspnxrg.medcom.dk/cdaviewer/

DDS Repository: https://dds.nspnxrg.medcom.dk/ddsrepository/services?wsdl

DDS Registry: https://dds.nspnxrg.medcom.dk/ddsregistry/services?wsdl

DRS: https://drs.nspnxrg.medcom.dk/drs/wsdl/drs.wsdl

DROS:

https://dros.nspnxrg.medcom.dk/dros/iti41?wsdl

https://dros.nspnxrg.medcom.dk/dros/iti42?wsdl

https://dros.nspnxrg.medcom.dk/dros/iti57?wsdl

https://dros.nspnxrg.medcom.dk/dros/iti61?wsdlNR-106

NXRG:

https://nxrg.nspnxrg.medcom.dk/nxrg/iti18?wsdl

https://nxrg.nspnxrg.medcom.dk/nxrg/iti42?wsdl

https://nxrg.nspnxrg.medcom.dk/nxrg/iti57?wsdl

https://nxrg.nspnxrg.medcom.dk/nxrg/iti61?wsdl

PhpMyadmin (NXRG db viewer): https://phpmyadmin.nspnxrg.medcom.dk/

Der er sat en splunk op (hvis den bliver genstartet, så mister den al data, men det er nok ok til vores formål. Man kan se data ved at vælge "NXRG Report": https://splunk.nspnxrg.medcom.dk/en-US/app/search/reports

XDS Test Toolkit2: https://iheos-toolkit2.nspnxrg.medcom.dk/xdstools2/

Unittests

Der findes UnitTests af centrale enheder (klasser) i NXRG.

Placeringen af disse følger standarden foreskrevet af Maven og er placeret i src/test/java i hvert af NXRG servicens moduler.

Unittests er navngivet med navnet på den klasse, som de tester, efterfulgt af Test.

Således ligger unittesten for klassen:

./nxrg-app/src/main/java/dk/nsp/nxrg/ws/Iti42WS.java

implementeret i:

./nxrg-app/src/test/java/dk/nsp/nxrg/ws/Iti42WSTest.java

Unittests er stilmæssigt opbygget på følgende måde:

Unittests er implementeret vha JUnit og kan eksekveres af Mavens standard testplugin SureFire.

Til udregning af testcoverage anvendes Jacoco Maven Plugin (se JaCoCo Maven plug-in).

Testcoverage udregnes i de enkelte Maven moduler i NXRG og aggregeres til en samlet rapport i modulet nxrg-testreport.

Således er en samlet rapport over testcoverage tilgængelig i

./nxrg-testreport/target/site/jacoco-aggregate

Unittests og tilhørende udregning af testcoverage udføres som en integreret del af byg af komponenten (se i øvrigt NXRG - Guide til Udviklere).

Integrationstest til verifikation af funktionalitet og deployment

Integrationstestene for NXRG er implementeret vha Cucumber og JUnit i modulet nxrg-qa, og er beregnet til afvikling mod en kørende udgave af NXRG.

Afvikling af Integrationstests aktiveres via Maven ved følgende kommando i modulet nxrg-qa:

mvn verify -Pintegration-test  -Dvariabel=value

Det kræves at følgende properties angives ved afvikling af integrationstesten


Property

Beskrivelse

iti18.service.endpointEndpoint for NXRG ITI-18 service
iti42.service.endpointEndpoint for NXRG ITI-42 service
iti57.service.endpointEndpoint for NXRG ITI-57 service
iti61.service.endpointEndpoint for NXRG ITI-61 service


For nemheds skyld er der angivet følgende profiler (kan angives med -P), med variabeldefinitioner for et givent miljø

localDet dockerbaserede udviklingsmiljø for NXRG
devDet fælles udviklingsmiljø for NXRG
test1NXRG på NSP Test1 miljø
test2NXRG på NSP Test2 miljø


Testrapporter kan for integrationstesten genereres som html og json og kan ses i /target/cucumber-reports/cucumber.html og /target/cucumber-reports/cucumber.json

Sammenhæng mellem integrationstests og user stories

NXRG - Brugerhistorier findes en liste over, hvilke user stories, der er relevante for NXRG. Er installereret: https://iheos-toolkit2.nspnxrg.medcom.dk/xdstools2/

Disse brugerhistorier går igen i integrationstestene, da hver brugerhistorie svarer til en integrationstestssuite (feature) i NXRG.

Således findes testscenarier for brugerhistorien 'Registrer Dokumentsæt med ReferenceIdList' i featurefilen:

./nxrg-qa/src/test/resources/dk/nsp/nxrg/test/verification/RegistrerDokumentsaetMedReferenceIdList.feature

XDS Toolkit 2: Testing

XDS Toolkit er en samling test tools, der fokuserer på XDS.

Det understøtter tests for en række IHE XDS aktører f.eks Document Registry, Document Repository og flere.

I forhold til NXRG er det relevant at kigge på, hvilke tests, der findes, der fokuserer på Document Registry.

Vælg "alternate" som environment. Test11897 test 1 og 2 fejler ellers.

I menuen i XDS Toolkit kan man vælge "Conformance Tests". Herved fåes et overblik over de forskellige IHE XDS aktøerer. I sektionen vedr. Document Registry er testene grupperet. I forhold til NXRG MVP er det relevant at koncentrere sig om de tests, der ligger i de sektionerne:

For lokal test: værktøjet startes op docker compose setup under ./compose/development og kan herefter tilgåres via: http://localhost:3308/xdstools2/

For testserver test: se link ovenfor for "XDS Test Toolkit2"

Det er ikke alle tests inden for de tre kategorier, som vi forventer at kunne gennemføre i NXRG MVP (vi udbyder f.eks. kun en delmængde af de søgetyper, der findes som en del af ITI-18). Kategorierne og testcases gennemgås nedenfor og relevans krydses af.

Document Registry - Required Tests

Relevant i forhold til NXRGAntal del testTeststatusSprint 7 (test som fejler)

11897 - FindDocuments Stored Query

x2929/29
  • approved (findings på NR-107)
  • leafclass (findings på NR-107)
  • refid (NR-106)

11898 - SQ.b FindSubmissionSets Stored Query





11899 - SQ.b FindFolders Stored Query





11901 - SQ.b GetDocuments Stored Query



11902 - SQ.b GetFolders Stored Query



11903 - SQ.b GetAssociations Stored Query



11904 - SQ.b GetDocumentsAndAssociations Stored Query



11905 - SQ.b GetSubmissionSets Stored Query



11906 - SQ.b GetSubmissionSetAndContents Stored Query





11907 - SQ.b GetFolderAndContents Stored Query





11908 - SQ.b GetFoldersForDocument Stored Query



11909 - SQ.b GetRelatedDocuments Stored Query



11990 - Register single DocumentEntry

x20/2
  • submit (NR-120: symbolic link)
  • eval (NR-114: GetSubmissionSetAndContents)
11991 - Register two DocumentEntriesx20/2
  • submit (NR-120: symbolic link)
  • eval (NR-114: GetSubmissionSetAndContents)

11992 - Document Replace

x31/3
  • rplc (NR-120: symbolic link)
  • eval (NR-114: GetSubmissionSetAndContents)

11993 - Document Replace and Addendum

x41/4
  • rplc (NR-120: symbolic link)
  • apnd (NR-120: symbolic link ?)
  • eval (NR-114: GetSubmissionSetAndContents)

11994 - Document Replace and Transformation

x41/4
  • rplc (NR-120: symbolic link)
  • xfrm (NR-120: symbolic link ?)
  • eval (NR-114: GetSubmissionSetAndContents)

11995 - Document Replace with Transformation (XFRM_RPLC)

x32/3
  • eval (NR-114: GetSubmissionSetAndContents)

11996 - Reject Submission with Invalid Patient ID




Testen er ikke relevant, da vi ikke anvender Patient Identity feed featuren 
(Kendte registrerede patienter i registry)

11997 - Patient ID on SubmissionSet does not match DocumentEntry

x21/2
  • submit (NR-119, fejlhåndtering)
  • eval (NR-83: GetDocuments)

11998 - R.b Reject Submission, Patient ID on Replacement Document does not match Original

x3
  • eval (NR-114: GetSubmissionSetAndContents)

11998a - Attribute missing rejection

x96/9
  • classcode (NR-119, fejlhåndtering)
  • confidentialityCode (findings på NR-107)
  • creationTime (findings på NR-107)
  • formatCode (NR-119, fejlhåndtering)
  • healthcareFacilityTypeCode (NR-119, fejlhåndtering)
  • languageCode (findings på NR-107)
  • practiceSettingCode (NR-119, fejlhåndtering)
  • SourcePatientId (NR-119, fejlhåndtering)
  • typeCode (NR-119, fejlhåndtering)

11999 - R.b Accept Create Folder

x21/2
  • eval (NR-114: GetSubmissionSetAndContents)

12000 - R.b Accept Create Folder with Initial Document

x31/3
  • eval_folder (NR-114: GetSubmissionSetAndContents)
  • eval_assoc (NR-115: GetFolderAndContents)

12000.1a - R.b Accept Create Folder with Initial Document and Test GetDocuments Stored Query

x21/2
  • getDocumentSq (NR-83: GetDocuments)

12001 - R.b Add new document to existing folder

x32/3
  • add_to_folder (NR-120: symbolic link)
  • eval (NR-115: GetFolderAndContents)

12002 - R.b Reject Add Document to Folder - Patient ID does not match

x3
  • eval (NR-114: GetFolderAndContents)

12004 - R.b Document Resubmission

x20/2
  • submit (NR-120: symbolic link ?)
  • eval (NR-83: GetDocuments)

12084 - R.b Submission Stored - All or Nothing

x21/2
  • submit (NR-119, fejlhåndtering)
  • eval (NR-114: GetSubmissionSetAndContents)

12323 - R.b Folder lastUpdateTime

x83/8
  • verify_no_submission_time (NR-116: GetFolders)
  • verify_has_submission_time (NR-116: GetFolders)
  • verify_time_update (NR-115: GetFolderAndContents)
  • rplc  (NR-120: symbolic link)
  • verify_time_updated_by_rplc (NR-116, GetFolders)

12326 - R.b Add Existing document to existing folder

x31/3
  • add_to_folder (NR-120: symbolic link)
  • eval (NR-115: GetFolderAndContents)

12327 - R.b Accept Document Replace, Document in Folder

x41/4
  • verify_submission (NR-114: GetSubmissionSetAndContents)
  • rplc (NR-120: symbolic link)
  • verify_folder_content (NR-115: GetFolderAndContents)

12368 - SQ.b XDSResultNotSinglePatient Error

x60/6
  • doc_leafclass (NR-83: GetDocuments)
  • doc_objectref (NR-83: GetDocuments)
  • ss_leafclass (NR-117: GetSubmissionSets)
  • ss_objectref (NR-117: GetSubmissionSets)
  • fol_leafclass (NR-115: GetFolderAndContents)
  • fol_objectref (NR-115: GetFolderAndContents)

12370 - R.b Accept association documentation classification

x43/4
  • not_configured (NR-119, fejlhåndtering)
  • query (NR-118: GetAssociations)

12379 - Extra Metadata

?10/1
  • support (NR-114: GetSubmissionSetAndContents)

15803 - GetAll Stored Query





15806 - Reject resubmission

x41/4
  • query (NR-114: GetSubmissionSetAndContents)
  • resubmit (findings på NR-107)
  • verify (NR-114: GetSubmissionSetAndContents)
Document Registry - Metadata Update Option TestsRelevant i forhold til NXRGAntal deltestTest statusSprint 7 (Test som fejler)

15800 - DocumentEntry Update

x31/3
  • update (finding på NR-107, status)
  • query_by_uniqueid (NR-83: GetDocuments)

15800b - No Original DocumentEntry

x10/1
  • no_orig_docentry (finding på NR-107, fejlkode)

15800c - Wrong transaction used

x11/1


15800d - DocumentEntry - Submit Incomplete Update

x21/2
  • update (finding på NR-107, fejlkode)

15800e - DocumentEntry - Submit Update to older version

x21/2
  • update (finding på NR-107, fejlkode)

15801 - DocumentEntry attribute Update

x2222/22
  • 22 subtest (finding på NR-107, status)

15802 - Update DocumentEntry Status on most recent version

x53/5
  • confirm_docentry_1_deprecated (NR-83: GetDocuments)
  • confirm_docentry_1_undeprecated (NR-83: GetDocuments)

15802b - Update DocumentEntry Status of older version

x42/2
  • update_docentry_2 (finding på NR-107, status)
  • verify_orig_docentry_2_deprecated (NR-83: GetDocuments)

20000 - Folder - Simple Update





20000b - Folder - Reject Original Submission





20000c - Folder - Submit Wrong Version





20000d - Folder - Simple Update Using Association Propagation





20000e - Folder - Simple Update Without Association Propagation





20000f - Folder - Submit Incomplete Update





20001 - Submit APND Association





20002b - Check Syntax for Update Metadata Operations





20007 - DocumentEntry - Reject Multiple Updates For Same LogicalId

x22/2

20008 - Submit "Versioned" Association





20100a - PatientIDReconciliationError: Submit DE-DE Relationship Association





20100b - PatientIDReconciliationError: Submit FD-DE Has-Member Association





21000 - No Update Metadata Operation Object (ITI-42)

x10/1
  • submit (finding på NR-107, fejlkode)

21001 - SubmissionSet and UpdateAvailabilityStatus

x22/2

21002 - Simple DocumentEntry Patient Identifer Change

x65/6
  • update (vil altid fejle, vi tillader ikke ændring af patientid)
  • query_leaf (finding på NR-107, fejlkode)
  • query_ref (finding på NR-107, status)
  • query_original (NR-83: GetDocuments)
  • query_update (NR-83: GetDocuments)

21003 - Simple Folder Patient Identifier Change





21004 - Submit Association Against Deprecated Objects





Document Registry - On Demand Option TestsRelevant i forhold til NXRGAntal deltestTest statusSprint 7 (Test som fejler)
Test: 15805 - Test 15805 - Registry oriented On-Demand DocumentEntry testsx105/10
  • query_od_getAll (NR-121: GetAll)
  • query_od_getSsAndContents (NR-114: GetSubmissionSetAndContents)
  • query_stable_getAll (NR-121: GetAll)
  • query_stable_getSSAndContent (NR-114: GetSubmissionSetAndContents)
  • query_both_getAll (NR-121: GetAll)

Performance test

Der laves performance test af regsistry og repository som et hele - dvs det er brugeroplevelsen som sådan, der vurderes.

Testen grupperes logisk en test suite. Hver trin bør udføres i angivne orden. Og databasen til registry og repository kan med fordel kopieres efter trin 2, sådan at de følgende testtrin kan genkøres, skulle behovet opstå.

Test suite 1

  1. ITI-41: register stable document
  2. ITI-61: register on-demand document
    (tag kopi af databaserne)
  3. ITI-41: replace stable document
  4. ITI-61: replace on-demand document
  5. ITI-18: registry stored query (“find documents”) og ITI-43: retrieve document set
  6. ITI-57: update metadata (deprecate document)

Der køres på en liste af cpr numre. Trin 1 og 2 opretter data og trin 3-6 arbejder herefter på disse data. Replace document og update metadata arbejder på konkrete dokumenter. Disse findes ved først at lave en ITI-18 søgning (som udelades af selve throughput beregningen).

Performance krav

Der findes ikke en officiel liste af krav til performance. Det vil derfor være hensigtsmæssigt at undersøge, hvordan performance er for det nuværende registry (og repository). Men vil herefter kunne vurdere, at man ialtfald ikke er dårligere stillet med det nye.

Krav:

  1. Snitfladerne skal være mindst lige så hurtig som for den nuværende XDS registry (og repository)
  2. Snitfladerne skal måles og svartiderne vurderes
  3. Vurdering af, hvor stort et load, snitfladerne kan håndtere per time og per uge 

Add 3: Der måles en periode på 15 minutter og denne ganges op på time og uge basis.

Forudsætninger

Testen skal køres på en liste af cpr numre. Listen indeholder 100.000 forskellige numre. Udover disse cpr numre skal testen kunne afvikles selvstændigt og ikke være afhængig af andet test data.

Testen skal køre mod et registry og repository med en “passende” mængde baggrundsdata. Dette er et par millioner dokumenter af typerne stable og on-demand. Disse skabes i testens trin 1 og 2.

Baggrundsdata

Testens trin 3-6 forudsætter er der findes baggrundsdata at køre på. Trin 3 og 4 skal erstatte et eksisterende "approved" dokument, og trin 5 skal fremsøge eksisterende dokumenter, og trin 6 skal deprecate "approved" eksisterende dokumenter.

Dette baggrundsdata skables i testens trin 1 og 2. Vurderes det, at disse 2 trin ikke har skabt nok baggrundsdata (et par millioner dokumenter) kan trin 1 og 2 gentages indtil, der er nok dokumenter.

Design af test

ITI-41 register

Dette er en registrering af et “stable” dokument.

Overvejelser omkring opsætningen

Der er følgende muligheder for opsætning af testen:

Til testen anvendes følgende opsætning:

ITI-61 register

Dette er en registrering af et “on-demand” dokument.

Overvejelser omkring opsætningen

Der er følgende muligheder for opsætning af testen:

Til testen anvendes følgende opsætning:

ITI41 replace og ITI-61 replace

Dette er som for ITI-41 register og ITI-61 register ovenfor. Forskellen er, at et eksisterende dokument skal erstattes. 

Overvejelser omkring opsætning:

Til testen anvendes følgende opsætning:

ITI-18 registry stored query og ITI-43 retrieve document set

Dette er en fremsøgning af dokumenter og efterfølgende hent.

Overvejelser omkring opsætningen

Der er følgende muligheder for opsætning af testen:

Fremsøgning:

Hent:

Til testen anvendes følgende opsætning:

iti-57

Dette er en opdatering af til et eksisterende dokuments metadata - mere konkret dokument status. 

Overvejelser omkring opsætningen

Der er følgende muligheder for opsætning af testen:

Til testen anvendes følgende opsætning:


Udførsel af test

Forberedelse

Testen hentes fra https://svn.nspop.dk/svn/components/performance/trunk i den revision, der er angivet nedenfor per release af NXRG.

Databasen klargøres; en tom database for både registry og repository

Der skal være en kørende version af NXRG, som er konfigureret med et tilhørende repository. Og host.properties skal være sat korrekt op jf. arosiis performance test framework.

I sourcekodens samplers findes metoden getPath(). Denne sti ned til det enkelte endpoint varierer efter, hvilken version af servicene som rammes. Det kan derfor være nødvendig at rette test sourcerne inden testen køres.

Eksempel for iti-18:

Kørsel

Når databasen er på plads, NXRG og repository kørende og testen konfigureret, kan følgende køres:

(distributionen 15min.template.jmx kører 15 minutter)

ITI-41 register

tests/aftaler/src/test/jmeter/templates/testplans/nxrg_opret.template.jmx

ITI-61 register

tests/ihe/src/test/jmeter/templates/testplans/nxrg_opret_iti61.template.jmx

ITI-41 replace

iti-61 replace

tests/ihe/src/test/jmeter/templates/testplans/nxrg_replace_iti61.template.jmx

iti-18 og iti-43

tests/aftaler/src/test/jmeter/templates/testplans/nxrg_hent.template.jmx

iti-57 deprecate

tests/ihe/src/test/jmeter/templates/testplans/nxrg_deprecate_iti57.template.jmx




Version

NAS Release

Performance test revision

*.*.*(TBD) eller nyere






'* ' betyder hvilken som helst