= Syn-3 automatische regressie tests = '''Zie http://video.google.com/videoplay?docid=690913745988815288&ei=iuSSScjQCorojgLV1YTJCw&q=syn3+regression voor een demonstratie video.''' en http://video.google.com/videoplay?docid=3226117917363953075&hl=nl In source:trunk/tests vind je het automatische testsysteem voor Syn3. Deze tests kunnen een groot deel van de syn3 functionaliteit automatisch testen. Hierdoor kun je fouten na een update of wijziging gemakkelijk vinden. Er zijn verschillende manieren om tests uit te voeren. We beginnen zo simpel mogelijk, en zoomen steeds verder uit naar een 'ubertest' die alles test. == Benodidigdheden == Je hebt een aantal perlmodules nodig voor webinject.pl. Onder gentoo moest ik het volgende emergen: * libwww-perl * (perl) XML-Simple * (perl) Error == 1 test uitvoeren op geinstalleerde machine == De standaard instellingen qua IP en password van de SCC staan in default.conf. Controleer deze file en kijk of er aanpassingen nodig zijn voor bijvoorbeeld de SMB of VPN settings. '''Pas de file zelf niet aan! '''. In plaats hiervan maak je een local.conf, met daarin de settings die je wilt 'overschrijven'. Hierna voer je de gewenste test uit: {{{ psy /home/psy/syn3release/tests # ./00100_syn3 Running webinject tests: Starting WebInject Engine... ------------------------------------------------------- Test: scctest_tmp.xml - 1 ### scctest: Inloggen op https://10.73.57.2:10000 met password syn3... Verify : "redirect=.https" Verify Negative: "error" Passed Positive Verification Failed Negative Verification Passed HTTP Response Code Verification (not in error range) ....etc... }}} Een test begint met een nummer gevolgd door een naam. Ieder onderdeel van de SCC heeft een eigen testfile. Deze files zijn simpelle shellscripts, kijk in deze files om te leren hoe je zelf een test voor iets schrijft. Als de test succesvol is word dit aangegeven. Bij fouten stopt de test en kun je in de output op het scherm vaak zien wat er mis is. == Alle tests uitvoeren op geinstalleerde machine == Om alle tests in 1x uit te voeren run je het ''./runtests'' script. Deze voert alle tests op volgorde uit en stopt bij problemen. Gebruik het resume parameter om een test te hervatten, nadat je een fout opgelost hebt. = Alle producten automatisch installeren en testen = De regressie test is ook in staat om ALLE producten te installeren en testen. Om dit te doen moet je eerst een speciale CD maken met de 'regres' optie. Deze cd start automatisch door de grub heen, en wijst zichzelf het opgegeven IP toe. (dit moet 10.73.57.2 zijn) == Voorwaarden automatische regressie test == * De default gw van het testnetwerk mot 10.73.57.1 zijn en internet toegang verschaffen. * Je eigen machine moet ook een alias hebben in deze range. * eth0 is geconfigureerd en internet werkt en gaat ook via eth0. De gateway moet 10.73.57.1 zijn, de machine krijgt 10.73.57.2. (leetspeak voor 'test'). Gebruik bridged mode. * eth1 hangt aan een netwerk met dhcp, gebruik NAT mode. * De bios moet eerst van disk proberen te booten en pas DAN van CDROM of usbstick. Ik test altijd met vmware, maar je moet ook kunnen testen met een echte machine waar een regressie install cdrom of stick in zit. == Maken van een regressie test installatie cd == Hier een voorbeeld van een regressie iso: {{{ psy /home/psy/syn3/bootcd # IP=10.73.57.2 ./mkcd 4.1rc3 regres ...... }}} Of als je lokale pakketjes hebt die je wilt regressie testen: {{{ psy /home/psy/syn3/bootcd # cat localkernel.list linux initrd psy /home/psy/syn3/bootcd # IP=10.73.57.2 ./mkcd 4.1rc3 regres localkernel.list ...... }}} Hierna ben je een geconfigureerde vmware of server nodig, de voorwaarden van deze machine staan hieronder. Als de machine voorbereid is run je ''./autoinstall''. Dit zal de install CD (of usbstick) steeds weer opnieuw booten, installeren en testen, voor iedere product key die in autoinstall staat: {{{ psy /home/psy/syn3/tests # ./autoinstall Dit script voert alle tests inclusief installatie uit voor een aantal verschillende producten. Zorg dat je vmware zo geconfigureerd is dat hij je installatie iso file cd als bootcd gebruikt. (meestal latest.iso) Deze CD moet gemaakt zijn met de regres optie. De bootpriority moet staan op 1. harddisk 2. cdrom. Hierna moet je 1x vanaf CD booten en zal de rest vanzelf moeten gaan. DE SERVER OP 10.73.57.2 GAAT DUS GESLOOPT WORDEN NU!! LETOP: Vmware moet je echt stoppen/starten bij een nieuwe cd image. Druk op ENTER om door te gaan ### Testcase: Advanced business server compleet met alle opties, normale installatie. Testcase ID: 1 Key : QVKHT-G0DP0-BN3SV Installmode: advanced_noraid_gpt.xns ### sshtest: Server onbootable maken en rebooten. LETOP: Vmware moet je echt stoppen/starten bij een nieuwe cd image! ..... }}} De eerste keer moet je de machine waarschijnlijk handmatig van CD laten starten, met ESC in de bios. (of de disks even zero-en) Hierna de rest vanzelf gaan. Het rebooten om opnieuw te installeren gaat doordat de machine zn disk automatisch leegmaakt, waarna de bios vanaf cd of usbstick boot. == Wijzigen installatie modus == Wijzigignen maak je in je local.conf (deze bestaat standaard niet): {{{ psy /home/psy/syn3/tests # cat local.conf INSTALL_MODE="advanced_noraid_gpt.xns" }}} Op deze manier word de server geinstalled met de advanced mode, zonder software raid en met GPT partities. = Installer handeling 'opnemen' = De muis en keyboard bewegingen worden opgenomen en afgespeeld met Xnee. Er is een handig script in de tests directory om nieuwe opnamen te maken: {{{ psy /home/psy/syn3/tests # ./Xrecord advanced_noraid.xns Recording....press ctrl-C to end @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 6f:eb:59:87:a6:34:db:8b:21:92:a3:4c:5d:f0:b0:62. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:1 Password authentication is disabled to avoid man-in-the-middle attacks. Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks. ---> xnee_find_option_entry_impl .... }}} Er word naar de reeds actieve regressie installer geconnect en vanaf dit moment worden de handelingen opgenomen, todat je ctrl-c doet in deze terminal. = Update pad testen = Als je wil weten of een bepaalde serie updates goed werken ben je een server nodig die reeds geinstalleerd is. Deze machine moet de standaard test instellingen hebben. (zie hierboven) Hierna voer je handmatig alle updates uit en start je ./runtests om te kijken of alles (nog) goed werkt. = Testen maken of wijzigen = Let op de volgende dingen: * Test altijd beide situaties. (voorbeeld: is het WEL schrijfbaar...verander settings...is het NIET schrijfbaar) * Verify altijd zo veel mogelijk teksten. (errors, ok meldingen etc) * Zorg dat je test backwards compatible blijft als je hem wijzigd. Dit is bijvoorbeeld bij de smb tests het geval. (word op zowel de oude als nieuwe tekst gecontroleerd) * Zorg dat de test iederkeer opnieuw uitgevoerd kan worden. Hiervoor is het soms nodig om zooi te verwijderen of opnieuw ./_maketestusers te runnen. * Gebruik een firefox extention om de http requests/posts uit te lezen. bijvoorbeeld '''HttpFox'''.