netwerk/test/unit/test_bug654926_doom_and_read.js

Thu, 15 Jan 2015 21:03:48 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 21:03:48 +0100
branch
TOR_BUG_9701
changeset 11
deefc01c0e14
permissions
-rw-r--r--

Integrate friendly tips from Tor colleagues to make (or not) 4.5 alpha 3;
This includes removal of overloaded (but unused) methods, and addition of
a overlooked call to DataStruct::SetData(nsISupports, uint32_t, bool.)

     1 function gen_1MiB()
     2 {
     3   var i;
     4   var data="x";
     5   for (i=0 ; i < 20 ; i++)
     6     data+=data;
     7   return data;
     8 }
    10 function write_and_check(str, data, len)
    11 {
    12   var written = str.write(data, len);
    13   if (written != len) {
    14     do_throw("str.write has not written all data!\n" +
    15              "  Expected: " + len  + "\n" +
    16              "  Actual: " + written + "\n");
    17   }
    18 }
    20 function make_input_stream_scriptable(input) {
    21   var wrapper = Cc["@mozilla.org/scriptableinputstream;1"].
    22                 createInstance(Ci.nsIScriptableInputStream);
    23   wrapper.init(input);
    24   return wrapper;
    25 }
    27 function write_datafile(status, entry)
    28 {
    29   do_check_eq(status, Cr.NS_OK);
    30   var os = entry.openOutputStream(0);
    31   var data = gen_1MiB();
    33   write_and_check(os, data, data.length);
    35   os.close();
    36   entry.close();
    38   // open, doom, append, read
    39   asyncOpenCacheEntry("http://data/",
    40                       "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null,
    41                       test_read_after_doom);
    43 }
    45 function test_read_after_doom(status, entry)
    46 {
    47   do_check_eq(status, Cr.NS_OK);
    48   var os = entry.openOutputStream(entry.dataSize);
    49   var data = gen_1MiB();
    51   entry.asyncDoom(null);
    52   write_and_check(os, data, data.length);
    54   os.close();
    56   var is = entry.openInputStream(0);
    57   pumpReadStream(is, function(read) {
    58     do_check_eq(read.length, 2*1024*1024);
    59     is.close();
    61     entry.close();
    62     do_test_finished();
    63   });
    64 }
    66 function run_test() {
    67   do_get_profile();
    69   // clear the cache
    70   evict_cache_entries();
    72   asyncOpenCacheEntry("http://data/",
    73                       "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null,
    74                       write_datafile);
    76   do_test_pending();
    77 }

mercurial