Testausyhteenveto. DHT Distributed Hash Table. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Samankaltaiset tiedostot
Määrittelydokumentti. DHT Distributed Hash Table. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

T Testiraportti - järjestelmätestaus

COTOOL dokumentaatio Testausdokumentit

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

T Testiraportti - integraatiotestaus

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausraportti v.1.3

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

Sukupuu -ohjelma. Ossi Väre ( ) Joni Virtanen ( )

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Convergence of messaging

Valppaan asennus- ja käyttöohje

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Action Request System

T Testiraportti - integraatiotestaus

Ylläpitodokumentti Mooan

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Automaattinen yksikkötestaus

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

T Testiraportti TR-3. ETL-työkalu

Testaussuunnitelma. Asdf. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Versio Päiväys Tekijä Kuvaus Tikkanen varsinainen versio

LAATURAPORTTI Iteraatio 1

Lohtu-projekti. Testaussuunnitelma

Projektisuunnitelma. DHT Distributed Hash Table. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. PUSU-ryhmä. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

T Testiraportti TR-2. ETL-työkalu

Testaussuunnitelma Labra

Ohjelmistotuotantoprojekti

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Lohtu-projekti. Testiraportti. Versiohistoria: syklin toteutuksen testit. 1. ajo Virve

Maventa Connector Käyttöohje

Visma Nova Webservice Versio 1.1 /

Ohjelmien testaustyökalut

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria

Loppuraportti. DHT Distributed Hash Table. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Visma Software Oy

Group 2 - Dentego PTH Korvake. Peer Testing Report

Verkkopokerijärjestelmä. Loppuraportti Ryhmä Kanat Ohjelmistotuotantoprojekti, syksy 2008

Järjestelmän kriittisimmille toiminnallisuuksille (listattu alla), toteutetaan 1

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

PC-LAITTEEN TESTAAMINEN

Netemul -ohjelma Tietojenkäsittelyn koulutusohjelma

COTOOL dokumentaatio Testitapaukset

TIETORAKENTEET JA ALGORITMIT

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

PC-LAITTEEN TESTAAMINEN

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Autentikoivan lähtevän postin palvelimen asetukset

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

DOORS 7.1 Test Tracking Toolkit

Käyttöohje. MAITO metadatan hallintatyökalu. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Kuopio Testausraportti Kalenterimoduulin integraatio

Salasanojen turvallinen tallentaminen KeePass ohjelmalla

Kahoot! Kirjautuminen palveluun. Sinikka Leivonen

Opus SMS tekstiviestipalvelu

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

Ennen varmenteen asennusta varmista seuraavat asiat:

XML tehtävien työnkulku

L models. Testisuunnitelma. Ryhmä Rajoitteiset

LINUX-HARJOITUS, MYSQL

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

Green Rock Ltd Johdintie 5, FI OULU, FINLAND Tel info@greenrock.fi

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE:

Tietorakenteet ja algoritmit

Kuopio Testausraportti Asiakkaat-osakokonaisuus

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Figure 1: Projektipäälliköt Juha-Pekka Honkavaara ja Juha Mattila

TESTIRAPORTTI - XMLREADER LUOKKA Virtuaaliyhteisöjen muodostaminen Versio 1.0

Tekstiviestipalvelun rajapintakuvaus

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

UCOT-Sovellusprojekti. Testausraportti

TIEDONKULKU. PROJEKTITYÖ Tik Wclique

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant

Lisenssin hakeminen PTC:n verkkosivun kautta

Pakettisynkronointitestauksen automaatio

TESTIRAPORTTI - JÄRJESTELMÄ, ADMIN Virtuaaliyhteisöjen muodostaminen Versio 1.0

Testidatan generointi

T SEPA - STAATTISET MENETELMÄT Tuomas Tolvanen, 55382U Timo Töyry, 58578B

Määrittelydokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

KServer Etäohjaus Spesifikaatio asiakaspuolen toteutuksille

Simulaattorin asennus- ja käyttöohje

16 IMPROMPTU-RAPORTOINTI HISTORIA-TAULUSTA

Tilastokeskuksen rajapintapalveluiden käyttöönotto ArcGISohjelmistossa

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

Transkriptio:

Testausyhteenveto DHT Distributed Hash Table Helsinki 27.5.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Marko Räihä Risto Saarelma Antti Salonen Tuomas Toivonen Tomi Tukiainen Simo Viitanen Asiakas Jussi Lindgren Johtoryhmä Juha Taina Turjo Tuohiniemi Kotisivu http://www.cs.helsinki.fi/group/dht/ Versiohistoria Versio Päiväys Tehdyt muutokset 1.0 27.5.2004 Luovutettu versio

Sisältö i 1 Yleiskuva 1 2 Järjestelmätestit 2 2.1 Testitulokset................................. 2 2.1.1 dht-create, single node....................... 2 2.1.2 dht-create, multiple nodes..................... 2 2.1.3 dht-fetch, single node........................ 2 2.1.4 dht-fetch, multiple nodes...................... 3 2.1.5 dht-insert, single node....................... 3 2.1.6 dht-insert, multiple nodes..................... 3 2.1.7 dht-join, single node........................ 3 2.1.8 dht-join, multiple nodes...................... 3 2.1.9 dht-leave, single node....................... 3 2.1.10 dht-leave, multiple nodes...................... 3 2.1.11 dht-list, single node......................... 4 2.1.12 dht-list, multiple nodes....................... 4 2.1.13 dht-inserted-drop, single node................... 4 2.1.14 dht-inserted-drop, multiple nodes................. 4 2.1.15 dht-inserted-list, single node.................... 4 3 Yksikkötestit 5 3.1 dht_test................................... 5 3.2 datalayer_test................................ 6 3.3 util_test................................... 7

1 Yleiskuva 1 DHT-projektin testauksessa pyrittiin mahdollisimman kattavaan testien automaatioon. Yksikkötestauksessa käytettiin Extreme Programming -malleissa käytettyjä ohjelmallisia testejä, jotka toteutettiin käyttäen xunit-mallia. Järjestelmätestausta varten laadittiin joukko komentorivityökaluja, joilla oli mahdollista joustavasti testata DHT-ohjelmointirajapinnan eri toiminnallisuuksia. Yksikkötestauksen malli oli toimiva ja käytetty CuTest-työkalu riittävän monipuolinen, mutta silti yksinkertainen käyttää. Aikataulun tiivistyessä loppua kohden jouduttiin yksikkötestausta ja osittaista järjestelmätestausta lomittamaan. Tuloksena osa yksiköiden toiminnallisuudesta testattiin osana järjestelmää sen sijaan, että kaikille yksiköille olisi laadittu kattavat yksikkötestit. Järjestelmätestausta varten laadittiin joukko työkaluja. generate-conf.pl Luo halutun määrän asetustiedostoja. Jokainen tiedosto laaditaan käyttäen samaa pohjaa, gnunet-template.conf. Erillisiä tiedostoja käytetään käynnistettäessä joukko GNUnet-solmuja. Jokaiselle solmulle annetaan samat binäärihakemistot, mutta esimerkiksi portit ja hakemistot ajonaikaiselle datalle. boot-network.pl Käynnistää peer-to-peer -testiverkon eli halutun määrän GNUnet-solmuja käyttäen automaattisesti luotuja asetustiedostoja. stop-network.pl Ajaa alas kaikki testiverkon GNUnet-solmut. distribute-hosts.sh Jakaa kaikkien testiverkon GNUnet-solmujen tunnisteet kaikille muille testiverkon solmuille, jotta verkon solmujen välinen viestintä mahdollistuu. Työkaluista laadittiin kaksi versiota. Toinen versio käynnisti testiverkon solmut saman fyysisen koneen sisällä eri TCP/UDP -porteissa. Työkalujen varianteilla puolestaan voitiin käynnistää testiverkko, jonka jokainen solmu oli erillisessä fyysisessä koneessa. Käytännössä testattessa ajettiin testiverkkoa yhden koneen sisällä. Varsinainen järjestelmätestaus suoritettiin manuaalisesti ajettavilla komentorivityökaluilla, joista jokainen testasi yhtä DHT-ohjelmointirajapinnan toiminnallisuutta (funktiota). Suoritetut testit ja niiden tulokset kirjattiin wikiin. Kehittyneempää järjestelmätestausta varten laadittiin myös prototyyppi skripteistä, joilla komentorivityökaluista olisi voitu muodostaa sekvenssejä. Järjestelmän kokonaisuuden toiminnassa ei kuitenkaan päästy sille tasolle, että automatisoitujen sekvenssien ajamiselle vielä olisi ollut tarvetta. Tämän dokumentin toisessa luvussa listataan ajetut järjestelmätestit ja niiden tulokset. Kolmannessa luvussa puolestaan listataan yksikkötestit ja niiden tulokset.

2 Järjestelmätestit 2 Järjestelmätestit suoritettiin käyttämällä testitarkoituksiin tuotettuja komentorivityökaluja. Jokainen työkalu vastasi yhtä asiakassovelluksille tarkoitetun DHT-ohjelmointirajapinnan funktiota. Komentorivityökalut ja niitä vastaavat funktiot on listattu taulukossa 1. 2.1 Testitulokset 2.1.1 dht-create, single node OK Lokien perusteella uusi taulu luodaan datakerrokselle ja Kademliaan. Lokeissa mainittu taulun tunnistava hash palautetaan asiakassovellukselle. (toivotuo, 20.5.2004) 2.1.2 dht-create, multiple nodes N/A Ei testattu. 2.1.3 dht-fetch, single node ERROR Yritetään hakea paikalliseen tauluun lisättyä avain-arvo -paria. Lokien perusteella pari löytyy datakerroksesta. Client-server ilmaisee luovansa viestin, jossa yksi pari. dht-fetch kuitenkin corettaa ilmeisesti lukiessaan vastausta client-server - protokollan yli. (toivotuo, 20.5.2004) ERROR dht_api::handlefetchresultmsg() - message size is invalid: 17!= 16 (szviitan 20.5.2004) OK Korjattu dht_api.c:stä ja client-server.c:stä useita virheitä ja nyt toimii. (mjraiha 24.5.2204) Komentirivityökalu Funktio dht-create.c create() dht-join.c join() dht-leave.c leave() dht-list.c listtables () dht-insert.c insert() dht-fetch.c fetch() dht-inserted-drop.c dropinserteddata() dht-inserted-list.c listinserteddata() Taulukko 1: DHT-ohjelmointirajapinnan ja -moduulin testaukseen käytetyt komentorivityökalut ja niiden vastaavuudet ohjelmointirajapinnan funktioihin.

3 2.1.4 dht-fetch, multiple nodes ERROR Ei voi testata ennenkuin insert toimii oikein (szviitan 20.5.2004) 2.1.5 dht-insert, single node OK Ensin luotu taulu (dht-create) ja liitytty siihen (dht-join). dht-insert llä lisätty tauluun foo, bar. Lokien perusteella datakerros tallettaa avain-arvo -parin oikein paikalliseen tietovarastoon. (toivotuo, 20.5.2004) ERROR Jokainen <avain, arvo>-pari pitäisi aina ensin tallettaa verkkoon ja jos se onnistui niin vasta sitten lokaaliin datalayeriin, sillä jos jokainen solmu tallettaa kamat aina ensin omaan datalayeriin niin dht:ssä voi loppujen lopuksi olla yhtä monta arvoa yhdelle avaimelle kuin solmuja verkossa. (arvojen määrä on rajoitettu TableConfigissa) (szviitan 20.5.2004) 2.1.6 dht-insert, multiple nodes ERROR Insert ei lähetä liikennettä verkon yli. (szviitan 20.5.2004) 2.1.7 dht-join, single node OK Taulu luotu ensin dht-create lla. Sitten suoritettu dht-join. Lokien perusteella taulu löytyy Kademliasta. Asiakassovellukselle palautetaan handle liityttyyn tauluun eli käytännössä taulun tunnistava hash. (toivotuo, 20.5.2004) 2.1.8 dht-join, multiple nodes ERROR Toimii muuten hyvin, mutta TableMetaData ja TableConfig ei siirry (szviitan 20.5.2004) 2.1.9 dht-leave, single node OK (Ei kuvailua.) 2.1.10 dht-leave, multiple nodes N/A Ei testattu.

4 2.1.11 dht-list, single node ERROR Luodaan ensin kaksi taulua paikalliseen solmuun. Annetaan sen jälkeen dhtlist. Lokien perusteella taulut löytyvät datakerroksesta ja annetaan client-server - kerrokselle. Vastaukset eivät kuitenkaan ole kunnollisia asiakassovelluksella. Taulujen hashit saadaan ilmeisen ok (oikea määrä ja sisältö), mutta taulujen nimet ovat kuraa ("satunnaisesta"muistiosoitteesta?). (toivotuo, 20.5.2004) OK Pari pientä feelua oli viestin kirjoittamisessa. (ttukiain 23.5.2004) 2.1.12 dht-list, multiple nodes ERROR Kts. yllä oleva virhe. Sata liikkuu nodelta toiselle oikeassa muodossa. clientserver ja dht_api välillä data kuitenkin muuttuu. (szviitan 20.5.2004) 2.1.13 dht-inserted-drop, single node N/A Ei testattu. 2.1.14 dht-inserted-drop, multiple nodes ERROR Poiston pitäisi propagoitua verkkoon. 24H viiveellä. (szviitan 20.5.2004) 2.1.15 dht-inserted-list, single node ERROR Message size is invalid: 55!= 54. (szviitan 20.5.2004) ERROR Korjattu virheitä ja vastaus saadaan. Arvot vain on korruptoituneet. (mjraiha 24.5.2004)

3 Yksikkötestit 5 Yksikkötestit suoritettiin käytten automatisoituja testejä. Työkaluna käytettiin ns. xunitmallia C-kielelle soveltavaa CuTest -työkalua 1. Taulukossa 2 esitetään yhteenveto testien tuloksista. 3.1 dht_test Testaa hajautetun hajautustaulun ylläpitoon käytetyn Kademlia-algoritmin toteutusta. Testitiedosto.../src/dht/module/test/dht_test.c Testiohjelma dht_test Testattu koodi.../src/dht/module/dht.c Tulokset start testing dht doing testdhtcreate done testdhtcreate doing testdhtjoin done testdhtjoin doing testdhtleave doing testdhtinsert done testdhtinsert doing testdhtfetch done testdhtfetch doing testdhttables done testdhttables doing testdhtinserted done testdhtinserted doing testdhtdrop # Results of dht_test:..f...f 1 http://cutest.sourceforge.net/ Testiryväs Testejä Onnistuneita Epäonnistuneita dht_test 8 6 2 datalayer_test 4 4 0 util_test 2 2 0 Taulukko 2: Yhteenveto yksikkötestien tuloksista.

6 There were 2 failures: 1) testdhtleave: test/dht_test.c:124: expected <1> but was <153> 2) testdhtdrop: test/dht_test.c:216: expected <1> but was <153>!!!FAILURES!!! Runs: 8 Passes: 6 Fails: 2 3.2 datalayer_test Testaa hajautettujen hajautustaulujen sisällön tallettamiseen käytetyn datakerroksen toimivuutta. Testitiedosto.../src/dht/module/test/datalayer_test.c Testiohjelma datalayer_test Testattu koodi.../src/dht/module/datalayer.c ja.../src/dht/module/datalaye Tulokset start getsuite testflags flags: 3 flags: 2 flags: 0 flags: 1 test_datalayertablecreation. init store create a table testing names TAULU == TAULU testing hashes 12345 == 12345 iterate past end doassert def doassert set.iterator test_datalayerdatainsertionanditeration. init store create a table

store unit store unit again get iterator iterate to next testing hashes 6A3D0FD084D8FB74F6A06B84F45E2E7BBDD2DBA1 == 6A3D0FD084D iterate past end doassert unit doassert iterator test_datalayerdatainsertionanddeletion. init store create a table store unit store another different unit iterate all units iterate all units again iterate all units and delete them delete unit delete unit iterate past end try get the units after deletion delete table try to search the table... OK (4 tests) 7 3.3 util_test Testaa lähinnä client-server -rajapinnan käyttämien apurutiinien toimivuutta. Testitiedosto.../src/dht/module/test/util_test.c Testiohjelma util_test

8 Testattu koodi.../src/dht/util/networking.c Tulokset doing conversion test 51F4087E0A58C8910CE6A763C9A0723C6B32D763 == 51F4087E0A58C8910CE6A763C9 51F4087E0A58C8910CE6A763C9A0723C6B32D763 == 000000000A58C8910CE6A763C9 free value free key doing equality test # Results of dht_util_test:.. OK (2 tests)