MONITOR

Aplikace MONITOR umožňuje opakovaně provádět definované testy a monitorovat tak běh aplikací, odezvy, obsahy datových tabulek apod. Výsledky testů jsou zobrazeny v uživatelském rozhraní a nebo rozeslány emaily. Testy lze jednoduše spravovat bez nutnosti reinstalace nebo restartu aplikace.

TESTY

Standardní testy

Základem testu je skript, který test provádí a zároveň vyhodnocuje výsledek. Skripty jsou zapsány v jazyce Groovy:

  • Groovy je objektově orientovaný programovací jazyk pro platformu Java.
  • Jde o alternativu k programovacímu jazyku Java. Můžeme se na něj dívat jako na skriptovací jazyk pro javovskou platformu. Inspiraci čerpal z jazyků Python, Ruby, Perl a Smalltalk.
  • Využívá výhody objektového programování, ale zároveň poskytuje zjednodušenou „skriptovací“ syntaxi, která umí zabalit a rozbalit často opakované části kódu. Jedním z jeho cílů je redukovat „povinný“ kód a zjednodušit tak tvorbu webových, databázových či desktopových aplikací. Kompilace je prováděna přímo do „bytecode“, takže jej můžeme použít všude tam, kde funguje Java.
Stavy

Testy mohou skončit jedním z těchto stavů:

  • OK
  • WARNING
  • ERROR
  • TIMEOUT
Parametry

K testům lze nadefinovat libovolné parametry. Ty mohou být vstupní, výstupní nebo bez omezení. S jejich hodnotami lze pracovat nejen z Groovy skriptu. Tímto odpadá nutnost vytváření několika nadbytečných testů lišících se jen maličkostmi.

Parametry lze také označit jako šifrované a tím docílit ukládání hodnot v šifrované formě nebo zobrazení jen uživatelům s rolí administrátora. Lze toho využít například pro různorodé přihlašovací údaje.

Zprávy

K testům lze také přidat přednastavené výstupní zprávy, které podporují vkládání proměnných (například parametrů). Z Groovy skriptu stačí nastavit jméno výsledné zprávy a následně aplikace použije její text pro výsledný souhrn.

U jednoduchých testů lze nastavit výchozí zprávu podle statusu. Např.: jedna zpráva pro status „OK“ a druhá pro „ERROR“.

Rozvrh

K testům lze libovolně přidávat rozvrhy spouštění. Každý rozvrh může mít kromě časových údajů i různé hodnoty parametrů.

V rozvrhu lze nastavovat:

  • Zpoždění – pro odstupňování většího množství testů kvůli momentové zátěži
  • Opakovat za – jak často se test opakuje
  • Vlastní časování (Start čas, Konec čas) – omezení běhu testu od – do. Pokud není nastaveno, použije se globální nastavení v konfiguraci monitoru.
  • Povolen – zda je rozvrh aktivní
  • Parametry a jejich hodnoty

Testy se provádí jen v „pracovní“ dny a ty je možné nastavit v kalendáři viz. dále kapitola Uživatelské rozhraní – Plánovač

Externí testy

Externí testy se definují podobně jako standardní testy, jen neobsahují skript a nespouští se přímo v aplikaci. Data se do aplikace průběžně přenáší z libovolného externího systému a následně se vyhodnocují jako proběhlé testy. Tím lze dosáhnout jednoduché a přehledné kontroly nad aplikacemi a procesy. Lze u nich nastavit většinu atributů, které existují u standardních testů (log, zprávy, parametry, …).

Možnosti přenosu dat:

  • zápisem do databáze – do určených tabulek lze zapisovat za běhu i při vypnuté aplikaci. Data se periodicky zpracovávají a následně se zobrazí v rozhraní.
  • voláním služby z jiné Java aplikace – přes Spring remoting
  • voláním služby z AS/400
  • přes příkazový řádek, atd..

Psaní testů

Příklady testů

Díky jazyku Groovy lze připravit téměř jakýkoliv skript – např.:

  • volaní webové služby nebo služby SMTP serveru a test response code či doby odezvy
  • vyhodnocení počtu databázových záznamů („očekávané“ přírůstky denních dat nebo importů apod.)
  • porovnání záznamů mezi databázovými tabulkami (např. datumy či jiné hodnoty)
  • analýza logových souborů (hledání textu chyby nebo jiných definovaných řetězců)
  • …obecně může může skript provést libovolný SQL příkaz, zaslat email apod.

Příklad testu, který dle response code vyhodnocuje zda uvedená aplikace běží a v případě, že ne, posílá email:

String web = "http://10.144.2.85:8080/cz.aegis.isir.webapp-ISIR-3.2.0.2.9/";
url = new URL(web);
conn = url.openConnection();
conn.connect();
responseCode = conn.getResponseCode();
if (responseCode == 200) {
   out.println("OK");
} else {
   mail.send(
"support@test-banka.cz",
"AEGIS monitor - Test Response Code aplikace ISIR",
"Nepodařilo se připojit k aplikaci ISIR.");
   err.println("ISIR is not available");
   return ERROR;
}

Rozvinutý test s použitím zpráv a parametrů:

if (parameters['timeout'] == null) {
   parameters['timeout'] = 5000
}
if (parameters['expectedCode'] == null) {
   parameters['expectedCode'] = 200
}

def url = new URL(parameters['url'])
conn = url.openConnection()
conn.setConnectTimeout(parameters['timeout'] as int)

try {
   conn.connect()
} catch (SocketTimeoutException e) {
   return TIMEOUT
} catch (UnknownHostException e) {
   e.printStackTrace(err)
   return new TestResult(ERROR).messageType("unknown")
}
code = conn.getResponseCode()

if (code != parameters['expectedCode'] as int) {
   parameters['responseCode'] = code
   return new TestResult(ERROR).messageType("invalid response")
}

out.println("OK")
Proměnné

Do groovy skriptu jsou automaticky vloženy následující proměnné:

  • parameters – mapa key:value parametrů testu
  • out, err – PrintStream pro zápis průběhu/logu testu
  • noOfResults – počítadlo s libovolným využitím
  • duration – zápisem lze nastavit skutečnou délku trvání testu
  • timeout – převzat z definice testu
  • mail – rozhraní pro odesílání emailů
Návratová hodnota

Test je možné ukončit těmito způsoby:

  • vrácením výsledného statusu
  • vrácením instance TestResult
  • vyhozením vyjímky
  • přirozeným ukončením – nastaví se status OK


UŽIVATELSKÉ ROZHRANÍ

Uživatelské rozhraní je rozděleno do záložek:

  • Přehled – základní přehled o testech
  • Testy – definice testů
  • Plánovač – plánovač/kalendář
  • Indexy – manažer databázových indexů
  • Uživatelé – správa uživatelů aplikace Monitor

Záložka Přehled

Záložka Přehled zobrazuje dva seznamy:

  • Přehled  – přehled všech testů, jejich poslední běh, čas a počet po sobě jdoucích selhání
  • Instance – přehled všech instancí testů jak se spouští dle definice

Řádky s chybou jsou podbarveny červeně, s varováním oranžově.

Poklepáním na jednu z instancí lze otevřít zobrazení detailů:


Záložka Testy

Záložka Testy zobrazuje seznam definic jednotlivých testů a umožňuje test přidat / změnit / smazat:

  • Editace / přidání testu:

  • Editace rozvrhu testu


Záložka Plánovač 

Na záložce Plánovač je možné definovat pracovní / nepracovní dny (defaultně jsou pracovní dny označeny pondělí – pátek):


Záložka Indexy

Určeno pro správu indexů databáze.

Vlastnosti:

  • stromové procházení databáze + plná filtrace
  • počítadla indexů
  • zobrazení navrhovaných indexů DB advisorem
  • konfigurovatelný sběr dat
  • generování SQL příkazů


Záložka Uživatelé 

Na záložce Uživatelé je možné definovat uživatele aplikace Monitor a nastavovat jejich přístupová práva (role):

  • Seznam uživatelů a editace:

Role v monitoru
  • Základní (zobrazení přehledu a výsledků, pouze čtení)
  • Administrátor (plný přístup k aplikaci)
  • Security Administrátor (přístup k administraci uživatelů)