|
|
# Dokumentace
|
|
|
|
|
|
## Control server API
|
|
|
|
|
|
### Použití v klientech
|
|
|
|
|
|
Dokumentace ke control serveru je napsaná dle specifikace OpenAPI 3.0. Popis API je možné najít v souboru `RMBTControlServer/openapi.yaml`. Pro pohodlné čtení se z toho dá vygenerovat interaktivní HTML, dají se pro to sehnat rozšíření do textových editorů (otestováno VSCode a IntelliJ Idea). Bez instalace se dá v celku pohodlně prohlížet a editovat ve webové aplikaci [Swagger Editor](https://editor.swagger.io/)
|
|
|
|
|
|
Jak spolu jednotlivé části API souvisí je popsáno [zde.](test-control-protocol)
|
|
|
|
|
|
### Použití na serveru
|
|
|
|
|
|
Takto napsaná specifikace se pak na serveru používá na vygenerování modelu na parsování JSONu pomocí knihovny GSON. Generování kódu zajišťuje Gradle a je možné ho ručně vyvolat pomocí `gradle generateSwaggerCode`. Model se generuje do složky `build/`, která by se neměla dostat do gitu. Vygenerovaný kód se proto **nesmí** upravovat, protože změny nebudou perzistentní! Zároveň je žádoucí udržovat OpenAPI specifikaci aktuální a tento systém z ní tak dělá klíčovou část kódu, takže pokud se v ní něco rozbije, nepůjde celý server zkompilovat.
|
|
|
|
|
|
# Relevantní odkazy
|
|
|
|
|
|
* rakouský projekt, na jehož základě stojí NetMetr - [rtr-nettest/open-rmbt](https://github.com/rtr-nettest/open-rmbt)
|
|
|
* testovací server (u nás je to také v tomto repu) - [rtr-nettest/rmbt-server
|
|
|
](https://github.com/rtr-nettest/rmbt-server)
|
|
|
* [dokumentace protokolu pro měření](https://www.netztest.at/doc/)
|
|
|
* [rmbt-client](https://github.com/lwimmer/rmbt-client) používaný na Turrisu
|
|
|
* tahle věc komunikuje s měřícím serverem, nerozumí API, přes které se test domlouvá
|
|
|
* [turris-netmetr-client](https://gitlab.labs.nic.cz/turris/netmetr-client) je wrapper v Pythonu nad binárkou rmbt-clienta
|
|
|
* [websocket client](https://gitlab.labs.nic.cz/websites/netmetr.cz/tree/master/theme/static/js/ws-test) používaný na webu netmetr.cz
|
|
|
|
|
|
# Build
|
|
|
|
|
|
## Dev
|
|
|
|
|
|
V rootu projektového repozitáře je skript `build_servers.sh`. Jeho zavoláním se zkompiluje všechno pro vývojové prostředí. Výsledky tohoto skriptu jsou pak nadále používány při sestavení kontejnerů pro Docker.
|
|
|
|
|
|
S pomocí `docker-compose` je po zkompilování možné vytvořit všechny servery a spustit je. Pro spuštění serverů z čerstvě naklonovaného repozitáře stačí tedy zavolat tuto sekvenci příkazů:
|
|
|
|
|
|
```sh
|
|
|
bash build_servers.sh
|
|
|
docker-compose build
|
|
|
docker-compose up
|
|
|
```
|
|
|
|
|
|
Když se vedle toho paralelně pustí (`dns-proxy-server`)[https://github.com/mageddo/dns-proxy-server], je možné na běžící testovací server přistupovat přes domény `control.netmetr`, `speed.netmetr` a `qos.netmetr`. Konfigurace control serveru s tímto počítá, takže v odpovědích se na tyto domény odkazuje.
|
|
|
|
|
|
## Produkce
|
|
|
|
|
|
* [ControlServer](controlserver_build)
|
|
|
* [MapServer](mapserver_build)
|
|
|
* [TestServer](testserver_run)
|
|
|
* [QoSServer](qosserver_run)
|
|
|
* [StatisticsServer](statisticsserver_build)
|
|
|
|
|
|
## Android klient:
|
|
|
* [Android klient build](android_klient_build) |
|
|
\ No newline at end of file |