T-76.4110 Ohjelmistoprojekti I T-76.4115 Ohjelmistokehitysprojekti I Tekninen Määrittely Versio Päiväys Muokkaaja Kuvaus 0.9 30.11.2005 Tuukka Laakso Kommentoitava versio 1.0 4.12.2005 Tuukka Laakso Palautettava versio
T-76.4110 Ohjelmistoprojekti I 1 Johdanto...3 2 Arkkitehtuuri...4 3 Ilmoitinlaitesimulaattori...5 4 Valpas...6 4.1 Core...6 4.2 Tetraconnection...7 5 Analysaattori...8 2
T-76.4110 Ohjelmistoprojekti I 1 Johdanto Tämän dokumentin tarkoitus on toimia ryhmän Neptune kurssin T-76.4115 Ohjelmistoprojekti I ulkoisena teknisenä spesifikaationa projektissa Valpas. Projekti on alkanut syksyllä 2005 ja jatkuu keväälle 2006. Projekti käsittää kolme iteraatiota (PP, I1, I2). Projektin tarkoituksena on tuottaa prototyyppi hälyttimien tarkkailuun Tetra-verkon yli. Dokumentissa käydään lyhyesti läpi järjestelmän eri osien toiminta 3
2 Arkkitehtuuri T-76.4110 Ohjelmistoprojekti I Projekti voidaan jakaa kolmeen erilliseen osaan, jotka ovat: ilmoitinlaitesimulaattori, Valpas ja lokien analysointityökalu. Näiden osien välistä kommunikaatiota ja riippuvuuksia on kuvattu kuvassa 1. Seuraavissa kappaleissa kuvataan tarkemmin näiden osien toimintaa. Kuva 1 Arkkitehtuuri 4
T-76.4110 Ohjelmistoprojekti I 3 Ilmoitinlaitesimulaattori Ilmoitinlaitesimulaattori on Linuxissa toimiva Java-ohjelma, joka on sarjaportin välityksellä AT-rajapintaa käyttämällä yhteydessä Nokian TETRA-puhelimeen. Puhelin välittää kaikki saamansa viestit simulaattorille. Ilmoitinlaitesimulaattori pystyy simuloimaan sekä paloilmoitinlaitteen että poijun toimintaa. Toimintatila valitaan simulaattoria käynnistettäessä. Simuloidessaan paloilmoitinlaitetta simulaattori seuraa saapuvia viestejä. Linjakyselyyn simulaattori ei reagoi muuten, kuin että kirjaa lokitiedostoon saaneensa viestin. Erilaiset testiviestit simulaattori kirjaa lokiin ja vastaa niihin seuraavasti: Testaa hälytys Simulaattori vastaa yleensä luomalla hälytysviestin. Simulaattori lähettää hälytysviestin puhelimella EPA:lle ja kirjaa lokiin luodun hälytyksen. Satunnaisesti simulaattori simuloi vikatilannetta, eikä lähetä vastaukseksi mitään viestiä. Simulaattori kirjaa luodun vikatilanteen lokiin. Testaa anturit Simulaattori vastaa yleensä luomalla anturihälytysviestin. Simulaattori lähettää anturihälytysviestin puhelimella EPA:lle ja kirjaa lokiin luodun hälytyksen. Satunnaisesti simulaattori simuloi vikatilannetta, eikä lähetä vastaukseksi mitään viestiä. Simulaattori kirjaa luodun vikatilanteen lokiin. Testaa hyvinvointi Simulaattori vastaa yleensä luomalla anturihälytysviestin. Simulaattori lähettää anturihälytysviestin puhelimella EPA:lle ja kirjaa lokiin luodun hälytyksen. Satunnaisesti simulaattori simuloi vikatilannetta, joita tässä tapauksessa on kaksi erilaista. Simulaattori joko lähettää viestin ei toleranssissa puhelimella EPA:lle tai ei lähetä mitään viestiä vastaukseksi. Molemmissa tapauksissa Simulaattori kirjaa luodun vikatilanteen lokiin. Simulaattori luo myös satunnaisesti hälytyksiä. Tällöin simulaattori lähettää hälytysviestin puhelimella EPA:lle ja kirjaa lokiin luodun hälytyksen. Simuloidessaan poijua simulaattori lähettää puhelimella EPA:lle säännöllisesti kaksi viestiä: paikkatietoviestin ja anturihälytysviestin. Simulaattori kirjaa viestien lähetykset lokiin. Satunnaisesti simulaattori viestinlähetyksen sijaan simuloi vikatilannetta ja jättää toisen tai molemmat viesteistä lähettämättä. Lokiin kirjataan myös nämä vikatilannesimuloinnit. Lisäksi satunnaisesti simulaattori lähettää anturihälytysviestin sijaan ei toleranssissa viestin. Tämäkin kirjataan lokiin. Simulaattori myös säännöllisin väliajoin testaa yhteyttään puhelimeen, jotta voidaan selvittää, onko puhelimen AT-rajapinta kaatunut. Jos simulaattori ei saa puhelimeen yhteyttä, se kirjaa tapahtuman lokiin ja jää yrittämään yhteyttä puhelimeen. Näiden toimintojen avulla voidaan lokien analysointityökalulla selvittää, soveltuuko VIRVE palonilmoitinlaitteiden yms. valvontaan. 5
4 Valpas T-76.4110 Ohjelmistoprojekti I 4.1 Core Valppaan toimintalogiikka sijaitsee ydin eli core-paketissa ja se tarjoaa hallintarajapinnat mm. konsolikäyttöliittymälle. Ytimen vastuulla on laitteiden tarkistusten skedulointi, laitteiden statuksen tarkistaminen sekä tapahtumien lokitus. Lisäksi ydin tarjoaa rajapinnan viestilokittajalle sekä myös muidenkin laitteiden statuksia kuuntelevien komponenttien toteuttamiseen. Valpasta ohjataan käyttäen tarkoitusta varten toteutettua komentorivikäyttöliittymää. Käyttöliittymä on RMI:n kautta yhteydessä valppaan hallintarajapintoihin ja sitä ajetaan Valppaasta erillisessä JVM:ssä. Käyttöliittymä tarjoaa joukon yksinkertaisia komentoja, joilla Valpasta voidaan hallita. Valppaan valvomat laitteet on jaettu kahteen eri kategoriaan: passiivisiin (palohälyttimet) ja aktiivisiin (poijut) laitteisiin. Passiivisille laitteille Valpas suorittaa testejä lähettäen niille testausviestejä, joihin laitteet vastaavat omaa statustaan kuvaavalla vastausviestillä (ks. kappale 3). Aktiiviset laitteet puolestaan lähettävät statusviestejä Valppaan tarkistettavaksi. Testejä suoritetaan laitekohtaisesti määritetyn aikavälein sekä passiivisilla laitteilla laitekohtaisen maksimivastausviiveen mukaan. Lisäksi passiivisille laitteille suoritetaan linjatarkastuksia, joilla selvitetään onko valvottavan laitteen TETRA-verkkoon yhteydessä oleva puhelin tms. elossa. Sekä statustesteille että linjatesteille voidaan määrittää maksimivastausviiveet. Statustestillä tämä on laitekohtainen ja linjatarkastuksella kaikille passiivisille laitteille sama. Näin ollen kaikilla yhden laitteen statustesteillä on sama maksimivastausviive. Molempia laitetyyppejä voidaan valvoa automaattisesti ja passiivisia laitteita myös manuaalisesti. Automaattiselle valvonnalle voidaan määrittää joukko testityyppejä joita suoritetaan määritetyin aikavälein. Tyypit jakautuvat linjatestiin ja statustesteihin. Statustestejä ovat hälytystesti, vikatesti ja sensoritesti. Linjatesti suoritetaan implisiittisesti joka laitteelle, statustestit jos näin on määritetty. Aikavälit määritellään asettamalla laitteelle linjantestausaikaväli ja statustesteille luku, joka määrittää kuinka monta linjatestiä suoritetaan jokaisen statustestin välissä. Eri tyyppisiä statustestejä suoritetaan vuorotellen, mutta ydin tarjoaa helpon laajennettavuuden myös monimutkaisemmille järjestyksille. Laitteiden automaattinen valvonta on toteutettu käyttäen Quartzia, joka on avoimen lähdekoodin skedulointikomponentti. Quartzin toiminta perustuu pääasiassa kolmen komponentin varaan. Skeduleri (Scheduler) vuorottaa liipaisimia (Trigger), jotka laukaisevat töitä (Job) suoritettavaksi. Skeduleri ja liipaisimet on persistoitu, jotta niiden tila säilyy jos järjestelmään tulee häiriöitä. Passiivisen laitteen testaustyön liipaisin, aktiivisen laitteen tarkistustyön liipaisin ja viestejä EPA:lta hakeva liipaisin on persistoitu. Muut liipaisimet poistetaan skeduloijasta valppaan käynnistyksen yhteydessä, jotta vältetään turhat hälytykset. Liipaisimien persistoinnilla Valpas saadaan pystyyn nopeammin eikä jokaista työtä tarvitse skeduloida uudestaan. Lisäksi laitteiden tiedot pidetään erillisessä tietokannan taulussa, jota aksessoidaan käyttäen Hibernatea. 6
4.2 Tetraconnection T-76.4110 Ohjelmistoprojekti I Tetraconnection-paketti tarjoaa Valppaalle viestien lähetys- ja vastaanottopalveluita. Tetraconnection muodostaa yhteyden EPAn Web Services rajapintaan ja tarjoaa metodeita viestien lähettämiselle ja vastaanottamiselle. Pakkaus huolehtii itse istunnon ylläpitämisestä lähettämällä tarvittaessa uudelleenkirjautumisviestejä, jos istunto on vanhenemassa tai luo kokonaan uuden istunnon, jos istunto on jostain syystä katkennut, esimerkiksi EPAn kaaduttua. Tetraconnection-pakettia käytetään Valppaan ytimestä, eli core-paketista. Tetraconnection tarjoaa tälle pakkaukselle yksinkertaistetun julkisivuluokan, jonka kautta toiminnallisuuksiin pääsee käsiksi. Vaikkakin tetraconnection ei sinällään ota kantaa lähetettyjen ja vastaanotettujen viestien sisältöön, siellä kuitenkin pidetään huoli, että EPAlle menevät viestit ovat eheitä siten, että kaikki tarvittavat kentät ovat niissä täytettyinä. Jos EPAlle lähetettävässä viestinipussa koitetaan lähettää väärin muodostettuja viestejä, nämä lähetetään takaisin corelle ja vain kriteerit täyttävät viestit lähetetään EPAlle. Vastaanotettujen viestien suhteen ollaan avoimempia. Vaikka kaikki kentät eivät olisikaan täydennettyjä, viestit välitetään kuitenkin corelle asti. Viestien välityksessä noudatetaan siis käytäntöä "be strict on what you send and generous on what you receive". 7
5 Analysaattori T-76.4110 Ohjelmistoprojekti I Analysaattori on Java-ohjelma, joka tarkastelee Valppaan ja simulaattorien lokitiedostoja. Ohjelma laskee lokeihin merkittyjä vikatilanteita ja niiden toipumisaikoja. Lasketut statistiikat esitetään käyttäjälle graafisesti ja numeerisena datana. Analysaattorin ikkuna on jaettu kolmeen osaan: Ylin laatikko kertoo ladattujen lokitiedostojen määrät ja puuttuuko tiedostoja.. Keskimmäiseen tulee graafinen esitys lokeihin merkittyjen linjavikojen määristä ja toipumisajoista pylväsdiagrammina. Oletuksena kukin pylväs kuvaa 30 minuutin mittaista jaksoa. Jakson pituuden muuttamista ei vielä toteutettu käyttöliittymään. Ylempi diagrammi näyttää jakson aikana havaittujen linjavikojen määrän suhteessa kaikkien jakson aikana lähetettyjen viestien määrään. Alempi taas kertoo keskimääräisen toipumisajan kussakin jaksossa havaituille vioille. Punainen palkki tässä diagrammissa tarkoittaa että jaksossa on havaittu vika, josta ei koskaan toivuta. Alin laatikko sisältää numeerista dataa lokeihin merkityistä viesteistä. Numeerinen data sisältää kaikkien lähetettyjen viestien määrän sekä Valppaan että simulaattorien lokitiedostoista, Valppaan kirjaamien vikojen määrän, Valppaan kirjaamien linjavirheiden määrän sekä simulaattorien luomien vikojen määrän. Lisäksi näytetään onnistumisprosentti, joka on lähetettyjen viestien ja linjavikojen suhde sekä todellinen vikaprosentti, joka on Valppaan kirjaamien vikojen, joista on vähennetty simulaattorien luomat viat, ja lähetettyjen viestien suhde. Lokit ladataan analysaattoriin valitsemalla Tiedosto->Avaa. Myös puuttuvia tiedostoja saa ladattua käyttämällä Tiedosto->Avaa komentoa. Jo ladatut tiedostot säilyvät muistissa ja tällä hetkellä ainoa tapa poistaa ne muistista on käynnistää ohjelma uudestaan. Kun kaikki tarvittavat lokit on ladattu, ne saa analysoitua valitsemalla Suorita->Analysoi. 8