private void sendEvent(long startOffset, long timeout, boolean expect) throws Exception {
    structuredEvent_.header.variable_header = new Property[2];

    Date _time = new Date(System.currentTimeMillis() + startOffset);

    Any _startTimeAny = getClientORB().create_any();

    UtcTHelper.insert(_startTimeAny, Time.corbaTime(_time));

    structuredEvent_.header.variable_header[0] = new Property(StartTime.value, _startTimeAny);

    Any _timeoutAny = getClientORB().create_any();
    TimeTHelper.insert(_timeoutAny, timeout);

    structuredEvent_.header.variable_header[1] = new Property(Timeout.value, _timeoutAny);

    StructuredPushSender _sender = new StructuredPushSender(getClientORB());

    _sender.setStructuredEvent(structuredEvent_);

    StructuredPushReceiver _receiver = new StructuredPushReceiver(getClientORB());

    _sender.connect(eventChannel_, false);
    _receiver.connect(eventChannel_, false);

    new Thread(_receiver).start();
    new Thread(_sender).start();

    Thread.sleep(startOffset + 2000);

    if (expect) {
      assertTrue("Receiver should have received something", _receiver.isEventHandled());
    } else {
      assertTrue("Receiver shouldn't have received anything", !_receiver.isEventHandled());
    }

    _receiver.shutdown();
    _sender.shutdown();
  }