corrade-nucleus-nucleons – Blame information for rev 20

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 1 #!/usr/bin/env node --expose_gc
2  
3  
4 var weak = require('weak');
5 var test = require('tap').test
6 var LRU = require('../')
7 var l = new LRU({ max: 10 })
8 var refs = 0
9 function X() {
10 refs ++
11 weak(this, deref)
12 }
13  
14 function deref() {
15 refs --
16 }
17  
18 test('no leaks', function (t) {
19 // fill up the cache
20 for (var i = 0; i < 100; i++) {
21 l.set(i, new X);
22 // throw some gets in there, too.
23 if (i % 2 === 0)
24 l.get(i / 2)
25 }
26  
27 gc()
28  
29 var start = process.memoryUsage()
30  
31 // capture the memory
32 var startRefs = refs
33  
34 // do it again, but more
35 for (var i = 0; i < 10000; i++) {
36 l.set(i, new X);
37 // throw some gets in there, too.
38 if (i % 2 === 0)
39 l.get(i / 2)
40 }
41  
42 gc()
43  
44 var end = process.memoryUsage()
45 t.equal(refs, startRefs, 'no leaky refs')
46  
47 console.error('start: %j\n' +
48 'end: %j', start, end);
49 t.pass();
50 t.end();
51 })