Task #1178
closedHawat Dashboard - zapouzdřit agregační část tak, aby ji bylo možné jednoduše volat i z externího skriptu
0%
Description
Agregace prováděná v pohledu Hawat Dashboard není nijak šikovně zapouzdřená, takže ji není možné jednoduše zavolat z externího skriptu. Ukazuje se, že toto bude potřeba velice brzy, protože by bylo vhodné předpočítat si některé statistiky (poslední den, týden, měsíc, ...).
Related issues
Updated by Jan Mach about 11 years ago
- Status changed from New to In Progress
- Assignee changed from Jan Mach to Radomír Orkáč
- Data::Cache::Folder (source:lib/Data/Cache/Folder.pm a unit test source:tests/unit/t/Data.Cache.Folder.t)
- Mentat::Storage::Mongo::Aggregator (source:lib/Mentat/Storage/Mongo/Aggregator.pm a unit test source:tests/unit/t/Mentat.Storage.Mongo.Aggregator.t)
Třída Data::Cache::Folder se stará o cachování libovolné datové struktury včetně perlovských objektů, umí objekt uložit pod daný klíč, zase ho získat a vyčistit cache (podle nastavené TTL). Ukázka, jak s tím pracovat je klasicky v POD dokumentaci na začátku třídy, nebo se dá mrknout i do unit test skriptu. Tato třída je hotová a asi není potřeba s ní nic dělat, jen to používat.
Třída Mentat::Storage::Mongo::Aggregator se podle naší diskuze bude starat o získání dat pro vygenerování dashboardu pro dané podmínky a je na ní, jak to udělá. Pokud máte lepší název, sem s ním. Zatím jsem si nelámal hlavu ani s názvem metody pro získání těch dat, aby to umělo dělat obecné agregace, nazval jsem to velice specificky get_dashboard_data(). Základní implementaci už jsem v podstatě udělal (stačí přidat nějakou čistku a konverze přijatých argumentů) a vše, co jsem mohl, jsem nachystal. Je tedy potřeba doplnit samotnou agregaci do privátní metody _get_dashboard_data() (stejnej název, jen podtržítko na začátku). Je nachystanej i unit test script, aby se to dalo jednoduše testovat a ladit. Obě třídy zatím jsou jen v gitu.
Unit test skript se dá jednoduše spustit následujícím způsobem
cd .../tests/unit/ ./test Storage::Aggregator # Klasicka verze ./test -v 1 Storage::Aggregator # Ukecana verze
Updated by Jan Mach almost 11 years ago
Nachystal jsem třídu a unit test pro zapouzdření generování obrázků a tabulek: source:lib/Mentat/Stats/Dashboard.pm a source:tests/unit/t/Mentat.Stats.Dashboard.t. Navrhuji dát do této třídy jak generování tabulek, tak obrázků, z určitého úhlu pohledu mi to přijde jako jedna a ta samá věc, prostě jedna statistika, pouze jiný úhel pohledu a dvě třídy by to v tuto chvíli zbutečně komplikovaly. Míč je tedy zase u Radka na hřišti.
Updated by Pavel Kácha almost 11 years ago
Rozděleno do Mentat::Storage::Mongo::Aggregator a Mentat::Stats::Dashboard.
- buď by Aggregator neměl být součástí Dashboardu, ale volající by si měl postavit obě instance a ručně předat data z jedné do druhé
- nebo by součástí měl být, ale navenek by měl být volán jen Dashboard a volající by o Aggregatoru vůbec neměl vědět
Updated by Pavel Kácha almost 11 years ago
Připravit tedy i volající cronový skript.
Updated by Radomír Orkáč almost 11 years ago
- Status changed from In Progress to Feedback
Script pro crona udelan prototypes/mentat_cron.pl a otestovan dnes volanim z cronu v 9:58:
# ls -al /var/mentat/cache/ total 1116 drwxrwxrwx 2 root root 4096 Oct 21 09:58 . drwxr-xr-x 5 root root 4096 Sep 4 18:07 .. -rw-r--r-- 1 www-data www-data 145 Oct 21 09:58 1172b6f6a46a313946e8a90113f89ca6-analyzer-pie.bin -rw-r--r-- 1 www-data www-data 11441 Oct 21 09:58 1172b6f6a46a313946e8a90113f89ca6.bin -rw-r--r-- 1 www-data www-data 272 Oct 21 09:58 1172b6f6a46a313946e8a90113f89ca6-class-pie.bin -rw-r--r-- 1 www-data www-data 177140 Oct 21 09:58 1172b6f6a46a313946e8a90113f89ca6-source-pie.bin -rw-r--r-- 1 www-data www-data 9593 Oct 21 09:58 1172b6f6a46a313946e8a90113f89ca6-target-pie.bin -rw-r--r-- 1 www-data www-data 2762 Oct 21 09:58 2e4bb0e0225ecc9c68a02a690fe3d320.bin -rw-r--r-- 1 www-data www-data 145 Oct 21 09:58 55cda6b6d94a5fa0719fda3ca1b0ca83-analyzer-pie.bin -rw-r--r-- 1 www-data www-data 11254 Oct 21 09:58 55cda6b6d94a5fa0719fda3ca1b0ca83.bin -rw-r--r-- 1 www-data www-data 272 Oct 21 09:58 55cda6b6d94a5fa0719fda3ca1b0ca83-class-pie.bin -rw-r--r-- 1 www-data www-data 177140 Oct 21 09:58 55cda6b6d94a5fa0719fda3ca1b0ca83-source-pie.bin -rw-r--r-- 1 www-data www-data 9593 Oct 21 09:58 55cda6b6d94a5fa0719fda3ca1b0ca83-target-pie.bin -rw-r--r-- 1 www-data www-data 145 Oct 21 09:58 6f88a4adccd8c581c598fbb872595272-analyzer-pie.bin -rw-r--r-- 1 www-data www-data 11181 Oct 21 09:58 6f88a4adccd8c581c598fbb872595272.bin -rw-r--r-- 1 www-data www-data 272 Oct 21 09:58 6f88a4adccd8c581c598fbb872595272-class-pie.bin -rw-r--r-- 1 www-data www-data 177140 Oct 21 09:58 6f88a4adccd8c581c598fbb872595272-source-pie.bin -rw-r--r-- 1 www-data www-data 9593 Oct 21 09:58 6f88a4adccd8c581c598fbb872595272-target-pie.bin -rw-r--r-- 1 www-data www-data 145 Oct 21 09:58 75366b6ad0bca77f707a23477dbfe530-analyzer-pie.bin -rw-r--r-- 1 www-data www-data 11162 Oct 21 09:58 75366b6ad0bca77f707a23477dbfe530.bin -rw-r--r-- 1 www-data www-data 272 Oct 21 09:58 75366b6ad0bca77f707a23477dbfe530-class-pie.bin -rw-r--r-- 1 www-data www-data 177140 Oct 21 09:58 75366b6ad0bca77f707a23477dbfe530-source-pie.bin -rw-r--r-- 1 www-data www-data 9593 Oct 21 09:58 75366b6ad0bca77f707a23477dbfe530-target-pie.bin -rw-r--r-- 1 www-data www-data 138 Oct 21 09:58 784b69b11f0066181e588757336aa230-analyzer-pie.bin -rw-r--r-- 1 www-data www-data 10998 Oct 21 09:58 784b69b11f0066181e588757336aa230.bin -rw-r--r-- 1 www-data www-data 224 Oct 21 09:58 784b69b11f0066181e588757336aa230-class-pie.bin -rw-r--r-- 1 www-data www-data 25809 Oct 21 09:58 784b69b11f0066181e588757336aa230-source-pie.bin -rw-r--r-- 1 www-data www-data 8837 Oct 21 09:58 784b69b11f0066181e588757336aa230-target-pie.bin -rw-r--r-- 1 www-data www-data 2764 Oct 21 09:58 ba4e991c91671b45f4489697df55adfb.bin -rw-r--r-- 1 www-data www-data 145 Oct 21 09:58 e1d06c316732181142e41a75f0724350-analyzer-pie.bin -rw-r--r-- 1 www-data www-data 11179 Oct 21 09:58 e1d06c316732181142e41a75f0724350.bin -rw-r--r-- 1 www-data www-data 272 Oct 21 09:58 e1d06c316732181142e41a75f0724350-class-pie.bin -rw-r--r-- 1 www-data www-data 177140 Oct 21 09:58 e1d06c316732181142e41a75f0724350-source-pie.bin -rw-r--r-- 1 www-data www-data 9593 Oct 21 09:58 e1d06c316732181142e41a75f0724350-target-pie.bin
Updated by Pavel Kácha almost 11 years ago
Přesunout finální verzi do mentat/scripts a hodit úkol na Meka - nakonfiguruje na ostrém.
Updated by Radomír Orkáč almost 11 years ago
- Status changed from Feedback to In Progress
Cron skript je nutne jeste upravit, aby tam byly spravne cesty ke knihovnam - neni to tedy dodelane, skript funguje pouze na testovaci. Na ostrem jsem cron skript spustil rucne z vhodne cesty ke knihovnam.
Dale je potreba zkontrolovat, zda je mozne osetrit dane warningy a co za data z monga je zpusobuje.
From: 2013-08-21 01:00:00, To: 2013-11-19 00:00:00 Use of uninitialized value $value in length at /usr/local/mentat/lib/Mentat/Storage/Mongo/Aggregator.pm line 1361. Use of uninitialized value $value in concatenation (.) or string at /usr/local/mentat/lib/Mentat/Storage/Mongo/Aggregator.pm line 1362. Use of uninitialized value $value in length at /usr/local/mentat/lib/Mentat/Storage/Mongo/Aggregator.pm line 1361. Use of uninitialized value $value in concatenation (.) or string at /usr/local/mentat/lib/Mentat/Storage/Mongo/Aggregator.pm line 1362.
Updated by Radomír Orkáč almost 11 years ago
Komunikace s Mekem:
11-19 14:09 r-> Rekni, odkud muzu testovat presunuty cron skript a ja si to proverim.. 11-19 14:09 r-> Pak hned smazu /usr/local/mentat 11-19 14:17 <== uz jsem psal, ten cron script je v /etc/mentat/scripts 11-19 14:19 r-> oki, ja to poresim 11-19 14:19 r-> diky 11-19 14:19 <== resp. v /etc/cron.d je symlink na /etc/mentat/scripts/cron_hawat-precache, coz je cron job, ktery vola /etc/mentat/scripts/hawat-precache 11-19 14:19 r-> jj, diky 11-19 14:19 <== ja diky
Updated by Pavel Kácha almost 11 years ago
- Status changed from In Progress to Feedback
- Tj. chybí opravit načítání knihoven (cesty?). Mek prý takové skripty má, použít jejich přístup.
- A vyřešit warning - pravděpodobně způsobují nějaká data, ale i tak by mělo být ošetřeno v kódu.
Updated by Radomír Orkáč over 10 years ago
- Status changed from Feedback to In Progress
Opraveno:
A vyřešit warning - pravděpodobně způsobují nějaká data, ale i tak by mělo být ošetřeno v kódu. Use of uninitialized value $value in numeric gt (>) at /home/mentat/mentat/lib/Mentat/Storage/Mongo/Aggregator.pm line 1406.
Opraveno, ale je potreba se s Mekem domluvit na rozdilu mezi dev a produkcnim. Staci totiz zakomentovat:
#use Cwd qw(abs_path); #use FindBin; #use lib (abs_path("$FindBin::Bin/../lib") =~ m{^(/.*)$})[0];
Chybí opravit načítání knihoven (cesty?). Mek prý takové skripty má, použít jejich přístup.
Updated by Pavel Kácha over 10 years ago
- Status changed from In Progress to Closed