You can also install and run injectors separately on remote machines. Injectors can run on Windows, Mac, 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 actually 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, and C# scripts within a .NET engine.
- Additionally, the injector can start extra engines depending on the size of the VU population. VUs run as threads within an engine process and resource allocation, on some injector platforms, restricts the number of threads that can run within a process.
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.
The localhost Injector
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.
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.
- It is only available on Windows systems because Eggplant Performance Studio is only available for Windows.
If the localhost injector is sufficient for your testing, you can use it. However, 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 on a different machine. We provide separate injector installers for Windows, Mac, and Linux.