Name: js-handler/node_modules/restify/node_modules/formidable/benchmark/bench-multipart-parser.js 
1:
var assert = require('assert');
2:
require('../test/common');
3:
var 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:
 
20:
parser.initWithBoundary(boundary);
21:
parser.onHeaderField = function() {
22:
  callbacks.headerField++;
23:
};
24:
 
25:
parser.onHeaderValue = function() {
26:
  callbacks.headerValue++;
27:
};
28:
 
29:
parser.onPartBegin = function() {
30:
  callbacks.partBegin++;
31:
};
32:
 
33:
parser.onPartData = function() {
34:
  callbacks.partData++;
35:
};
36:
 
37:
parser.onPartEnd = function() {
38:
  callbacks.partEnd++;
39:
};
40:
 
41:
parser.onEnd = function() {
42:
  callbacks.end++;
43:
};
44:
 
45:
var start = +new Date(),
46:
    nparsed = parser.write(buffer),
47:
    duration = +new Date - start,
48:
    mbPerSec = (mb / (duration / 1000)).toFixed(2);
49:
 
50:
console.log(mbPerSec+' mb/sec');
51:
 
52:
assert.equal(nparsed, buffer.length);
53:
 
54:
function 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:
 
67:
process.on('exit', function() {
68:
  for (var k in callbacks) {
69:
    assert.equal(0, callbacks[k], k+' count off by '+callbacks[k]);
70:
  }
71:
});