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ů)