- Launching the Wonderland server application by hand.
- Tapping into the Darkstar server profiling data (if enabled, Darkstar will spit profiling data out via a specific port)
- Launching sets of simulated clients by hand.
- Visually monitoring the Darkstar profiling data (using a set of human eyes)
- Making a decision on whether or not the system is overloaded based on the profiling data.
- Adding more clients into the system by hand if the system is not overloaded.
- Rinse and repeat until satisfied that you have determined the maximum load on the system.
Clearly we have a problem. We need a test harness that can execute tests such as the one described above, and also collect, record, and report results in a way that is easy for consumers to interpret. It should also be abstract enough to plug in any Darkstar application test, such as the Wonderland example above. Before we can build that, though, we need to answer a more basic question: What is a Darkstar test? Here's my stab at it:
A Darkstar test consists of four main components:I'm starting to design an automated test harness around the above definition (details, of which, I'll leave to a later post). There is one thing, though, that is obviously apparent about such a system: it should be valuable for testing both Darkstar itself, and applications built on top of Darkstar. This would include Project Wonderland, any example applications that we have already developed, and also applications developed in the community. With that said, I will be treating this project as though it will be consumable by community members outside of the core Darkstar team, and hope to engage others in my efforts through this blog.
A Darkstar test must be run on a set of resources (presumably pieces of hardware):
- A Darkstar server distribution (i.e. the server package downloaded from projectdarkstar.com)
- A Darkstar server application
- A set of Darkstar client application simulators
- A set of system probes
A Darkstar test reports results based on what type of test it is:
- A set of systems to run the server application (more than one if multi-node).
- A set of systems to run the client application simulators.
- Functional test: The client application simulators are responsible for running tests and reporting pass/fail decisions as results.
- Load test: A preconfigured number of client application simulators are introduced into the system. The system probes are responsible for monitoring conditions of the system. If the specific condition that a probe is monitoring violates a preconfigured threshold, a fail decision is reported as a result.
- Capacity test: The client application simulators are incrementally introduced into the system until one or more of the system probes reports a threshold violation. The number of clients that the system can support without violating the thresholds is reported as a result.
Stay tuned...
2) Load test: A preconfigured number of client application simulators are introduced into the system. The system probes are responsible for monitoring conditions of the system. If the specific condition that a probe is monitoring violates a preconfigured threshold, a fail decision is reported as a result.
ReplyDelete3) Capacity test: The client application simulators are incrementally introduced into the system until one or more of the system probes reports a threshold violation. The number of clients that the system can support without violating the thresholds is reported as a result.
What are these system probes? Please provide an example from the wonderland applicaiton
Also an example of preconfigured threshold and specific condition
ReplyDelete