populate.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. var common = require('../../test/common');
  2. var connection = common.createConnection();
  3. var assert = require('assert');
  4. var Faker = require('charlatan');
  5. var fs = require('fs');
  6. var createSql = fs.readFileSync('./schema.sql').toString();
  7. // use seed to make it consistent between runs
  8. // copy-paste from http://stackoverflow.com/questions/521295/javascript-random-seeds
  9. var m_w = 123456789;
  10. var m_z = 987654321;
  11. var mask = 0xffffffff;
  12. // Takes any integer
  13. function seed(i) {
  14. m_w = i;
  15. }
  16. // Returns number between 0 (inclusive) and 1.0 (exclusive),
  17. // just like Math.random().
  18. function rand()
  19. {
  20. m_z = (36969 * (m_z & 65535) + (m_z >> 16)) & mask;
  21. m_w = (18000 * (m_w & 65535) + (m_w >> 16)) & mask;
  22. var result = ((m_z << 16) + m_w) & mask;
  23. result /= 4294967296;
  24. return result + 0.5;
  25. }
  26. seed(123);
  27. connection.query(createSql);
  28. connection.query("DELETE FROM mysql2_test");
  29. function insertRow(r) {
  30. connection.query("INSERT INTO mysql2_test SET ? ", r);
  31. }
  32. var num_rows = 10000;
  33. var five_words, twenty5_paragraphs;
  34. for (var i = 0; i < num_rows; ++i)
  35. {
  36. five_words = Faker.Lorem.words(1 + rand(4)).join(' ').slice(0, 10);
  37. twenty5_paragraphs = Faker.Lorem.paragraphs(1 + rand(24)).join(' ');
  38. insertRow({
  39. bit_test: 1,
  40. tiny_int_test: rand(128),
  41. small_int_test: rand(32767),
  42. medium_int_test: rand(8388607),
  43. int_test: rand(2147483647),
  44. big_int_test: rand(9223372036854775807),
  45. float_test: rand(32767)/1.87,
  46. float_zero_test: 0.0,
  47. double_test: rand(8388607)/1.87,
  48. decimal_test: rand(8388607)/1.87,
  49. decimal_zero_test: 0,
  50. date_test: '2010-4-4',
  51. date_time_test: '2010-4-4 11:44:00',
  52. timestamp_test: '2010-4-4 11:44:00',
  53. time_test: '11:44:00',
  54. year_test: 14,
  55. char_test: five_words,
  56. varchar_test: five_words,
  57. binary_test: five_words,
  58. varbinary_test: five_words,
  59. tiny_blob_test: five_words,
  60. tiny_text_test: Faker.Lorem.paragraph(rand(5)),
  61. blob_test: twenty5_paragraphs,
  62. text_test: twenty5_paragraphs,
  63. medium_blob_test: twenty5_paragraphs,
  64. medium_text_test: twenty5_paragraphs,
  65. long_blob_test: twenty5_paragraphs,
  66. long_text_test: twenty5_paragraphs,
  67. enum_test: ['val1', 'val2'][rand(2)],
  68. set_test: ['val1', 'val2', 'val1,val2'][rand(3)]
  69. });
  70. }
  71. connection.end();