Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/netwerk/test/httpserver/test/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 4 kB image not shown  

Quelle  test_seizepower.js   Sprache: JAVA

 
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et: */
/* 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/. */


/*
 * Tests that the seizePower API works correctly.
 */


ChromeUtils.defineLazyGetter(this"PORT"function () {
  return srv.identity.primaryPort;
});

var srv;

function run_test() {
  Services.prefs.setBoolPref("network.proxy.allow_hijacking_localhost"true);
  srv = createServer();

  srv.registerPathHandler("/raw-data", handleRawData);
  srv.registerPathHandler("/called-too-late", handleTooLate);
  srv.registerPathHandler("/exceptions", handleExceptions);
  srv.registerPathHandler("/async-seizure", handleAsyncSeizure);
  srv.registerPathHandler("/seize-after-async", handleSeizeAfterAsync);

  srv.start(-1);

  runRawTests(tests, function () {
    Services.prefs.clearUserPref("network.proxy.allow_hijacking_localhost");
    testComplete(srv)();
  });
}

function checkException(fun, err, msg) {
  try {
    fun();
  } catch (e) {
    if (e !== err && e.result !== err) {
      do_throw(msg);
    }
    return;
  }
  do_throw(msg);
}

/** ***************
 * PATH HANDLERS *
 *****************/


function handleRawData(request, response) {
  response.seizePower();
  response.write("Raw data!");
  response.finish();
}

function handleTooLate(request, response) {
  response.write("DO NOT WANT");
  var output = response.bodyOutputStream;

  response.seizePower();

  if (response.bodyOutputStream !== output) {
    response.write("bodyOutputStream changed!");
  } else {
    response.write("too-late passed");
  }
  response.finish();
}

function handleExceptions(request, response) {
  response.seizePower();
  checkException(
    function () {
      response.setStatusLine("1.0", 500, "ISE");
    },
    Cr.NS_ERROR_NOT_AVAILABLE,
    "setStatusLine should throw not-available after seizePower"
  );
  checkException(
    function () {
      response.setHeader("X-Fail""FAIL"false);
    },
    Cr.NS_ERROR_NOT_AVAILABLE,
    "setHeader should throw not-available after seizePower"
  );
  checkException(
    function () {
      response.processAsync();
    },
    Cr.NS_ERROR_NOT_AVAILABLE,
    "processAsync should throw not-available after seizePower"
  );
  var out = response.bodyOutputStream;
  var data = "exceptions test passed";
  out.write(data, data.length);
  response.seizePower(); // idempotency test of seizePower
  response.finish();
  response.finish(); // idempotency test of finish after seizePower
  checkException(
    function () {
      response.seizePower();
    },
    Cr.NS_ERROR_UNEXPECTED,
    "seizePower should throw unexpected after finish"
  );
}

function handleAsyncSeizure(request, response) {
  response.seizePower();
  callLater(1, function () {
    response.write("async seizure passed");
    response.bodyOutputStream.close();
    callLater(1, function () {
      response.finish();
    });
  });
}

function handleSeizeAfterAsync(request, response) {
  response.setStatusLine(request.httpVersion, 200, "async seizure pass");
  response.processAsync();
  checkException(
    function () {
      response.seizePower();
    },
    Cr.NS_ERROR_NOT_AVAILABLE,
    "seizePower should throw not-available after processAsync"
  );
  callLater(1, function () {
    response.finish();
  });
}

/** *************
 * BEGIN TESTS *
 ***************/


ChromeUtils.defineLazyGetter(this"tests"function () {
  return [
    new RawTest("localhost", PORT, data0, checkRawData),
    new RawTest("localhost", PORT, data1, checkTooLate),
    new RawTest("localhost", PORT, data2, checkExceptions),
    new RawTest("localhost", PORT, data3, checkAsyncSeizure),
    new RawTest("localhost", PORT, data4, checkSeizeAfterAsync),
  ];
});

// eslint-disable-next-line no-useless-concat
var data0 = "GET /raw-data HTTP/1.0\r\n" + "\r\n";
function checkRawData(data) {
  Assert.equal(data, "Raw data!");
}

// eslint-disable-next-line no-useless-concat
var data1 = "GET /called-too-late HTTP/1.0\r\n" + "\r\n";
function checkTooLate(data) {
  Assert.equal(LineIterator(data).next().value, "too-late passed");
}

// eslint-disable-next-line no-useless-concat
var data2 = "GET /exceptions HTTP/1.0\r\n" + "\r\n";
function checkExceptions(data) {
  Assert.equal("exceptions test passed", data);
}

// eslint-disable-next-line no-useless-concat
var data3 = "GET /async-seizure HTTP/1.0\r\n" + "\r\n";
function checkAsyncSeizure(data) {
  Assert.equal(data, "async seizure passed");
}

// eslint-disable-next-line no-useless-concat
var data4 = "GET /seize-after-async HTTP/1.0\r\n" + "\r\n";
function checkSeizeAfterAsync(data) {
  Assert.equal(
    LineIterator(data).next().value,
    "HTTP/1.0 200 async seizure pass"
  );
}

Messung V0.5
C=94 H=98 G=95

¤ Dauer der Verarbeitung: 0.2 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.