Parallel Execution of different projects on different computer.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Parallel Execution of different projects on different computer.
Hi,
We re trying to use several computer for tests in order to cover different situations.
I've a Master computer and 2 Slave.
From the Master I can run tests on first on the master, after on the first slave and then on the second slave.
However I didn't find how to run all tests in the same time. Note that the tests are fully independent.
I've a first project on Master, 2 projects that are copied on the slave but I don't find how to start them in the same time from the Project suite or the master project.
This page shows the principle but no explanation on how to do it.
Thanks for your help,
regards,
Christophe
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @CBleunven, how's going?
I think what you're looking for is the WaitForCompletion parameter of the Run method. If you set it for True, it'll run all of your units simultaneously.
For examples and better explanation: https://support.smartbear.com/viewarticle/72150/
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
To clarify (as I use distributed testing and love it) "WaitForCompletion" will have the runtime "wait" on that line until the respective job is finished executing. Then continue on with the logic flow. So in th below example TestComplete or TestExecute will wait on the ".Run(true)" line until the remote VM finishes executing the Job.
If it was false, the runtime would quickly start the Job and move on to the next step in the logic flow. It would NOT wait for the Job to be finished.
function Test()
{
for (var i = 0; i < NetworkSuite.Jobs.Count - 1; i++)
NetworkSuite.Jobs(i).Run(true);
}
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
So if I have one master and 3 slaves I need 4 TestExecute licences ?
Thank you,
Mehdi
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, because you need to be able to run the application on multiple machines.
Robert Martin
[Hall of Fame]
Please consider giving a Kudo if I write good stuff
----
Why automate? I do automated testing because there's only so much a human being can do and remain healthy. Sleep is a requirement. So, while people sleep, automation that I create does what I've described above in order to make sure that nothing gets past the final defense of the testing group.
I love good food, good books, good friends, and good fun.
Mysterious Gremlin Master
Vegas Thrill Rider
Extensions available
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can also have
1 - TestComplete
3 - TestExecute
TestComplete can be used as a runtime.
It also depends how you setup the run configuration. Your master can do work instead of just sitting there running the slaves.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
"So if I have one master and 3 slaves I need 4 TestExecute licences ?"
Only if you need all 3 slave machines running concurrently. If you run sequentially, your single floating license for TE will be valid on all 3 slave machines.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi altemann and maximojo,
Sorry for the late reply I needed to work on other priorities. Thank you for your help, it help me to better understand how it works.
So if I've well understood, I need to run the Jobs with a script and not as an item in the master project. And the script is called by an item in the project. In itself it's not a problem. However if it allows to run 2 jobs on 2 slave computers, this doesn't allow to run some tests on the master computer in the same time than on a slave computer as it will wait for the end of a test item before starting the next one ?
Thanks for your help,
regards,
Christophe
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @CBleunven
I will explain how I have the master and slaves run the same jobs at the same time so the master's time is not wasted (so to speak).
This is how I do it. I'm sure there are other ways to set this up.
Basically the Master function below called by TC/TE starts the entire distributed testing process. Of course this is probably best run on a remote VM through TestExecute as, with the master doing work, you couldn't do much on your local PC (unless perhaps it was not using the UI).
If this is too simplistic let me know what you would like to see and I'll try to whip something up.
// TestComplete/TestExecutetest item calls Master function // below which starts distributed testing function Master() { // run slaves which do some setup and call "AllWorkerLoop()" also. //Pass "false" so master does NOT wait for slaves to complete // but continues on once they are started NetworkSuite.Jobs.ItemByName("SlaveJobs").Run(false); // master goes into this loop which slaves are also running from // the line above AllWorkerLoop(); } // When the slaves startup they simply call the AllWorkerLoop() function function Slave() { AllWorkerLoop(); } // master and slaves call same function function AllWorkerLoop() { // do work here }
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi maximojo,
thank you for your answer.
I finally found a way to do what I want by reading what you wrote.
I've a simple method
function startJobsForSlave1() { NetworkSuite.Jobs.ItemByName("SlaveJobs").Run(false); }
and I add a ProjectItem that call this method when it's suitable in my tests.
Then TE on master starts the tests on the slave computer and in the same time continue on the master one.
Many thanks for your help,
Christophe
