Scripting through a SUT Restart
A question that comes up from time-to-time is the need to run a script that restarts the system under test (SUT). The code referenced below demonstrates the method for scripting through the restart of a Windows system. You’d do something similar for other operating systems.
Step by Step: Scripting through a SUT Restart
The process has several steps:
- Store the current connection information to use as the argument to the connect command after the restart.
- Script the restart.
- Wait for the restart to finish.
- Reconnect to the system.
Windows presents a complication that requires a couple of workarounds. The VNC server runs as a service and seems to persist into part of the shutdown process. So the connection will drop initially, but a reconnect could be made briefly while the machine was shutting down. So to ensure that a successful connection takes place after the restart, it’s a good idea to add a check for a visual cue to see that the restart is finished. If it is not, assume that you’ve reconnected during the shutdown, force a disconnect, and start the check over again.
Example:
-- store the current connection information to use as the argument to the connect command later
put connectionInfo() into myConnection
-- do restart here
repeat while connectionInfo().connected is "true"
  -- make sure the connection has been closed by the remote system
  wait 1
end repeat
-- now try to reconnect
repeat while connectionInfo().connected is not "true"
  try
    connect myConnection
    -- make sure the machine has really restarted
    -- the vnc server seems to spring back to life momentarily during shutdown
    RefreshScreen
    if not imageFound("StartMenu")
      disconnect
      next repeat
    end if
  catch
    wait 5.0
  end try
end repeat