Thu, 15 Jan 2015 15:55:04 +0100
Back out 97036ab72558 which inappropriately compared turds to third parties.
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 | } |