← Back to team overview

sikuli-driver team mailing list archive

[Question #145261]: Sync multiple machines executing event driven testing

 

New question #145261 on Sikuli:
https://answers.launchpad.net/sikuli/+question/145261

Is there a reccomended way to synch multiple machines running Sikuli?

The scenario is as follows:

There are 2 machines (win7) executing a Sikuli script coded to respond when one machine sends a message to the other machine.  The problem is the machines can get out of sync relying on image recognition alone.

Pseudo state diagram below:

UserA -> launch -> login  -> Send Invite  ---->Accept invite message received--->  In chat conference
                                                           \/                                 /\
UserB-> launch -> login---->Receive Invite- > Accept Invite In chat conference--> In chat conference

The down and up arrows in the center line are to indicate message traffic, user A sends an invite to user B which triggers a message displayed on userB's machine.  User B responds and accepts sending a response that displayays a message in user A's machine.  I will need to expand the amount of participants in thhe future to 4 active users.
Setting waits of FOREVER will not work since the traffic between users is not synchronous due to many externalities such as CPU speed,network conditions.  The scenario where user A launches logs in and sends an invite before B is even finished launching the application.  In a loop this is compounded significantly.

I've tried having each machine "read" a common log file in .htm format ( read if check1 = true then execute next function else sleep1 #then loop the check) Problem is if the file is open for any reason the read fails and so does the script.

One alternative is to install a lighhtweight xmpp chat client and have the machines send messages that would be read with Sikuli.
while not exists(chatwindow1, ):
    testfunction()
When the condition is true the loop terminates and test function is executed

What I'd like to do is have the machines communicate directly and I'm not sure how to proceed.

XML-RPC?  Will I need to make all test machines their own server with their own client making calls?
Will making user A's machine as a server suffice?  Does this intergrate with Sikuli?

Thank you

-- 
You received this question notification because you are a member of
Sikuli Drivers, which is an answer contact for Sikuli.