load-test-config.ts 2.2 KB

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