@nraynaud/xo-vmdk-to-vhd
Version:
JS lib streaming a vmdk file to a vhd
85 lines (63 loc) • 2.58 kB
JavaScript
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _chai = require('chai');
var _fsPromise = require('fs-promise');
var _mocha = require('mocha');
var _childProcessPromise = require('child-process-promise');
var _vmdkRead = require('./vmdk-read');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(0, _mocha.describe)('VMDK reading', function () {
(0, _mocha.it)('VMDKDirectParser reads OK', (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() {
var rawFileName, fileName, parser, header, harvested, res;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
rawFileName = 'random-data';
fileName = 'random-data.vmdk';
_context.next = 4;
return (0, _childProcessPromise.exec)('base64 /dev/urandom | head -c 104448 > ' + rawFileName);
case 4:
_context.next = 6;
return (0, _childProcessPromise.exec)('rm -f ' + fileName + '&& VBoxManage convertfromraw --format VMDK --variant Stream ' + rawFileName + ' ' + fileName);
case 6:
parser = new _vmdkRead.VMDKDirectParser((0, _fsPromise.createReadStream)(fileName));
_context.next = 9;
return parser.readHeader();
case 9:
header = _context.sent;
harvested = [];
case 11:
if (!true) {
_context.next = 20;
break;
}
_context.next = 14;
return parser.next();
case 14:
res = _context.sent;
if (!(res === null)) {
_context.next = 17;
break;
}
return _context.abrupt('break', 20);
case 17:
harvested.push(res);
_context.next = 11;
break;
case 20:
_chai.assert.equal(harvested.length, 2);
_chai.assert.equal(harvested[0].lba, 0);
_chai.assert.equal(harvested[1].lba, header['grainSizeSectors']);
case 23:
case 'end':
return _context.stop();
}
}
}, _callee, undefined);
}))).timeout(10000);
});
//# sourceMappingURL=vmdk-read.spec.js.map
;