Package org.uberfire.io.lock

Source Code of org.uberfire.io.lock.ThreadLockServiceTest

package org.uberfire.io.lock;

import org.junit.Test;
import org.uberfire.commons.lock.impl.ThreadLockServiceImpl;

import static org.fest.assertions.api.Assertions.*;

public class ThreadLockServiceTest {

    @Test
    public void testLock() {
        final ThreadLockServiceImpl lockService = new ThreadLockServiceImpl();
        lockService.lock();
        lockService.unlock();
    }

    @Test
    public void testDoubleLock() {
        final ThreadLockServiceImpl lockService = new ThreadLockServiceImpl();
        lockService.lock();
        lockService.lock();
        lockService.unlock();
        lockService.unlock();
    }

    @Test(expected = IllegalMonitorStateException.class)
    public void testUnlock() {
        final ThreadLockServiceImpl lockService = new ThreadLockServiceImpl();
        lockService.lock();
        lockService.lock();
        lockService.unlock();
        lockService.unlock();
        lockService.unlock();
    }

    @Test
    public void testOnThreads() throws InterruptedException {
        for ( int i = 0; i < 100; i++ ) {
            final ThreadLockServiceImpl lockService = new ThreadLockServiceImpl();
            final boolean[] vals = new boolean[]{ false };
            lockService.lock();
            Thread thread = new Thread( new Runnable() {
                @Override
                public void run() {
                    lockService.lock();
                    vals[ 0 ] = true;
                }
            } );
            thread.setName( "temp" );
            assertThat( vals[ 0 ] ).isEqualTo( false );
            thread.start();
            assertThat( vals[ 0 ] ).isEqualTo( false );
            lockService.unlock();
            Thread.sleep( 120 );
            assertThat( vals[ 0 ] ).isEqualTo( true );
        }
    }
}
TOP

Related Classes of org.uberfire.io.lock.ThreadLockServiceTest

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.