UNPKG

@nraynaud/xo-vmdk-to-vhd

Version:
151 lines (119 loc) 6.17 kB
'use strict'; var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); 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 _mocha = require('mocha'); var _childProcessPromise = require('child-process-promise'); var _fsPromise = require('fs-promise'); var _vmdkRead = require('./vmdk-read'); var _vhdWrite = require('./vhd-write'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } (0, _mocha.describe)('VMDK to VHD conversion', function () { (0, _mocha.it)('can convert a random data file with readRawContent()', (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() { var inputRawFileName, vmdkFileName, vhdFileName, reconvertedRawFilemane, dataSize, rawContent, f; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: inputRawFileName = 'random-data.raw'; vmdkFileName = 'random-data.vmdk'; vhdFileName = 'from-vmdk-readRawContent.vhd'; reconvertedRawFilemane = 'from-vhd.raw'; dataSize = 5222400; _context.next = 7; return (0, _childProcessPromise.exec)('rm -f ' + [inputRawFileName, vmdkFileName, vhdFileName, reconvertedRawFilemane].join(' ')); case 7: _context.next = 9; return (0, _childProcessPromise.exec)('base64 /dev/urandom | head -c ' + dataSize + ' > ' + inputRawFileName); case 9: _context.next = 11; return (0, _childProcessPromise.exec)('VBoxManage convertfromraw --format VMDK --variant Stream ' + inputRawFileName + ' ' + vmdkFileName); case 11: _context.next = 13; return (0, _vmdkRead.readRawContent)((0, _fsPromise.createReadStream)(vmdkFileName)); case 13: rawContent = _context.sent.rawFile; f = new _vhdWrite.VHDFile(rawContent.length, 523557791); _context.next = 17; return f.writeBuffer(rawContent); case 17: _context.next = 19; return f.writeFile(vhdFileName); case 19: _context.next = 21; return (0, _childProcessPromise.exec)('qemu-img convert -fvpc -Oraw ' + vhdFileName + ' ' + reconvertedRawFilemane); case 21: _context.next = 23; return (0, _childProcessPromise.exec)('qemu-img compare ' + vmdkFileName + ' ' + vhdFileName).catch(function (error) { console.error(error.stdout); console.error(error.stderr); _chai.assert.fail(vhdFileName, vmdkFileName, error.message); }); case 23: case 'end': return _context.stop(); } } }, _callee, undefined); }))); (0, _mocha.it)('can convert a random data file with VMDKDirectParser', (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2() { var inputRawFileName, vmdkFileName, vhdFileName, reconvertedRawFilemane, reconvertedByVBoxRawFilemane, dataSize, pipe; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: inputRawFileName = 'random-data.raw'; vmdkFileName = 'random-data.vmdk'; vhdFileName = 'from-vmdk-VMDKDirectParser.vhd'; reconvertedRawFilemane = 'from-vhd.raw'; reconvertedByVBoxRawFilemane = 'from-vhd-by-vbox.raw'; dataSize = (0, _vhdWrite.computeGeometryForSize)(8 * 1024 * 1024).actualSize; _context2.next = 8; return (0, _childProcessPromise.exec)('rm -f ' + [inputRawFileName, vmdkFileName, vhdFileName, reconvertedRawFilemane, reconvertedByVBoxRawFilemane].join(' ')); case 8: _context2.next = 10; return (0, _childProcessPromise.exec)('base64 /dev/urandom | head -c ' + dataSize + ' > ' + inputRawFileName); case 10: console.log('after urandom'); _context2.next = 13; return (0, _childProcessPromise.exec)('VBoxManage convertfromraw --format VMDK --variant Stream ' + inputRawFileName + ' ' + vmdkFileName); case 13: console.log('after convertfromraw'); _context2.next = 16; return (0, _vhdWrite.convertFromVMDK)((0, _fsPromise.createReadStream)(vmdkFileName)); case 16: _context2.t0 = (0, _fsPromise.createWriteStream)(vhdFileName); pipe = _context2.sent.pipe(_context2.t0); _context2.next = 20; return new _promise2.default(function (resolve, reject) { pipe.on('finish', resolve); pipe.on('error', reject); }); case 20: console.log('after pipe'); _context2.next = 23; return (0, _childProcessPromise.exec)('qemu-img convert -fvmdk -Oraw ' + vmdkFileName + ' ' + reconvertedByVBoxRawFilemane); case 23: console.log('after convert1'); _context2.next = 26; return (0, _childProcessPromise.exec)('qemu-img convert -fvpc -Oraw ' + vhdFileName + ' ' + reconvertedRawFilemane); case 26: console.log('after convert2'); return _context2.abrupt('return', (0, _childProcessPromise.exec)('qemu-img compare ' + reconvertedByVBoxRawFilemane + ' ' + reconvertedRawFilemane).catch(function (error) { console.error(error.stdout); console.error(error.stderr); _chai.assert.fail(vhdFileName, vmdkFileName, error.message); })); case 28: case 'end': return _context2.stop(); } } }, _callee2, undefined); }))); }); //# sourceMappingURL=vmdk-to-vhd.spec.js.map