private void testSubmit(
      ResponseListener monitor,
      IPTestStub ipTest,
      boolean callMultiVersion,
      IPTestDefinition testDef)
      throws Exception {
    LoggingBase.logMessage("PatternTest.testSubmit(" + callMultiVersion + ")");

    if (callMultiVersion) {
      ipTest.asyncSubmitMulti(testDef, new UInteger(100), monitor);
    } else {
      ipTest.asyncTestSubmit(testDef, monitor);
    }
  }
  private void testProgress(
      ResponseListener monitor,
      IPTestStub ipTest,
      boolean callMultiVersion,
      boolean callEmptyVersion,
      IPTestDefinition testDef)
      throws Exception {
    LoggingBase.logMessage("PatternTest.testProgress(" + callMultiVersion + ")");

    synchronized (monitor) {
      if (callMultiVersion) {
        ipTest.asyncProgressMulti(testDef, new UInteger(100), monitor);
      } else {
        if (callEmptyVersion) {
          ipTest.asyncTestProgressEmptyBody(testDef, monitor);
        } else {
          ipTest.asyncProgress(testDef, monitor);
        }
      }
    }
  }
  public boolean initiateRequest(String procedureName) throws Exception {
    QoSLevel qos = QoSLevel.BESTEFFORT;
    SessionType session = SessionType.LIVE;
    Identifier sessionName = PubSubTestCaseHelper.getSessionName(session);
    initConsumer(session, sessionName, qos);
    IPTestStub ipTest = ipTestConsumer.getStub();

    IPTestDefinition testDef =
        new IPTestDefinition(
            procedureName,
            ipTestConsumer.getConsumer().getURI(),
            HeaderTestProcedure.AUTHENTICATION_ID,
            qos,
            HeaderTestProcedure.PRIORITY,
            HeaderTestProcedure.DOMAIN,
            HeaderTestProcedure.NETWORK_ZONE,
            session,
            sessionName,
            new IPTestTransitionList(),
            new Time(System.currentTimeMillis()));

    ipTest.request(testDef);
    return true;
  }