Sometimes, you have to check a system's log or run some commands during automation or load test.
For example, recently I had to perform some end-to-end tests against enterprise outdoor modems. The test case requires to perform 100 "provisioning" against each modem per hour, having 50 modems at a time. Here is a brief about what "provisioning" means:
1- Script picks one modem from data source and apply a mutex (do-not-use flag).
2- Get corresponding parameters that should be used in web service requests from data source.
3- Generate additional needed parameters (Random IDs, Names created from timestamp , etc)
4-Send some requests in ordered manner (add to ESB DB, create a traffic service, activate)
5- Listen to JMS for the response,
6- Reboot the device
7- wait for the device to get back online
8- check device status, resources and logs.
9-continue to activate more services (repeat steps 1 to 8) for x more times.
The lines I marked as red are not the hardest parts, but are the ones I'm going to write about.
I'm going to use Putty as the extension tool because:
- I can run multiple Putty instances in multi-thread load tests,
- We can easily save logs through Putty output.
Step 1: Create sessions for each remote device. Here is what I suggest in Putty config:
- Name the session to IP or NS to limit your data-driven setup efforts.
- "Close window on exit" : Always
- Logging: Printable output with a unique file name, Always append to the end.
- Connection keepalive check interval: ~5 (that depends, but is necessary to make the window closed when inactive)
- Define Data -> Auto-Login username
- if you are going to send only one line of command, put it in SSH -> Remote Command; otherwise, you can put all commands in a text file and call it externally as I explain below.
Step 2: create command files:
Since we have two group of commands (Reboot and Monitor), then I will use external files:
- Reboot: It is usually needed to send the "reboot" command with /sbin/ prefix if you are sending it over SSH remotely. Therefore, my reboot.txt file only contains one line (/sbin/reboot)
- Monitoring: I want to constantly tail logs, and monitor CPU and RAM usage at the same time. So I have to run one of them in the background. something like:
Step 3: Call putty (and ping) as OS processes:
The way to conduct this step depends the tool or language you are using, but the concept is the same. You simply need to execute a command using OS command shell. for example in Java you'll need to run it like this:
exec(String command, String envp, File dir)
Remember, "String command" is a little tricky in windows: you usually need to add "cmd /c" before the main command string.
What you are going to call putty is:
c:/puttyFolder/putty.exe -load "session_name" -pw password -m c:/textFiles/Reboot.txt