netwerk/test/unit/test_bug654926_doom_and_read.js

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rw-r--r--

Ignore runtime configuration files generated during quality assurance.

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

mercurial