blob: 5d12af4f7f8eb76cf0e557d9d3f6bb6e0f03b71b [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.
*/
#include <string>
#include <iostream>
#include <math.h>
#include <geode/CacheFactory.hpp>
#include <geode/Region.hpp>
#include "fw_helper.hpp"
using apache::geode::client::Cache;
using apache::geode::client::CacheFactory;
using apache::geode::client::CacheXmlException;
using apache::geode::client::ExpirationAction;
using apache::geode::client::Region;
int testXmlCacheCreationWithRefid(const char *fileName) {
auto cacheFactory = CacheFactory();
std::shared_ptr<Cache> cptr;
char *path = ACE_OS::getenv("TESTSRC");
std::string directory(path);
std::cout << "create DistributedSytem with name=XML_CACHE_CREATION_TEST"
<< std::endl;
std::cout << "Create cache with the configurations provided in "
"valid_cache_refid.xml"
<< std::endl;
try {
const auto filePath = directory + fileName;
cptr = std::make_shared<Cache>(
cacheFactory.set("cache-xml-file", filePath).create());
if (cptr->getPdxIgnoreUnreadFields() != false) {
std::cout << "getPdxIgnoreUnreadFields should return false." << std::endl;
return -1;
} else {
std::cout << "getPdxIgnoreUnreadFields returned false." << std::endl;
}
} catch (CacheXmlException &ex) {
std::cout << "CacheXmlException: msg = " << ex.what() << std::endl;
LOG(ex.getStackTrace());
return -1;
}
std::shared_ptr<Region> Root1;
std::shared_ptr<Region> SubRegion1;
std::shared_ptr<Region> SubRegion11;
std::shared_ptr<Region> SubRegion2;
std::shared_ptr<Region> Root2;
std::shared_ptr<Region> SubRegion21;
std::cout << "Verify whether all the regions are created" << std::endl;
try {
Root1 = cptr->getRegion("Root1");
SubRegion1 = Root1->getSubregion("SubRegion1");
SubRegion11 = SubRegion1->getSubregion("SubRegion11");
SubRegion2 = Root1->getSubregion("SubRegion2");
Root2 = cptr->getRegion("Root2");
SubRegion21 = Root2->getSubregion("SubRegion21");
} catch (...) {
LOGINFO("Unknown Exception while getting one of the regions");
return -1;
}
std::cout << "Verify whether region 'SubRegion11' has correct attributes"
<< std::endl;
auto atts = SubRegion11->getAttributes();
if (atts.getCachingEnabled() != true) {
LOGINFO("Caching is not enabled in SubRegion11");
return -1;
}
if (atts.getInitialCapacity() != 10) {
LOGINFO("Initial capacity of SubRegion11 is not 10");
return -1;
}
if (atts.getConcurrencyLevel() != 52) {
LOGINFO("Concurrency level of SubRegion11 is not 52");
return -1;
}
if (fabs(atts.getLoadFactor() - 0.89) > 0.001) {
LOGINFO("Load factor of SubRegion11 is not 0.89");
return -1;
}
std::cout << "Verify whether region 'SubRegion2' has correct attributes"
<< std::endl;
atts = SubRegion2->getAttributes();
if (atts.getCachingEnabled() != true) {
LOGINFO("Caching is not enabled in SubRegion2");
return -1;
}
if (atts.getInitialCapacity() != 10) {
LOGINFO("Initial capacity of SubRegion2 is not 10");
return -1;
}
if (fabs(atts.getLoadFactor() - 0.89) > 0.001) {
LOGINFO("Load factor of SubRegion2 is not 0.89");
return -1;
}
if (atts.getConcurrencyLevel() != 52) {
LOGINFO("Concurrency level of SubRegion2 is not 52");
return -1;
}
std::cout << "Verify whether region 'SubRegion21' has correct attributes"
<< std::endl;
atts = SubRegion21->getAttributes();
if (atts.getCachingEnabled() != true) {
LOGINFO("Caching is not enabled in SubRegion21");
return -1;
}
if (atts.getInitialCapacity() != 10) {
LOGINFO("Initial capacity of SubRegion21 is not 10");
return -1;
}
if (fabs(atts.getLoadFactor() - 0.89) > 0.001) {
LOGINFO("Load factor of SubRegion21 is not 0.89");
return -1;
}
if (atts.getConcurrencyLevel() != 52) {
LOGINFO("Concurrency level of SubRegion21 is not 52");
return -1;
}
if (atts.getEntryIdleTimeout().count() != 10) {
LOGINFO("Entryidletimeout of SubRegion21 is not 10");
return -1;
}
if (atts.getEntryIdleTimeoutAction() != ExpirationAction::INVALIDATE) {
LOGINFO("Entryidletimeoutaction of SubRegion21 is not invalidate");
return -1;
}
if (atts.getRegionIdleTimeout().count() != 20) {
LOGINFO("Regionidletimeout of SubRegion21 is not 20");
return -1;
}
if (atts.getRegionIdleTimeoutAction() != ExpirationAction::DESTROY) {
LOGINFO("Regionidletimeoutaction of SubRegion21 is not destroy");
return -1;
}
std::cout << "Verify whether region 'Root2' has correct attributes"
<< std::endl;
atts = Root2->getAttributes();
if (atts.getCachingEnabled() != true) {
LOGINFO("Caching is not enabled in Root2");
return -1;
}
if (atts.getInitialCapacity() != 25) {
LOGINFO("Initial capacity of Root2 is not 10");
return -1;
}
if (fabs(atts.getLoadFactor() - 0.32) > 0.001) {
LOGINFO("Load factor of Root2 is not 0.0.32");
return -1;
}
if (atts.getConcurrencyLevel() != 16) {
LOGINFO("Concurrency level of Root2 is not 16");
return -1;
}
if (atts.getEntryIdleTimeout().count() != 10) {
LOGINFO("Entryidletimeout of Root2 is not 10");
return -1;
}
if (atts.getEntryIdleTimeoutAction() != ExpirationAction::INVALIDATE) {
LOGINFO("Entryidletimeoutaction of Root2 is not invalidate");
return -1;
}
if (atts.getEntryTimeToLive().count() != 0) {
LOGINFO("Entrytimetolive of Root2 is not 0");
return -1;
}
if (atts.getEntryTimeToLiveAction() != ExpirationAction::LOCAL_INVALIDATE) {
LOGINFO("Entrytimetoliveaction of Root2 is not local_invalidate");
return -1;
}
if (atts.getRegionIdleTimeout().count() != 0) {
LOGINFO("Regionidletimeout of Root2 is not 0");
return -1;
}
if (atts.getRegionIdleTimeoutAction() != ExpirationAction::INVALIDATE) {
LOGINFO("Regionidletimeoutaction of Root2 is not invalidate");
return -1;
}
if (atts.getRegionTimeToLive().count() != 0) {
LOGINFO("Regiontimetolive of Root2 is not 0");
return -1;
}
if (atts.getRegionTimeToLiveAction() != ExpirationAction::DESTROY) {
LOGINFO("Regiontimetoliveaction of Root2 is not destroy");
return -1;
}
cptr->close();
return 0;
}
BEGIN_TEST(ValidXmlTestRefid)
{
int res = testXmlCacheCreationWithRefid("/resources/valid_cache_refid.xml");
if (res != 0) {
FAIL("Test Failed.");
}
res = testXmlCacheCreationWithRefid(
"/resources/valid_cache_region_refid.xml");
if (res != 0) {
FAIL("Test Failed.");
}
}
END_TEST(ValidXmlTestRefid)