Injectors are physical or virtual machines that generate targeted workloads at the system under test (SUT). The Eggplant Performance install package includes the Injector, along with Studio and Test Controller software. The Windows machine where you install and use Eggplant Performance to design and execute tests is the test controller in your Eggplant Performance environment.
You can also install and run injectors separately on remote machines. Injectors can run on Windows and Linux operating systems.
The following diagram illustrates the interaction between the Test Controller and injectors.
How Injectors Work
You can run an injector as a service or as an executable from the command line. The injector software includes an engine that performs the test execution.
The injector listens on a configurable port and waits for tests to connect. When a test connects to an injector, the injector transfers the necessary engines, libraries, and data files, and it starts one or more of its engines to execute the test.
After the engines have started, the injector plays no further part in executing the test. It does, however, continue to listen for test connections. When a test completes, the injector continues waiting for the next test connection.
The test definition tells the injector the number and type of engines to start:
A separate engine is started for each virtual user (VU) script language:
- C++ scripts must execute within a C++ engine
- Java scripts within a Java engine
- C# scripts within a .NET engine.
The injector can start extra engines depending on the size of the VU population. VUs run as threads within an engine process, but on some injector platforms the number of threads that can run within a process is limited by resource allocation, so extra engine processes are needed.
Engines execute the test and inject load into the SUT. During test execution, the controller communicates with the engines to monitor test progress and gather real-time metrics.
Engines communicate with the controller through ports that are different from the ones the injector uses. You can configure which ports an injector uses on the injector definition page in the Workspace on the controller. See The Basic Settings Tab in Configuring Static Injector Families for information about configuring ports.
Firewalls and Injectors
Firewalls can prevent communication between the controller and injectors. In such circumstances, you need to configure the firewalls to allow the necessary communication between the controller and injectors. For information about making the necessary changes, see Firewall Configuration.
When you create a workspace in Eggplant Performance Studio, a localhost injector is automatically created for you, which is then accessible to all projects within that workspace. The localhost injector corresponds to the Windows machine where you install and run Eggplant Performance Studio. The localhost injector is unique because Test Controller can start and stop it automatically.
The localhost injector is created in the This machine injector family. Injector families let you group common configuration settings for multiple injector machines.
You can't add other injectors to the This machine injector family, instead you must create another injector family. For information about creating an injector family, see Create an Injector Family Wizard.
While it may be convenient to use, the localhost injector has the following limitations:
- The number of VUs that can run on a single injector machine is limited by machine resources. Running the injector on the same machine with Test Controller means there are fewer resources for the injector.
- As with Eggplant Performance Studio, the injector is only available for Windows.
If the localhost injector is sufficient for your testing, you can use it. If you plan to run bigger tests and need more resources, or you want to run the injector on a different operating system, you can install the injector software on one or more different machines.
Separate injector installers are provided for Windows and Linux.