/* (c) 2015 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.cluster.hazelcast; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.expectLastCall; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import org.geoserver.platform.resource.Resource.Lock; import org.junit.Before; import org.junit.Test; import com.hazelcast.core.Cluster; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.ILock; public class HzLockProviderTest { private HazelcastInstance hz; private HzLockProvider lockProvider; private HzCluster cluster; @Before public void setUp() throws Exception{ Cluster hzCluster = createMock(Cluster.class); hz = createMock(HazelcastInstance.class); expect(hz.getCluster()).andStubReturn(hzCluster); cluster = createMock(HzCluster.class); expect(this.cluster.isEnabled()).andStubReturn(true); expect(this.cluster.isRunning()).andStubReturn(true); expect(this.cluster.getHz()).andStubReturn(hz); lockProvider = new HzLockProvider(); lockProvider.setCluster(cluster); lockProvider.afterPropertiesSet(); } @Test public void testAqcuire() { ILock lock = createMock(ILock.class); expect(this.hz.getLock(eq("path1"))).andReturn(lock); expect(lock.isLockedByCurrentThread()).andStubReturn(true); lock.lock(); expectLastCall(); expect(lock.isLocked()).andReturn(true).times(1); lock.unlock(); expectLastCall(); replay(lock, hz, cluster); Lock gsLock = lockProvider.acquire("path1"); gsLock.release(); verify(hz); verify(cluster); verify(lock); } }