/** * Return mail status html * * @param \phpbu\App\Result $result * @return string */ protected function getStatusHtml(Result $result) { if (count($result->getBackups()) === 0) { $color = TPL::getSnippet('cStatusWARN'); $status = 'WARNING'; } elseif ($result->allOk()) { $color = TPL::getSnippet('cStatusOK'); $status = 'OK'; } elseif ($result->backupOkButSkipsOrFails()) { $color = TPL::getSnippet('cStatusWARN'); $status = 'WARNING'; } else { $color = TPL::getSnippet('cStatusFAIL'); $status = 'FAILURE'; } $info = sprintf('(%d %s, %d %s, %d %s, %d %s, %d %s)', count($result->getBackups()), Str::appendPluralS('backup', count($result->getBackups())), $this->numChecks, Str::appendPluralS('check', $this->numChecks), $this->numCrypts, Str::appendPluralS('crypt', $this->numCrypts), $this->numSyncs, Str::appendPluralS('sync', $this->numSyncs), $this->numCleanups, Str::appendPluralS('cleanup', $this->numCleanups)); $html = '<table ' . sprintf(TPL::getSnippet('sTableStatus'), $color) . '>' . '<tr><td>' . '<span ' . TPL::getSnippet('sTableStatusText') . '>' . date('Y-m-d H:i') . '</span>' . '<h1 ' . TPL::getSnippet('sTableStatusHead') . '>' . $status . '</h1>' . '<span ' . TPL::getSnippet('sTableStatusText') . '>' . $info . '</span>' . '</td></tr>' . '</table>'; return $html; }
/** * Prints 'OK' or 'FAILURE' footer. * * @param Result $result */ protected function printFooter(Result $result) { if (count($result->getBackups()) === 0) { $this->writeWithColor('fg-black, bg-yellow', 'No backups executed!'); } elseif ($result->allOk()) { $this->writeWithColor('fg-black, bg-green', sprintf('OK (%d %s, %d %s, %d %s, %d %s, %d %s)' . PHP_EOL, count($result->getBackups()), Util\Str::appendPluralS('backup', count($result->getBackups())), $this->numChecks, Util\Str::appendPluralS('check', $this->numChecks), $this->numCrypts, Util\Str::appendPluralS('crypt', $this->numCrypts), $this->numSyncs, Util\Str::appendPluralS('sync', $this->numSyncs), $this->numCleanups, Util\Str::appendPluralS('cleanup', $this->numCleanups))); } elseif ($result->backupOkButSkipsOrFails()) { $this->writeWithColor('fg-black, bg-yellow', sprintf("OK, but skipped|failed Crypts, Syncs or Cleanups!\n" . 'Backups: %d, Crypts: %d|%d, Syncs: %d|%d, Cleanups: %d|%d.' . PHP_EOL, count($result->getBackups()), $result->cryptsSkippedCount(), $result->cryptsFailedCount(), $result->syncsSkippedCount(), $result->syncsFailedCount(), $result->cleanupsSkippedCount(), $result->cleanupsFailedCount())); } else { $this->writeWithColor('fg-white, bg-red', sprintf("FAILURE!\n" . 'Backups: %d, failed Checks: %d, failed Crypts: %d, failed Syncs: %d, failed Cleanups: %d.' . PHP_EOL, count($result->getBackups()), $result->checksFailedCount(), $result->cryptsFailedCount(), $result->syncsFailedCount(), $result->cleanupsFailedCount())); } }
/** * Tests max Result life cycle with errors. */ public function testBackupMaximalWithErrors() { $conf = new Configuration('/tmp/foo.xml'); $backup = new Configuration\Backup('test-backup', false); $check = new Configuration\Backup\Check('sizemin', '10M'); $crypt = new Configuration\Backup\Crypt('mcrypt', false); $sync = new Configuration\Backup\Sync('rsync', false); $cleanup = new Configuration\Backup\Cleanup('capacity', false); $result = new Result(); $result->phpbuStart($conf); $result->backupStart($backup); $result->checkStart($check); $result->checkEnd($check); $result->cryptStart($crypt); $result->addError(new Exception('failed')); $result->cryptFailed($crypt); $result->syncStart($sync); $result->addError(new Exception('failed')); $result->syncFailed($sync); $result->cleanupStart($cleanup); $result->addError(new Exception('failed')); $result->cleanupFailed($cleanup); $result->backupEnd($backup); $result->phpbuEnd(); $this->assertTrue($result->wasSuccessful(), 'should be successful'); $this->assertFalse($result->allOk(), 'should be ok'); $this->assertTrue($result->backupOkButSkipsOrFails(), 'crypt, sync and cleanup should be failed'); $this->assertEquals(1, $result->syncsFailedCount()); $this->assertEquals(0, $result->syncsSkippedCount()); $this->assertEquals(1, $result->cryptsFailedCount()); $this->assertEquals(0, $result->cryptsSkippedCount()); $this->assertEquals(1, $result->cleanupsFailedCount()); $this->assertEquals(0, $result->cleanupsSkippedCount()); $this->assertEquals(3, $result->errorCount()); $this->assertEquals(3, count($result->getErrors())); $this->assertEquals(1, count($result->getBackups())); }