/*
* Copyright (c) 2008-2017, Hazelcast, Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hazelcast.config;
import com.hazelcast.test.HazelcastParallelClassRunner;
import com.hazelcast.test.annotation.ParallelTest;
import com.hazelcast.test.annotation.QuickTest;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import java.util.List;
import static java.util.Collections.singletonList;
import static org.junit.Assert.assertNull;
@RunWith(HazelcastParallelClassRunner.class)
@Category({QuickTest.class, ParallelTest.class})
public class MapConfigReadOnlyTest {
private MapConfig getReadOnlyConfig() {
return new MapConfig().getAsReadOnly();
}
@Test(expected = UnsupportedOperationException.class)
public void getMaxSizeConfigOfReadOnlyMapConfigShouldReturnUnmodifiable() {
MapConfig config = new MapConfig();
MaxSizeConfig maxSizeConfig = config.getAsReadOnly().getMaxSizeConfig();
maxSizeConfig.setSize(2342);
}
@Test
public void getMaxSizeConfigOfReadOnlyMapConfigShouldReturnNullIfConfigIsNull() {
MapConfig config = new MapConfig()
.setMaxSizeConfig(null);
MaxSizeConfig maxSizeConfig = config.getAsReadOnly().getMaxSizeConfig();
assertNull(maxSizeConfig);
}
@Test(expected = UnsupportedOperationException.class)
public void getWanReplicationRefOfReadOnlyMapConfigShouldReturnUnmodifiable() {
MapConfig config = new MapConfig()
.setWanReplicationRef(new WanReplicationRef());
WanReplicationRef wanReplicationRef = config.getAsReadOnly().getWanReplicationRef();
wanReplicationRef.setName("myWanReplicationRef");
}
@Test
public void getWanReplicationRefOfReadOnlyMapConfigShouldReturnNullIfWanReplicationRefIsNull() {
MapConfig config = new MapConfig()
.setWanReplicationRef(null);
WanReplicationRef wanReplicationRef = config.getAsReadOnly().getWanReplicationRef();
assertNull(wanReplicationRef);
}
@Test(expected = UnsupportedOperationException.class)
public void getEntryListenerConfigsOfReadOnlyMapConfigShouldReturnUnmodifiable() {
MapConfig config = new MapConfig()
.addEntryListenerConfig(new EntryListenerConfig())
.addEntryListenerConfig(new EntryListenerConfig());
List<EntryListenerConfig> listenerConfigs = config.getAsReadOnly().getEntryListenerConfigs();
listenerConfigs.add(new EntryListenerConfig());
}
@Test(expected = UnsupportedOperationException.class)
public void getPartitionLostListenerConfigsOfReadOnlyMapConfigShouldReturnUnmodifiable() {
MapConfig config = new MapConfig()
.addMapPartitionLostListenerConfig(new MapPartitionLostListenerConfig())
.addMapPartitionLostListenerConfig(new MapPartitionLostListenerConfig());
List<MapPartitionLostListenerConfig> listenerConfigs = config.getAsReadOnly().getPartitionLostListenerConfigs();
listenerConfigs.add(new MapPartitionLostListenerConfig());
}
@Test(expected = UnsupportedOperationException.class)
public void getMapIndexConfigsOfReadOnlyMapConfigShouldReturnUnmodifiable() {
MapConfig config = new MapConfig()
.addMapIndexConfig(new MapIndexConfig())
.addMapIndexConfig(new MapIndexConfig());
List<MapIndexConfig> mapIndexConfigs = config.getAsReadOnly().getMapIndexConfigs();
mapIndexConfigs.add(new MapIndexConfig());
}
@Test(expected = UnsupportedOperationException.class)
public void getPartitioningStrategyConfigOfReadOnlyMapConfigShouldReturnUnmodifiable() {
MapConfig config = new MapConfig()
.setPartitioningStrategyConfig(new PartitioningStrategyConfig());
PartitioningStrategyConfig partitioningStrategyConfig = config.getAsReadOnly().getPartitioningStrategyConfig();
partitioningStrategyConfig.setPartitionStrategy(null);
}
@Test
public void getPartitioningStrategyConfigOfReadOnlyMapConfigShouldReturnNullIfConfigIsNull() {
MapConfig config = new MapConfig()
.setPartitioningStrategyConfig(null);
PartitioningStrategyConfig partitioningStrategyConfig = config.getAsReadOnly().getPartitioningStrategyConfig();
assertNull(partitioningStrategyConfig);
}
@Test(expected = UnsupportedOperationException.class)
public void getMapStoreConfigOfReadOnlyMapConfigShouldReturnUnmodifiable() {
MapConfig config = new MapConfig()
.setMapStoreConfig(new MapStoreConfig());
MapStoreConfig mapStoreConfig = config.getAsReadOnly().getMapStoreConfig();
mapStoreConfig.setEnabled(true);
}
@Test
public void getMapStoreConfigOfReadOnlyMapConfigShouldReturnNullIfConfigIsNull() {
MapConfig config = new MapConfig()
.setMapStoreConfig(null);
MapStoreConfig mapStoreConfig = config.getAsReadOnly().getMapStoreConfig();
assertNull(mapStoreConfig);
}
@Test(expected = UnsupportedOperationException.class)
public void getNearCacheConfigOfReadOnlyMapConfigShouldReturnUnmodifiable() {
MapConfig config = new MapConfig()
.setNearCacheConfig(new NearCacheConfig());
NearCacheConfig nearCacheConfig = config.getAsReadOnly().getNearCacheConfig();
nearCacheConfig.setName("myNearCache");
}
@Test
public void getNearCacheConfigOfReadOnlyMapConfigShouldReturnNullIfConfigIsNull() {
MapConfig config = new MapConfig()
.setNearCacheConfig(null);
NearCacheConfig nearCacheConfig = config.getAsReadOnly().getNearCacheConfig();
assertNull(nearCacheConfig);
}
@Test(expected = UnsupportedOperationException.class)
public void getQueryCacheConfigsOfReadOnlyMapConfigShouldReturnUnmodifiable() {
MapConfig config = new MapConfig()
.addQueryCacheConfig(new QueryCacheConfig("myQueryCache1"))
.addQueryCacheConfig(new QueryCacheConfig("myQueryCache2"));
List<QueryCacheConfig> queryCacheConfigs = config.getAsReadOnly().getQueryCacheConfigs();
queryCacheConfigs.add(new QueryCacheConfig("myQueryCache3"));
}
@Test(expected = UnsupportedOperationException.class)
public void setHotRestartConfigOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setHotRestartConfig(new HotRestartConfig());
}
@Test(expected = UnsupportedOperationException.class)
public void setNameOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setName("myMap");
}
@Test(expected = UnsupportedOperationException.class)
public void setInMemoryFormatOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setInMemoryFormat(InMemoryFormat.OBJECT);
}
@Test(expected = UnsupportedOperationException.class)
public void setBackupCountOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setBackupCount(1);
}
@Test(expected = UnsupportedOperationException.class)
public void setAsyncBackupCountOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setAsyncBackupCount(1);
}
@Test(expected = UnsupportedOperationException.class)
public void setEvictionPercentageOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setEvictionPercentage(65);
}
@Test(expected = UnsupportedOperationException.class)
public void setMinEvictionCheckMillisOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setMinEvictionCheckMillis(23);
}
@Test(expected = UnsupportedOperationException.class)
public void setTimeToLiveSecondsOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setTimeToLiveSeconds(42);
}
@Test(expected = UnsupportedOperationException.class)
public void setMaxIdleSecondsOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setMaxIdleSeconds(23);
}
@Test(expected = UnsupportedOperationException.class)
public void setMaxSizeConfigOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setMaxSizeConfig(new MaxSizeConfig());
}
@Test(expected = UnsupportedOperationException.class)
public void setEvictionPolicyOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setEvictionPolicy(EvictionPolicy.NONE);
}
@Test(expected = UnsupportedOperationException.class)
public void setMapEvictionPolicyOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setMapEvictionPolicy(null);
}
@Test(expected = UnsupportedOperationException.class)
public void setMapStoreConfigOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setMapStoreConfig(new MapStoreConfig());
}
@Test(expected = UnsupportedOperationException.class)
public void setNearCacheConfigOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setNearCacheConfig(new NearCacheConfig());
}
@Test(expected = UnsupportedOperationException.class)
public void setMergePolicyOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setMergePolicy("myMergePolicy");
}
@Test(expected = UnsupportedOperationException.class)
public void setStatisticsEnabledOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setStatisticsEnabled(true);
}
@Test(expected = UnsupportedOperationException.class)
public void setReadBackupDataOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setReadBackupData(true);
}
@Test(expected = UnsupportedOperationException.class)
public void setWanReplicationRefOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setWanReplicationRef(new WanReplicationRef());
}
@Test(expected = UnsupportedOperationException.class)
public void addEntryListenerConfigOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().addEntryListenerConfig(new EntryListenerConfig());
}
@Test(expected = UnsupportedOperationException.class)
public void setEntryListenerConfigsOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setEntryListenerConfigs(singletonList(new EntryListenerConfig()));
}
@Test(expected = UnsupportedOperationException.class)
public void addMapIndexConfigOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().addMapIndexConfig(new MapIndexConfig());
}
@Test(expected = UnsupportedOperationException.class)
public void setMapIndexConfigsOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setMapIndexConfigs(singletonList(new MapIndexConfig()));
}
@Test(expected = UnsupportedOperationException.class)
public void setPartitioningStrategyConfigOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setPartitioningStrategyConfig(new PartitioningStrategyConfig());
}
@Test(expected = UnsupportedOperationException.class)
public void setOptimizeQueriesOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setOptimizeQueries(true);
}
@Test(expected = UnsupportedOperationException.class)
public void setPartitionLostListenerConfigsOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setPartitionLostListenerConfigs(singletonList(new MapPartitionLostListenerConfig()));
}
@Test(expected = UnsupportedOperationException.class)
public void setMapAttributeConfigsOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setMapAttributeConfigs(singletonList(new MapAttributeConfig()));
}
@Test(expected = UnsupportedOperationException.class)
public void setQueryCacheConfigsOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setQueryCacheConfigs(singletonList(new QueryCacheConfig()));
}
@Test(expected = UnsupportedOperationException.class)
public void setCacheDeserializedValuesOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setCacheDeserializedValues(CacheDeserializedValues.INDEX_ONLY);
}
@Test(expected = UnsupportedOperationException.class)
public void setQuorumNameOfReadOnlyMapConfigShouldFail() {
getReadOnlyConfig().setQuorumName("myQuorum");
}
}