Add telemetry for TRAP caching
This commit is contained in:
parent
ca10a6d552
commit
4139682b64
63 changed files with 1195 additions and 126 deletions
102
node_modules/get-folder-size/test.js
generated
vendored
Normal file
102
node_modules/get-folder-size/test.js
generated
vendored
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
'use strict';
|
||||
|
||||
const proxyquire = require('proxyquire');
|
||||
const path = require('path');
|
||||
require('should');
|
||||
|
||||
let files = [
|
||||
'/root',
|
||||
'/root/folder',
|
||||
'/root/folder/subfolder',
|
||||
'/root/folder/subfolder/file4',
|
||||
'/root/folder/file3',
|
||||
'/root/file1',
|
||||
'/root/file2'
|
||||
];
|
||||
|
||||
const sizes = {
|
||||
'/root/folder/subfolder/file4': 4,
|
||||
'/root/folder/file3': 3,
|
||||
'/root/file1': 1,
|
||||
'/root/file2': 2
|
||||
};
|
||||
|
||||
let inos = {};
|
||||
|
||||
Object.keys(sizes).forEach(file => {
|
||||
const file2 = file.replace(/\//g, path.sep);
|
||||
|
||||
sizes[file2] = sizes[file];
|
||||
});
|
||||
|
||||
files = files.map(file => file.replace(/\//g, path.sep));
|
||||
|
||||
let inoCounter = 0;
|
||||
|
||||
const fs = {
|
||||
lstat: (item, cb) => {
|
||||
const stats = {
|
||||
size: sizes[item],
|
||||
isDirectory: () => {
|
||||
return ((item === files[0]) || /folder$/.test(item));
|
||||
},
|
||||
ino: inos[item] || ++inoCounter
|
||||
};
|
||||
|
||||
setImmediate(() => cb(null, stats));
|
||||
},
|
||||
readdir: (item, cb) => {
|
||||
setImmediate(() => {
|
||||
const list = files.filter(file => {
|
||||
return ((file !== item) && (file.indexOf(item) !== -1));
|
||||
}).map(file => {
|
||||
return file.replace(item, '');
|
||||
}).filter(it => {
|
||||
return (it.lastIndexOf(path.sep) <= 0);
|
||||
});
|
||||
|
||||
cb(null, list);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
describe('getSize', () => {
|
||||
let getSize;
|
||||
|
||||
before(() => {
|
||||
getSize = proxyquire.load('./index', {
|
||||
fs: fs
|
||||
});
|
||||
});
|
||||
|
||||
it('should get the size of the folder', (done) => {
|
||||
getSize(files[0], (err, total) => {
|
||||
total.should.eql(10);
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should ignore files', (done) => {
|
||||
getSize(files[0], /(file1|file2)/, (err, total) => {
|
||||
total.should.eql(7);
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should not count hardlinks twice', (done) => {
|
||||
inos['/root/file1'] = 222;
|
||||
inos['/root/file2'] = inos['/root/file1'];
|
||||
|
||||
getSize(files[0], (err, total) => {
|
||||
total.should.eql(8);
|
||||
|
||||
delete inos['/root/file1'];
|
||||
delete inos['/root/file2'];
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue