/* (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.hamcrest.Matchers.sameInstance;
import static org.junit.Assert.*;
import org.easymock.EasyMock;
import org.geoserver.platform.ExtensionFilter;
import org.geoserver.platform.GeoServerExtensionsHelper;
import org.geoserver.util.CacheProvider;
import org.geoserver.util.DefaultCacheProvider;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
public class HzExtensionFilterTest {
@Rule
public GeoServerExtensionsHelper.ExtensionsHelperRule extensions =
new GeoServerExtensionsHelper.ExtensionsHelperRule();
@Test
public void testActive() {
CacheProvider rivalProvider = EasyMock.createMock("rivalProvider", CacheProvider.class);
CacheProvider hzProvider = EasyMock.createMock("hzProvider", HzCacheProvider.class);
EasyMock.replay(rivalProvider, hzProvider);
ExtensionFilter filter = new HzExtensionFilter();
extensions.singleton("filter", filter, ExtensionFilter.class);
extensions.singleton("rivalProvider", rivalProvider, CacheProvider.class);
extensions.singleton("hzProvider", hzProvider, CacheProvider.class, HzCacheProvider.class);
CacheProvider result = DefaultCacheProvider.findProvider();
assertThat(result, sameInstance(hzProvider)); // Clustered provider used
EasyMock.verify(rivalProvider, hzProvider);
}
@Ignore // Ran into circular dependency issued in Spring trying to implement this KS
@Test
public void testInactive() {
CacheProvider rivalProvider = EasyMock.createMock("rivalProvider", CacheProvider.class);
CacheProvider hzProvider = EasyMock.createMock("hzProvider", HzCacheProvider.class);
HzCluster cluster = EasyMock.createMock("cluster", HzCluster.class);
EasyMock.expect(cluster.isEnabled()).andStubReturn(false); // Cluster is disabled
EasyMock.replay(rivalProvider, hzProvider, cluster);
ExtensionFilter filter = new HzExtensionFilter(/*cluster*/);
extensions.singleton("filter", filter, ExtensionFilter.class);
extensions.singleton("rivalProvider", rivalProvider, CacheProvider.class);
extensions.singleton("hzProvider", hzProvider, CacheProvider.class, HzCacheProvider.class);
CacheProvider result = DefaultCacheProvider.findProvider();
assertThat(result, sameInstance(rivalProvider)); // Other provider used
EasyMock.verify(rivalProvider, hzProvider, cluster);
}
}