/**
   * Return Scheduler's interface. Start Scheduler if needed, connect as administrator if needed (if
   * not yet connected as user).
   *
   * <p>WARNING : if there was a previous connection as User, this connection is shut down. And so
   * some event can be missed by event receiver, between disconnection and reconnection (only one
   * connection to Scheduler per body is possible).
   *
   * @param user Type of user
   * @return scheduler interface
   * @throws Exception if an error occurs.
   */
  public Scheduler getSchedulerInterface(TestUsers user) throws Exception {
    startScheduler(currentTestConfiguration);

    if (!connectedSchedulerUser.is(user)) { // changing user on the fly
      if (connectedSchedulerUser != null) {
        connectedSchedulerUser.disconnect();
      }
      connectedSchedulerUser = new SchedulerTestUser(user);
      connectedSchedulerUser.connect(scheduler.getAuth());
    }

    if (!connectedSchedulerUser.isConnected()) {
      connectedSchedulerUser.connect(scheduler.getAuth());
    }

    return connectedSchedulerUser.getScheduler();
  }
 public void disconnect() throws Exception {
   connectedSchedulerUser.disconnect();
   connectedRMUser.disconnect();
 }
 private SchedulerMonitorsHandler getSchedulerMonitorsHandler() {
   return connectedSchedulerUser.getMonitorsHandler();
 }
 /**
  * Wait for a finished job. If Job is already finished, methods return. This method doesn't wait
  * strictly 'job finished event', it looks first if the job is already finished, if yes, returns
  * immediately. Otherwise method performs a wait for job finished event.
  *
  * @param id JobId representing the job awaited to be finished.
  * @param timeout in milliseconds
  * @throws ProActiveTimeoutException if timeout is reached
  */
 public void waitForFinishedJob(JobId id, long timeout) throws ProActiveTimeoutException {
   connectedSchedulerUser.getMonitorsHandler().waitForFinishedJob(id, timeout);
 }
 /** Kill the forked Scheduler if exists. */
 public void killScheduler() throws Exception {
   connectedRMUser.disconnect();
   connectedSchedulerUser.disconnect();
   scheduler.kill();
 }