blob: 7aca049b9fe71c7fad95e0b22b5ee811142a1a6a [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.internal.cache;
import static org.apache.geode.distributed.ConfigurationProperties.CACHE_XML_FILE;
import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
import static org.apache.geode.distributed.ConfigurationProperties.NAME;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import org.junit.Test;
import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.Scope;
import org.apache.geode.distributed.DistributedSystem;
import org.apache.geode.internal.cache.xmlcache.CacheXmlGenerator;
/**
* This test is for testing Disk attributes set programmatically The generated cacheXml is used to
* create a cache and the region properties retested.
*/
public class DiskRegCachexmlGeneratorJUnitTest extends DiskRegionTestingBase {
private DiskRegionProperties[] diskRegionProperties = new DiskRegionProperties[12];
private Region[] regions = new Region[12];
@Override
protected final void postSetUp() throws Exception {
diskDirSize = new int[4];
diskDirSize[0] = Integer.MAX_VALUE;
diskDirSize[1] = Integer.MAX_VALUE;
diskDirSize[2] = 1073741824;
diskDirSize[3] = 2073741824;
for (int i = 0; i < diskRegionProperties.length; i++) {
diskRegionProperties[i] = new DiskRegionProperties();
if (i == 0) {
diskRegionProperties[i].setDiskDirsAndSizes(dirs, diskDirSize);
} else {
diskRegionProperties[i].setDiskDirs(dirs);
}
}
}
public void createCacheXML() throws IOException {
// create the regions[0] which is SyncPersistOnly and set DiskWriteAttibutes
diskRegionProperties[0].setRolling(true);
diskRegionProperties[0].setMaxOplogSize(1073741824L);
diskRegionProperties[0].setRegionName("regions1");
regions[0] = DiskRegionHelperFactory.getSyncPersistOnlyRegion(cache, diskRegionProperties[0],
Scope.LOCAL);
// create the regions[1] which is SyncPersistOnly and set DiskWriteAttibutes
diskRegionProperties[1].setRolling(false);
diskRegionProperties[1].setRegionName("regions2");
regions[1] = DiskRegionHelperFactory.getSyncPersistOnlyRegion(cache, diskRegionProperties[1],
Scope.LOCAL);
// create the regions[2] which AsyncPersistOnly, No buffer and Rolling oplog
diskRegionProperties[2].setRolling(true);
diskRegionProperties[2].setMaxOplogSize(1073741824L);
diskRegionProperties[2].setRegionName("regions3");
regions[2] = DiskRegionHelperFactory.getAsyncPersistOnlyRegion(cache, diskRegionProperties[2]);
// create the regions[3] which is AsynchPersistonly, No buffer and fixed oplog
diskRegionProperties[3].setRolling(false);
diskRegionProperties[3].setRegionName("regions4");
regions[3] = DiskRegionHelperFactory.getAsyncPersistOnlyRegion(cache, diskRegionProperties[3]);
// create the regions[4] which is SynchOverflowOnly, Rolling oplog
diskRegionProperties[4].setRolling(true);
diskRegionProperties[4].setMaxOplogSize(1073741824L);
diskRegionProperties[4].setRegionName("regions5");
regions[4] = DiskRegionHelperFactory.getSyncOverFlowOnlyRegion(cache, diskRegionProperties[4]);
// create the regions[5] which is SyncOverflowOnly, Fixed oplog
diskRegionProperties[5].setRolling(false);
diskRegionProperties[5].setRegionName("regions6");
regions[5] = DiskRegionHelperFactory.getSyncOverFlowOnlyRegion(cache, diskRegionProperties[5]);
// create the regions[6] which is AsyncOverflow, with Buffer and rolling oplog
diskRegionProperties[6].setRolling(true);
diskRegionProperties[6].setMaxOplogSize(1073741824L);
diskRegionProperties[6].setBytesThreshold(10000l);
diskRegionProperties[6].setTimeInterval(15l);
diskRegionProperties[6].setRegionName("regions7");
regions[6] = DiskRegionHelperFactory.getAsyncOverFlowOnlyRegion(cache, diskRegionProperties[6]);
// create the regions[7] which is AsyncOverflow ,Time base buffer-zero byte
// buffer
// and Fixed oplog
diskRegionProperties[7].setRolling(false);
diskRegionProperties[7].setTimeInterval(15l);
diskRegionProperties[7].setBytesThreshold(0l);
diskRegionProperties[7].setRegionName("regions8");
regions[7] = DiskRegionHelperFactory.getAsyncOverFlowOnlyRegion(cache, diskRegionProperties[7]);
// create the regions[8] which is SyncPersistOverflow, Rolling oplog
diskRegionProperties[8].setRolling(true);
diskRegionProperties[8].setMaxOplogSize(1073741824L);
diskRegionProperties[8].setRegionName("regions9");
regions[8] =
DiskRegionHelperFactory.getSyncOverFlowAndPersistRegion(cache, diskRegionProperties[8]);
// create the regions[9] which is Sync PersistOverflow, fixed oplog
diskRegionProperties[9].setRolling(false);
diskRegionProperties[9].setRegionName("regions10");
regions[9] =
DiskRegionHelperFactory.getSyncOverFlowAndPersistRegion(cache, diskRegionProperties[9]);
// create the regions[10] which is Async Overflow Persist ,with buffer and
// rollong
// oplog
diskRegionProperties[10].setRolling(true);
diskRegionProperties[10].setMaxOplogSize(1073741824L);
diskRegionProperties[10].setBytesThreshold(10000l);
diskRegionProperties[10].setTimeInterval(15l);
diskRegionProperties[10].setRegionName("regions11");
regions[10] =
DiskRegionHelperFactory.getAsyncOverFlowAndPersistRegion(cache, diskRegionProperties[10]);
// create the regions[11] which is Async Persist Overflow with time based
// buffer
// and Fixed oplog
diskRegionProperties[11].setRolling(false);
diskRegionProperties[11].setBytesThreshold(0l);
diskRegionProperties[11].setTimeInterval(15l);
diskRegionProperties[11].setRegionName("regions12");
regions[11] =
DiskRegionHelperFactory.getAsyncOverFlowAndPersistRegion(cache, diskRegionProperties[11]);
// cacheXmlGenerator: generates cacheXml file
FileWriter fw = new FileWriter(new File(getClass().getSimpleName() + ".xml"));
PrintWriter pw = new PrintWriter(fw);
CacheXmlGenerator.generate(cache, pw);
}
@Test
public void testVerifyCacheXml() throws Exception {
createCacheXML();
ds.disconnect();
// Connect to the GemFire distributed system
Properties props = new Properties();
props.setProperty(NAME, getClass().getSimpleName());
props.setProperty(MCAST_PORT, "0");
String path = getClass().getSimpleName() + ".xml";
props.setProperty(CACHE_XML_FILE, path);
ds = DistributedSystem.connect(props);
// Create the cache which causes the cache-xml-file to be parsed
cache = CacheFactory.create(ds);
// Get the regions[0]
verify((LocalRegion) cache.getRegion("regions1"), diskRegionProperties[0]);
// Get the regions[1]
verify((LocalRegion) cache.getRegion("regions2"), diskRegionProperties[1]);
// Get the regions[2]
verify((LocalRegion) cache.getRegion("regions3"), diskRegionProperties[2]);
// Get the regions[3]
verify((LocalRegion) cache.getRegion("regions4"), diskRegionProperties[3]);
// Get the regions[4]
verify((LocalRegion) cache.getRegion("regions5"), diskRegionProperties[4]);
// Get the regions[5]
verify((LocalRegion) cache.getRegion("regions6"), diskRegionProperties[5]);
// Get the regions[6]
verify((LocalRegion) cache.getRegion("regions7"), diskRegionProperties[6]);
// Get the regions[7]
verify((LocalRegion) cache.getRegion("regions8"), diskRegionProperties[7]);
// Get the regions[8]
verify((LocalRegion) cache.getRegion("regions9"), diskRegionProperties[8]);
// Get the regions[9]
verify((LocalRegion) cache.getRegion("regions10"), diskRegionProperties[9]);
// Get the regions[10]
verify((LocalRegion) cache.getRegion("regions11"), diskRegionProperties[10]);
// Get the regions[11]
verify((LocalRegion) cache.getRegion("regions12"), diskRegionProperties[11]);
}
}