TestEngineering/Services/LoadTesting

From MozillaWiki
Jump to navigation Jump to search

Load Testing

Load testing is critical for quality of service, server cost efficiency, and understanding scaling over time. Our goals are to hit common and edge cases that may cause DB and hard drive failure.

PushGo

Primary load test workflows

Client executes:

A. Smoke persistent connections

  • client connects, sends hello, closes upon response.

B. Ping 2 min

  • client connects, sends hello, pings every 20 sec, then closes upon 2 min.

C. Real App

  • client connects, sends hello, registers channel with 16 char uaid, and 8 char channel.
  • client issues an HTTP PUT after some amount of time, confirms and acks notification received.
  • close connection

D. App Long duration

  • same as 'C' but keeps connection open, and puts to socket on interval for 5 min
  • close connection

E. Multi channel

  • client registers 3 channels
  • executes http put to all of them
  • cloes connection

Edge Cases

F. Lots of users on one uaid/channel

  • try to overwhelm a single uaid and channel pair

[--jr This is an invalid case. Only one UAID per device is allowed. Additional requests to the same UAID from multiple devices results in the last requestor "winning".]

G. Lots of channels on one uaid

  • try to overwhelm a single uaid

H. Long uaid/channel strings

  • this is in API tests

I. Fuzz WebSocket

  • send random valid messages to server at scale

J. Fuzz HTTP server

  • send HTTP PUTs against non existent endpoints at scale.

K. 24 hr socket

  • send hello and register channel and update endpoint for 24 hours.