Wed, 31 Dec 2014 13:27:57 +0100
Ignore runtime configuration files generated during quality assurance.
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 }