Package redis.client

Source Code of redis.client.Issue29Test

package redis.client;

import junit.framework.Assert;
import org.junit.Test;
import redis.reply.Reply;

import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicReference;

import static junit.framework.Assert.*;

public class Issue29Test {
  @Test
  public void testBRPOPLPUSHHangup() throws IOException, InterruptedException {
    final RedisClient client = new RedisClient("localhost", 6379);
    final AtomicReference<Reply> ref = new AtomicReference<Reply>();
    final AtomicReference<Exception> error = new AtomicReference<Exception>();
    ExecutorService es = Executors.newCachedThreadPool();
    final CountDownLatch latch = new CountDownLatch(1);
    es.submit(new Runnable() {
      @Override
      public void run() {
        try {
          latch.countDown();
          Reply reply = client.brpoplpush("popsource", "pushdest", 0);
          ref.set(reply);
        } catch(Exception e) {
          error.set(e);
        }
      }
    });
    latch.await();
    Thread.sleep(100);
    client.close();
    Thread.sleep(3000);
    assertNotNull(error.get());
    assertNull(ref.get());
  }
}
TOP

Related Classes of redis.client.Issue29Test

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.