24.3.2016

foto Petr Bravenec

Petr Bravenec
Twitter: @BravenecPetr
+420 777 566 384
petr.bravenec@hobrasoft.cz

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.

Souhrnné informace o hobrasoft http serveru naleznete na stránce: Naše práce - Http Server pro C++ a Qt

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
Hobrasoft s.r.o. | Kontakt