blob: 86590c4817f06b10c131f03e9f09716199c2a259 [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.
*/
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.Threading;
using Apache.Geode.DUnitFramework;
using NUnit.Framework;
namespace Apache.Geode.Client.UnitTests
{
[Serializable]
public class CustomPartitionResolver<TValue> : IPartitionResolver<int, TValue>
{
public string GetName()
{
return "CustomPartitionResolver";
}
public object GetRoutingObject(EntryEvent<int, TValue> key)
{
Util.Log("CustomPartitionResolver::GetRoutingObject");
return key.Key + 5;
}
public static CustomPartitionResolver<TValue> Create()
{
return new CustomPartitionResolver<TValue>();
}
}
[Serializable]
public class CustomPartitionResolver1<TValue> : IFixedPartitionResolver<int, TValue>
{
public string GetName()
{
return "CustomPartitionResolver1";
}
public object GetRoutingObject(EntryEvent<int, TValue> key)
{
Util.Log("CustomPartitionResolver1::GetRoutingObject");
var nkey = key.Key;
return nkey + 5;
}
public static CustomPartitionResolver1<TValue> Create()
{
return new CustomPartitionResolver1<TValue>();
}
public string GetPartitionName(EntryEvent<int, TValue> entryEvent)
{
Util.Log("CustomPartitionResolver1::GetPartitionName");
var newkey = entryEvent.Key % 6;
if (newkey == 0)
{
return "P1";
}
if (newkey == 1)
{
return "P2";
}
if (newkey == 2)
{
return "P3";
}
if (newkey == 3)
{
return "P4";
}
if (newkey == 4)
{
return "P5";
}
if (newkey == 5)
{
return "P6";
}
return "Invalid";
}
}
[Serializable]
public class CustomPartitionResolver2<TValue> : IFixedPartitionResolver<int, TValue>
{
public string GetName()
{
return "CustomPartitionResolver2";
}
public object GetRoutingObject(EntryEvent<int, TValue> key)
{
Util.Log("CustomPartitionResolver2::GetRoutingObject");
return key.Key + 4;
}
public static CustomPartitionResolver2<TValue> Create()
{
return new CustomPartitionResolver2<TValue>();
}
public string GetPartitionName(EntryEvent<int, TValue> entryEvent)
{
Util.Log("CustomPartitionResolver2::GetPartitionName");
var key = entryEvent.Key.ToString();
var numKey = Convert.ToInt32(key);
var newkey = numKey % 6;
if (newkey == 0)
{
return "P1";
}
if (newkey == 1)
{
return "P2";
}
if (newkey == 2)
{
return "P3";
}
if (newkey == 3)
{
return "P4";
}
if (newkey == 4)
{
return "P5";
}
if (newkey == 5)
{
return "P6";
}
return "Invalid";
}
}
[Serializable]
public class CustomPartitionResolver3<TValue> : IFixedPartitionResolver<int, TValue>
{
public string GetName()
{
return "CustomPartitionResolver3";
}
public object GetRoutingObject(EntryEvent<int, TValue> key)
{
Util.Log("CustomPartitionResolver3::GetRoutingObject");
return key.Key % 5;
}
public static CustomPartitionResolver3<TValue> Create()
{
return new CustomPartitionResolver3<TValue>();
}
public string GetPartitionName(EntryEvent<int, TValue> entryEvent)
{
Util.Log("CustomPartitionResolver3::GetPartitionName");
var key = entryEvent.Key.ToString();
var numKey = Convert.ToInt32(key);
var newkey = numKey % 3;
if (newkey == 0)
{
return "P1";
}
if (newkey == 1)
{
return "P2";
}
if (newkey == 2)
{
return "P3";
}
return "Invalid";
}
}
public class TradeKey : ICacheableKey
{
public int MId;
public int MAccountid;
public TradeKey()
{
}
public TradeKey(int id)
{
MId = id;
MAccountid = 1 + id;
}
public TradeKey(int id, int accId)
{
MId = id;
MAccountid = accId;
}
public void FromData(DataInput input)
{
MId = input.ReadInt32();
MAccountid = input.ReadInt32();
}
public void ToData(DataOutput output)
{
output.WriteInt32(MId);
output.WriteInt32(MAccountid);
}
public ulong ObjectSize
{
get
{
uint objectSize = 0;
objectSize += sizeof(int);
objectSize += sizeof(int);
return objectSize;
}
}
public static ISerializable CreateDeserializable()
{
return new TradeKey();
}
public bool Equals(ICacheableKey other)
{
if (other == null)
return false;
var bc = other as TradeKey;
if (bc == null)
return false;
if (bc == this)
return true;
if (bc.MId == MId)
{
return true;
}
return false;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
[Serializable]
public class TradeKeyResolver : IPartitionResolver<TradeKey, object>
{
public string GetName()
{
return "TradeKeyResolver";
}
public object GetRoutingObject(EntryEvent<TradeKey, object> key)
{
Util.Log("TradeKeyResolver::GetRoutingObject");
var tkey = key.Key;
Util.Log("TradeKeyResolver::GetRoutingObject done {0} ", tkey.MId + 5);
return tkey.MId + 5;
}
public static TradeKeyResolver Create()
{
return new TradeKeyResolver();
}
}
[TestFixture]
[Category("group4")]
[Category("unicast_only")]
[Category("generics")]
public class ThinClientRegionTests : ThinClientRegionSteps
{
#region Private members
private UnitProcess _client1, _client2;
#endregion
protected override ClientBase[] GetClients()
{
_client1 = new UnitProcess();
_client2 = new UnitProcess();
return new ClientBase[] { _client1, _client2 };
}
[TestFixtureTearDown]
public override void EndTests()
{
CacheHelper.StopJavaServers();
base.EndTests();
}
[TearDown]
public override void EndTest()
{
try
{
_client1.Call(DestroyRegions);
_client2.Call(DestroyRegions);
CacheHelper.ClearEndpoints();
CacheHelper.ClearLocators();
}
finally
{
CacheHelper.StopJavaServers();
CacheHelper.StopJavaLocators();
}
base.EndTest();
}
private void EmptyByteArrayTest()
{
var region = CacheHelper.GetVerifyRegion<int, byte[]>(RegionNames3[0]);
var regServ = region.RegionService;
var cache = regServ as Cache;
Assert.IsNotNull(cache);
region[0] = new byte[0];
Util.Log("Put empty byteArray in region");
Assert.AreEqual(0, region[0].Length);
region[1] = new byte[2];
Util.Log("Put non empty byteArray in region");
Assert.AreEqual(2, region[1].Length);
region[2] = Encoding.ASCII.GetBytes("TestString");
Util.Log("Put string in region");
Assert.AreEqual(0, "TestString".CompareTo(Encoding.ASCII.GetString(region[2])));
Util.Log("EmptyByteArrayTest completed successfully");
}
private void CheckAndPutKey()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var regServ = region0.RegionService;
var cache = regServ as Cache;
Assert.IsNotNull(cache);
if (region0.ContainsKey("keyKey01"))
{
Assert.Fail("Did not expect keyKey01 to be on Server");
}
region0["keyKey01"] = "valueValue01";
if (!region0.ContainsKey("keyKey01"))
{
Assert.Fail("Expected keyKey01 to be on Server");
}
}
private void GetInterests()
{
string[] testregex = { "Key-*1", "Key-*2", "Key-*3", "Key-*4", "Key-*5", "Key-*6" };
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
region0.GetSubscriptionService().RegisterRegex(testregex[0]);
region0.GetSubscriptionService().RegisterRegex(testregex[1]);
ICollection<object> myCollection1 = new Collection<object>();
myCollection1.Add(m_keys[0]);
region0.GetSubscriptionService().RegisterKeys(myCollection1);
ICollection<object> myCollection2 = new Collection<object>();
myCollection2.Add(m_keys[1]);
region0.GetSubscriptionService().RegisterKeys(myCollection2);
var regvCol = region0.GetSubscriptionService().GetInterestListRegex();
var regv = new string[regvCol.Count];
regvCol.CopyTo(regv, 0);
if (regv.Length != 2)
{
Assert.Fail("regex list length is not 2");
}
for (var i = 0; i < regv.Length; i++)
{
Util.Log("regv[{0}]={1}", i, regv[i]);
var found = false;
for (var j = 0; j < regv.Length; j++)
{
if (regv[i].Equals(testregex[j]))
{
found = true;
break;
}
}
if (!found)
{
Assert.Fail("Unexpected regex");
}
}
var keyvCol = region0.GetSubscriptionService().GetInterestList();
var keyv = new string[keyvCol.Count];
keyvCol.CopyTo(keyv, 0);
if (keyv.Length != 2)
{
Assert.Fail("interest list length is not 2");
}
for (var i = 0; i < keyv.Length; i++)
{
Util.Log("keyv[{0}]={1}", i, keyv[i]);
var found = false;
for (var j = 0; j < keyv.Length; j++)
{
if (keyv[i].Equals(m_keys[j]))
{
found = true;
break;
}
}
if (!found)
{
Assert.Fail("Unexpected key");
}
}
}
private void RunDistOps()
{
CacheHelper.SetupJavaServers(true, "cacheserver.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
Util.Log("Locator 1 started.");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
_client1.Call(CreateNonExistentRegion, CacheHelper.Locators);
_client1.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false);
Util.Log("StepOne (pool locators) complete.");
_client2.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false);
Util.Log("StepTwo (pool locators) complete.");
_client1.Call(StepThree);
Util.Log("StepThree complete.");
_client2.Call(StepFour);
Util.Log("StepFour complete.");
_client1.Call(CheckServerKeys);
_client1.Call(StepFive, true);
Util.Log("StepFive complete.");
_client2.Call(StepSix, true);
Util.Log("StepSix complete.");
_client1.Call(Close);
Util.Log("Client 1 closed");
_client2.Call(Close);
Util.Log("Client 2 closed");
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.StopJavaLocator(1);
Util.Log("Locator 1 stopped.");
CacheHelper.ClearEndpoints();
CacheHelper.ClearLocators();
}
private void RunDistOps2()
{
CacheHelper.SetupJavaServers(true, "cacheserver.xml", "cacheserver2.xml", "cacheserver3.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
Util.Log("Locator 1 started.");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1);
Util.Log("Cacheserver 2 started.");
CacheHelper.StartJavaServerWithLocators(3, "GFECS3", 1);
Util.Log("Cacheserver 3 started.");
_client1.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false);
Util.Log("StepOne (pool locators) complete.");
_client2.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false);
Util.Log("StepTwo (pool locators) complete.");
_client1.Call(StepThree);
Util.Log("StepThree complete.");
_client2.Call(StepFour);
Util.Log("StepFour complete.");
_client1.Call(StepFive, true);
Util.Log("StepFive complete.");
_client2.Call(StepSix, true);
Util.Log("StepSix complete.");
//m_client1.Call(GetAll, pool, locator);
_client1.Call(Close);
Util.Log("Client 1 closed");
_client2.Call(Close);
Util.Log("Client 2 closed");
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.StopJavaServer(2);
Util.Log("Cacheserver 2 stopped.");
CacheHelper.StopJavaServer(3);
Util.Log("Cacheserver 3 stopped.");
CacheHelper.StopJavaLocator(1);
Util.Log("Locator 1 stopped.");
CacheHelper.ClearEndpoints();
CacheHelper.ClearLocators();
}
private void RunNotification()
{
CacheHelper.SetupJavaServers(true, "cacheserver.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
_client1.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", true);
Util.Log("StepOne (pool locators) complete.");
_client2.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", true);
Util.Log("StepTwo (pool locators) complete.");
_client1.Call(RegisterAllKeysR0WithoutValues);
_client1.Call(RegisterAllKeysR1WithoutValues);
_client2.Call(RegisterAllKeysR0WithoutValues);
_client2.Call(RegisterAllKeysR1WithoutValues);
_client1.Call(StepThree);
Util.Log("StepThree complete.");
_client2.Call(StepFour);
Util.Log("StepFour complete.");
_client1.Call(StepFive, true);
Util.Log("StepFive complete.");
_client2.Call(StepSixNotify, false);
Util.Log("StepSix complete.");
_client1.Call(StepSevenNotify, false);
Util.Log("StepSeven complete.");
_client2.Call(StepEightNotify, false);
Util.Log("StepEight complete.");
_client1.Call(StepNineNotify, false);
Util.Log("StepNine complete.");
_client2.Call(StepTen);
Util.Log("StepTen complete.");
_client1.Call(StepEleven);
Util.Log("StepEleven complete.");
_client1.Call(Close);
Util.Log("Client 1 closed");
_client2.Call(Close);
Util.Log("Client 2 closed");
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.StopJavaLocator(1);
Util.Log("Locator 1 stopped.");
CacheHelper.ClearEndpoints();
CacheHelper.ClearLocators();
}
private void RunPartitionResolver()
{
CacheHelper.SetupJavaServers(true, "cacheserver1_pr.xml",
"cacheserver2_pr.xml", "cacheserver3_pr.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
Util.Log("Locator 1 started.");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1);
Util.Log("Cacheserver 2 started.");
CacheHelper.StartJavaServerWithLocators(3, "GFECS3", 1);
Util.Log("Cacheserver 3 started.");
var putGetTest = new PutGetTests();
// Create and Add partition resolver to the regions.
//CustomPartitionResolver<object> cpr = CustomPartitionResolver<object>.Create();
_client1.Call(CreateTCRegions_Pool2_WithPartitionResolver, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, true);
Util.Log("Client 1 (pool locators) regions created");
_client2.Call(CreateTCRegions_Pool2_WithPartitionResolver, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, true);
Util.Log("Client 2 (pool locators) regions created");
_client1.Call(putGetTest.SetRegion, RegionNames[1]);
_client2.Call(putGetTest.SetRegion, RegionNames[1]);
putGetTest.DoPRSHPartitionResolverTasks(_client1, _client2, RegionNames[1]);
_client1.Call(putGetTest.SetRegion, RegionNames[0]);
_client2.Call(putGetTest.SetRegion, RegionNames[0]);
putGetTest.DoPRSHPartitionResolverTasks(_client1, _client2, RegionNames[0]);
_client1.Call(Close);
Util.Log("Client 1 closed");
_client2.Call(Close);
Util.Log("Client 2 closed");
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.StopJavaServer(2);
Util.Log("Cacheserver 2 stopped.");
CacheHelper.StopJavaServer(3);
Util.Log("Cacheserver 3 stopped.");
CacheHelper.StopJavaLocator(1);
Util.Log("Locator 1 stopped.");
CacheHelper.ClearEndpoints();
CacheHelper.ClearLocators();
}
private void RunTradeKeyResolver()
{
CacheHelper.SetupJavaServers(true, "cacheserver1_TradeKey.xml",
"cacheserver2_TradeKey.xml", "cacheserver3_TradeKey.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
Util.Log("Locator 1 started.");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1);
Util.Log("Cacheserver 2 started.");
CacheHelper.StartJavaServerWithLocators(3, "GFECS3", 1);
Util.Log("Cacheserver 3 started.");
_client1.Call(CreateTCRegion2, TradeKeyRegion, true, true, TradeKeyResolver.Create(),
CacheHelper.Locators, true);
Util.Log("Client 1 (pool locators) region created");
var putGetTest = new PutGetTests();
_client1.Call(putGetTest.DoPRSHTradeResolverTasks, TradeKeyRegion);
_client1.Call(Close);
Util.Log("Client 1 closed");
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.StopJavaServer(2);
Util.Log("Cacheserver 2 stopped.");
CacheHelper.StopJavaServer(3);
Util.Log("Cacheserver 3 stopped.");
CacheHelper.StopJavaLocator(1);
Util.Log("Locator 1 stopped.");
CacheHelper.ClearEndpoints();
CacheHelper.ClearLocators();
}
private void ClearRegionListenersStep1()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
region0.GetSubscriptionService().RegisterAllKeys();
var attrMutator = region0.AttributesMutator;
var listener = new TallyListener<object, object>();
attrMutator.SetCacheListener(listener);
var writer = new TallyWriter<object, object>();
attrMutator.SetCacheWriter(writer);
}
private void ClearRegionStep1()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
region0.GetSubscriptionService().RegisterAllKeys();
CreateEntry(m_regionNames[0], m_keys[0], m_nvals[0]);
CreateEntry(m_regionNames[0], m_keys[1], m_nvals[1]);
if (region0.Count != 2)
{
Assert.Fail("Expected region size 2");
}
}
private void ClearRegionListenersStep2()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
if (region0.Count != 2)
{
Assert.Fail("Expected region size 2");
}
}
private void ClearRegionStep2()
{
//Console.WriteLine("IRegion<object, object> Name = {0}", m_regionNames[0]);
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
if (region0 == null)
{
Console.WriteLine("Region0 is Null");
}
else
{
//Console.WriteLine("NIL:Before clear call");
region0.Clear();
//Console.WriteLine("NIL:After clear call");
if (region0.Count != 0)
{
Assert.Fail("Expected region size 0");
}
}
Thread.Sleep(20000);
}
private void ClearRegionListenersStep3()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
if (region0.Count != 0)
{
Assert.Fail("Expected region size 0");
}
var attr = region0.Attributes;
var listener = attr.CacheListener as TallyListener<object, object>;
var writer = attr.CacheWriter as TallyWriter<object, object>;
if (listener.Clears != 1)
{
Assert.Fail("Expected listener clear count 1");
}
if (writer.Clears != 1)
{
Assert.Fail("Expected writer clear count 1");
}
CreateEntry(m_regionNames[0], m_keys[0], m_nvals[0]);
CreateEntry(m_regionNames[0], m_keys[1], m_nvals[1]);
if (region0.Count != 2)
{
Assert.Fail("Expected region size 2");
}
region0.GetLocalView().Clear();
if (listener.Clears != 2)
{
Assert.Fail("Expected listener clear count 2");
}
if (writer.Clears != 2)
{
Assert.Fail("Expected writer clear count 2");
}
if (region0.Count != 0)
{
Assert.Fail("Expected region size 0");
}
}
private void ClearRegionStep3()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
if (region0.Count != 2)
{
Assert.Fail("Expected region size 2");
}
if (!region0.ContainsKey(m_keys[0]))
{
Assert.Fail("m_key[0] is not on Server");
}
if (!region0.ContainsKey(m_keys[1]))
{
Assert.Fail("m_key[1] is not on Server");
}
}
private void PutAllStep3()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var resultKeys = new List<object>();
object key0 = m_keys[0];
object key1 = m_keys[1];
resultKeys.Add(key0);
resultKeys.Add(key1);
region0.GetSubscriptionService().RegisterKeys(resultKeys.ToArray());
Util.Log("Step three completes");
}
private void PutAllStep4()
{
var map0 = new Dictionary<object, object>();
var map1 = new Dictionary<object, object>();
object key0 = m_keys[0];
object key1 = m_keys[1];
var val0 = m_vals[0];
var val1 = m_vals[1];
map0.Add(key0, val0);
map0.Add(key1, val1);
object key2 = m_keys[2];
object key3 = m_keys[3];
var val2 = m_vals[2];
var val3 = m_vals[3];
map1.Add(key2, val2);
map1.Add(key3, val3);
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var region1 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[1]);
region0.PutAll(map0);
region1.PutAll(map1);
Util.Log("Put All Complets");
}
private void PutAllStep5()
{
VerifyCreated(m_regionNames[0], m_keys[0]);
VerifyCreated(m_regionNames[0], m_keys[1]);
VerifyEntry(m_regionNames[0], m_keys[0], m_vals[0]);
VerifyEntry(m_regionNames[0], m_keys[1], m_vals[1]);
DoNetsearch(m_regionNames[1], m_keys[2], m_vals[2], true);
DoNetsearch(m_regionNames[1], m_keys[3], m_vals[3], true);
Util.Log("StepFive complete.");
}
private void PutAllStep6()
{
var map0 = new Dictionary<object, object>();
var map1 = new Dictionary<object, object>();
object key0 = m_keys[0];
object key1 = m_keys[1];
var val0 = m_nvals[0];
var val1 = m_nvals[1];
map0.Add(key0, val0);
map0.Add(key1, val1);
object key2 = m_keys[2];
object key3 = m_keys[3];
var val2 = m_nvals[2];
var val3 = m_nvals[3];
map1.Add(key2, val2);
map1.Add(key3, val3);
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var region1 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[1]);
region0.PutAll(map0);
region1.PutAll(map1);
Util.Log("Step6 Complets");
}
private void PutAllStep7() //client 1
{
//Region0 is changed at client 1 because keys[0] and keys[1] were registered.PutAllStep3
VerifyEntry(m_regionNames[0], m_keys[0], m_nvals[0]);
VerifyEntry(m_regionNames[0], m_keys[1], m_nvals[1]);
// region1 is not changed at client beacuse no regsiter interest.
VerifyEntry(m_regionNames[1], m_keys[2], m_vals[2]);
VerifyEntry(m_regionNames[1], m_keys[3], m_vals[3]);
Util.Log("PutAllStep7 complete.");
}
private void RunPutAll()
{
CacheHelper.SetupJavaServers(true, "cacheserver_notify_subscription.xml",
"cacheserver_notify_subscription2.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
Util.Log("Locator 1 started.");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1);
Util.Log("Cacheserver 2 started.");
_client1.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", true); //Client Notification true for client 1
_client2.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", true); //Cleint notification true for client 2
Util.Log("IRegion<object, object> creation complete.");
_client1.Call(PutAllStep3);
Util.Log("PutAllStep3 complete.");
_client2.Call(PutAllStep4);
Util.Log("PutAllStep4 complete.");
_client1.Call(PutAllStep5);
Util.Log("PutAllStep5 complete.");
_client2.Call(PutAllStep6);
Util.Log("PutAllStep6 complete.");
_client1.Call(PutAllStep7);
Util.Log("PutAllStep7 complete.");
_client1.Call(Close);
Util.Log("Client 1 closed");
_client2.Call(Close);
Util.Log("Client 2 closed");
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.StopJavaServer(2);
Util.Log("Cacheserver 2 stopped.");
CacheHelper.StopJavaLocator(1);
Util.Log("Locator 1 stopped.");
CacheHelper.ClearEndpoints();
CacheHelper.ClearLocators();
}
#region Tests
[Test]
public void PutEmptyByteArrayTest()
{
CacheHelper.SetupJavaServers("cacheserver.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
_client1.Call(CreateTCRegions_Pool, RegionNames3,
CacheHelper.Locators, "__TESTPOOL1_", true);
Util.Log("StepOne of region creation complete.");
_client1.Call(EmptyByteArrayTest);
Util.Log("EmptyByteArrayTest completed.");
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.StopJavaLocator(1);
}
[Test]
public void CheckKeyOnServer()
{
CacheHelper.SetupJavaServers("cacheserver.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
_client1.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", true);
Util.Log("StepOne of region creation complete.");
_client1.Call(CheckAndPutKey);
Util.Log("Check for ContainsKeyOnServer complete.");
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.StopJavaLocator(1);
}
[Test]
public void GetInterestsOnClient()
{
CacheHelper.SetupJavaServers("cacheserver_notify_subscription.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
_client1.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", true);
Util.Log("StepOne of region creation complete.");
_client1.Call(GetInterests);
Util.Log("StepTwo of check for GetInterestsOnClient complete.");
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.StopJavaLocator(1);
}
[Test]
public void DistOps()
{
RunDistOps();
}
[Test]
public void DistOps2()
{
RunDistOps2();
}
[Test]
public void Notification()
{
RunNotification();
}
[Test]
public void CheckPartitionResolver()
{
RunPartitionResolver();
}
[Test]
public void TradeKeyPartitionResolver()
{
RunTradeKeyResolver();
}
[Test]
public void RegionClearTest()
{
CacheHelper.SetupJavaServers("cacheserver_notify_subscription.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
_client1.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", true);
Util.Log("client 1 StepOne of region creation complete.");
_client2.Call(CreateTCRegions_Pool, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", true);
Util.Log("client 2 StepOne of region creation complete.");
_client1.Call(ClearRegionListenersStep1);
_client2.Call(ClearRegionStep1);
_client1.Call(ClearRegionListenersStep2);
_client2.Call(ClearRegionStep2);
_client1.Call(ClearRegionListenersStep3);
_client2.Call(ClearRegionStep3);
Util.Log("StepTwo of check for RegionClearTest complete.");
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.StopJavaLocator(1);
}
[Test]
public void PutAll()
{
RunPutAll();
}
#endregion
}
}