artilleryio / artillery

The complete load testing platform. Everything you need for production-grade load tests. Serverless & distributed. Load test with Playwright. Load test HTTP APIs, GraphQL, WebSocket, and more. Use any Node.js module.
https://www.artillery.io
Mozilla Public License 2.0
8.02k stars 510 forks source link

socket.io artillery-examples not working with version 2.0.0-14 #1404

Open InsOpDe opened 2 years ago

InsOpDe commented 2 years ago

I have tried artillery version 2.0.0-14 with the given example.

You can clone the repository here: https://github.com/InsOpDe/artillery-examples/tree/main/socket-io

after installing and running the server I receive the following report

All VUs finished. Total time: 1 minute, 1 second

--------------------------------
Summary report @ 09:47:25(+0200)
--------------------------------

errors.Error: server error: .................................................... 1500
vusers.created: ................................................................ 1500
vusers.created_by_name.Emit and validate acknowledgement: ...................... 745
vusers.created_by_name.Emit and validate response: ............................. 755
vusers.failed: ................................................................. 1500

full report with 1s and 1 arrivalrate and debug=*:

DEBUG=* ./node_modules/.bin/artillery run socket-io.yml
  @oclif/config reading core plugin /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery +0ms
  @oclif/config loadJSON /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/package.json +0ms
  @oclif/config loadJSON /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/oclif.manifest.json +1ms
  @oclif/config loadJSON /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/.oclif.manifest.json +0ms
  @oclif/config:artillery loading IDs from /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds +0ms
  @oclif/config:artillery found commands [
  'dino',                   'quick',
  'report',                 'run',
  'aws:create-test-bundle', 'aws:delete-test-bundle',
  'aws:delete-test-run',    'aws:describe-test-run',
  'aws:list-secrets',       'aws:list-tags',
  'aws:list-test-bundles',  'aws:list-test-runs',
  'aws:list-tests',         'aws:post-note',
  'aws:run',                'aws:set-config-value',
  'aws:set-secret',         'aws:stop-test',
  'pro:deploy',             'pro:subscription'
] +6ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/dino.js +2ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/quick.js +0ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/report.js +11ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/run.js +1ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/create-test-bundle.js +0ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/delete-test-bundle.js +1ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/delete-test-run.js +0ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/describe-test-run.js +1ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/list-secrets.js +0ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/list-tags.js +1ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/list-test-bundles.js +0ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/list-test-runs.js +1ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/list-tests.js +0ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/post-note.js +0ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/run.js +2ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/set-config-value.js +0ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/set-secret.js +1ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/aws/stop-test.js +0ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/pro/deploy.js +1ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/pro/subscription.js +0ms
  @oclif/config reading user plugins pjson /home/marcel/.local/share/artillery/package.json +0ms
  @oclif/config loadJSON /home/marcel/.local/share/artillery/package.json +67ms
  @oclif/config loading plugins [ '@oclif/plugin-help' ] +1ms
  @oclif/config reading core plugin /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/@oclif/plugin-help +0ms
  @oclif/config loadJSON /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/@oclif/plugin-help/package.json +1ms
  @oclif/config loadJSON /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/@oclif/plugin-help/oclif.manifest.json +0ms
  @oclif/config:@oclif/plugin-help using manifest from /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/@oclif/plugin-help/oclif.manifest.json +0ms
  @oclif/config config done +0ms
  @oclif/config start init hook +1ms
  artillery:artillery:hooks:init start /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cli/hooks/version +0ms
  artillery:artillery:hooks:init done +0ms
  @oclif/config init hook done +0ms
  artillery init version: @oclif/command@1.8.16 argv: [ 'run', 'socket-io.yml' ] +0ms
  @oclif/config runCommand run [ 'socket-io.yml' ] +2ms
  @oclif/config:artillery require /home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/lib/cmds/run.js +6ms
  @oclif/config start prerun hook +1ms
  @oclif/config prerun hook done +0ms
  artillery:run init version: @oclif/command@1.8.16 argv: [ 'socket-io.yml' ] +0ms
  engine_util path = target ; value = "http://localhost:8080/" (string) ; (subj type: hash) ; newValue = "http://localhost:8080/" ; newPath = target +0ms
  engine_util path = phases ; value = [{"duration":1,"arrivalRate":1}] (object) ; (subj type: hash) ; newValue = [{"duration":1,"arrivalRate":1}] ; newPath = phases +0ms
  engine_util path = phases[0] ; value = {"duration":1,"arrivalRate":1} (object) ; (subj type: list) ; newValue = {"duration":1,"arrivalRate":1} ; newPath = phases[0] +0ms
  engine_util path = phases[0].duration ; value = 1 (number) ; (subj type: hash) ; newValue = 1 ; newPath = phases[0].duration +0ms
  engine_util path = phases[0].arrivalRate ; value = 1 (number) ; (subj type: hash) ; newValue = 1 ; newPath = phases[0].arrivalRate +0ms
  core Worker thread count: 15 +0ms
⠋   follow-redirects options {
  maxRedirects: 21,
  maxBodyLength: 10485760,
  protocol: 'https:',
  path: '/batch/',
  method: 'POST',
  headers: {
    Accept: 'application/json, text/plain, */*',
    'Content-Type': 'application/json',
    'user-agent': 'posthog-node/1.3.0',
    'Content-Length': 657
  },
  agent: undefined,
  agents: { http: undefined, https: undefined },
  auth: undefined,
  hostname: 'app.posthog.com',
  port: null,
  nativeProtocols: {
    'http:': {
      _connectionListener: [Function: connectionListener],
      METHODS: [Array],
      STATUS_CODES: [Object],
      Agent: [Function],
      ClientRequest: [Function: ClientRequest],
      IncomingMessage: [Function: IncomingMessage],
      OutgoingMessage: [Function: OutgoingMessage],
      Server: [Function: Server],
      ServerResponse: [Function: ServerResponse],
      createServer: [Function: createServer],
      validateHeaderName: [Function: hidden],
      validateHeaderValue: [Function: hidden],
      get: [Function: get],
      request: [Function: request],
      maxHeaderSize: [Getter],
      globalAgent: [Getter/Setter]
    },
    'https:': {
      Agent: [Function: Agent],
      globalAgent: [Agent],
      Server: [Function: Server],
      createServer: [Function: createServer],
      get: [Function: get],
      request: [Function: request]
    }
  }
} +0ms
  @oclif/config start postrun hook +51ms
  @oclif/config postrun hook done +0ms
  core worker init ok: 1 - state: 2 +46ms
⠸ 2022-04-12T07:50:58.452Z artillery:worker { id: 1, ts: 1649749858451, event: 'readyWaiting' }
  core workers prepared +250ms
2022-04-12T07:50:58.483Z runner run() with: {"config":{"target":"http://localhost:8080/","phases":[{"duration":1,"arrivalRate":1}],"statsInterval":30,"payload":null,"defaults":{}},"scenarios":[{"name":"Emit and validate response","engine":"socketio","flow":[{"emit":{"channel":"echo","data":"Hello from Artillery","response":{"channel":"echoResponse","data":"Hello from Artillery"}}}]},{"name":"Emit and validate acknowledgement","engine":"socketio","flow":[{"emit":{"channel":"userDetails","acknowledge":{"match":{"json":"$.0.name","value":"Artillery"}}}}]}]}
Phase started: unnamed (index: 0, duration: 1s) 09:50:58(+0200)

2022-04-12T07:50:58.484Z artillery:worker {
  id: 1,
  ts: 1649749858484,
  event: 'phaseStarted',
  phase: { duration: 1, arrivalRate: 1, mode: 'uniform', index: 0 }
}
2022-04-12T07:50:58.484Z phases creating a uniform process for arrivalRate
2022-04-12T07:50:58.484Z arrivals tickInterval = 1000, duration = 1000
2022-04-12T07:50:58.484Z arrivals this._tickInterval set to 1000000
2022-04-12T07:50:58.485Z arrivals maxArrivals = 1
2022-04-12T07:50:58.485Z artillery:worker { id: 1, ts: 1649749858485, event: 'running' }
⠼   core workers running +51ms
⠦ 2022-04-12T07:50:59.486Z runner picking scenario 0 (Emit and validate response) weight = 1
Phase completed: unnamed (index: 0, duration: 1s) 09:50:59(+0200)

2022-04-12T07:50:59.486Z perf runScenarioDelta: 0.9
2022-04-12T07:50:59.487Z socket.io-client:url parse http://localhost:8080/
2022-04-12T07:50:59.487Z socket.io-client new io instance for http://localhost:8080/
2022-04-12T07:50:59.488Z socket.io-client:manager readyState closed
2022-04-12T07:50:59.488Z socket.io-client:manager opening http://localhost:8080/
2022-04-12T07:50:59.488Z engine.io-client:socket creating transport "polling"
2022-04-12T07:50:59.488Z engine.io-client:socket options: {"path":"/socket.io/","agent":false,"withCredentials":false,"upgrade":true,"timestampParam":"t","rememberUpgrade":false,"rejectUnauthorized":true,"perMessageDeflate":{"threshold":1024},"transportOptions":{},"closeOnBeforeunload":true,"hostname":"localhost","secure":false,"port":"8080","query":{"EIO":4,"transport":"polling"},"socket":{"secure":false,"hostname":"localhost","port":"8080","transports":["polling","websocket"],"readyState":"opening","writeBuffer":[],"prevBufferLen":0,"opts":{"path":"/socket.io/","agent":false,"withCredentials":false,"upgrade":true,"timestampParam":"t","rememberUpgrade":false,"rejectUnauthorized":true,"perMessageDeflate":{"threshold":1024},"transportOptions":{},"closeOnBeforeunload":true,"hostname":"localhost","secure":false,"port":"8080"},"id":null,"upgrades":null,"pingInterval":null,"pingTimeout":null,"pingTimeoutTimer":null}}
2022-04-12T07:50:59.488Z engine.io-client:polling polling
2022-04-12T07:50:59.488Z engine.io-client:polling-xhr xhr poll
2022-04-12T07:50:59.489Z engine.io-client:polling-xhr xhr open GET: http://localhost:8080/socket.io/?EIO=4&transport=polling&t=O0SmHoW&b64=1
2022-04-12T07:50:59.489Z engine.io-client:polling-xhr xhr data null
2022-04-12T07:50:59.493Z engine.io-client:socket setting transport polling
2022-04-12T07:50:59.493Z socket.io-client:manager connect attempt will timeout after 20000
2022-04-12T07:50:59.493Z socket.io-client:manager readyState opening
2022-04-12T07:50:59.493Z arrivals maxArrivals reached, stopping
2022-04-12T07:50:59.493Z artillery:worker {
  id: 1,
  ts: 1649749859493,
  event: 'phaseCompleted',
  phase: { duration: 1, arrivalRate: 1, mode: 'uniform', index: 0 }
}
2022-04-12T07:50:59.493Z runner All phases launched
2022-04-12T07:50:59.497Z engine.io-client:polling polling got data 96:0{"sid":"T7IiY7tJTVbbGRBJAAYP","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}2:40
2022-04-12T07:50:59.497Z engine.io-client:socket socket receive: type "error", data "parser error"
2022-04-12T07:50:59.497Z engine.io-client:socket socket error {"code":"parser error"}
2022-04-12T07:50:59.497Z socket.io-client:manager error
2022-04-12T07:50:59.497Z socket.io-client:manager cleanup
2022-04-12T07:50:59.497Z socketio Error: server error
    at Socket.onPacket (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/socket.js:341:33)
    at XHR.Emitter.emit (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/@socket.io/component-emitter/index.js:143:20)
    at XHR.onPacket (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transport.js:109:15)
    at callback (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transports/polling.js:98:18)
    at Array.forEach (<anonymous>)
    at XHR.onData (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transports/polling.js:101:77)
    at Request.Emitter.emit (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/@socket.io/component-emitter/index.js:143:20)
    at Request.onData (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js:200:14)
    at Request.onLoad (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js:241:18)
    at XMLHttpRequest.xhr.onreadystatechange (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js:158:26)
2022-04-12T07:50:59.498Z socket.io-client:manager disconnect
2022-04-12T07:50:59.498Z socket.io-client:manager closed due to forced close
2022-04-12T07:50:59.498Z socket.io-client:manager cleanup
2022-04-12T07:50:59.498Z engine.io-client:socket socket close with reason: "forced close"
2022-04-12T07:50:59.498Z engine.io-client:polling transport not open - deferring close
2022-04-12T07:50:59.498Z engine.io-client:socket socket closing - telling transport to close
2022-04-12T07:50:59.498Z runner Error: server error
    at Socket.onPacket (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/socket.js:341:33)
    at XHR.Emitter.emit (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/@socket.io/component-emitter/index.js:143:20)
    at XHR.onPacket (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transport.js:109:15)
    at callback (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transports/polling.js:98:18)
    at Array.forEach (<anonymous>)
    at XHR.onData (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transports/polling.js:101:77)
    at Request.Emitter.emit (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/@socket.io/component-emitter/index.js:143:20)
    at Request.onData (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js:200:14)
    at Request.onLoad (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js:241:18)
    at XMLHttpRequest.xhr.onreadystatechange (/home/marcel/Documents/fiddles/artillery-examples-fork/socket-io/node_modules/artillery/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js:158:26)
⠇ 2022-04-12T07:51:00.494Z ssms _aggregateRates to 1649749890000 2022-04-12T07:51:30.000Z
  ssms mergeBuckets // timeslices: 1649749850000 +0ms
--------------------------------------
Metrics for period to: 09:51:00(+0200) (width: 0.012s)
--------------------------------------

errors.Error: server error: .................................................... 1
vusers.created: ................................................................ 1
vusers.created_by_name.Emit and validate response: ............................. 1
vusers.failed: ................................................................. 1

  ssms mergeBuckets // timeslices: 1649749850000 +2ms
All VUs finished. Total time: 2 seconds

--------------------------------
Summary report @ 09:51:00(+0200)
--------------------------------

errors.Error: server error: .................................................... 1
vusers.created: ................................................................ 1
vusers.created_by_name.Emit and validate response: ............................. 1
vusers.failed: ................................................................. 1
  commands:run shutting down 🦑 +0ms
  commands:run Graceful shutdown initiated +0ms
  commands:run Cleanup finished +0ms
Khusir-Redapple commented 1 year ago

I'm having same issue