load-test-config.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /* tslint:disable:no-console */
  2. import { AssetServerPlugin } from '@vendure/asset-server-plugin';
  3. import {
  4. defaultConfig,
  5. DefaultLogger,
  6. DefaultSearchPlugin,
  7. dummyPaymentHandler,
  8. InMemorySessionCacheStrategy,
  9. LogLevel,
  10. mergeConfig,
  11. VendureConfig,
  12. } from '@vendure/core';
  13. import path from 'path';
  14. export function getMysqlConnectionOptions(count: number) {
  15. return {
  16. type: 'mysql' as const,
  17. host: '127.0.0.1',
  18. port: 3306,
  19. username: 'root',
  20. password: '',
  21. database: `vendure-load-testing-${count}`,
  22. extra: {
  23. // connectionLimit: 150,
  24. },
  25. };
  26. }
  27. export function getPostgresConnectionOptions(count: number) {
  28. return {
  29. type: 'postgres' as const,
  30. host: '127.0.0.1',
  31. port: 5432,
  32. username: 'admin',
  33. password: 'secret',
  34. database: `vendure-load-testing-${count}`,
  35. };
  36. }
  37. export function getLoadTestConfig(tokenMethod: 'cookie' | 'bearer'): Required<VendureConfig> {
  38. const count = getProductCount();
  39. return mergeConfig(defaultConfig, {
  40. paymentOptions: {
  41. paymentMethodHandlers: [dummyPaymentHandler],
  42. },
  43. orderOptions: {
  44. orderItemsLimit: 99999,
  45. },
  46. logger: new DefaultLogger({ level: LogLevel.Info }),
  47. dbConnectionOptions: getMysqlConnectionOptions(count),
  48. authOptions: {
  49. tokenMethod,
  50. requireVerification: false,
  51. sessionCacheStrategy: new InMemorySessionCacheStrategy(),
  52. },
  53. importExportOptions: {
  54. importAssetsDir: path.join(__dirname, './data-sources'),
  55. },
  56. customFields: {},
  57. plugins: [
  58. AssetServerPlugin.init({
  59. assetUploadDir: path.join(__dirname, 'static/assets'),
  60. route: 'assets',
  61. }),
  62. DefaultSearchPlugin,
  63. ],
  64. });
  65. }
  66. export function getProductCsvFilePath() {
  67. const count = getProductCount();
  68. return path.join(__dirname, `./data-sources/products-${count}.csv`);
  69. }
  70. export function getProductCount() {
  71. const count = +process.argv[2];
  72. if (!count) {
  73. console.error(`Please specify the number of products to generate`);
  74. process.exit(1);
  75. }
  76. return count;
  77. }
  78. export function getScriptToRun(): string[] | undefined {
  79. const script = process.argv[3];
  80. if (script) {
  81. return [script];
  82. }
  83. }