예제 #1
0
 @After
 public void liberarPuerto() {
   if (listeningAcceptor != null) {
     listeningAcceptor.closeAndDispose();
   }
   if (connector != null) {
     connector.closeAndDispose();
   }
 }
예제 #2
0
  @Test
  public void deberiaDetectarLaDesconexion() {
    // El que escucha va a desconectarse al recibir el primer mensaje
    final QueueReceptionHandler handlerReceptor = QueueReceptionHandler.create();
    final ObjectSocketConfiguration receptionConfig =
        ObjectSocketConfiguration.create(
            testAddress,
            new ObjectReceptionHandler() {

              public void onObjectReceived(final Object received, final ObjectSocket receivedFrom) {
                handlerReceptor.onObjectReceived(received, receivedFrom);
                receivedFrom.closeAndDispose();
              }
            },
            JsonTextualizer.createWithTypeMetadata());
    // Empezamos a escuchar en el puerto
    listeningAcceptor = ObjectSocketAcceptor.create(receptionConfig);

    // Conectamos el cliente al puerto compartido
    final ObjectSocketConfiguration senderConfig =
        ObjectSocketConfiguration.create(testAddress, JsonTextualizer.createWithTypeMetadata());
    final WaitBarrier esperarNotificacionDeCierre = WaitBarrier.create();
    final AtomicBoolean notificacionRecibida = new AtomicBoolean(false);
    senderConfig.setEventHandler(
        new SocketEventHandler() {

          public void onSocketOpened(final ObjectSocket nuevoSocket) {}

          public void onSocketClosed(final ObjectSocket socketCerrado) {
            notificacionRecibida.set(true);
            esperarNotificacionDeCierre.release();
          }
        });
    connector = ObjectSocketConnector.create(senderConfig);

    // Enviamos un objeto cualquiera a traves del socket
    final Object objetoEnviado = "Hola manola";
    final ObjectSocket clientSocket = connector.getObjectSocket();
    clientSocket.send(objetoEnviado);

    // Esperamos que llegue la notificacion de socket cerrado
    esperarNotificacionDeCierre.waitForReleaseUpTo(TimeMagnitude.of(5, TimeUnit.SECONDS));
    Assert.assertEquals(
        "Deberíamos haber recibido la notificacion", true, notificacionRecibida.get());
  }