blob: 0ff74f6cc2b7a2dcc471fa30297811460f622987 [file] [log] [blame]
/*=========================================================================
* Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* one or more patents listed at http://www.pivotal.io/patents.
*=========================================================================
*/
#include "ThinClientSecurityHelper.hpp"
#define CLIENT1 s1p1
#define CLIENT2 s1p2
#define SERVER1 s2p1
#define SERVER2 s2p2
// This is the test for tracking work. bug#304
putThread *thread1 = NULL;
putThread *thread2 = NULL;
putThread *thread3 = NULL;
putThread *thread4 = NULL;
const char * regNames[] = { "DistRegionAck","DistRegionNoAck" };
const char * group1 = "A";
const char * group2 = "B";
//const char * endPoints1 = CacheHelper::getTcrEndpoints( isLocalServer1, 3 );
std::string gfendpoints1 = "localhost:";
std::string gfendpoints2 = "localhost:";
bool isLocalServer1 = false;
const char * endPoints1 = CacheHelper::getTcrEndpoints(isLocalServer1, 2);
static bool isLocator1 = false;
const char* locatorsG = CacheHelper::getLocatorHostPort( isLocator1, 1);
CacheableStringPtr c1v11;
CacheableStringPtr c1v12;
CacheableStringPtr c1v13;
CacheableStringPtr c1v14;
CacheableStringPtr c1v15;
CacheableStringPtr s1v11;
CacheableStringPtr s1v12;
CacheableStringPtr s1v13;
CacheableStringPtr s1v14;
CacheableStringPtr s1v15;
CacheableStringPtr c2v11;
CacheableStringPtr c2v12;
CacheableStringPtr c2v13;
CacheableStringPtr c2v14;
CacheableStringPtr c2v15;
CacheableStringPtr s2v11;
CacheableStringPtr s2v12;
CacheableStringPtr s2v13;
CacheableStringPtr s2v14;
CacheableStringPtr s2v15;
void verifyAllValues()
{
LOGINFO("verifyAllValues TEST-1");
/*LOGINFO("c1v11 = %s", c1v11->asChar());
LOGINFO("verifyAllValues TEST-2");
LOGINFO("c1v12 = %s", c1v12->asChar());
LOGINFO("c1v13 = %s", c1v13->asChar());
LOGINFO("c1v14 = %s", c1v14->asChar());
LOGINFO("c1v15 = %s", c1v15->asChar());
LOGINFO("s1v11 = %s", s1v11->asChar());
LOGINFO("s1v12 = %s", s1v12->asChar());
LOGINFO("s1v13 = %s", s1v13->asChar());
LOGINFO("s1v14 = %s", s1v14->asChar());
LOGINFO("s1v15 = %s", s1v15->asChar());
LOGINFO("c2v11 = %s", c2v11->asChar());
LOGINFO("c2v12 = %s", c2v12->asChar());
LOGINFO("c2v13 = %s", c2v13->asChar());
LOGINFO("c2v14 = %s", c2v14->asChar());
LOGINFO("c2v15 = %s", c2v15->asChar());
LOGINFO("s2v11 = %s", s2v11->asChar());
LOGINFO("s2v12 = %s", s2v12->asChar());
LOGINFO("s2v13 = %s", s2v13->asChar());
LOGINFO("s2v14 = %s", s2v14->asChar());
LOGINFO("s2v15 = %s", s2v15->asChar());*/
}
//added
DUNIT_TASK_DEFINITION(SERVER1, StartServer1)
{
LOG("starting SERVER1...");
if ( isLocalServer1 )
CacheHelper::initServer( 1 , "cacheserver_concurrency_enabled1.xml");
LOG("SERVER1 started");
}
END_TASK_DEFINITION
//added
DUNIT_TASK_DEFINITION(SERVER2, StartServer2)
{
LOG("starting SERVER2...");
if ( isLocalServer1 )
CacheHelper::initServer( 2 , "cacheserver_concurrency_enabled2.xml");
LOG("SERVER2 started");
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(CLIENT1, StartClient1)
{
//TOOD::check for poolwithendpoints or locators
//By default poolwithendpoints
//char tmp1[100];
//sprintf( tmp1, "%d", CacheHelper::staticHostPort1 );
//gfendpoints1 += tmp1;
//initClientWithPool(true/*isthinClient*/, NULL/*poolName*/, NULL/*locators*/,serverGroup1, NULL/*servers*/, NULLPTR/*PropertiesPtr&*/, 0/*redundancy*/, true/*clientNotification*/, -1/*subscriptionAckInterval*/, 5/*connections*/, 60000/*loadConditioningInterval*/);
//RegionPtr regPtr0 = createRegionAndAttachPool(regNames[0],USE_ACK, NULL);
initClient(true);
getHelper()->createPoolWithLocators("__TEST_POOL1__", locatorsG, true, -1 , -1, -1, false, group1);
RegionPtr regPtr0 = getHelper()->createRegionAndAttachPool(regNames[0], USE_ACK, "__TEST_POOL1__",true);
LOG( "StepOne_Pooled_Locator1 complete." );
regPtr0->registerAllKeys();
LOG( "Client-1 Init complete." );
}
END_TASK_DEFINITION
//startClient-2
DUNIT_TASK_DEFINITION(CLIENT2, StartClient2)
{
//TOOD::check for poolwithendpoints or locators
/* LOG( "Client-2 Init -1" );
//By default poolwithendpoints
char tmp2[100];
LOG( "Client-2 Init -2" );
sprintf( tmp2, "%d", CacheHelper::staticHostPort2 );
LOG( "Client-2 Init -3" );
gfendpoints2 += tmp2;
LOG( "Client-2 Init -4" );
initClientWithPool(true, NULL, NULL, serverGroup2, gfendpoints2.c_str(), NULLPTR, 0, true, -1, 5, 60000);
LOG( "Client-2 Init -5" );
RegionPtr regPtr0 = createRegionAndAttachPool(regNames[0],USE_ACK, NULL);
LOG( "Client-2 Init -6" );
*/
initClient(true);
getHelper()->createPoolWithLocators("__TEST_POOL1__", locatorsG, true, -1 , -1, -1, false, group2);
RegionPtr regPtr0 = getHelper()->createRegionAndAttachPool(regNames[0], USE_ACK, "__TEST_POOL1__",true);
LOG( "StepOne_Pooled_Locator1 complete." );
regPtr0->registerAllKeys();
LOG( "Client-2 StartClient2 complete." );
}
END_TASK_DEFINITION
//threadPutonClient1
DUNIT_TASK_DEFINITION(CLIENT1,threadPutonClient1)
{
RegionPtr rptr = getHelper()->getRegion(regNames[0]);
thread4 = new putThread(rptr,false);
thread4->setParams(0, 10, 1, true, false, 0);
thread4->start();
LOG( "Task: threadPutonClient1 Done" );
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(CLIENT2,transactionPutOnClient2)
{
RegionPtr rptr = getHelper()->getRegion(regNames[0]);
CacheTransactionManagerPtr txManager = getHelper()->getCache()->getCacheTransactionManager();
txManager->begin();
CacheableKeyPtr keyPtr1 = CacheableKey::create( "key-1" );
CacheableStringPtr valPtr = CacheableString::create( "client2-value1" );
rptr->put( keyPtr1, valPtr );
CacheableKeyPtr keyPtr2 = CacheableKey::create( "key-2" );
valPtr = CacheableString::create( "client2-value2" );
rptr->put( keyPtr2, valPtr );
CacheableKeyPtr keyPtr3 = CacheableKey::create( "key-3" );
valPtr = CacheableString::create( "client2-value3" );
rptr->put( keyPtr3, valPtr );
txManager->commit();
dunit::sleep(1000);
//localGet
c2v11= dynCast<CacheableStringPtr>( rptr->get( keyPtr1 ) );
c2v12= dynCast<CacheableStringPtr>( rptr->get( keyPtr2 ) );
c2v13= dynCast<CacheableStringPtr>( rptr->get( keyPtr3 ) );
//localDestroy
rptr->localDestroy(keyPtr1);
rptr->localDestroy(keyPtr2);
rptr->localDestroy(keyPtr3);
//remoteGet
c2v11= dynCast<CacheableStringPtr>( rptr->get( keyPtr1 ) );
s2v12= dynCast<CacheableStringPtr>( rptr->get( keyPtr2 ) );
s2v13= dynCast<CacheableStringPtr>( rptr->get( keyPtr3 ) );
//Print remoteGet Values
LOGINFO("CLIENT-2 :: TASK:transactionPutOnClient2: localGet Val1 = %s remoteGet Val1 = %s ", c2v11->asChar(), s2v11->asChar());
LOGINFO("CLIENT-2 :: TASK:transactionPutOnClient2: localGet Val2 = %s remoteGet Val2 = %s ", c2v12->asChar(), s2v12->asChar());
LOGINFO("CLIENT-2 :: TASK:transactionPutOnClient2: localGet Val3 = %s remoteGet Val3 = %s ", c2v13->asChar(), s2v13->asChar());
ASSERT(*c2v11.ptr() == *c2v11.ptr(), "transactionPutOnClient2:Values should be equal-1");
ASSERT(*c2v12.ptr() == *c2v12.ptr(), "transactionPutOnClient2:Values should be equal-2");
ASSERT(*c2v13.ptr() == *c2v13.ptr(), "transactionPutOnClient2:Values should be equal-3");
LOG("CLIENT-2 :: TASK: transactionPutOnClient2 completed successfully");
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(CLIENT1,verifyGetonClient1)
{
thread4->stop();
delete thread4;
RegionPtr rptr = getHelper()->getRegion(regNames[0]);
CacheableKeyPtr keyPtr1 = CacheableKey::create( "key-1" );
CacheableKeyPtr keyPtr2 = CacheableKey::create( "key-2" );
CacheableKeyPtr keyPtr3 = CacheableKey::create( "key-3" );
//localGet
c1v11= dynCast<CacheableStringPtr>( rptr->get( keyPtr1 ) );
c1v12= dynCast<CacheableStringPtr>( rptr->get( keyPtr2 ) );
c1v13= dynCast<CacheableStringPtr>( rptr->get( keyPtr3 ) );
//localDestroy
rptr->localDestroy(keyPtr1);
rptr->localDestroy(keyPtr2);
rptr->localDestroy(keyPtr3);
//remoteGet
s1v11= dynCast<CacheableStringPtr>( rptr->get( keyPtr1 ) );
s1v12= dynCast<CacheableStringPtr>( rptr->get( keyPtr2 ) );
s1v13= dynCast<CacheableStringPtr>( rptr->get( keyPtr3 ) );
//Print remoteGet Values
LOGINFO("CLIENT-2 :: verifyGetonClient1: localGet Val1 = %s remoteGet Val1 = %s ", c1v11->asChar(), s1v11->asChar());
LOGINFO("CLIENT-2 :: verifyGetonClient1: localGet Val2 = %s remoteGet Val2 = %s ", c1v12->asChar(), s1v12->asChar());
LOGINFO("CLIENT-2 :: verifyGetonClient1: localGet Val3 = %s remoteGet Val3 = %s ", c1v13->asChar(), s1v13->asChar());
ASSERT(*c1v11.ptr() == *s1v11.ptr(), "verifyGetonClient1:Values should be equal-1");
ASSERT(*c1v12.ptr() == *s1v12.ptr(), "verifyGetonClient1:Values should be equal-2");
ASSERT(*c1v13.ptr() == *s1v13.ptr(), "verifyGetonClient1:Values should be equal-3");
LOG("CLIENT-2 :: TASK: verifyGetonClient1 completed successfully");
}
END_TASK_DEFINITION
//
DUNIT_TASK_DEFINITION(CLIENT1,PutOnClient1)
{
RegionPtr rptr = getHelper()->getRegion(regNames[0]);
thread1 = new putThread(rptr,false);
thread1->setParams(0, 5, 1, true, false, 1);
thread1->start();
LOG( "PUT ops done on client 1" );
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(CLIENT2, PutOnClient2)
{
RegionPtr rptr = getHelper()->getRegion(regNames[0]);
thread2 = new putThread(rptr,false);
thread2->setParams(0, 5, 1, false, false, 0);//0, 5, 1, false, false, 0
thread2->start();
LOG( "PUT ops done on client 2" );
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(CLIENT1, testServerGC)
{
RegionPtr rptr = getHelper()->getRegion(regNames[0]);
thread3 = new putThread(rptr,false);
thread3->setParams(0, 5000, 1, true, false, 0);//0, 5, 1, false, false, 0
thread3->start();
LOG( "5000 PUT ops done on client 1" );
//set thread to destroy entries.
thread3->setParams(7, 5000, 1, true, false, 0);//Destroy
thread3->start();
LOG( "5000 entries destroyed successfully" );
dunit::sleep(10000);
thread3->stop();
delete thread3;
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(CLIENT1,GetOnClient1)
{
LOG("CLIENT-1 :: local GET operation -1");
thread1->stop();
delete thread1;
dunit::sleep(3000);
RegionPtr regPtr = getHelper()->getRegion(regNames[0]);
//localGet
CacheableKeyPtr keyPtr1 = CacheableKey::create("key-1");
CacheableKeyPtr keyPtr2 = CacheableKey::create("key-2");
CacheableKeyPtr keyPtr3 = CacheableKey::create("key-3");
CacheableKeyPtr keyPtr4 = CacheableKey::create("key-4");
CacheableKeyPtr keyPtr5 = CacheableKey::create("key-5");
c1v11= dynCast<CacheableStringPtr>( regPtr->get( keyPtr1 ) );
c1v12= dynCast<CacheableStringPtr>( regPtr->get( keyPtr2 ) );
c1v13= dynCast<CacheableStringPtr>( regPtr->get( keyPtr3 ) );
c1v14= dynCast<CacheableStringPtr>( regPtr->get( keyPtr4 ) );
c1v15= dynCast<CacheableStringPtr>( regPtr->get( keyPtr5 ) );
//Print local Get Values
LOGINFO("CLIENT-1 :: local GET operation -6 c1v11 = %s", c1v11->asChar());
LOGINFO("CLIENT-1 :: local GET operation -7 c1v12 = %s", c1v12->asChar());
LOGINFO("CLIENT-1 :: local GET operation -8 c1v13 = %s", c1v13->asChar());
LOGINFO("CLIENT-1 :: local GET operation -9 c1v14=%s", c1v14->asChar());
LOGINFO("CLIENT-1 :: local GET operation....Done c1v15=%s", c1v15->asChar());
//localDestroy
regPtr->localDestroy(keyPtr1);
regPtr->localDestroy(keyPtr2);
regPtr->localDestroy(keyPtr3);
regPtr->localDestroy(keyPtr4);
regPtr->localDestroy(keyPtr5);
LOG("CLIENT-1 :: localDestroy() operation....Done");
//remoteGet
s1v11= dynCast<CacheableStringPtr>( regPtr->get( keyPtr1 ) );
s1v12= dynCast<CacheableStringPtr>( regPtr->get( keyPtr2 ) );
s1v13= dynCast<CacheableStringPtr>( regPtr->get( keyPtr3 ) );
s1v14= dynCast<CacheableStringPtr>( regPtr->get( keyPtr4 ) );
s1v15= dynCast<CacheableStringPtr>( regPtr->get( keyPtr5 ) );
//Print remoteGet Values
LOGINFO("CLIENT-1 :: remoteGet operation -6 s1v11 = %s", s1v11->asChar());
LOGINFO("CLIENT-1 :: remoteGet operation -6 s1v12 = %s", s1v12->asChar());
LOGINFO("CLIENT-1 :: remoteGet operation -6 s1v13 = %s", s1v13->asChar());
LOGINFO("CLIENT-1 :: remoteGet operation -6 s1v14 = %s", s1v14->asChar());
LOGINFO("CLIENT-1 :: remoteGet operation -6 s1v15 = %s", s1v15->asChar());
ASSERT(*c1v11.ptr() == *s1v11.ptr(), "GetOnClient1:Values should be equal-1");
ASSERT(*c1v12.ptr() == *s1v12.ptr(), "GetOnClient1:Values should be equal-2");
ASSERT(*c1v13.ptr() == *s1v13.ptr(), "GetOnClient1:Values should be equal-3");
ASSERT(*c1v14.ptr() == *s1v14.ptr(), "GetOnClient1:Values should be equal-4");
ASSERT(*c1v15.ptr() == *s1v15.ptr(), "GetOnClient1:Values should be equal-5");
LOG("CLIENT-1 ::local GET operation....Done");
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(CLIENT2,GetOnClient2)
{
RegionPtr regPtr = getHelper()->getRegion(regNames[0]);
thread2->stop();
delete thread2;
dunit::sleep(3000);
//localGet
CacheableKeyPtr keyPtr1 = CacheableKey::create("key-1");
CacheableKeyPtr keyPtr2 = CacheableKey::create("key-2");
CacheableKeyPtr keyPtr3 = CacheableKey::create("key-3");
CacheableKeyPtr keyPtr4 = CacheableKey::create("key-4");
CacheableKeyPtr keyPtr5 = CacheableKey::create("key-5");
c2v11= dynCast<CacheableStringPtr>( regPtr->get( keyPtr1 ) );
c2v12= dynCast<CacheableStringPtr>( regPtr->get( keyPtr2 ) );
c2v13= dynCast<CacheableStringPtr>( regPtr->get( keyPtr3 ) );
c2v14= dynCast<CacheableStringPtr>( regPtr->get( keyPtr4 ) );
c2v15= dynCast<CacheableStringPtr>( regPtr->get( keyPtr5 ) );
//Print localGets
//Print local Get Values
LOGINFO("CLIENT-2 :: local GET operation c2v11 = %s", c2v11->asChar());
LOGINFO("CLIENT-2 :: local GET operation c2v12 = %s", c2v12->asChar());
LOGINFO("CLIENT-2 :: local GET operation c2v13 = %s", c2v13->asChar());
LOGINFO("CLIENT-2 :: local GET operation c2v14=%s", c2v14->asChar());
LOGINFO("CLIENT-2 :: local GET operation....Done c2v15=%s", c2v15->asChar());
LOG("CLIENT-2 :: local GET operation....Done");
//localDestroy
regPtr->localDestroy(keyPtr1);
regPtr->localDestroy(keyPtr2);
regPtr->localDestroy(keyPtr3);
regPtr->localDestroy(keyPtr4);
regPtr->localDestroy(keyPtr5);
LOG("CLIENT-2 :: localDestroy() operation....Done");
//remoteGet
s2v11= dynCast<CacheableStringPtr>( regPtr->get( keyPtr1 ) );
s2v12= dynCast<CacheableStringPtr>( regPtr->get( keyPtr2 ) );
s2v13= dynCast<CacheableStringPtr>( regPtr->get( keyPtr3 ) );
s2v14= dynCast<CacheableStringPtr>( regPtr->get( keyPtr4 ) );
s2v15= dynCast<CacheableStringPtr>( regPtr->get( keyPtr5 ) );
//Print remoteGet Values
LOGINFO("CLIENT-2 :: remoteGet operation s2v11 = %s", s2v11->asChar());
LOGINFO("CLIENT-2 :: remoteGet operation s2v12 = %s", s2v12->asChar());
LOGINFO("CLIENT-2 :: remoteGet operation s2v13 = %s", s2v13->asChar());
LOGINFO("CLIENT-2 :: remoteGet operation s2v14 = %s", s2v14->asChar());
LOGINFO("CLIENT-2 :: remoteGet operation s2v15 = %s", s2v15->asChar());
ASSERT(*c2v11.ptr() == *s2v11.ptr(), "GetOnClient2:Values should be equal-1");
ASSERT(*c2v12.ptr() == *s2v12.ptr(), "GetOnClient2:Values should be equal-2");
ASSERT(*c2v13.ptr() == *s2v13.ptr(), "GetOnClient2:Values should be equal-3");
ASSERT(*c2v14.ptr() == *s2v14.ptr(), "GetOnClient2:Values should be equal-4");
ASSERT(*c2v15.ptr() == *s2v15.ptr(), "GetOnClient2:Values should be equal-5");
LOG( "GetOnClient2 completed" );
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(SERVER1,CloseServer1)
{
SLEEP(2000);
if ( isLocalServer1 ) {
CacheHelper::closeServer( 1 );
LOG("SERVER1 stopped");
}
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(CLIENT1,CloseClient1)
{
cleanProc();
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(CLIENT2,CloseClient2)
{
cleanProc();
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(SERVER1, CreateServers_With_Locator)
{
//starting locator
if ( isLocator1 )
CacheHelper::initLocator( 1 );
LOG(": Locator1 started");
//starting servers
if ( isLocalServer1 ){
CacheHelper::initServer( 1, "cacheserver_concurrency_enabled1.xml", locatorsG, NULL, false, true, false, true );
LOG(":SERVER1 started");
}
//starting servers
if ( isLocalServer1 ){
CacheHelper::initServer( 2, "cacheserver_concurrency_enabled2.xml", locatorsG, NULL, false, true, false, true );
LOG(":SERVER2 started");
}
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(SERVER1, CreateServers_With_Locator_Disk)
{
//starting locator
if ( isLocator1 )
CacheHelper::initLocator( 1 );
LOG(": Locator1 started");
//starting servers
if ( isLocalServer1 ){
CacheHelper::initServer( 1, "cacheserver_concurrency_enabled_disk_replicate1.xml", locatorsG, NULL, false, true, false, true );
LOG(":SERVER1 started");
}
//starting servers
if ( isLocalServer1 ){
CacheHelper::initServer( 2, "cacheserver_concurrency_enabled_disk_replicate2.xml", locatorsG, NULL, false, true, false, true );
LOG(":SERVER2 started");
}
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(SERVER1, CreateServers_With_Locator_Partition)
{
//starting locator
if ( isLocator1 )
CacheHelper::initLocator( 1 );
LOG(": Locator1 started");
//starting servers
if ( isLocalServer1 ){
CacheHelper::initServer( 1, "cacheserver_concurrency_enabled_disk1.xml", locatorsG, NULL, false, true, false, true );
LOG(":SERVER1 started");
}
//starting servers
if ( isLocalServer1 ){
CacheHelper::initServer( 2, "cacheserver_concurrency_enabled_disk2.xml", locatorsG, NULL, false, true, false, true );
LOG(":SERVER2 started");
}
}
END_TASK_DEFINITION
DUNIT_TASK_DEFINITION(SERVER1,CloseServers_With_Locator)
{
if (isLocalServer1) {
CacheHelper::closeServer(1);
LOG("SERVER1 stopped");
}
if (isLocalServer1) {
CacheHelper::closeServer(2);
LOG("SERVER2 stopped");
}
if ( isLocator1 ) {
CacheHelper::closeLocator( 1 );
LOG("Locator1 stopped");
}
}
END_TASK_DEFINITION
DUNIT_MAIN
{
/*TestCase-1
* Two clients, Two servers
* One client connected to one server and another client connected to another server
* both clients have registerAllKeys
* Run various operations and check if the values across the clients and server are same.
*/
CALL_TASK(CreateServers_With_Locator);
CALL_TASK(StartClient1);
CALL_TASK(StartClient2);
CALL_TASK(PutOnClient1);
CALL_TASK(PutOnClient2);
CALL_TASK(GetOnClient1);
CALL_TASK(GetOnClient2);
//test transaction
CALL_TASK(threadPutonClient1);
CALL_TASK(transactionPutOnClient2);
CALL_TASK(verifyGetonClient1);
CALL_TASK(CloseClient1);
CALL_TASK(CloseClient2);
CALL_TASK(CloseServers_With_Locator);
/*testServerGC, TestCase-2
* Two clients, Two servers
* One client connected to one server and another client connected to another server
* both clients have registerAllKeys
* tombstone timeout on server reset to receive an early GC.
* Replicated region. Destroy multiple keys, a GC is received and it should be handled properly.
* For now, no error message is thrown. Log files need to be verified.
*/
CALL_TASK(CreateServers_With_Locator);
CALL_TASK(StartClient1);
CALL_TASK(StartClient2);
CALL_TASK(testServerGC);
CALL_TASK(CloseClient1);
CALL_TASK(CloseClient2);
CALL_TASK(CloseServers_With_Locator);
/*testServerGC, TestCase-3
* Two clients, Two servers
* One client connected to one server and another client connected to another server
* both clients have registerAllKeys
* Tombstone timeout on server reset to receive an early GC.
* REPLICATE_PERSISTENT region. Destroy multiple keys, a GC is received and it should be handled properly.
* For now, no error message is thrown. Log files need to be verified.
*/
CALL_TASK(CreateServers_With_Locator_Disk);
CALL_TASK(StartClient1);
CALL_TASK(StartClient2);
CALL_TASK(testServerGC);
CALL_TASK(CloseClient1);
CALL_TASK(CloseClient2);
CALL_TASK(CloseServers_With_Locator);
/*testServerGC, TestCase-4
* Two clients, Two servers
* One client connected to one server and another client connected to another server
* both clients have registerAllKeys
* Tombstone timeout on server reset to receive an early GC.
* PARTITION_PERSISTENT region. Destroy multiple keys, a GC is received and it should be handled properly.
* For now, no error message is thrown. Log files need to be verified.
*/
CALL_TASK(CreateServers_With_Locator_Partition);
CALL_TASK(StartClient1);
CALL_TASK(StartClient2);
CALL_TASK(testServerGC);
CALL_TASK(CloseClient1);
CALL_TASK(CloseClient2);
CALL_TASK(CloseServers_With_Locator);
}
END_MAIN