netwerk/test/unit/test_bug654926_doom_and_read.js

changeset 1
ca08bd8f51b2
equal deleted inserted replaced
-1:000000000000 0:c9cd983546df
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 }
9
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 }
19
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 }
26
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();
32
33 write_and_check(os, data, data.length);
34
35 os.close();
36 entry.close();
37
38 // open, doom, append, read
39 asyncOpenCacheEntry("http://data/",
40 "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null,
41 test_read_after_doom);
42
43 }
44
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();
50
51 entry.asyncDoom(null);
52 write_and_check(os, data, data.length);
53
54 os.close();
55
56 var is = entry.openInputStream(0);
57 pumpReadStream(is, function(read) {
58 do_check_eq(read.length, 2*1024*1024);
59 is.close();
60
61 entry.close();
62 do_test_finished();
63 });
64 }
65
66 function run_test() {
67 do_get_profile();
68
69 // clear the cache
70 evict_cache_entries();
71
72 asyncOpenCacheEntry("http://data/",
73 "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null,
74 write_datafile);
75
76 do_test_pending();
77 }

mercurial