Package org.redisson

Source Code of org.redisson.RedissonCountDownLatchTest

package org.redisson;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import org.junit.Assert;
import org.junit.Test;
import org.redisson.core.RCountDownLatch;

public class RedissonCountDownLatchTest {

    @Test
    public void testAwaitTimeout() throws InterruptedException {
        Redisson redisson = Redisson.create();

        ExecutorService executor = Executors.newFixedThreadPool(2);

        final RCountDownLatch latch = redisson.getCountDownLatch("latch1");
        Assert.assertTrue(latch.trySetCount(1));

        executor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    Assert.fail();
                }
                latch.countDown();
            }
        });


        executor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    Assert.assertEquals(1, latch.getCount());
                    boolean res = latch.await(550, TimeUnit.MILLISECONDS);
                    Assert.assertTrue(res);
                } catch (InterruptedException e) {
                    Assert.fail();
                }
            }
        });

        executor.shutdown();
        executor.awaitTermination(10, TimeUnit.SECONDS);

        redisson.shutdown();
    }

    @Test
    public void testAwaitTimeoutFail() throws InterruptedException {
        Redisson redisson = Redisson.create();

        ExecutorService executor = Executors.newFixedThreadPool(2);

        final RCountDownLatch latch = redisson.getCountDownLatch("latch1");
        Assert.assertTrue(latch.trySetCount(1));

        executor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    Assert.fail();
                }
                latch.countDown();
            }
        });


        executor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    Assert.assertEquals(1, latch.getCount());
                    boolean res = latch.await(500, TimeUnit.MILLISECONDS);
                    Assert.assertFalse(res);
                } catch (InterruptedException e) {
                    Assert.fail();
                }
            }
        });

        executor.shutdown();
        executor.awaitTermination(10, TimeUnit.SECONDS);

        redisson.shutdown();
    }

    @Test
    public void testCountDown() throws InterruptedException {
        Redisson redisson = Redisson.create();
        RCountDownLatch latch = redisson.getCountDownLatch("latch");
        latch.trySetCount(1);
        Assert.assertEquals(1, latch.getCount());
        latch.countDown();
        Assert.assertEquals(0, latch.getCount());
        latch.await();
        latch.countDown();
        Assert.assertEquals(0, latch.getCount());
        latch.await();
        latch.countDown();
        Assert.assertEquals(0, latch.getCount());
        latch.await();

        RCountDownLatch latch1 = redisson.getCountDownLatch("latch1");
        latch1.trySetCount(1);
        latch1.countDown();
        Assert.assertEquals(0, latch.getCount());
        latch1.countDown();
        Assert.assertEquals(0, latch.getCount());
        latch1.await();

        RCountDownLatch latch2 = redisson.getCountDownLatch("latch2");
        latch2.trySetCount(1);
        latch2.countDown();
        latch2.await();
        latch2.await();

        RCountDownLatch latch3 = redisson.getCountDownLatch("latch3");
        Assert.assertEquals(0, latch.getCount());
        latch3.await();

        RCountDownLatch latch4 = redisson.getCountDownLatch("latch4");
        Assert.assertEquals(0, latch.getCount());
        latch4.countDown();
        Assert.assertEquals(0, latch.getCount());
        latch4.await();

        redisson.shutdown();
    }

}
TOP

Related Classes of org.redisson.RedissonCountDownLatchTest

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.