blob: 2e2715f87f718816fe0ca117e2f715037b9b1484 [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;
using PdxTests;
using System.Reflection;
namespace Apache.Geode.Client.UnitTests
{
using NUnit.Framework;
using DUnitFramework;
using Client;
using Region = IRegion<object, object>;
[TestFixture]
[Category("group4")]
[Category("unicast_only")]
[Category("generics")]
internal class ThinClientPdxTests2 : ThinClientRegionSteps
{
private static bool m_useWeakHashMap = false;
#region Private members
private UnitProcess m_client1, m_client2;
#endregion
protected override ClientBase[] GetClients()
{
m_client1 = new UnitProcess();
m_client2 = new UnitProcess();
return new ClientBase[] {m_client1, m_client2};
}
[TestFixtureTearDown]
public override void EndTests()
{
CacheHelper.StopJavaServers();
base.EndTests();
}
[TearDown]
public override void EndTest()
{
try
{
m_client1.Call(DestroyRegions);
m_client2.Call(DestroyRegions);
CacheHelper.ClearEndpoints();
CacheHelper.ClearLocators();
}
finally
{
CacheHelper.StopJavaServers();
CacheHelper.StopJavaLocators();
}
base.EndTest();
}
private void cleanup()
{
{
CacheHelper.SetExtraPropertiesFile(null);
if (m_clients != null)
{
foreach (var client in m_clients)
{
try
{
client.Call(CacheHelper.Close);
}
catch (System.Runtime.Remoting.RemotingException)
{
}
catch (System.Net.Sockets.SocketException)
{
}
}
}
CacheHelper.Close();
}
}
private Assembly m_pdxVesionOneAsm;
private Assembly m_pdxVesionTwoAsm;
private IPdxSerializable registerPdxUIV1()
{
var pt = m_pdxVesionOneAsm.GetType("PdxVersionTests.PdxTypesIgnoreUnreadFields");
var ob = pt.InvokeMember("CreateDeserializable", BindingFlags.Default | BindingFlags.InvokeMethod, null, null,
null);
return (IPdxSerializable) ob;
}
private void initializePdxUIAssemblyOne(bool useWeakHashmap)
{
m_pdxVesionOneAsm = Assembly.LoadFrom("PdxVersion1Lib.dll");
CacheHelper.DCache.TypeRegistry.RegisterPdxType(registerPdxUIV1);
var pt = m_pdxVesionOneAsm.GetType("PdxVersionTests.PdxTypesIgnoreUnreadFields");
var ob = pt.InvokeMember("Reset", BindingFlags.Default | BindingFlags.InvokeMethod, null, null,
new object[] {useWeakHashmap});
}
private void putV1PdxUI(bool useWeakHashmap)
{
initializePdxUIAssemblyOne(useWeakHashmap);
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var pt = m_pdxVesionOneAsm.GetType("PdxVersionTests.PdxTypesIgnoreUnreadFields");
var np = pt.InvokeMember("PdxTypesIgnoreUnreadFields", BindingFlags.CreateInstance, null, null, null);
var pRet = region0[1];
region0[1] = pRet;
Console.WriteLine(np);
Console.WriteLine(pRet);
//Assert.AreEqual(np, pRet);
}
private IPdxSerializable registerPdxUIV2()
{
var pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.PdxTypesIgnoreUnreadFields");
var ob = pt.InvokeMember("CreateDeserializable", BindingFlags.Default | BindingFlags.InvokeMethod, null, null,
null);
return (IPdxSerializable) ob;
}
private void initializePdxUIAssemblyTwo(bool useWeakHashmap)
{
m_pdxVesionTwoAsm = Assembly.LoadFrom("PdxVersion2Lib.dll");
CacheHelper.DCache.TypeRegistry.RegisterPdxType(registerPdxUIV2);
var pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.PdxTypesIgnoreUnreadFields");
var ob = pt.InvokeMember("Reset", BindingFlags.Default | BindingFlags.InvokeMethod, null, null,
new object[] {useWeakHashmap});
}
private void putV2PdxUI(bool useWeakHashmap)
{
initializePdxUIAssemblyTwo(useWeakHashmap);
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.PdxTypesIgnoreUnreadFields");
var np = pt.InvokeMember("PdxTypesIgnoreUnreadFields", BindingFlags.CreateInstance, null, null, null);
region0[1] = np;
var pRet = region0[1];
Console.WriteLine(np);
Console.WriteLine(pRet);
Assert.AreEqual(np, pRet);
region0[1] = pRet;
Console.WriteLine(" " + pRet);
}
private void getV2PdxUI()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.PdxTypesIgnoreUnreadFields");
var np = pt.InvokeMember("PdxTypesIgnoreUnreadFields", BindingFlags.CreateInstance, null, null, null);
var pRet = region0[1];
Console.WriteLine(np);
Console.WriteLine(pRet);
Assert.AreEqual(np, pRet);
}
private void runPdxIgnoreUnreadFieldTest()
{
CacheHelper.SetupJavaServers(true, "cacheserver.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
Util.Log("Locator 1 started.");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
m_client1.Call(CreateTCRegions_Pool_PDX, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/);
Util.Log("StepOne (pool locators) complete.");
m_client2.Call(CreateTCRegions_Pool_PDX, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/);
Util.Log("StepTwo (pool locators) complete.");
m_client2.Call(putV2PdxUI, m_useWeakHashMap);
Util.Log("StepThree complete.");
m_client1.Call(putV1PdxUI, m_useWeakHashMap);
Util.Log("StepFour complete.");
m_client2.Call(getV2PdxUI);
Util.Log("StepFive complete.");
m_client1.Call(Close);
Util.Log("Client 1 closed");
m_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 putFromPool1()
{
CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxTypes1.CreateDeserializable);
Util.Log("Put from pool-1 started");
var region0 = CacheHelper.GetVerifyRegion<object, object>(RegionNames[0]);
region0[1] = new PdxTypes1();
region0[2] = new PdxType();
Util.Log("Put from pool-1 Completed");
}
private void putFromPool2()
{
Util.Log("Put from pool-21 started");
var region0 = CacheHelper.GetVerifyRegion<object, object>(RegionNames[1]);
region0[1] = new PdxTypes1();
region0[2] = new PdxType();
var ret = region0[1];
ret = region0[2];
Util.Log("Put from pool-2 completed");
var pdxIds = CacheHelper.DCache.GetPdxTypeRegistry().testGetNumberOfPdxIds();
Assert.AreEqual(3, pdxIds);
}
private void runMultipleDSTest()
{
Util.Log("Starting runMultipleDSTest. ");
CacheHelper.SetupJavaServers(true, "cacheserverMDS1.xml", "cacheserverMDS2.xml");
CacheHelper.StartJavaLocator_MDS(1, "GFELOC", null, 1 /*ds id is one*/);
Util.Log("Locator 1 started.");
CacheHelper.StartJavaLocator_MDS(2, "GFELOC2", null, 2 /*ds id is one*/);
Util.Log("Locator 2 started.");
CacheHelper.StartJavaServerWithLocator_MDS(1, "GFECS1", 1);
Util.Log("Server 1 started with locator 1.");
CacheHelper.StartJavaServerWithLocator_MDS(2, "GFECS2", 2);
Util.Log("Server 2 started with locator 2.");
//client intialization
/*
* CreateTCRegion_Pool(string name, bool ack, bool caching,
ICacheListener listener, string endpoints, string locators, string poolName, bool clientNotification, bool ssl,
bool cloningEnabled)
*
*/
m_client1.Call(CacheHelper.CreateTCRegion_Pool_MDS,
RegionNames[0], true, false,
CacheHelper.LocatorFirst, "__TESTPOOL1_",
false, false, false);
Util.Log("StepOne (pool-1 locators) complete. " + CacheHelper.LocatorFirst);
m_client1.Call(CacheHelper.CreateTCRegion_Pool_MDS,
RegionNames[1], false, false,
CacheHelper.LocatorSecond, "__TESTPOOL2_",
false, false, false);
Util.Log("StepTwo (pool-2 locators) complete. " + CacheHelper.LocatorSecond);
m_client1.Call(putFromPool1);
m_client1.Call(putFromPool2);
m_client1.Call(Close);
Util.Log("Client 1 closed");
//m_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.StopJavaLocator(2);
Util.Log("Locator 2 stopped.");
CacheHelper.ClearEndpoints();
CacheHelper.ClearLocators();
}
private void initializePdxSerializer()
{
CacheHelper.DCache.TypeRegistry.PdxSerializer = new PdxSerializer();
//Serializable.RegisterTypeForPdxSerializer(SerializePdx1.CreateDeserializable);
}
private void doPutGetWithPdxSerializer()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
for (var i = 0; i < 10; i++)
{
object put = new SerializePdx1(true);
;
region0[i] = put;
var ret = region0[i];
Assert.AreEqual(put, ret);
put = new SerializePdx2(true);
region0[i + 10] = put;
ret = region0[i + 10];
Assert.AreEqual(put, ret);
put = new SerializePdx3(true, i % 2);
region0[i + 20] = put;
ret = region0[i + 20];
Assert.AreEqual(put, ret);
}
}
private void doGetWithPdxSerializerC2()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var sp3Even = new SerializePdx3(true, 0);
var sp3Odd = new SerializePdx3(true, 1);
for (var i = 0; i < 10; i++)
{
object local = new SerializePdx1(true);
;
var ret = region0[i];
Assert.AreEqual(local, ret);
ret = region0[i + 10];
Assert.AreEqual(new SerializePdx2(true), ret);
ret = region0[i + 20];
if (i % 2 == 0)
{
Assert.AreEqual(ret, sp3Even);
Assert.AreNotEqual(ret, sp3Odd);
}
else
{
Assert.AreEqual(ret, sp3Odd);
Assert.AreNotEqual(ret, sp3Even);
}
}
}
private void doQueryTest()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
for (var i = 0; i < 10; i++)
{
var result = region0.Query<object>("i1 = " + i);
Util.Log(" query result size " + result.Size);
}
var result2 = region0.Query<object>("1 = 1");
Util.Log(" query result size " + result2.Size);
//private Address[] _addressArray;
//private int arrayCount = 10;
//private ArrayList _addressList;
//private Address _address;
//private Hashtable _hashTable;
//var qs = PoolManager/*<object, object>*/.Find("__TESTPOOL1_").GetQueryService();
//Query<object> qry = qs.NewQuery<object>("select _addressArray from /" + m_regionNames[0] + " where arrayCount = 10");
//ISelectResults<object> results = qry.Execute();
//Assert.Greater(results.Size, 5, "query should have result");
//IEnumerator<object> ie = results.GetEnumerator();
//Address[] ad;
//while (ie.MoveNext())
//{
// Address[] ar = (Address[])ie.Current;
// Assert.AreEqual(ar.Length, 10, "Array size should be 10");
//}
}
private void runPdxSerializerTest()
{
Util.Log("Starting iteration for pool locator runPdxSerializerTest");
CacheHelper.SetupJavaServers(true, "cacheserver.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
Util.Log("Locator 1 started.");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
m_client1.Call(CreateTCRegions_Pool_PDX, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/);
Util.Log("StepOne (pool locators) complete.");
m_client2.Call(CreateTCRegions_Pool_PDX, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/);
Util.Log("StepTwo (pool locators) complete.");
m_client1.Call(initializePdxSerializer);
m_client2.Call(initializePdxSerializer);
Util.Log("StepThree complete.");
m_client1.Call(doPutGetWithPdxSerializer);
Util.Log("StepFour complete.");
m_client2.Call(doGetWithPdxSerializerC2);
Util.Log("StepFive complete.");
m_client1.Call(Close);
Util.Log("Client 1 closed");
m_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 initializeReflectionPdxSerializer()
{
CacheHelper.DCache.TypeRegistry.PdxSerializer = new AutoSerializerEx();
//Serializable.RegisterTypeForPdxSerializer(SerializePdx1.CreateDeserializable);
}
private void doPutGetWithPdxSerializerR()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
for (var i = 0; i < 10; i++)
{
object put = new SerializePdx1(true);
;
region0[i] = put;
var ret = region0[i];
Assert.AreEqual(put, ret);
put = new SerializePdx2(true);
region0[i + 10] = put;
ret = region0[i + 10];
Assert.AreEqual(put, ret);
put = new PdxTypesReflectionTest(true);
region0[i + 20] = put;
ret = region0[i + 20];
Assert.AreEqual(put, ret);
put = new SerializePdx3(true, i % 2);
region0[i + 30] = put;
ret = region0[i + 30];
Assert.AreEqual(put, ret);
put = new SerializePdx4(true);
region0[i + 40] = put;
ret = region0[i + 40];
Assert.AreEqual(put, ret);
var p1 = region0[i + 30];
var p2 = region0[i + 40];
Assert.AreNotEqual(p1, p2, "This should NOt be equals");
var pft = new PdxFieldTest(true);
region0[i + 50] = pft;
ret = region0[i + 50];
Assert.AreNotEqual(pft, ret);
pft.NotInclude = "default_value";
Assert.AreEqual(pft, ret);
}
IDictionary<object, object> putall = new Dictionary<object, object>();
putall.Add(100, new SerializePdx3(true, 0));
putall.Add(200, new SerializePdx3(true, 1));
putall.Add(300, new SerializePdx4(true));
region0.PutAll(putall);
}
private void doGetWithPdxSerializerC2R()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
for (var i = 0; i < 10; i++)
{
object local = new SerializePdx1(true);
;
var ret = region0[i];
Assert.AreEqual(local, ret);
ret = region0[i + 10];
Assert.AreEqual(new SerializePdx2(true), ret);
ret = region0[i + 20];
Assert.AreEqual(new PdxTypesReflectionTest(true), ret);
var sp3Odd = new SerializePdx3(true, 1);
var sp3Even = new SerializePdx3(true, 0);
ret = region0[i + 30];
if (i % 2 == 0)
{
Assert.AreEqual(sp3Even, ret);
Assert.AreNotEqual(sp3Odd, ret);
}
else
{
Assert.AreEqual(sp3Odd, ret);
Assert.AreNotEqual(sp3Even, ret);
}
ret = region0[i + 40];
var sp4 = new SerializePdx4(true);
Assert.AreEqual(sp4, ret);
Console.WriteLine(sp4 + "===" + ret);
var p1 = region0[i + 30];
var p2 = region0[i + 40];
Assert.AreNotEqual(p1, p2, "This should NOt be equal");
}
IDictionary<object, object> getall = new Dictionary<object, object>();
ICollection<object> keys = new List<object>();
keys.Add(100);
keys.Add(200);
keys.Add(300);
//putall.Add(100, new SerializePdx3(true, 0));
//putall.Add(200, new SerializePdx3(true, 1));
//putall.Add(300, new SerializePdx4(true));
region0.GetAll(keys, getall, null);
Assert.AreEqual(getall[100], new SerializePdx3(true, 0));
Assert.AreEqual(getall[200], new SerializePdx3(true, 1));
Assert.AreEqual(getall[300], new SerializePdx4(true));
}
private void runReflectionPdxSerializerTest()
{
Util.Log("Starting iteration for pool locator runPdxSerializerTest");
CacheHelper.SetupJavaServers(true, "cacheserver.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
Util.Log("Locator 1 started.");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
m_client1.Call(CreateTCRegions_Pool_PDX, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/);
Util.Log("StepOne (pool locators) complete.");
m_client2.Call(CreateTCRegions_Pool_PDX, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/);
Util.Log("StepTwo (pool locators) complete.");
m_client1.Call(initializeReflectionPdxSerializer);
m_client2.Call(initializeReflectionPdxSerializer);
Util.Log("StepThree complete.");
m_client1.Call(doPutGetWithPdxSerializerR);
Util.Log("StepFour complete.");
m_client2.Call(doGetWithPdxSerializerC2R);
Util.Log("StepFive complete.");
m_client2.Call(doQueryTest);
Util.Log("StepSix complete.");
m_client1.Call(Close);
Util.Log("Client 1 closed");
m_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 dinitPdxSerializer()
{
CacheHelper.DCache.TypeRegistry.PdxSerializer = null;
}
private void doPutGetWithPdxSerializerNoReg()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
for (var i = 0; i < 10; i++)
{
object put = new SerializePdxNoRegister(true);
;
region0[i] = put;
var ret = region0[i];
Assert.AreEqual(put, ret);
}
}
private void doGetWithPdxSerializerC2NoReg()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
for (var i = 0; i < 10; i++)
{
object local = new SerializePdxNoRegister(true);
;
var ret = region0[i];
Assert.AreEqual(local, ret);
}
}
private void runPdxTestWithNoTypeRegister()
{
Util.Log("Starting iteration for pool locator runPdxTestWithNoTypeRegister");
CacheHelper.SetupJavaServers(true, "cacheserver.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
Util.Log("Locator 1 started.");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
m_client1.Call(CreateTCRegions_Pool_PDX, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/);
Util.Log("StepOne (pool locators) complete.");
m_client2.Call(CreateTCRegions_Pool_PDX, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/);
Util.Log("StepTwo (pool locators) complete.");
Util.Log("StepThree complete.");
m_client1.Call(dinitPdxSerializer);
m_client2.Call(dinitPdxSerializer);
m_client1.Call(doPutGetWithPdxSerializerNoReg);
Util.Log("StepFour complete.");
m_client2.Call(doGetWithPdxSerializerC2NoReg);
Util.Log("StepFive complete.");
m_client2.Call(doQueryTest);
Util.Log("StepSix complete.");
m_client1.Call(Close);
Util.Log("Client 1 closed");
m_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 pdxPut()
{
CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxType.CreateDeserializable);
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
region0["pdxput"] = new PdxType();
region0["pdxput2"] = new ParentPdx(1);
}
private void getObject()
{
CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxType.CreateDeserializable);
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var ret = (IPdxInstance) region0["pdxput"];
Assert.AreEqual(ret.GetClassName(), "PdxTests.PdxType",
"PdxInstance.GetClassName should return PdxTests.PdxType");
var pt = (PdxType) ret.GetObject();
var ptorig = new PdxType();
Assert.AreEqual(pt, ptorig, "PdxInstance.getObject not equals original object.");
ret = (IPdxInstance) region0["pdxput2"];
var pp = (ParentPdx) ret.GetObject();
var ppOrig = new ParentPdx(1);
Assert.AreEqual(pp, ppOrig, "Parent pdx should be equal ");
}
private void verifyPdxInstanceEquals()
{
CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxType.CreateDeserializable);
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var ret = (IPdxInstance) region0["pdxput"];
var ret2 = (IPdxInstance) region0["pdxput"];
Assert.AreEqual(ret, ret2, "PdxInstance equals are not matched.");
Util.Log(ret.ToString());
Util.Log(ret2.ToString());
ret = (IPdxInstance) region0["pdxput2"];
ret2 = (IPdxInstance) region0["pdxput2"];
Assert.AreEqual(ret, ret2, "parent pdx equals are not matched.");
}
private void verifyPdxInstanceHashcode()
{
CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxType.CreateDeserializable);
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var ret = (IPdxInstance) region0["pdxput"];
var dPdxType = new PdxType();
var pdxInstHashcode = ret.GetHashCode();
Util.Log("pdxinstance hash code " + pdxInstHashcode);
var javaPdxHC = (int) region0["javaPdxHC"];
//TODO: need to fix this is beacause Enum hashcode is different in java and .net
//Assert.AreEqual(javaPdxHC, pdxInstHashcode, "Pdxhashcode hashcode not matched with java padx hash code.");
//for parent pdx
ret = (IPdxInstance) region0["pdxput2"];
pdxInstHashcode = ret.GetHashCode();
Assert.AreEqual(javaPdxHC, pdxInstHashcode,
"Pdxhashcode hashcode not matched with java padx hash code for Parentpdx class.");
}
private void accessPdxInstance()
{
CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxType.CreateDeserializable);
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
var ret = (IPdxInstance) region0["pdxput"];
var dPdxType = new PdxType();
var retStr = (string) ret.GetField("m_string");
Assert.AreEqual(dPdxType.PString, retStr);
PdxType.GenericValCompare((char) ret.GetField("m_char"), dPdxType.Char);
var baa = (byte[][]) ret.GetField("m_byteByteArray");
PdxType.compareByteByteArray(baa, dPdxType.ByteByteArray);
PdxType.GenericCompare((char[]) ret.GetField("m_charArray"), dPdxType.CharArray);
var bl = (bool) ret.GetField("m_bool");
PdxType.GenericValCompare(bl, dPdxType.Bool);
PdxType.GenericCompare((bool[]) ret.GetField("m_boolArray"), dPdxType.BoolArray);
PdxType.GenericValCompare((sbyte) ret.GetField("m_byte"), dPdxType.Byte);
PdxType.GenericCompare((byte[]) ret.GetField("m_byteArray"), dPdxType.ByteArray);
var tmpl = (List<object>) ret.GetField("m_arraylist");
PdxType.compareCompareCollection(tmpl, dPdxType.Arraylist);
var tmpM = (IDictionary<object, object>) ret.GetField("m_map");
if (tmpM.Count != dPdxType.Map.Count)
throw new IllegalStateException("Not got expected value for type: " + dPdxType.Map.GetType().ToString());
var tmpH = (Hashtable) ret.GetField("m_hashtable");
if (tmpH.Count != dPdxType.Hashtable.Count)
throw new IllegalStateException("Not got expected value for type: " + dPdxType.Hashtable.GetType().ToString());
var arrAl = (ArrayList) ret.GetField("m_vector");
if (arrAl.Count != dPdxType.Vector.Count)
throw new IllegalStateException("Not got expected value for type: " + dPdxType.Vector.GetType().ToString());
var rmpChs = (CacheableHashSet) ret.GetField("m_chs");
if (rmpChs.Count != dPdxType.Chs.Count)
throw new IllegalStateException("Not got expected value for type: " + dPdxType.Chs.GetType().ToString());
var rmpClhs = (CacheableLinkedHashSet) ret.GetField("m_clhs");
if (rmpClhs.Count != dPdxType.Clhs.Count)
throw new IllegalStateException("Not got expected value for type: " + dPdxType.Clhs.GetType().ToString());
PdxType.GenericValCompare((string) ret.GetField("m_string"), dPdxType.String);
PdxType.compareData((DateTime) ret.GetField("m_dateTime"), dPdxType.DateTime);
PdxType.GenericValCompare((double) ret.GetField("m_double"), dPdxType.Double);
PdxType.GenericCompare((long[]) ret.GetField("m_longArray"), dPdxType.LongArray);
PdxType.GenericCompare((short[]) ret.GetField("m_int16Array"), dPdxType.Int16Array);
PdxType.GenericValCompare((sbyte) ret.GetField("m_sbyte"), dPdxType.Sbyte);
PdxType.GenericCompare((byte[]) ret.GetField("m_sbyteArray"), dPdxType.SbyteArray);
PdxType.GenericCompare((string[]) ret.GetField("m_stringArray"), dPdxType.StringArray);
PdxType.GenericValCompare((short) ret.GetField("m_uint16"), dPdxType.Uint16);
PdxType.GenericValCompare((int) ret.GetField("m_uint32"), dPdxType.Uint32);
PdxType.GenericValCompare((long) ret.GetField("m_ulong"), dPdxType.Ulong);
PdxType.GenericCompare((int[]) ret.GetField("m_uint32Array"), dPdxType.Uint32Array);
PdxType.GenericCompare((double[]) ret.GetField("m_doubleArray"), dPdxType.DoubleArray);
PdxType.GenericValCompare((float) ret.GetField("m_float"), dPdxType.Float);
PdxType.GenericCompare((float[]) ret.GetField("m_floatArray"), dPdxType.FloatArray);
PdxType.GenericValCompare((short) ret.GetField("m_int16"), dPdxType.Int16);
PdxType.GenericValCompare((int) ret.GetField("m_int32"), dPdxType.Int32);
PdxType.GenericValCompare((long) ret.GetField("m_long"), dPdxType.Long);
PdxType.GenericCompare((int[]) ret.GetField("m_int32Array"), dPdxType.Int32Array);
PdxType.GenericCompare((long[]) ret.GetField("m_ulongArray"), dPdxType.UlongArray);
PdxType.GenericCompare((short[]) ret.GetField("m_uint16Array"), dPdxType.Uint16Array);
var retbA = (byte[]) ret.GetField("m_byte252");
if (retbA.Length != 252)
throw new Exception("Array len 252 not found");
retbA = (byte[]) ret.GetField("m_byte253");
if (retbA.Length != 253)
throw new Exception("Array len 253 not found");
retbA = (byte[]) ret.GetField("m_byte65535");
if (retbA.Length != 65535)
throw new Exception("Array len 65535 not found");
retbA = (byte[]) ret.GetField("m_byte65536");
if (retbA.Length != 65536)
throw new Exception("Array len 65536 not found");
var ev = (pdxEnumTest) ret.GetField("m_pdxEnum");
if (ev != dPdxType.PdxEnum)
throw new Exception("Pdx enum is not equal");
var addreaaPdxI = (IPdxInstance[]) ret.GetField("m_address");
Assert.AreEqual(addreaaPdxI.Length, dPdxType.AddressArray.Length);
Assert.AreEqual(addreaaPdxI[0].GetObject(), dPdxType.AddressArray[0]);
var objArr = (List<object>) ret.GetField("m_objectArray");
Assert.AreEqual(objArr.Count, dPdxType.ObjectArray.Count);
Assert.AreEqual(((IPdxInstance) objArr[0]).GetObject(), dPdxType.ObjectArray[0]);
ret = (IPdxInstance) region0["pdxput2"];
var cpi = (IPdxInstance) ret.GetField("_childPdx");
var cpo = (ChildPdx) cpi.GetObject();
Assert.AreEqual(cpo, new ChildPdx(1393), "child pdx should be equal");
}
private void modifyPdxInstance()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]);
IPdxInstance newpdxins;
var pdxins = (IPdxInstance) region0["pdxput"];
var oldVal = (int) pdxins.GetField("m_int32");
var iwpi = pdxins.CreateWriter();
iwpi.SetField("m_int32", oldVal + 1);
iwpi.SetField("m_string", "change the string");
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
var newVal = (int) newpdxins.GetField("m_int32");
Assert.AreEqual(oldVal + 1, newVal);
var cStr = (string) newpdxins.GetField("m_string");
Assert.AreEqual("change the string", cStr);
var arr = (List<object>) newpdxins.GetField("m_arraylist");
Assert.AreEqual(arr.Count, 2);
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_char", 'D');
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((char) newpdxins.GetField("m_char"), 'D', "Char is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_bool", false);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((bool) newpdxins.GetField("m_bool"), false, "bool is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_byte", (sbyte) 0x75);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((sbyte) newpdxins.GetField("m_byte"), (sbyte) 0x75, "sbyte is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_sbyte", (sbyte) 0x57);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((sbyte) newpdxins.GetField("m_sbyte"), (sbyte) 0x57, "sbyte is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_int16", (short) 0x5678);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((short) newpdxins.GetField("m_int16"), (short) 0x5678, "int16 is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_long", (long) 0x56787878);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((long) newpdxins.GetField("m_long"), (long) 0x56787878, "long is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_float", 18389.34f);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((float) newpdxins.GetField("m_float"), 18389.34f, "float is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_float", 18389.34f);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((float) newpdxins.GetField("m_float"), 18389.34f, "float is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_double", 18389.34d);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((double) newpdxins.GetField("m_double"), 18389.34d, "double is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_boolArray", new bool[] {true, false, true, false, true, true, false, true});
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((bool[]) newpdxins.GetField("m_boolArray"),
new bool[] {true, false, true, false, true, true, false, true}, "bool array is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_byteArray", new byte[] {0x34, 0x64, 0x34, 0x64});
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((byte[]) newpdxins.GetField("m_byteArray"), new byte[] {0x34, 0x64, 0x34, 0x64},
"byte array is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_charArray", new char[] {'c', 'v', 'c', 'v'});
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((char[]) newpdxins.GetField("m_charArray"), new char[] {'c', 'v', 'c', 'v'},
"char array is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
var ticks = 634460644691580000L;
var tdt = new DateTime(ticks);
iwpi.SetField("m_dateTime", tdt);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((DateTime) newpdxins.GetField("m_dateTime"), tdt, "datetime is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_int16Array", new short[] {0x2332, 0x4545, 0x88, 0x898});
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((short[]) newpdxins.GetField("m_int16Array"), new short[] {0x2332, 0x4545, 0x88, 0x898},
"short array is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_int32Array", new int[] {23, 676868, 34343});
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((int[]) newpdxins.GetField("m_int32Array"), new int[] {23, 676868, 34343},
"int32 array is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_longArray", new long[] {3245435, 3425435});
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((long[]) newpdxins.GetField("m_longArray"), new long[] {3245435, 3425435},
"long array is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_floatArray", new float[] {232.565f, 234323354.67f});
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((float[]) newpdxins.GetField("m_floatArray"), new float[] {232.565f, 234323354.67f},
"float array is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_doubleArray", new double[] {23423432d, 43242354315d});
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((double[]) newpdxins.GetField("m_doubleArray"), new double[] {23423432d, 43242354315d},
"double array is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
var tmpbb = new byte[][]
{
new byte[] {0x23},
new byte[] {0x34, 0x55},
new byte[] {0x23},
new byte[] {0x34, 0x55}
};
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_byteByteArray", tmpbb);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
var retbb = (byte[][]) newpdxins.GetField("m_byteByteArray");
PdxType.compareByteByteArray(tmpbb, retbb);
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_stringArray", new string[] {"one", "two", "eeeee"});
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual((string[]) newpdxins.GetField("m_stringArray"), new string[] {"one", "two", "eeeee"},
"string array is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
var tl = new List<object>();
tl.Add(new PdxType());
tl.Add(new byte[] {0x34, 0x55});
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_arraylist", tl);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual(((List<object>) newpdxins.GetField("m_arraylist")).Count, tl.Count, "list<object> is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
var map = new Dictionary<object, object>();
map.Add(1, new bool[] {true, false, true, false, true, true, false, true});
map.Add(2, new string[] {"one", "two", "eeeee"});
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_map", map);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual(((Dictionary<object, object>) newpdxins.GetField("m_map")).Count, map.Count, "map is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
var hashtable = new Hashtable();
hashtable.Add(1, new string[] {"one", "two", "eeeee"});
hashtable.Add(2, new int[] {23, 676868, 34343});
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_hashtable", hashtable);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual(((Hashtable) newpdxins.GetField("m_hashtable")).Count, hashtable.Count, "hashtable is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_pdxEnum", pdxEnumTest.pdx1);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual(((pdxEnumTest) newpdxins.GetField("m_pdxEnum")), pdxEnumTest.pdx1, "pdx enum is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
var vector = new ArrayList();
vector.Add(1);
vector.Add(2);
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_vector", vector);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual(((ArrayList) newpdxins.GetField("m_vector")).Count, vector.Count, "vector is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
var chm = CacheableHashSet.Create();
chm.Add(1);
chm.Add("jkfdkjdsfl");
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_chs", chm);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.True(chm.Equals(newpdxins.GetField("m_chs")), "CacheableHashSet is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
var clhs = CacheableLinkedHashSet.Create();
clhs.Add(111);
clhs.Add(111343);
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_clhs", clhs);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.True(clhs.Equals(newpdxins.GetField("m_clhs")), "CacheableLinkedHashSet is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
var aa = new PdxTests.Address[2];
for (var i = 0; i < aa.Length; i++)
{
aa[i] = new PdxTests.Address(i + 1, "street" + i.ToString(), "city" + i.ToString());
}
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_address", aa);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
var iaa = (IPdxInstance[]) newpdxins.GetField("m_address");
Assert.AreEqual(iaa.Length, aa.Length, "address array length should equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal for address array");
var oa = new List<object>();
oa.Add(new PdxTests.Address(1, "1", "12"));
oa.Add(new PdxTests.Address(1, "1", "12"));
iwpi = pdxins.CreateWriter();
iwpi.SetField("m_objectArray", oa);
region0["pdxput"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput"];
Assert.AreEqual(((List<object>) newpdxins.GetField("m_objectArray")).Count, oa.Count,
"Object arary is not equal");
Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal");
pdxins = (IPdxInstance) region0["pdxput2"];
var cpi = (IPdxInstance) pdxins.GetField("_childPdx");
iwpi = pdxins.CreateWriter();
iwpi.SetField("_childPdx", new ChildPdx(2));
region0["pdxput2"] = iwpi;
newpdxins = (IPdxInstance) region0["pdxput2"];
Console.WriteLine(pdxins);
Console.WriteLine(newpdxins);
Assert.AreNotEqual(pdxins, newpdxins, "parent pdx should be not equal");
Assert.AreNotEqual(cpi, newpdxins.GetField("_childPdx"), "child pdx instance should be equal");
Assert.AreEqual(new ChildPdx(2), ((IPdxInstance) (newpdxins.GetField("_childPdx"))).GetObject(),
"child pdx instance should be equal");
}
private void runPdxInstanceTest()
{
Util.Log("Starting iteration for pool locator runPdxInstanceTest");
CacheHelper.SetupJavaServers(true, "cacheserver_pdxinstance_hashcode.xml");
CacheHelper.StartJavaLocator(1, "GFELOC");
Util.Log("Locator 1 started.");
CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1);
Util.Log("Cacheserver 1 started.");
m_client1.Call(CreateTCRegions_Pool_PDX2, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/);
Util.Log("StepOne (pool locators) complete.");
m_client2.Call(CreateTCRegions_Pool_PDX2, RegionNames,
CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/);
Util.Log("StepTwo (pool locators) complete.");
m_client1.Call(pdxPut);
m_client2.Call(getObject);
m_client2.Call(verifyPdxInstanceEquals);
m_client2.Call(verifyPdxInstanceHashcode);
m_client2.Call(accessPdxInstance);
m_client2.Call(modifyPdxInstance);
m_client1.Call(Close);
Util.Log("Client 1 closed");
m_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 InitClientXml(string cacheXml, int serverport1, int serverport2)
{
CacheHelper.HOST_PORT_1 = serverport1;
CacheHelper.HOST_PORT_2 = serverport2;
CacheHelper.InitConfig(cacheXml);
}
private void testReadSerializedXMLProperty()
{
Assert.AreEqual(CacheHelper.DCache.GetPdxReadSerialized(), true);
}
private void putPdxWithIdentityField()
{
CacheHelper.DCache.TypeRegistry.RegisterPdxType(SerializePdx.Create);
var sp = new SerializePdx(true);
var region0 = CacheHelper.GetVerifyRegion<object, object>(RegionNames[0]);
region0[1] = sp;
}
private void verifyPdxIdentityField()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(RegionNames[0]);
var pi = (IPdxInstance) region0[1];
Assert.AreEqual(pi.GetFieldNames().Count, 4, "number of fields should be four in SerializePdx");
Assert.AreEqual(pi.IsIdentityField("i1"), true, "SerializePdx1.i1 should be identity field");
Assert.AreEqual(pi.IsIdentityField("i2"), false, "SerializePdx1.i2 should NOT be identity field");
Assert.AreEqual(pi.HasField("i1"), true, "SerializePdx1.i1 should be in PdxInstance stream");
Assert.AreEqual(pi.HasField("i3"), false, "There is no field i3 in SerializePdx1's PdxInstance stream");
var javaPdxHC = (int) region0["javaPdxHC"];
Assert.AreEqual(javaPdxHC, pi.GetHashCode(),
"Pdxhashcode for identity field object SerializePdx1 not matched with java pdx hash code.");
var pi2 = (IPdxInstance) region0[1];
Assert.AreEqual(pi, pi2, "Both pdx instance should equal.");
}
private void putPdxWithNullIdentityFields()
{
var sp = new SerializePdx(false); //not initialized
var region0 = CacheHelper.GetVerifyRegion<object, object>(RegionNames[0]);
region0[2] = sp;
}
private void verifyPdxNullIdentityFieldHC()
{
var region0 = CacheHelper.GetVerifyRegion<object, object>(RegionNames[0]);
var pi = (IPdxInstance) region0[2];
var javaPdxHC = (int) region0["javaPdxHC"];
Assert.AreEqual(javaPdxHC, pi.GetHashCode(),
"Pdxhashcode for identity field object SerializePdx1 not matched with java pdx hash code.");
var pi2 = (IPdxInstance) region0[2];
Assert.AreEqual(pi, pi2, "Both pdx instance should equal.");
var values = new Dictionary<object, object>();
var keys = new List<object>();
keys.Add(1);
keys.Add(2);
region0.GetAll(keys, values, null);
Assert.AreEqual(values.Count, 2, "Getall count should be two");
}
private void runPdxReadSerializedTest()
{
Util.Log("runPdxReadSerializedTest");
CacheHelper.SetupJavaServers(false, "cacheserver_pdxinstance_hashcode.xml");
CacheHelper.StartJavaServer(1, "GFECS1");
Util.Log("Cacheserver 1 started.");
m_client1.Call(InitClientXml, "client_pdx.xml", CacheHelper.HOST_PORT_1, CacheHelper.HOST_PORT_2);
m_client2.Call(InitClientXml, "client_pdx.xml", CacheHelper.HOST_PORT_1, CacheHelper.HOST_PORT_2);
m_client1.Call(testReadSerializedXMLProperty);
m_client2.Call(testReadSerializedXMLProperty);
m_client1.Call(putPdxWithIdentityField);
m_client2.Call(verifyPdxIdentityField);
m_client1.Call(putPdxWithNullIdentityFields);
m_client2.Call(verifyPdxNullIdentityFieldHC);
m_client1.Call(Close);
m_client2.Call(Close);
CacheHelper.StopJavaServer(1);
Util.Log("Cacheserver 1 stopped.");
CacheHelper.ClearEndpoints();
CacheHelper.ClearLocators();
}
#region Tests
[Test]
public void PdxIgnoreUnreadFieldTest()
{
m_useWeakHashMap = true;
runPdxIgnoreUnreadFieldTest();
m_useWeakHashMap = false;
runPdxIgnoreUnreadFieldTest();
}
[Test]
public void MultipleDSTest()
{
runMultipleDSTest();
}
[Test]
public void PdxSerializerTest()
{
runPdxSerializerTest();
}
[Test]
public void ReflectionPdxSerializerTest()
{
runReflectionPdxSerializerTest();
}
[Test]
public void PdxTestWithNoTypeRegister()
{
runPdxTestWithNoTypeRegister();
}
[Test]
public void PdxInstanceTest()
{
runPdxInstanceTest();
}
[Test]
public void PdxReadSerializedTest()
{
runPdxReadSerializedTest();
}
#endregion
}
}