Monistettavan VoIP-virtuaalipuhelimen toteutus testiautomaatiorajapinnalla
Poikonen, Jarno (2022)
Poikonen, Jarno
2022
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2022060315326
https://urn.fi/URN:NBN:fi:amk-2022060315326
Tiivistelmä
Työn tilaajalla Bittium Oy:llä oli kiinnostusta kehittää VoIP-virtuaalipuhelin testiautomaation tarpeisiin varsinaisen VoIP-tuotteen tuotekehityksen tukemiseksi. Työn tavoitteena oli toteuttaa virtuaalipuhelin eli softapuhelin, josta voisi helposti luoda uusia instansseja eli ajonaikaisia ohjelmailmentymiä samaan ympäristöön. Lyhyemmin ilmaistuna ohjelma olisi nk. monistettavissa, mikä mahdollistaisi mielivaltaisten testitapausten toteuttamisen yhdellä fyysisellä isäntäkoneella.
Instanssien pitäisi kyetä käyttämään samaa fyysistä äänilaitetta virtuaaliympäristössä ja toimimaan keskenään ilman ongelmia. Lisäksi instansseja tulisi voida käskyttää etänä niin fyysisten kuin virtuaalisten verkkojen yli itsetoteutetulla hallintaohjelmistolla. Täydellisesti onnistuessaan tällä työllä tehostettaisiin VoIP-ohjelmistokehityksen testausta ja fyysisten laskennallisten resurssien käyttöastetta hyödyntämällä virtualisointia.
Työssä perehdyttiin keskeisiin VoIP-standardeihin yksinkertaisen rinnakkaispuhelun muodostuksen osalta sekä PJSIP-projektin kehitysviitekehyksen korkean tason rajapintojen käyttöön. Yllättävästi työ pakotti perehtymään myös Gnu Build Systemin käyttöön PJSIP-projektin dokumentoimattomien ohjelmistoriippuvuuksien selvittämiseksi.
Virtuaaliympäristö työssä luotiin Oracle VM VirtualBox-ohjelmistolla, joka osaltaan toi erikoisia haasteita kehitysversioiden ketterään testaukseen. Virtuaaliverkko muodostui yhdestä kolmeen virtuaalikoneesta, joista yksi toimi aina VoIP-puheluja palvelevana SIP-palvelimena. Softapuhelininstansseja voitiin käyttää myös samalla virtuaalikoneella yhdessä SIP-palvelimen kanssa. Virtuaalikoneissa käytettiin käyttöjärjestelminä suosittuja Linux-jakeluja Ubuntua ja Debiania.
Työn toivottiin etenevän nopeutetusti hyödyntäen SWIG-kielisidontateknologiaa, joka mahdollistaa matalan tason ohjelmointikielellä toteutettujen PJSIP-rajapintojen käskemistä korkean tason ohjelmointikielellä. Valitettavasti SWIG-teknologia osoittautui pikemminkin työtä hidastavaksi tekijäksi, sillä se toi peittävyyttä rajapintoihin integroidussa kehitysympäristössä ja asetti rajauksia vapaudelle, jolla korkean tason ohjelmointikieltä saattoi käyttää. SWIGin käyttö aiheutti myös virheellistä toimintaa SIP- ja RTP-signalointisäikeissä. Käytännössä tämä tarkoitti sitä, että tietyissä säiekonfiguraatioissa softapuhelimia ei voinut hallita, mutta niillä voitiin suorittaa kovakoodattu puhelu. Toisissa säiekonfiguraatioissa softapuhelimia voitiin hallita, mutta niillä ei voitu vastata puheluun. Toteutus on tapahtumien käsittelijöiden toteutuksien osalta identtinen molemmissa säiekonfiguraatioissa ja vihjaa SWIG-kielisidontateknologian ongelmiin. Mikäli säievirhe joskus korjataan, on TrivialSoftPhone-projektin jatkamiselle olemassa tekniset edellytykset.
Instanssien pitäisi kyetä käyttämään samaa fyysistä äänilaitetta virtuaaliympäristössä ja toimimaan keskenään ilman ongelmia. Lisäksi instansseja tulisi voida käskyttää etänä niin fyysisten kuin virtuaalisten verkkojen yli itsetoteutetulla hallintaohjelmistolla. Täydellisesti onnistuessaan tällä työllä tehostettaisiin VoIP-ohjelmistokehityksen testausta ja fyysisten laskennallisten resurssien käyttöastetta hyödyntämällä virtualisointia.
Työssä perehdyttiin keskeisiin VoIP-standardeihin yksinkertaisen rinnakkaispuhelun muodostuksen osalta sekä PJSIP-projektin kehitysviitekehyksen korkean tason rajapintojen käyttöön. Yllättävästi työ pakotti perehtymään myös Gnu Build Systemin käyttöön PJSIP-projektin dokumentoimattomien ohjelmistoriippuvuuksien selvittämiseksi.
Virtuaaliympäristö työssä luotiin Oracle VM VirtualBox-ohjelmistolla, joka osaltaan toi erikoisia haasteita kehitysversioiden ketterään testaukseen. Virtuaaliverkko muodostui yhdestä kolmeen virtuaalikoneesta, joista yksi toimi aina VoIP-puheluja palvelevana SIP-palvelimena. Softapuhelininstansseja voitiin käyttää myös samalla virtuaalikoneella yhdessä SIP-palvelimen kanssa. Virtuaalikoneissa käytettiin käyttöjärjestelminä suosittuja Linux-jakeluja Ubuntua ja Debiania.
Työn toivottiin etenevän nopeutetusti hyödyntäen SWIG-kielisidontateknologiaa, joka mahdollistaa matalan tason ohjelmointikielellä toteutettujen PJSIP-rajapintojen käskemistä korkean tason ohjelmointikielellä. Valitettavasti SWIG-teknologia osoittautui pikemminkin työtä hidastavaksi tekijäksi, sillä se toi peittävyyttä rajapintoihin integroidussa kehitysympäristössä ja asetti rajauksia vapaudelle, jolla korkean tason ohjelmointikieltä saattoi käyttää. SWIGin käyttö aiheutti myös virheellistä toimintaa SIP- ja RTP-signalointisäikeissä. Käytännössä tämä tarkoitti sitä, että tietyissä säiekonfiguraatioissa softapuhelimia ei voinut hallita, mutta niillä voitiin suorittaa kovakoodattu puhelu. Toisissa säiekonfiguraatioissa softapuhelimia voitiin hallita, mutta niillä ei voitu vastata puheluun. Toteutus on tapahtumien käsittelijöiden toteutuksien osalta identtinen molemmissa säiekonfiguraatioissa ja vihjaa SWIG-kielisidontateknologian ongelmiin. Mikäli säievirhe joskus korjataan, on TrivialSoftPhone-projektin jatkamiselle olemassa tekniset edellytykset.