1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/netwerk/test/unit/test_bug654926_doom_and_read.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,77 @@ 1.4 +function gen_1MiB() 1.5 +{ 1.6 + var i; 1.7 + var data="x"; 1.8 + for (i=0 ; i < 20 ; i++) 1.9 + data+=data; 1.10 + return data; 1.11 +} 1.12 + 1.13 +function write_and_check(str, data, len) 1.14 +{ 1.15 + var written = str.write(data, len); 1.16 + if (written != len) { 1.17 + do_throw("str.write has not written all data!\n" + 1.18 + " Expected: " + len + "\n" + 1.19 + " Actual: " + written + "\n"); 1.20 + } 1.21 +} 1.22 + 1.23 +function make_input_stream_scriptable(input) { 1.24 + var wrapper = Cc["@mozilla.org/scriptableinputstream;1"]. 1.25 + createInstance(Ci.nsIScriptableInputStream); 1.26 + wrapper.init(input); 1.27 + return wrapper; 1.28 +} 1.29 + 1.30 +function write_datafile(status, entry) 1.31 +{ 1.32 + do_check_eq(status, Cr.NS_OK); 1.33 + var os = entry.openOutputStream(0); 1.34 + var data = gen_1MiB(); 1.35 + 1.36 + write_and_check(os, data, data.length); 1.37 + 1.38 + os.close(); 1.39 + entry.close(); 1.40 + 1.41 + // open, doom, append, read 1.42 + asyncOpenCacheEntry("http://data/", 1.43 + "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null, 1.44 + test_read_after_doom); 1.45 + 1.46 +} 1.47 + 1.48 +function test_read_after_doom(status, entry) 1.49 +{ 1.50 + do_check_eq(status, Cr.NS_OK); 1.51 + var os = entry.openOutputStream(entry.dataSize); 1.52 + var data = gen_1MiB(); 1.53 + 1.54 + entry.asyncDoom(null); 1.55 + write_and_check(os, data, data.length); 1.56 + 1.57 + os.close(); 1.58 + 1.59 + var is = entry.openInputStream(0); 1.60 + pumpReadStream(is, function(read) { 1.61 + do_check_eq(read.length, 2*1024*1024); 1.62 + is.close(); 1.63 + 1.64 + entry.close(); 1.65 + do_test_finished(); 1.66 + }); 1.67 +} 1.68 + 1.69 +function run_test() { 1.70 + do_get_profile(); 1.71 + 1.72 + // clear the cache 1.73 + evict_cache_entries(); 1.74 + 1.75 + asyncOpenCacheEntry("http://data/", 1.76 + "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null, 1.77 + write_datafile); 1.78 + 1.79 + do_test_pending(); 1.80 +}