blob: 4a3a11eecb61d94a2d718f30735d20f2ccea0bf0 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You 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 org.apache.geode.cache.configuration;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import org.junit.Before;
import org.junit.Test;
import org.apache.geode.cache.ExpirationAction;
import org.apache.geode.cache.configuration.RegionAttributesType.EvictionAttributes;
import org.apache.geode.cache.configuration.RegionAttributesType.ExpirationAttributesType;
public class RegionAttributesTypeTest {
private ExpirationAttributesType expirationAttributes;
private RegionAttributesType regionAttributes;
@Before
public void before() throws Exception {
regionAttributes = new RegionAttributesType();
expirationAttributes = new ExpirationAttributesType();
}
@Test
public void emptyConstructor() {
expirationAttributes = new ExpirationAttributesType();
assertThat(expirationAttributes.getAction()).isNull();
assertThat(expirationAttributes.getTimeout()).isNull();
assertThat(expirationAttributes.getCustomExpiry()).isNull();
}
@Test
public void expirationAttributesConstructor() {
expirationAttributes =
new ExpirationAttributesType(null, ExpirationAction.DESTROY.toXmlString(), null,
null);
assertThat(expirationAttributes.getAction()).isEqualTo("destroy");
assertThat(expirationAttributes.getTimeout()).isNull();
assertThat(expirationAttributes.getCustomExpiry()).isNull();
assertThat(expirationAttributes.hasTimoutOrAction()).isTrue();
assertThat(expirationAttributes.hasCustomExpiry()).isFalse();
expirationAttributes = new ExpirationAttributesType(10, null, null, null);
assertThat(expirationAttributes.getAction()).isNull();
assertThat(expirationAttributes.getTimeout()).isEqualTo("10");
assertThat(expirationAttributes.getCustomExpiry()).isNull();
assertThat(expirationAttributes.hasTimoutOrAction()).isTrue();
assertThat(expirationAttributes.hasCustomExpiry()).isFalse();
expirationAttributes =
new ExpirationAttributesType(null, null, "abc", null);
assertThat(expirationAttributes.getAction()).isNull();
assertThat(expirationAttributes.getTimeout()).isNull();
assertThat(expirationAttributes.getCustomExpiry()).isNotNull();
assertThat(expirationAttributes.hasTimoutOrAction()).isFalse();
assertThat(expirationAttributes.hasCustomExpiry()).isTrue();
}
@Test
public void generateExpirationAttributes() {
expirationAttributes = ExpirationAttributesType.generate(null, null, null);
assertThat(expirationAttributes).isNull();
expirationAttributes = ExpirationAttributesType.generate(8, null, null);
assertThat(expirationAttributes.getTimeout()).isEqualTo("8");
assertThat(expirationAttributes.getAction()).isNull();
assertThat(expirationAttributes.getCustomExpiry()).isNull();
}
@Test
public void combineExpirationAttributes() throws Exception {
expirationAttributes = new ExpirationAttributesType(8, null, null, null);
expirationAttributes = ExpirationAttributesType.combine(null, expirationAttributes);
assertThat(expirationAttributes.getTimeout()).isEqualTo("8");
assertThat(expirationAttributes.getAction())
.isEqualTo(ExpirationAction.INVALIDATE.toXmlString());
assertThat(expirationAttributes.getCustomExpiry()).isNull();
assertThat(ExpirationAttributesType.combine(expirationAttributes, null))
.isEqualToComparingFieldByFieldRecursively(expirationAttributes);
ExpirationAttributesType another =
new ExpirationAttributesType(null, ExpirationAction.DESTROY.toXmlString(), "abc", null);
expirationAttributes = ExpirationAttributesType.combine(expirationAttributes, another);
assertThat(expirationAttributes.getTimeout()).isEqualTo("8");
assertThat(expirationAttributes.getAction()).isEqualTo(ExpirationAction.DESTROY.toXmlString());
assertThat(expirationAttributes.getCustomExpiry().getClassName()).isEqualTo("abc");
}
@Test
public void expirationAttributesDetail() throws Exception {
assertThatThrownBy(() -> new ExpirationAttributesType(8, "invalid", null, null))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void generateEvictionAttributes() {
EvictionAttributes evictionAttributes = EvictionAttributes.generate(null, null, null, null);
assertThat(evictionAttributes).isNull();
assertThatThrownBy(() -> EvictionAttributes.generate(null, 8, null, null))
.isInstanceOf(IllegalArgumentException.class);
evictionAttributes = EvictionAttributes.generate("local-destroy", null, null, null);
assertThat(evictionAttributes.getLruHeapPercentage().getAction().value())
.isEqualTo("local-destroy");
assertThat(evictionAttributes.getLruMemorySize()).isNull();
assertThat(evictionAttributes.getLruEntryCount()).isNull();
evictionAttributes = EvictionAttributes.generate("local-destroy", 10, null, null);
assertThat(evictionAttributes.getLruHeapPercentage()).isNull();
assertThat(evictionAttributes.getLruMemorySize().getMaximum()).isEqualTo("10");
assertThat(evictionAttributes.getLruMemorySize().getAction().value())
.isEqualTo("local-destroy");
assertThat(evictionAttributes.getLruEntryCount()).isNull();
// maxEntryCount is ignored when maxMemory is specified
evictionAttributes = EvictionAttributes.generate("local-destroy", 10, 20, null);
assertThat(evictionAttributes.getLruHeapPercentage()).isNull();
assertThat(evictionAttributes.getLruMemorySize().getMaximum()).isEqualTo("10");
assertThat(evictionAttributes.getLruMemorySize().getAction().value())
.isEqualTo("local-destroy");
assertThat(evictionAttributes.getLruEntryCount()).isNull();
evictionAttributes = EvictionAttributes.generate("local-destroy", null, 20, null);
assertThat(evictionAttributes.getLruHeapPercentage()).isNull();
assertThat(evictionAttributes.getLruMemorySize()).isNull();
assertThat(evictionAttributes.getLruEntryCount().getMaximum()).isEqualTo("20");
assertThat(evictionAttributes.getLruEntryCount().getAction().value())
.isEqualTo("local-destroy");
}
@Test
public void generatePartitionAttributes() throws Exception {
assertThat(RegionAttributesType.PartitionAttributes.generate(null, null, null, null, null, null,
null, null, null)).isNull();
}
@Test
public void gatewaySender() {
regionAttributes.setGatewaySenderIds(null);
assertThat(regionAttributes.getGatewaySenderIdsAsSet()).isNull();
regionAttributes.setGatewaySenderIds("");
assertThat(regionAttributes.getGatewaySenderIdsAsSet()).isNotNull().isEmpty();
regionAttributes.setGatewaySenderIds("abc,def");
assertThat(regionAttributes.getGatewaySenderIdsAsSet()).isNotNull().hasSize(2);
}
@Test
public void asyncEventQueue() {
regionAttributes.setAsyncEventQueueIds(null);
assertThat(regionAttributes.getAsyncEventQueueIdsAsSet()).isNull();
regionAttributes.setAsyncEventQueueIds("");
assertThat(regionAttributes.getAsyncEventQueueIdsAsSet()).isNotNull().isEmpty();
regionAttributes.setAsyncEventQueueIds("abc,def");
assertThat(regionAttributes.getAsyncEventQueueIdsAsSet()).isNotNull().hasSize(2);
}
}