comunicationLeap/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});