'use strict' const Dicer = require('../../deps/dicer/lib/Dicer') function createMultipartBuffer(boundary, size) { const head = '--' + boundary + '\r\n' + 'content-disposition: form-data; name="field1"\r\n' + '\r\n' , tail = '\r\n--' + boundary + '--\r\n' , buffer = Buffer.allocUnsafe(size); buffer.write(head, 0, 'ascii'); buffer.write(tail, buffer.length - tail.length, 'ascii'); return buffer; } for (var i = 0, il = 10; i < il; i++) { // eslint-disable-line no-var const boundary = '-----------------------------168072824752491622650073', d = new Dicer({ boundary: boundary }), mb = 100, buffer = createMultipartBuffer(boundary, mb * 1024 * 1024), callbacks = { partBegin: -1, partEnd: -1, headerField: -1, headerValue: -1, partData: -1, end: -1, }; d.on('part', function (p) { callbacks.partBegin++; p.on('header', function (header) { /*for (var h in header) console.log('Part header: k: ' + inspect(h) + ', v: ' + inspect(header[h]));*/ }); p.on('data', function (data) { callbacks.partData++; //console.log('Part data: ' + inspect(data.toString())); }); p.on('end', function () { //console.log('End of part\n'); callbacks.partEnd++; }); }); d.on('end', function () { //console.log('End of parts'); callbacks.end++; }); const start = +new Date(); d.write(buffer); const duration = +new Date - start; const mbPerSec = (mb / (duration / 1000)).toFixed(2); console.log(mbPerSec + ' mb/sec'); }