Project

General

Profile

Actions

Task #1178

closed

Hawat Dashboard - zapouzdřit agregační část tak, aby ji bylo možné jednoduše volat i z externího skriptu

Added by Jan Mach over 10 years ago. Updated about 10 years ago.

Status:
Closed
Priority:
High
Category:
Development - GUI
Target version:
Start date:
09/01/2013
Due date:
% Done:

0%

Estimated time:
To be discussed:

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

Related to Mentat - Feature #1181: Overview: Kešování výsledků/obrázkůClosedRadomír Orkáč09/02/201309/08/2013

Actions
Actions #1

Updated by Jan Mach over 10 years ago

  • Status changed from New to In Progress
  • Assignee changed from Jan Mach to Radomír Orkáč
Po naší společné domluvě jsem Radkovi nachystal následující třídy:
  1. Data::Cache::Folder (source:lib/Data/Cache/Folder.pm a unit test source:tests/unit/t/Data.Cache.Folder.t)
  2. 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

Actions #2

Updated by Jan Mach over 10 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.

Actions #3

Updated by Pavel Kácha over 10 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
Actions #4

Updated by Pavel Kácha over 10 years ago

Připravit tedy i volající cronový skript.

Actions #5

Updated by Pavel Kácha over 10 years ago

  • Priority changed from Normal to High
Actions #6

Updated by Radomír Orkáč over 10 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

Actions #7

Updated by Pavel Kácha over 10 years ago

Přesunout finální verzi do mentat/scripts a hodit úkol na Meka - nakonfiguruje na ostrém.

Actions #8

Updated by Radomír Orkáč over 10 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.

Actions #9

Updated by Radomír Orkáč over 10 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

Actions #10

Updated by Pavel Kácha over 10 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.
Actions #11

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.

Actions #12

Updated by Pavel Kácha about 10 years ago

  • Status changed from In Progress to Closed
Actions

Also available in: Atom PDF