24.3.2016
Náš webový server pro C++ a Qt už se používá v několika různých
projektech. Abychom měli větší jistotu, že náš webový server
bude fungovat tak jak má, napsali jsme pro něj základní testy.
Odkazy
HTTP server pro C++ a Qt - původní zápisek v blogu
Implementace univerzálního API pro komunikaci mezi serverem a aplikací
HTML5 proud událostí
Koukněte se, jak to běhá
Dokumentace
Download
Změny
- Podpora pro Qt5. Server je otestovaný jak s verzí knihovny Qt5, tak Qt4.
- Vyhozená cache statických souborů
- Opravená chyba v Request::UrlDecode()
- U hlaviček HTTP protokolu nyní nezáleží na velikosti písmen
- Úpravy potřebné pro fungování ve Windows
- Ošetřená rekurze v include shtml souborech
- Doplněné testy
Poznámka ke cache
Součástí statického kontroléru byla cache. Během testů jsme v kódu objevili
malou nedomyšlenost, kvůli které cache prakticky nefungovala a nijak
neurychlovala činnost serveru. Navíc význam cache se nám zdá sporný - soubor je
uložen jednak v systémové cache, tak i v cache http serveru. V počítači je tak
soubor umístěný v paměti hned dvakrát a zabírá zbytečně místo pro případné jiné
soubory. Navíc celý http server je určený pro embedded zařízení, kde není rychlost
servírování statických souborů podstatná. Rozhodli jsme se proto cache
nepodporovat a kód pro cache jsme ze serveru vyhodili.
Testy
Co je testováno:
Testů je momentálně něco málo přes dvacet. Součástí každého testu je několik
ověřovaných kritérií, celkový počet testovaných kriterií je přes 350.
- Defaultní hodnoty nastavení
- Změna parametrů nastavení
- Funkce Request::UrlDecode()
- Změna parametrů HttpCookie, formát hlavičky
- Správné vytváření serveru na IPv4 (ip adresa a port)
- Správné vytváření serveru na IPv6 (ip adresa a port)
- Servírování statických souborů metodou GET
- Servírování statických souborů - chyba 404
- Servírování SHTML souborů - vkládání souborů do sebe
- Předávání URL parametrů metodou GET
- Předávání URL parametrů při použití POST
- Předávání Cookie z klienta na serveru
- Upload souborů na server
- Upload souborů na server - různá velikost písma v hlavičkách
- Předávání Cookie ze serveru na klienta
- Předávání hlaviček Size, Content-Tzpe,
- Předávání stavových kódů HTTP protokolu (404)
- Přenos chunked požadavků
- Ukládání sessions na serveru
- Nastavení MimeType ve StaticFileController
- Nastavení hlaviček Cache-Control podle nastavení parametrů serveru
- Načítání SSL klíčů a certifikátů při SSL konfiguraci serveru
- Servírování při SSL přenosu
- Předávání a kontrola klientských certifikátů na straně SSL serveru
- Práce se self-signed certifikáty
- Ověřování uživatele na základě SSL certifikátů
- Odmítnutí uživatele na základě podvrženého SSL certifikátu
- Detekce rekurze v shtml souborech
Jak testy spustit
qmake
make
bin/test