Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/js/xpconnect/tests/unit/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  test_watchdog_hibernate.js   Sprache: JAVA

 
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


async function testBody() {

  setWatchdogEnabled(true);

  // It's unlikely that we've ever hibernated at this point, but the timestamps
  // default to 0, so this should always be true.
  var now = Date.now() * 1000;
  var startHibernation = Cu.getWatchdogTimestamp("WatchdogHibernateStart");
  var stopHibernation = Cu.getWatchdogTimestamp("WatchdogHibernateStop");
  do_log_info("Pre-hibernation statistics:");
  do_log_info("now: " + now / 1000000);
  do_log_info("startHibernation: " + startHibernation / 1000000);
  do_log_info("stopHibernation: " + stopHibernation / 1000000);
  Assert.less(startHibernation, now, "startHibernation ok");
  Assert.less(stopHibernation, now, "stopHibernation ok");

  // When the watchdog runs, it hibernates if there's been no activity for the
  // last 2 seconds, otherwise it sleeps for 1 second. As such, given perfect
  // scheduling, we should never have more than 3 seconds of inactivity without
  // hibernating. To add some padding for automation, we mandate that hibernation
  // must begin between 2 and 5 seconds from now.

  // Sleep for 10 seconds. Note: we don't use nsITimer here because then we may run
  // arbitrary (idle) events involving script before it fires.
  simulateNoScriptActivity(10);

  busyWait(1000); // Give the watchdog time to wake up on the condvar.
  var stateChange = Cu.getWatchdogTimestamp("ContextStateChange");
  startHibernation = Cu.getWatchdogTimestamp("WatchdogHibernateStart");
  stopHibernation = Cu.getWatchdogTimestamp("WatchdogHibernateStop");
  do_log_info("Post-hibernation statistics:");
  do_log_info("stateChange: " + stateChange / 1000000);
  do_log_info("startHibernation: " + startHibernation / 1000000);
  do_log_info("stopHibernation: " + stopHibernation / 1000000);
  // XPCOM timers, JS times, and PR_Now() are apparently not directly
  // comparable, as evidenced by certain seemingly-impossible timing values
  // that occasionally get logged in windows automation. We're really just
  // making sure this behavior is roughly as expected on the macro scale,
  // so we add a 1 second fuzz factor here.
  const FUZZ_FACTOR = 1 * 1000 * 1000;
  Assert.greater(stateChange, now + 10*1000*1000 - FUZZ_FACTOR, "stateChange ok");
  Assert.greater(startHibernation, now + 2*1000*1000 - FUZZ_FACTOR, "startHibernation ok");
  Assert.less(startHibernation, now + 5*1000*1000 + FUZZ_FACTOR, "startHibernation ok");
  Assert.greater(stopHibernation, now + 10*1000*1000 - FUZZ_FACTOR, "stopHibernation ok");
}

Messung V0.5
C=92 H=95 G=93

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.