arnaucube
arnaucube/raspberryGPIOhtmlserverPublic Self-hosted repository
raspberryGPIOhtmlserver/node_modules/formidable/benchmark/bench-multipart-parser.js
node_modules/formidable/benchmark/bench-multipart-parser.jsRaw
 1var assert = require('assert');
 2require('../test/common');
 3var multipartParser = require('../lib/multipart_parser'),
 4    MultipartParser = multipartParser.MultipartParser,
 5    parser = new MultipartParser(),
 6    Buffer = require('buffer').Buffer,
 7    boundary = '-----------------------------168072824752491622650073',
 8    mb = 100,
 9    buffer = createMultipartBuffer(boundary, mb * 1024 * 1024),
10    callbacks =
11      { partBegin: -1,
12        partEnd: -1,
13        headerField: -1,
14        headerValue: -1,
15        partData: -1,
16        end: -1,
17      };
18
19
20parser.initWithBoundary(boundary);
21parser.onHeaderField = function() {
22  callbacks.headerField++;
23};
24
25parser.onHeaderValue = function() {
26  callbacks.headerValue++;
27};
28
29parser.onPartBegin = function() {
30  callbacks.partBegin++;
31};
32
33parser.onPartData = function() {
34  callbacks.partData++;
35};
36
37parser.onPartEnd = function() {
38  callbacks.partEnd++;
39};
40
41parser.onEnd = function() {
42  callbacks.end++;
43};
44
45var start = +new Date(),
46    nparsed = parser.write(buffer),
47    duration = +new Date - start,
48    mbPerSec = (mb / (duration / 1000)).toFixed(2);
49
50console.log(mbPerSec+' mb/sec');
51
52assert.equal(nparsed, buffer.length);
53
54function createMultipartBuffer(boundary, size) {
55  var head =
56        '--'+boundary+'\r\n'
57      + 'content-disposition: form-data; name="field1"\r\n'
58      + '\r\n'
59    , tail = '\r\n--'+boundary+'--\r\n'
60    , buffer = new Buffer(size);
61
62  buffer.write(head, 'ascii', 0);
63  buffer.write(tail, 'ascii', buffer.length - tail.length);
64  return buffer;
65}
66
67process.on('exit', function() {
68  for (var k in callbacks) {
69    assert.equal(0, callbacks[k], k+' count off by '+callbacks[k]);
70  }
71});