author | Richard Newman <rnewman@mozilla.com> |
Tue, 11 Oct 2011 08:24:26 -0700 | |
changeset 78606 | a54bc1cfd54f9cb0ef31cbd45dffa4ee822521d1 |
parent 78605 | 0ab95b85d06e7d4c8b50314656861edebd7157dd |
child 78607 | 72ceb8048b70d9644200e80a568bac6b6afa537c |
push id | 21317 |
push user | pweitershausen@mozilla.com |
push date | Wed, 12 Oct 2011 19:53:22 +0000 |
treeherder | mozilla-central@fee22c85ed19 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | philikon |
bugs | 693505 |
milestone | 10.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
services/sync/modules/policies.js | file | annotate | diff | comparison | revisions | |
services/sync/tests/unit/test_errorhandler.js | file | annotate | diff | comparison | revisions |
--- a/services/sync/modules/policies.js +++ b/services/sync/modules/policies.js @@ -515,34 +515,36 @@ let ErrorHandler = { let engine_name = data; // engine name that threw the exception this.checkServerError(exception); Status.engines = [engine_name, exception.failureCode || ENGINE_UNKNOWN_FAIL]; this._log.debug(engine_name + " failed: " + Utils.exceptionStr(exception)); break; case "weave:service:login:error": + this.resetFileLog(Svc.Prefs.get("log.appender.file.logOnError"), + LOG_PREFIX_ERROR); + if (this.shouldReportError()) { - this.resetFileLog(Svc.Prefs.get("log.appender.file.logOnError"), - LOG_PREFIX_ERROR); this.notifyOnNextTick("weave:ui:login:error"); } else { this.notifyOnNextTick("weave:ui:clear-error"); } this.dontIgnoreErrors = false; break; case "weave:service:sync:error": if (Status.sync == CREDENTIALS_CHANGED) { Weave.Service.logout(); } + this.resetFileLog(Svc.Prefs.get("log.appender.file.logOnError"), + LOG_PREFIX_ERROR); + if (this.shouldReportError()) { - this.resetFileLog(Svc.Prefs.get("log.appender.file.logOnError"), - LOG_PREFIX_ERROR); this.notifyOnNextTick("weave:ui:sync:error"); } else { this.notifyOnNextTick("weave:ui:sync:finish"); } this.dontIgnoreErrors = false; break; case "weave:service:sync:finish":
--- a/services/sync/tests/unit/test_errorhandler.js +++ b/services/sync/tests/unit/test_errorhandler.js @@ -1259,16 +1259,72 @@ add_test(function test_sync_engine_gener server.stop(run_next_test); }); do_check_eq(Status.engines["catapult"], undefined); do_check_true(setUp()); Service.sync(); }); +add_test(function test_logs_on_sync_error_despite_shouldReportError() { + _("Ensure that an error is still logged when weave:service:sync:error " + + "is notified, despite shouldReportError returning false."); + + let log = Log4Moz.repository.getLogger("Sync.ErrorHandler"); + Svc.Prefs.set("log.appender.file.logOnError", true); + log.info("TESTING"); + + // Ensure that we report no error. + Status.login = MASTER_PASSWORD_LOCKED; + do_check_false(ErrorHandler.shouldReportError()); + + Svc.Obs.add("weave:service:reset-file-log", function onResetFileLog() { + Svc.Obs.remove("weave:service:reset-file-log", onResetFileLog); + + // Test that error log was written. + let entries = logsdir.directoryEntries; + do_check_true(entries.hasMoreElements()); + let logfile = entries.getNext().QueryInterface(Ci.nsILocalFile); + do_check_eq(logfile.leafName.slice(0, LOG_PREFIX_ERROR.length), + LOG_PREFIX_ERROR); + + clean(); + run_next_test(); + }); + Svc.Obs.notify("weave:service:sync:error", {}); +}); + +add_test(function test_logs_on_login_error_despite_shouldReportError() { + _("Ensure that an error is still logged when weave:service:login:error " + + "is notified, despite shouldReportError returning false."); + + let log = Log4Moz.repository.getLogger("Sync.ErrorHandler"); + Svc.Prefs.set("log.appender.file.logOnError", true); + log.info("TESTING"); + + // Ensure that we report no error. + Status.login = MASTER_PASSWORD_LOCKED; + do_check_false(ErrorHandler.shouldReportError()); + + Svc.Obs.add("weave:service:reset-file-log", function onResetFileLog() { + Svc.Obs.remove("weave:service:reset-file-log", onResetFileLog); + + // Test that error log was written. + let entries = logsdir.directoryEntries; + do_check_true(entries.hasMoreElements()); + let logfile = entries.getNext().QueryInterface(Ci.nsILocalFile); + do_check_eq(logfile.leafName.slice(0, LOG_PREFIX_ERROR.length), + LOG_PREFIX_ERROR); + + clean(); + run_next_test(); + }); + Svc.Obs.notify("weave:service:login:error", {}); +}); + // This test should be the last one since it monkeypatches the engine object // and we should only have one engine object throughout the file (bug 629664). add_test(function test_engine_applyFailed() { let server = sync_httpd_setup(); let engine = Engines.get("catapult"); engine.enabled = true; delete engine.exception;