Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/Java/Openjdk/test/hotspot/jtreg/vmTestbase/jit/t/   (Sun/Oracle ©) image not shown  

Quelle  test_score_triggers.js   Sprache: JAVA

 
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */


const { Service } = ChromeUtils.importESModule(
  "resource://services-sync/service.sys.mjs"
);
const { Status } = ChromeUtils.importESModule(
  "resource://services-sync/status.sys.mjs"
);

// Tracking info/collections.
var collectionsHelper = track_collections_helper();
var upd = collectionsHelper.with_updated_collection;

function sync_httpd_setup() {
  let handlers = {};

  handlers["/1.1/johndoe/storage/meta/global"] = new ServerWBO(
    "global",
    {}
  ).handler();
  handlers["/1.1/johndoe/storage/steam"] = new ServerWBO("steam", {}).handler();

  handlers["/1.1/johndoe/info/collections"] = collectionsHelper.handler;
  delete collectionsHelper.collections.crypto;
  delete collectionsHelper.collections.meta;

  let cr = new ServerWBO("keys");
  handlers["/1.1/johndoe/storage/crypto/keys"] = upd("crypto", cr.handler());

  let cl = new ServerCollection();
  handlers["/1.1/johndoe/storage/clients"] = upd("clients", cl.handler());

  return httpd_setup(handlers);
}

async function setUp(server) {
  let engineInfo = await registerRotaryEngine();
  await SyncTestingInfrastructure(server, "johndoe""ilovejane");
  return engineInfo;
}

add_task(async function test_tracker_score_updated() {
  enableValidationPrefs();
  let { engine, tracker } = await registerRotaryEngine();

  let scoreUpdated = 0;

  function onScoreUpdated() {
    scoreUpdated++;
  }

  Svc.Obs.add("weave:engine:score:updated", onScoreUpdated);

  try {
    Assert.equal(engine.score, 0);

    tracker.score += SCORE_INCREMENT_SMALL;
    Assert.equal(engine.score, SCORE_INCREMENT_SMALL);

    Assert.equal(scoreUpdated, 1);
  } finally {
    Svc.Obs.remove("weave:engine:score:updated", onScoreUpdated);
    tracker.resetScore();
    await tracker.clearChangedIDs();
    await Service.engineManager.unregister(engine);
  }
});

add_task(async function test_sync_triggered() {
  let server = sync_httpd_setup();
  let { engine, tracker } = await setUp(server);

  await Service.login();

  Service.scheduler.syncThreshold = MULTI_DEVICE_THRESHOLD;

  Assert.equal(Status.login, LOGIN_SUCCEEDED);
  tracker.score += SCORE_INCREMENT_XLARGE;

  await promiseOneObserver("weave:service:sync:finish");

  await Service.startOver();
  await promiseStopServer(server);

  await tracker.clearChangedIDs();
  await Service.engineManager.unregister(engine);
});

add_task(async function test_clients_engine_sync_triggered() {
  enableValidationPrefs();

  _("Ensure that client engine score changes trigger a sync.");

  // The clients engine is not registered like other engines. Therefore,
  // it needs special treatment throughout the code. Here, we verify the
  // global score tracker gives it that treatment. See bug 676042 for more.

  let server = sync_httpd_setup();
  let { engine, tracker } = await setUp(server);
  await Service.login();

  Service.scheduler.syncThreshold = MULTI_DEVICE_THRESHOLD;
  Assert.equal(Status.login, LOGIN_SUCCEEDED);
  Service.clientsEngine._tracker.score += SCORE_INCREMENT_XLARGE;

  await promiseOneObserver("weave:service:sync:finish");
  _("Sync due to clients engine change completed.");

  await Service.startOver();
  await promiseStopServer(server);

  await tracker.clearChangedIDs();
  await Service.engineManager.unregister(engine);
});

add_task(async function test_incorrect_credentials_sync_not_triggered() {
  enableValidationPrefs();

  _(
    "Ensure that score changes don't trigger a sync if Status.login != LOGIN_SUCCEEDED."
  );
  let server = sync_httpd_setup();
  let { engine, tracker } = await setUp(server);

  // Ensure we don't actually try to sync.
  function onSyncStart() {
    do_throw("Should not get here!");
  }
  Svc.Obs.add("weave:service:sync:start", onSyncStart);

  // Faking incorrect credentials to prevent score update.
  Status.login = LOGIN_FAILED_LOGIN_REJECTED;
  tracker.score += SCORE_INCREMENT_XLARGE;

  // First wait >100ms (nsITimers can take up to that much time to fire, so
  // we can account for the timer in delayedAutoconnect) and then one event
  // loop tick (to account for a possible call to weave:service:sync:start).
  await promiseNamedTimer(150, {}, "timer");
  await Async.promiseYield();

  Svc.Obs.remove("weave:service:sync:start", onSyncStart);

  Assert.equal(Status.login, LOGIN_FAILED_LOGIN_REJECTED);

  await Service.startOver();
  await promiseStopServer(server);

  await tracker.clearChangedIDs();
  await Service.engineManager.unregister(engine);
});

Messung V0.5
C=94 H=99 G=96

¤ Dauer der Verarbeitung: 0.8 Sekunden  (vorverarbeitet)  ¤

*© 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.