Versions Compared

Key

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

...

Databasemodellen styres ved hjælp af Liquibase. Det betyder at når der skal laves ændringer til databasemodellen, så må man ikke rette i de eksisterende skemafiler. I stedet skal der laves nye filer der beskriver ændringerne.

NXRG udgiver sine database scripts i et liquibase docker image: nxrg-liquibase. Ønsker man at starte NXRG fra et docker image, kan man med fordel anvende det tilhørende liquibase image, til at få lagt den tilhørende database på en mariadatabase.

Skemaændringer

Skal der tilføjes f.eks. en ny kolonne eller en ny tabel skal nedenstående gøres.

...

  1. Der oprettes en ny fil i folderen compose/configuration/database/test. Filen skal navngives liquibase-changelog-test-x.y.z.xml hvor x, y og z er det versionsnummer du forventer at release komponenten som. Filen skal beskrive ændringen der skal laves. Hvis man avender liquibase SQL syntaxen får man typisk automatisk "rollback" med. Man kan også referere til rå SQL filer.
  2. Filen fra punk 1 tilføjes compose/database/liquibase-changelog-test.xml
  3. Done

 Adgang til database script

NXRG udgiver sine database scripts i et liquibase docker image: nxrg-liquibase. Ønsker man at starte NXRG fra et docker image, kan man med fordel anvende det tilhørende liquibase image, til at få lagt den tilhørende database på en mariadatabase.


Eksempel på anvendelse vha. docker compose:

Code Block
collapsetrue
networks:
  nsp_net:
    external: true
  nxrg_net:  

volumes:
  shared-data-db:

services:
  mysql-nxrg:
    image: mariadb:10.3.16
    networks:
      - nxrg_net
    environment:
      - MYSQL_ROOT_PASSWORD=rootroot
      - MYSQL_DATABASE=nxrg
      - MYSQL_USER=nxrg
      - MYSQL_PASSWORD=nxrg
    ports:
      - "3306:3306"
    healthcheck:
      test: "/usr/bin/mysql --user=$$MYSQL_USER --password=$$MYSQL_PASSWORD $$MYSQL_DATABASE --execute \"SELECT count(table_name) > 0 FROM information_schema.tables;\""
      start_period: 5s
      interval: 2s
      timeout: 10s
      retries: 10

  nxrg-liquibase:
    image: nxrg-liquibase:latest
    depends_on:
      mysql-nxrg:
        condition: service_healthy
    networks:
      - nxrg_net
    command: >
      --defaultsFile /liquibase/configuration/liquibase.properties update

Når ovenstående docker-compose fil startes op, startes en mariadb og efterfølgende vil liquibase opdatere med med NXRG database script (NB. eksemplet ovenfor er foreløbigt da nxrg-liquibase image ikke er publiceret endnu.

Migrering

Kildekoden, som håndterede migreringen fra OpenText registyr, samt dets hjælpe værktøjer til kontrol af migreringen (også benævnt: Migreringstool, Migreringsverifikationstool, Replaytool og Datareperationstool), er taget ud af svn i revision r10379.

Felt migrering

NXRG har sin egen service til migrering af eksisterende metadata til søgbare felter. Detaljerne er beskrevet i "NXRG - driftvejledning til felt migrering" om, hvordan dette køres.

Source koden består af 3 klasser, med følgende formål:

  1. ComplexFieldMigration: har ansvaret for håndtering af fieldMigrationStatus
  2. ComplexDocumentEntryFieldMigration: har ansvar for håndtering af documentEntry
  3. AddRepositoryUniqueId: har ansvar for håndtering af migrering af det specifikke felt. Her RepositoryUniqueId.
  4. Et sql script der i første version opretter fieldmigrationstatus og eftefølgende tilføjer en record per migrering

Skal denne funktionalitet udvides med nye felter, gøres det på følgende måde:

  • Er der tale om et felt, der logisk hører til på documentEntry:
    • der laves en ny klasse i stil med AddRepositoryUniqueId, som på samme vis, nedarver fra ComplexDocumentEntryFieldMigration
  • Er der tale om et felt, der logisk hører til på assocation eller  submissionset:
    • der laves en ny klasse i stil med ComplexDocumentEntryFieldMigration, som håndterer f.eks. association istedet.
    • en ny klasse i stil med AddRepositoryUniqueId, som nedarver fra den nye klasse istedet for ComplexDocumentEntryFieldMigration
  • Der oprettes et sql script, der indsætter en record i fieldmigrationstatus

Samtidig med at ovenstående laves, skal også håndtering i selve NXRG laves. Sådan at nye registreringer af dokumenter, selv gemmer feltet som søgbart felt. Drejer det sig om et felt til documentEntry rettes følgende klasser:

  1. DocumentEntryTO
  2. DocumentEntryDaoImpl.createDocumentEntry
  3. XdsObjectMapper.mapDocumentEntry
  4. DocumentEntryDaoImplTest

Reel anvendels af det nye felt, må først ske i en senere version af NXRG, sådan at data grundlaget i de kørende systemer er blevet migreret og data tilgængelig.

Beskrivelse af testsetup

Unittests (JUnit)

...

I det følgende antages at koden er hentet ned fra SVN: https://svn.nspop.dk/svn/components/performance/trunk/  samt at man har docker installeret i sit udviklingsmiljø. JMeter skal også være tilgængelig.

Kildekodens struktur

Kildekoden indeholder også performance test til andre services, men i nedestående er NXRG vigtigste dele trukket frem.



├── modules
    ├── ...
    ├── jmeter-aftaler/src/main
    │                    ├── java/com/arosii/
    │                    │   ├── protocol/ihe/
    │                    │   │    ├── control/gui/
    │                    │   │    │    └── OpretAftaleSamplerGUI
    │                    │   │    ├── sampler
    │                    │   │    │    └── OpretAftaleSampler.java
    │                    │   └── resources/ihe/
    │                    │        └── Messages.java
    │                    └── resources/com/arosii/jmeter/
    │                        ├── protocol/ihe/sampler/
    │                        │    └── persons_nxrg.txt 
    │                        └── resources/aftaler/
    │                             └── messages.properties
    ├── ...

    ├── jmeter-ihe/src/main
    │                    ├── java/com/arosii/
    │                    │   ├── protocol/ihe/
    │                    │   │    ├── control/gui/
    │                    │   │    │    ├── AbstractRegisterDocumentSetSamplerGui.java
    │                    │   │    │    ├── ITI18FindDocumentsByReferenceIdSamplerGui.java

    │                    │   │    │    ├── ITI18SamplerGui.java
    │                    │   │    │    ├── ITI43SamplerGui.java
    │                    │   │    │    ├── ITI57SamplerGUI.java
    │                    │   │    │    └── ITI61SamplerGUI.java
    │                    │   │    ├── sampler
    │                    │   │    │    ├── AbstractIHEDocumentRegistryUpdateSampler.java
    │                    │   │    │    ├── ITI18FindDocumentsByReferenceIdSampler.java
    │                    │   │    │    ├── ITI18Sampler.java
    │                    │   │    │    ├── ITI43Sampler.java
    │                    │   │    │    ├── ITI57Sampler.java
    │                    │   │    │    └── ITI61Sampler.java
    │                    │   └── resources/ihe/
    │                    │        └── Messages.java
    │                    └── resources/com/arosii/jmeter/
    │                        ├── protocol/ihe/sampler/
    │                        │    └── persons_nxrg.txt 
    │                        └── resources/ihe/
    │                             └── messages.properties

    └── ...
├── tests
    ├── aftaler
    |   └── /src/test/jmeter/templates
    |                         ├── distributions
    |                         │   └── 15min.template.jmx
    │                         └── testplans
    |                             ├── nxrg_erstat.template.jmx
    |                             ├── nxrg_hent.template.jmx
    |                             └── nxrg_opret.template.jmx
    ├── ...

    ├── ihe
    |   └── /src/test/jmeter/templates
    |                         ├── distributions
    |                         │   └── 15min.template.jmx
    │                         └── testplans
    |                             ├── nxrg_deprecate_iti57.template.template.jmx
    |                             ├── nxrg_hent_by_reference.template.jmx
    |                             ├── nxrg_opret_iti61.template.template.jmx

    |                             └── nxrg_replace_iti61.template.jmx
    └── ...


...

  • distributioner
  • planer

Versionskontrol

Test versionen styres vha. af revision i trunk. I dokumentet "testvejledning" afsnit performance test angives, hvilken version af performance testen der anvendes med en given version af NXRG.

Udvikling af test

NXRGs  performance test består af ovennævnte java sourcer. Disse vedligeholdes i takt med at NXRG snitflader ændres/udvides og skal performance testes.

...