benchmark-server.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. var mysql = require('../index.js');
  2. var flags = require('../lib/constants/client');
  3. var Packets = require('../lib/packets/index.js');
  4. var Packet = require('../lib/packets/packet');
  5. function prepareReply(columns, row, n) {
  6. var length = 0;
  7. var rsHeader = Packets.ResultSetHeader.toPacket(columns.length);
  8. length += rsHeader.length();
  9. var columnPackets = [];
  10. columns.forEach(function(column) {
  11. var packet = Packets.ColumnDefinition.toPacket(column);
  12. length += packet.length();
  13. columnPackets.push(packet);
  14. });
  15. var eof = Packets.EOF.toPacket();
  16. length += 2*eof.length();
  17. var rowPacket = Packets.TextRow.toPacket(row);
  18. length += n*rowPacket.length();
  19. var replyBuffer = new Buffer(length);
  20. var offset = 0;
  21. var id = 1;
  22. function add(packet) {
  23. packet.writeHeader(id);
  24. id = id + 1;
  25. packet.buffer.copy(replyBuffer, offset);
  26. offset += packet.length();
  27. }
  28. var i;
  29. add(rsHeader);
  30. for (i=0; i < columns.length; ++i)
  31. add(columnPackets[i]);
  32. add(eof);
  33. for (i=0; i < n; ++i)
  34. add(rowPacket);
  35. add(eof);
  36. return replyBuffer;
  37. }
  38. var buff = prepareReply([{
  39. catalog: 'def',
  40. schema: 'test',
  41. table: 'test_table',
  42. orgTable: 'test_table',
  43. name: 'beta',
  44. orgName: 'beta',
  45. characterSet: 33,
  46. columnLength: 384,
  47. columnType: 3, //253,
  48. flags: 0,
  49. decimals: 0
  50. }], ['12345'], 1);
  51. var server = mysql.createServer();
  52. server.listen('/tmp/mybench3.sock');
  53. server.on('connection', function(conn) {
  54. conn.serverHandshake({
  55. protocolVersion: 10,
  56. serverVersion: 'node.js rocks',
  57. connectionId: 1234,
  58. statusFlags: 2,
  59. characterSet: 8,
  60. capabilityFlags: 0xffffff
  61. });
  62. conn.on('query', function(query) {
  63. //console.log(query);
  64. conn.write(buff);
  65. });
  66. });