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: | }); |
