Testing-av-QC1-sjekker.

Tilpasninger som må gjøres først på ny testmaskin

ubuntu bruker:

ssh ubuntu@<mintestmaskin>
sudo apt-get update
sudo apt install emacs
sudo apt install nedit
sudo chmod g+w /usr/share/kvalobs
sudo chown root:kvalobs /usr/share/kvalobs
sudo chown kvalobs:kvalobs /usr/share/kvalobs/metadata
sudo apt install kvalobs-metadata

kvalobs bruker:

ssh -YA kvalobs@<mintestmaskin>
git clone git@gitlab.met.no:obs/kvalobs/kvoss_intern.git
echo "export PGHOST=localhost" >> .bashrc
echo "export METADIR=$HOME/kvoss_intern/kvmeta" >> .bashrc
echo "export PERL5LIB=/usr/lib/kvalobs-metadata/lib/perl" >> .bashrc
. .bashrc

Dokumentasjon og Veiledning.

Oversikt:

A)

Kravspesifikasjon utarbeides.
Ut fra denne lages Algoritme og Test-skjema.
Test-skjemaene ligger på: kvalobs@kvtest-algorithms:~/bin/Dev-Kvalobs-QC1/QC1-Doc/Test-Skjema

B)

3 DB tabeller skal vanligvis ha nye / endrete rader: algorithms, checks, station_param.

C)

Hele Test-systemet ligger på en Virtuell Maskin (VM) der man kan logge seg på fra alle arbeidsstasjoner.
Katalog-strukturen til Test-systemet ser slik ut (eksempel):
Dev-Kvalobs-QC1 --+ QC1-Doc --+ Veiledninger
+ T-QC1-3 --+ QC1-3b ---+ RUN-TIME-TEST
+ Source-Code
+ System-Konsistens
+ Test-Run-kvQabase ---+ Res-10

Framgangsmåte steg for steg:

1) Innlogging på testmaskinen: ssh -YA kvalobs@157.249.169.135

Starter med å lage kildekoden på Source-Code katalogen ( Dev-Kvalobs-QC1/T-QC1-3/QC1-3b/Source-Code )
Ta backup ved hver endring ( kopier det området du jobber i til en annen maskin med samme katalogstruktur)
( Eksempel: myuser@pcxxxx:/disk1/Dev-Kvalobs-QC1/T-QC1-3$ scp -r kvalobs@157.249.169.135:~/bin/Dev-Kvalobs-QC1/T-QC1-3 . )
Lager test-skjema ved navn: (f.Eks. Test-Skjema-QC1-3b-60-20-10-01.ods) som skal passe med det vi skal teste.
Fyll ut kolonnene Test-Update, Antall Timer, Krav. La kolonnene Test, Cfailed (Test), Status stå tomme.

Kildekodens indre logikk kan testes på RUN-TIME-TEST katalogen ( bin/Dev-Kvalobs-QC1/T-QC1-3/QC1-3b/RUN-TIME-TEST )
(Brukes ved behov)
Kildekoden må legges inn i algorithms tabellen i Kvalobsdatabasen. Det gjøres slik:
Gå til katalogen $METADIR: cd $METADIR
Oppdater metadata fra git: git pull
Hvis vi får CONFLICT ( dette betyr konflikt) skal en slette disse filene og deretter gjøre en ny git pull.
Dersom det er filer du jobber med så må de tas vare på utenfor repositoriet og kopieres inn på riktig sted.
Hvis du har en endring, kopierer du den inn her:
( f.eks: scp FREEZE_CHECK.pl kvalobs@xxx:~/kvoss_intern/kvmeta/algorithms$ )
Overfør de nye metadataene til /usr/share/kvalobs/metadata med skriptet: kvinstall_metadata
Innstaller de nye metadatene med: /usr/lib/kvalobs-metadata/bin/run_metadata
Dersom du bare skal installere algoritmene bruk: /usr/lib/kvalobs-metadata/bin/run_algorithm_all

2) Går inn på katalogen System-Konsistens.

Bestemmer hvilke parametre, verdier og tidsoppløsning vi vil bruke i testingen.
I eksemplet her har vi valgt: stationid = 18700 (Blindern), paramid = 211 (TA), tidsperiode: fom 2013-01-01 08 tom 2013-01-02 10.
Etter at oppdatering av kvalobs metadata er kjørt, oppdateres tabellene data, checks og station_param med sql-script som lager nye testdata og metadata.
Eksempel: Gå inn på: kvalobs@xxxx:~/bin/Dev-Kvalobs-QC1/T-QC1-3/QC1-3b/System-Konsistens/ og kjør:
psql -f DELETE-INSERT-Data-QC1-3b-211-60.sql > DELETE-INSERT-Data-QC1-3b-211-60.log
psql -f DELETE-INSERT-Checks-QC1-3b-FREEZE_CHECK-60-10-01.sql > DELETE-INSERT-Checks-QC1-3b-FREEZE_CHECK-60-10-01.log
psql -f DELETE-INSERT-Station_param-QC1-3b-FREEZE_CHECK-60-10-01.sql > DELETE-INSERT-Station_param-QC1-3b-FREEZE_CHECK-60-10-01.log
(Husk å oppdatere disse scriptene ved behov.)

3) Står på samme katalog (System-Konsistens) og kjører: Tabell-Konsistens-QC1-3b.sh (Husk å endre innholdet i shell-scriptet ved behov).

Resultatet kommer på Tabell-Konsistens-QC1-3b.txt (gå gjennom denne resultat-filen og sjekk at alt er i orden med tabellene).
f.eks. må paramid finnes i param tabellen, det må være minst en rad i obs_pgm, signaturene i algorithms og checks-tabellene må stemme.
Om alt er i orden kan man gå til punkt 4.

4) Går til katalogen Test-Run-kvQabase. Her ligger katalogene Res-10, Res-20, Res-30, Res-60. Res står for tidsoppløsning.

Det vil si at vi kjører en testrunde for hver av tidsoppløsningene 10, 20 30 og 60 minutter på hver sin katalog
(Kjører test på de tidsoppløsningene som er relevante for sjekken).

5) Går til den katalogen du skal kjøre på (f.eks. Res-60).

Hvis det er logger / logg-kataloger her, utføres kommandoene:
rm -r testrun.log
rm *.log
Det skal nå ligge 2 viktige filer på denne katalogen:
Test-Run-kvQabase-QC1-3b-211-60.sh ( shell script )
Select-Data-QC1-3b-211-60.sql ( sql script )

Åpner sql scriptet Select-Data-QC1-3b-211-60.sql i en editor ( f.eks. emacs ).
Endre stationid, obstime, paramid, typeid etter behov.
Åpner shell scriptet Test-Run-kvQabase-QC1-3b-211-60.sh i en editor ( f.eks. emacs ).
3 rader gjentas for hvert nytt tidspunkt som kvQabased kjører på:

kvQabased -d kvalobs -p 5432 --station 18700 --obstime '2013-01-01 08:00:00' --typeid 330 --qcx 'QC1-3b-211' --runlogfile kvQabased.log --logdir=testrun.log
cat testrun.log/18700/2013-01-01/log.kl08.330.log > Test-Run-kvQabase-QC1-3b-211-60.log
psql -f Select-Data-QC1-3b-211-60.sql > Select-Data-QC1-3b-211-60.log

Den 1. raden må endres ved behov slik at kvQabase stemmer med testdata-settet og metadataene.
Den 2. raden må endres ved behov slik at checks-loggfilenes navn stemmer med stationid, dato, kl, typeid.
Den 3. raden må endres ved behov slik at sql-scriptets navn og innhold stemmer med stationid, paramid, dato, kl, typeid, tidsoppløsning.
Det samme gjelder for navnene på de store historiske loggfilene.
Om alt stemmer, gå til punkt 6)

6) Kjører shell-scriptet: Test-Run-kvQabase-QC1-3b-211-60.sh

7) Sjekk utfra loggene om alt er kjørt. Går deretter inn på Select-Data-QC1-3b-211-60.log for å fylle ut kolonnene Test, Cfailed (Test), Status.

Sjekk at flaggverdiene i Flag kolonnen Test er lik flaggverdiene i Flag kolonnen Krav i Test-Skjema-QC1-3b-60-20-10-01.ods.
Sjekk også at Cfailed (Test) er fylt ut med QC1-3b-211 når kolonnen Test har høyere verdi enn 1.
Hvis det er avvik mellom Krav og Test eller andre avvik, må feilsøk startes opp, f.eks.:
Sjekk på nytt at alle relevante parametre i alle script stemmer overens.
Se i loggen Select-Data-QC1-3b-211-60.log
Se i loggen Test-Run-kvQabase-QC1-3b-211-60.log
Kildekodens indre logikk kan testes på RUN-TIME-TEST katalogen ( bin/Dev-Kvalobs-QC1/T-QC1-3/QC1-3b/RUN-TIME-TEST )
Sjekk at alle relevante oppdateringer i metadata tabellene (algorithms, checks, station_param mm.) som settes i drift er helt likt med det som er kjørt i test.
Hvis alt stemmer kan den nye sjekken (eller den nye versjonen av sjekken) settes i drift.
F.eks. algoritme: (evn ta backup av gammel versjon på lokal maskin og ta vare på denne backupen i en helt annen katalog på egen maskin). Kopier den aktuelle oppdaterte/nye algoritmen fra testmaskinen. ~/bin/Dev-Kvalobs-QC1/T-QC1-2/T-QC1-2-36/Source-Code over til lokalt git-repository på egen maskin (eks ~/kvoss_intern/kvmeta/algorithms på lokal maskin).
(Stå på egen maskin og ta scp).
Skriv så git commit -m "ønsket beskrivelse" algoritmen.
Gjenta prosessen med evt. oppdatert/ny checks og evt. oppdatert/ny station_param.
Når alt er klart til å settes i drift:
Skriv "git push" fra aktuell katalog. Algoritmen er nå i drifts-git-repository og vil bli lagt inn i databasen ved neste Kvalobs-oppdatering (normalt 11.20 norsk tid hver dag)