A long (though not exhaustive) list, although not every change will merit running every single test.
- Upgrade an existing instance of ServiceControl to the version being released
- Create a new instance of ServiceControl
- Check with both localhost and a custom hostname
- Upgrade an existing instance of ServiceControl to the version being released using the Powershell Scripts
- Create a new instance of ServiceControl using the Powershell Scripts
- Install and run ServiceControl Primary, Audit, and Monitoring instances
- Install the ServiceControl.SmokeTesting tool
- Start the smoke testing tool e.g.:
dotnet servicecontrol.smoketest rabbitmq - Test Custom checks
- Run
check-fail 1and verify in [ServicePulse->Custom Checks] that a warning appeared - Run
check-pass 1and verify in [ServicePulse->Custom Checks] that the warning is gone
- Run
- Test heartbeats
- With the tool running verify in [ServicePulse->Heartbeats->Healthy Endpoints] that
Endpoints0toEndpoints5andSenderendpoints are reported - Run
stop 1and verify in [ServicePulse->Heartbeats->Healthy Endpoints] thatEndpoint1has moved to [Unhealthy Endpoints]
- With the tool running verify in [ServicePulse->Heartbeats->Healthy Endpoints] that
- Recoverability
- Retry single message
- Run
throw 1andsend 1 1commands - Run
recover 1and retry the message from ServicePulse
- Run
- Retry message group
- Run
throw 1andsend 1 50commands - Run
recover 1and retry the whole message group from ServicePulse
- Run
- Message body editing
- Run
throw 1andsend 1 1commands - Run
recover 1, edit the message body, and retry the message from ServicePulse
- Run
- Failed queue redirection
- Run
throw 1andsend 1 1commands - Go to [Service Pulse->Configuration->Create redirect] and add
Endpoint1toEndpoint2redirect - Retry the failed message
- Run
- Retry single message
- Audits
- Generate messages e.g.
send 1 10and check if these are accessible in ServicePulse - Generate message messages with non-trivial content using
send-fulltext 1 10. Open ServicePulse and check if a message can be found in the search box using one of the strings from theLongStringproperty - Generate messages using
fanoutand check in the [Sequence Diagram] view in ServicePulse that the graph is properly visualized
- Generate messages e.g.
- Saga Auditing
- Generate messages using
saga-audits 1and check in the [Saga] view in ServicePulse that the graph is properly visualized
- Generate messages using
- Integration Events
- Download integration events sample. Switch the sample to the appropriate transport.
- Generate a failing message in the
NServiceBusEndptoinand validate that an integration eventMessageFailedis received by theEndpointsMonitor
- Monitoring
- Navigate to the [Monitoring] tab in ServicePulse and verify that all 6 endpoints are visible
- Verify that the failed messages indicator is rendered for endpoints with failed messages
- Navigate to the details of
Endpoint0and verify that all the graphs are properly rendered
Try to break ServiceControl instances by gracefully (CTRL+C) and ungracefully (kill) processes to validate if both storage and logic behavior correctly. This type of testing is very difficult to automate.
- Ingestion, have the smoketest tool or the load generator generator create a large number of messages:
- Gracefully stop (CTRL+C) processes
- Ungracefully (kill) processes
- Retry groups, create a large retry group and interrupt these:
- Gracefully stop (CTRL+C) processes
- Ungracefully (kill) processes
Test the new version against the previous version.
- Test performance with a clean database
- Test performance with a moderate database that exceeds the RAM of the machine
- Test performance of a large database that exceeds 500 GB
- Test stability by:
- Rebooting the machine and verifying that ServiceControl instances start in a reasonable amount of time and behave correctly
- Stopping ServiceControl Windows services, verifying they stop as expected, and subsequently start in a reasonable amount of time and behave correctly
- Killing the hosting virtual machine from the Azure portal and verifying instances behave correctly after the reboot
- Trying to upgrade instances to newer versions while ingestion runs at full speed under load and verify the upgrade is successful
Review CPU/RAM utilization and disk IO.