From kobe
Jump to: navigation, search

Stahování souboru   ❖

Basic[edit]

V základní verzi nebylo stahování souborů dostatečně robusní a tak docházelo k nedotaženým stavům. Turo situaci mělo zlepšit nový mechanismus, který byl nasazený ve verzi 2.7.33.6

Core[edit]

Konstanty[edit]

Stavy stahování jsou teď nastavovány v průběhu stahování a jsou persistovány až do dalšího testu inegrity. Pak jsou chabové stavy nastavenu na TO_LOAD a je spušteno nový pokus o stažení.

    public static final int TO_LOAD = 0;        // Určeno ke stahování - Modrý mráček
    public static final int LOADING = 1;        // Probíhá stahování - Žluté autíčko
    public static final int CHECKING = 2;       // Kontrola CRC - Oranžové oko
    public static final int UNPACKING = 3;      // Rozbalování ZIP - Karmínová pyramida
    public static final int LOAD_OK = 8;        // Stahování skončilo OK - Zelený checkbox
    public static final int FAIL_MISS = 91;     // Soubor není na serveru - Fialový mráček
    public static final int FAIL_COMP = 92;     // CRC nesouhlasí - Fialový pacman
    public static final int FAIL_UNZIP = 93;    // Unzip nedopadl - Fialová pyramida
    public static final int FAIL_IOEXC = 94;    // Nejde zápis na disk - Fialová smrtka
    public static final int FAIL_UNDEF = 99;    // Neznámá chyba - Fialový otazník
    public static final int UNDEF = 77;         // Neznámý stav - Šedý otazník

Stavy jednotlivých souborů je možné vysledovat na stránce Source load. Každý stav má svoji ikonku. Viz výše.

Test integrity[edit]

Pouští se každých 15 minut a pokud zjistí, že nějaký soubor nebyl stažený, tak se celý proces pustí znovu.

Progres[edit]

Průběh stahonání a rozbalování je sledován a v nastavených intervalech je tento proces logován. Tyto logy jsou také exportovány na Artemis server a zde slouží k zobrazování progresu.

Škálování[edit]

Aby trafic při posílání logů na server nebyl moc rychlý, nastavují se porce procent, které mají být reportovány podle velikosti stahovaného souboru. To se provádí pomocí rutiny getStepper()

	public static int getStepper(String whom, long size) {
		if (VDEBUG) Log.d(TAG, "getStepper for " + whom + " - size: " + size);

		if (size > (20*1000000*8)) return 10;	// >20MB - step 10%
		if (size > (5*1000000*8)) return 25;    // >5MB  - step 25%
		return 50;								// Other - step 50%
	}

Finální hlášení o úspěšném updloadu všech souborů update_done je navíc při svém posílání o 1000ms zpožděn aby se mohl server vždy řádně vyklýrovat

Testování[edit]

Test kabelem[edit]

Má simulovat stav, kdy je nespolehlivá síť.

Příprava[edit]
  • Zařízení musí mít vypnutou a odhlášenou WiFi
  • Zařízení musí být připojené LAN kabelem
Provedení[edit]
  • Do scénáře se nadefinují alespoň tři větší plalisty
  • OnePro se přepne na stránku Source load
  • Zmáčkne se Delete all files - tím se smažou všechny stažené soubory
  • Zmáčkne se Load again
  • V průběhu stahování se vytáhne ze zařízení LAN kabel
  • Počká se až stahovací rutina doběhne až do konce
  • LAN kabel se zase zapojí
  • Nechá se svítit stránka Source load
Test OK[edit]
  • Do 15 minut by se měl spustit test integrity
  • Před tím nestažené soubory by se měly stáhnout
  • Všude by měly svítit zelené checkboxy
Test FAIL[edit]
  • Před tím nestažené soubory se nestáhnou