Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  test_view_put_get_values.js

  Sprache: JAVA
 

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


/* exported testSteps, disableWorkerTest */
var disableWorkerTest = "Need a way to set temporary prefs from a worker";

async function testSteps() {
  // Setting dom.indexedDB.dataThreshold to 99999 ensures that the first random
  // view (size 100000) is stored as a separate file when
  // dom.indexedDB.preprocessing is true. The second random view (size 10000)
  // is always stored directly in the database. This setup creates a scenario
  // where requests in a transaction are processed in the wrong order if they
  // are not properly queued internally.
  const dataThreshold = 99999;

  const name = this.window
    ? window.location.pathname
    : "test_view_put_get_values.js";

  const objectStoreName = "Views";

  const viewDataArray = [
    { key: 1, view: getRandomView(100000) },
    { key: 2, view: getRandomView(10000) },
  ];

  const tests = [
    {
      external: false,
      preprocessing: false,
    },
    {
      external: true,
      preprocessing: false,
    },
    {
      external: true,
      preprocessing: true,
    },
  ];

  for (let test of tests) {
    if (test.external) {
      info("Setting data threshold pref");

      if (this.window) {
        await SpecialPowers.pushPrefEnv({
          set: [["dom.indexedDB.dataThreshold", dataThreshold]],
        });
      } else {
        setDataThreshold(dataThreshold);
      }
    }

    if (test.preprocessing) {
      info("Setting preprocessing pref");

      if (this.window) {
        await SpecialPowers.pushPrefEnv({
          set: [["dom.indexedDB.preprocessing"true]],
        });
      } else {
        enablePreprocessing();
      }
    }

    info("Opening database");

    const db = await (async function () {
      const request = indexedDB.open(name);

      {
        const event = await expectingUpgrade(request);

        const database = event.target.result;

        database.createObjectStore(objectStoreName);
      }

      const event = await expectingSuccess(request);

      const database = event.target.result;

      return database;
    })();

    {
      const objectStore = db
        .transaction([objectStoreName], "readwrite")
        .objectStore(objectStoreName);

      info("Storing views");

      for (const viewData of viewDataArray) {
        const request = objectStore.add(viewData.view, viewData.key);

        await requestSucceeded(request);

        is(request.result, viewData.key, "Got correct key");
      }

      info("Getting views");

      for (const viewData of viewDataArray) {
        const request = objectStore.get(viewData.key);

        await requestSucceeded(request);

        verifyView(request.result, viewData.view);
      }
    }

    info("Getting views in separate transactions");

    for (const viewData of viewDataArray) {
      const request = db
        .transaction([objectStoreName])
        .objectStore(objectStoreName)
        .get(viewData.key);

      await requestSucceeded(request);

      verifyView(request.result, viewData.view);
    }

    info("Getting file usage");

    {
      const fileUsage = await new Promise(function (resolve) {
        getCurrentUsage(function (request) {
          resolve(request.result.fileUsage);
        });
      });

      if (test.external) {
        ok(fileUsage > 0"File usage is not zero");
      } else {
        ok(fileUsage == 0"File usage is zero");
      }
    }

    info("Getting views in parallel");

    {
      const objectStore = db
        .transaction([objectStoreName])
        .objectStore(objectStoreName);

      const promises = [];
      const keys = [];

      for (const viewData of viewDataArray) {
        const request = objectStore.get(viewData.key);

        promises.push(
          requestSucceeded(request, function () {
            keys.push(viewData.key);
          })
        );
      }

      await Promise.all(promises);

      is(keys.length, viewDataArray.length, "Correct number of keys");

      for (let i = 0; i < keys.length; i++) {
        is(keys[i], viewDataArray[i].key, "Correct key");
      }
    }

    info("Deleting database");

    {
      db.close();
      const request = indexedDB.deleteDatabase(name);
      await expectingSuccess(request);
    }

    info("Resetting prefs");

    if (this.window) {
      await SpecialPowers.popPrefEnv();
    } else {
      if (test.external) {
        resetDataThreshold();
      }

      if (test.preprocessing) {
        resetPreprocessing();
      }
    }
  }
}

Messung V0.5 in Prozent
C=90 H=96 G=93

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=141584
#Domains=752002