netwerk/test/TestDiskCache.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/netwerk/test/TestDiskCache.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,84 @@
     1.4 +var DEBUG = false;
     1.5 +
     1.6 +var clientID = "javascript";
     1.7 +var key = "theme:button";
     1.8 +var nsICache = Components.interfaces.nsICache;
     1.9 +
    1.10 +function getCacheService()
    1.11 +{
    1.12 +    var nsCacheService = Components.classes["@mozilla.org/network/cache-service;1"];
    1.13 +    var service = nsCacheService.getService(Components.interfaces.nsICacheService);
    1.14 +    return service;
    1.15 +}
    1.16 +
    1.17 +function createCacheSession(clientID, storagePolicy, streamable)
    1.18 +{
    1.19 +    var service = getCacheService();
    1.20 +    var session = service.createSession(clientID, storagePolicy, streamable);
    1.21 +    return session;
    1.22 +}
    1.23 +
    1.24 +function openCacheEntry(mode)
    1.25 +{
    1.26 +    var session = createCacheSession(clientID, nsICache.STORE_ON_DISK, true);
    1.27 +    var entry = session.openCacheEntry(key, mode);
    1.28 +    return entry;
    1.29 +}
    1.30 +
    1.31 +function wrapInputStream(input)
    1.32 +{
    1.33 +    var nsIScriptableInputStream = Components.interfaces.nsIScriptableInputStream;
    1.34 +    var factory = Components.classes["@mozilla.org/scriptableinputstream;1"];
    1.35 +    var wrapper = factory.createInstance(nsIScriptableInputStream);
    1.36 +    wrapper.init(input);
    1.37 +    return wrapper;
    1.38 +}
    1.39 +
    1.40 +function test()
    1.41 +{
    1.42 +    var outputEntry = openCacheEntry(nsICache.ACCESS_WRITE);
    1.43 +    var output = outputEntry.transport.openOutputStream(0, -1, 0);
    1.44 +    if (output.write("foo", 3) == 3)
    1.45 +        print("disk cache write works!");
    1.46 +    else
    1.47 +        print("disk cache write broken!");
    1.48 +
    1.49 +    // store some metadata.
    1.50 +    outputEntry.setMetaDataElement("size", "3");
    1.51 +
    1.52 +    output.close();
    1.53 +    outputEntry.markValid();
    1.54 +    outputEntry.close();
    1.55 +
    1.56 +    var inputEntry = openCacheEntry(nsICache.ACCESS_READ);
    1.57 +    var input = wrapInputStream(inputEntry.transport.openInputStream(0, -1, 0));
    1.58 +
    1.59 +    if (input.read(input.available()) == "foo")
    1.60 +        print("disk cache read works!");
    1.61 +    else
    1.62 +        print("disk cache read broken!");
    1.63 +
    1.64 +    if (inputEntry.getMetaDataElement("size") == "3")
    1.65 +        print("disk cache metadata works!");
    1.66 +    else
    1.67 +        print("disk cache metadata broken!");
    1.68 +
    1.69 +    input.close();
    1.70 +    inputEntry.close();
    1.71 +}
    1.72 +
    1.73 +function doom()
    1.74 +{
    1.75 +    var doomedEntry = openCacheEntry(nsICache.ACCESS_READ_WRITE);
    1.76 +    doomedEntry.doom();
    1.77 +    doomedEntry.close();
    1.78 +}
    1.79 +
    1.80 +if (DEBUG) {
    1.81 +    getCacheService();
    1.82 +    print("cache service loaded.");
    1.83 +} else {
    1.84 +    print("running disk cache test.");
    1.85 +    test();
    1.86 +    print("disk cache test complete.");
    1.87 +}

mercurial