| /* |
| * 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 System.IO; |
| 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 ThinClientPdxTests3 : ThinClientRegionSteps |
| { |
| #region Private members |
| |
| private UnitProcess m_client1, m_client2, m_client3, m_client4; |
| |
| #endregion |
| |
| protected override ClientBase[] GetClients() |
| { |
| m_client1 = new UnitProcess(); |
| m_client2 = new UnitProcess(); |
| m_client3 = new UnitProcess(); |
| m_client4 = new UnitProcess(); |
| return new ClientBase[] {m_client1, m_client2, m_client3, m_client4}; |
| } |
| |
| [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; |
| |
| #region Basic merge three PDxType3 |
| |
| private void initializePdxAssemblyOne3(bool useWeakHashmap) |
| { |
| m_pdxVesionOneAsm = Assembly.LoadFrom("PdxVersion1Lib.dll"); |
| |
| CacheHelper.DCache.TypeRegistry.RegisterPdxType(registerPdxTypeOne3); |
| |
| var pt = m_pdxVesionOneAsm.GetType("PdxVersionTests.PdxTypes3"); |
| |
| var ob = pt.InvokeMember("Reset", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, |
| new object[] {useWeakHashmap}); |
| } |
| |
| private IPdxSerializable registerPdxTypeOne3() |
| { |
| var pt = m_pdxVesionOneAsm.GetType("PdxVersionTests.PdxTypes3"); |
| |
| var ob = pt.InvokeMember("CreateDeserializable", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, |
| null); |
| |
| return (IPdxSerializable) ob; |
| } |
| |
| private void initializePdxAssemblyTwo3(bool useWeakHashmap) |
| { |
| m_pdxVesionTwoAsm = Assembly.LoadFrom("PdxVersion2Lib.dll"); |
| |
| CacheHelper.DCache.TypeRegistry.RegisterPdxType(registerPdxTypeTwo3); |
| var pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.PdxTypes3"); |
| |
| var ob = pt.InvokeMember("Reset", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, |
| new object[] {useWeakHashmap}); |
| } |
| |
| private IPdxSerializable registerPdxTypeTwo3() |
| { |
| var pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.PdxTypes3"); |
| |
| var ob = pt.InvokeMember("CreateDeserializable", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, |
| null); |
| |
| return (IPdxSerializable) ob; |
| } |
| |
| #endregion |
| |
| 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 initializePdxAssemblyForEqualTestv1() |
| { |
| m_pdxVesionOneAsm = Assembly.LoadFrom("PdxVersion1Lib.dll"); |
| |
| CacheHelper.DCache.TypeRegistry.RegisterPdxType(registerPdxTypeForEqualv1); |
| |
| // Type pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.TestEquals"); |
| |
| //object ob = pt.InvokeMember("Reset", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, new object[] { useWeakHashmap }); |
| } |
| |
| private IPdxSerializable registerPdxTypeForEqualv1() |
| { |
| var pt = m_pdxVesionOneAsm.GetType("PdxVersionTests.TestEquals"); |
| |
| var ob = pt.InvokeMember("CreateDeserializable", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, |
| null); |
| |
| return (IPdxSerializable) ob; |
| } |
| |
| private void initializePdxAssemblyForEqualTestv2() |
| { |
| m_pdxVesionTwoAsm = Assembly.LoadFrom("PdxVersion2Lib.dll"); |
| |
| CacheHelper.DCache.TypeRegistry.RegisterPdxType(registerPdxTypeForEqualv2); |
| |
| // Type pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.TestEquals"); |
| |
| //object ob = pt.InvokeMember("Reset", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, new object[] { useWeakHashmap }); |
| } |
| |
| private IPdxSerializable registerPdxTypeForEqualv2() |
| { |
| var pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.TestEquals"); |
| |
| var ob = pt.InvokeMember("CreateDeserializable", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, |
| null); |
| |
| return (IPdxSerializable) ob; |
| } |
| |
| private void pdxVersion1Put() |
| { |
| initializePdxAssemblyForEqualTestv1(); |
| |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var pt = m_pdxVesionOneAsm.GetType("PdxVersionTests.TestEquals"); |
| |
| var np = pt.InvokeMember("TestEquals", BindingFlags.CreateInstance, null, null, null); |
| region0[1] = np; |
| } |
| |
| private void pdxVersion2Put() |
| { |
| initializePdxAssemblyForEqualTestv2(); |
| |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.TestEquals"); |
| var np = pt.InvokeMember("TestEquals", BindingFlags.CreateInstance, null, null, null); |
| region0[2] = np; |
| } |
| |
| private void getVersionObject() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var v1 = (IPdxInstance) region0[1]; |
| var v2 = (IPdxInstance) region0[2]; |
| |
| Assert.AreEqual(v1, v2, "both pdxinstance should be equal"); |
| } |
| |
| private void runPdxVersionClassesEqualTest() |
| { |
| 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(pdxVersion1Put); |
| m_client2.Call(pdxVersion2Put); |
| m_client2.Call(getVersionObject); |
| |
| 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 modifyPdxInstanceAndCheckLocally() |
| { |
| 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; |
| |
| var lRegion = region0.GetLocalView(); |
| |
| newpdxins = (IPdxInstance) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["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) lRegion["pdxput"]; |
| Assert.AreEqual(((Hashtable) newpdxins.GetField("m_hashtable")).Count, hashtable.Count, "hashtable 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) lRegion["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) lRegion["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) lRegion["pdxput"]; |
| Assert.True(clhs.Equals(newpdxins.GetField("m_clhs")), "CacheableLinkedHashSet is not equal"); |
| Assert.AreNotEqual(pdxins, newpdxins, "PdxInstance should not be equal"); |
| } |
| |
| private void runPdxInstanceLocalTest() |
| { |
| 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); |
| |
| 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, true /*local caching false*/); |
| Util.Log("StepTwo (pool locators) complete."); |
| |
| |
| m_client1.Call(pdxPut); |
| m_client2.Call(modifyPdxInstanceAndCheckLocally); |
| |
| 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(); |
| } |
| |
| public void pdxIFPutGetTest() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var pt = new PdxType(); |
| |
| var pif = CacheHelper.DCache.CreatePdxInstanceFactory("PdxTests.PdxType"); |
| |
| pif.WriteInt("m_int32", pt.Int32); |
| pif.WriteString("m_string", pt.PString); |
| pif.WriteObject("m_arraylist", pt.Arraylist); |
| pif.WriteChar("m_char", pt.Char); |
| pif.WriteBoolean("m_bool", pt.Bool); |
| pif.WriteByte("m_sbyte", pt.Sbyte); |
| pif.WriteByte("m_byte", pt.Byte); |
| pif.WriteShort("m_int16", pt.Int16); |
| pif.WriteByteArray("m_byteArray", pt.ByteArray); |
| pif.WriteLong("m_long", pt.Long); |
| pif.WriteFloat("m_float", pt.Float); |
| pif.WriteDouble("m_double", pt.Double); |
| pif.WriteBooleanArray("m_boolArray", pt.BoolArray); |
| pif.WriteByteArray("m_sbyteArray", pt.SbyteArray); |
| pif.WriteCharArray("m_charArray", pt.CharArray); |
| pif.WriteDate("m_dateTime", pt.DateTime); |
| pif.WriteShortArray("m_int16Array", pt.Int16Array); |
| pif.WriteIntArray("m_int32Array", pt.Int32Array); |
| pif.WriteLongArray("m_longArray", pt.LongArray); |
| pif.WriteFloatArray("m_floatArray", pt.FloatArray); |
| pif.WriteDoubleArray("m_doubleArray", pt.DoubleArray); |
| pif.WriteArrayOfByteArrays("m_byteByteArray", pt.ByteByteArray); |
| pif.WriteStringArray("m_stringArray", pt.StringArray); |
| pif.WriteObject("m_map", pt.Map); |
| pif.WriteObject("m_hashtable", pt.Hashtable); |
| pif.WriteObject("m_vector", pt.Vector); |
| pif.WriteObject("m_chs", pt.Chs); |
| pif.WriteObject("m_clhs", pt.Clhs); |
| pif.WriteInt("m_uint32", pt.Uint32); |
| pif.WriteLong("m_ulong", pt.Ulong); |
| pif.WriteShort("m_uint16", pt.Uint16); |
| pif.WriteIntArray("m_uint32Array", pt.Uint32Array); |
| pif.WriteLongArray("m_ulongArray", pt.UlongArray); |
| pif.WriteShortArray("m_uint16Array", pt.Uint16Array); |
| pif.WriteByteArray("m_byte252", pt.Byte252); |
| pif.WriteByteArray("m_byte253", pt.Byte253); |
| pif.WriteByteArray("m_byte65535", pt.Byte65535); |
| pif.WriteByteArray("m_byte65536", pt.Byte65536); |
| pif.WriteObject("m_pdxEnum", pt.PdxEnum); |
| |
| pif.WriteObject("m_address", pt.AddressArray); |
| pif.WriteObjectArray("m_objectArray", pt.ObjectArray); |
| |
| var pi = pif.Create(); |
| |
| Assert.AreEqual(pi.GetClassName(), "PdxTests.PdxType", |
| "PdxInstanceFactory created PdxInstance. PdxInstance.GetClassName should return PdxTests.PdxType"); |
| |
| var piObject = pi.GetObject(); |
| |
| Assert.AreEqual(piObject, pt); |
| |
| region0["pi"] = pi; |
| |
| var ret = region0["pi"]; |
| |
| Assert.AreEqual(ret, pt); |
| |
| var gotexcep = false; |
| try |
| { |
| pif.Create(); |
| } |
| catch (IllegalStateException) |
| { |
| gotexcep = true; |
| } |
| |
| Assert.IsTrue(gotexcep, "Pdx instance factory should have thrown IllegalStateException"); |
| |
| var pp = new ParentPdx(2); |
| var if2 = CacheHelper.DCache.CreatePdxInstanceFactory(pp.GetType().FullName); |
| if2.WriteInt("_parentId", pp._parentId); |
| if2.WriteObject("_gender", pp._gender); |
| if2.WriteString("_parentName", pp._parentName); |
| if2.WriteObject("_childPdx", pp._childPdx); |
| |
| var ip2 = if2.Create(); |
| region0["pp"] = ip2; |
| |
| ret = region0["pp"]; |
| |
| Assert.AreEqual(ret, pp, "parent pdx should be same"); |
| } |
| |
| //this test use write field Api |
| public void pdxIFPutGetTest2() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var pt = new PdxType(); |
| |
| var pif = CacheHelper.DCache.CreatePdxInstanceFactory("PdxTests.PdxType"); |
| |
| pif.WriteField("m_int32", pt.Int32, pt.Int32.GetType()); |
| pif.WriteField("m_string", pt.PString, pt.PString.GetType()); |
| // pif.WriteField("m_arraylist", pt.Arraylist, pt.Arraylist.GetType()); |
| //we treat arraylist as ObjectArray as well, so here need to differentiate it |
| pif.WriteObject("m_arraylist", pt.Arraylist); |
| pif.WriteField("m_char", pt.Char, pt.Char.GetType()); |
| pif.WriteField("m_bool", pt.Bool, pt.Bool.GetType()); |
| pif.WriteField("m_sbyte", pt.Sbyte, pt.Sbyte.GetType()); |
| pif.WriteField("m_byte", pt.Byte, pt.Byte.GetType()); |
| pif.WriteField("m_int16", pt.Int16, pt.Int16.GetType()); |
| pif.WriteField("m_byteArray", pt.ByteArray, pt.ByteArray.GetType()); |
| pif.WriteField("m_long", pt.Long, pt.Long.GetType()); |
| pif.WriteField("m_float", pt.Float, pt.Float.GetType()); |
| pif.WriteField("m_double", pt.Double, pt.Double.GetType()); |
| pif.WriteField("m_boolArray", pt.BoolArray, pt.BoolArray.GetType()); |
| pif.WriteField("m_sbyteArray", pt.SbyteArray, pt.SbyteArray.GetType()); |
| pif.WriteField("m_charArray", pt.CharArray, pt.CharArray.GetType()); |
| pif.WriteField("m_dateTime", pt.DateTime, pt.DateTime.GetType()); |
| pif.WriteField("m_int16Array", pt.Int16Array, pt.Int16Array.GetType()); |
| pif.WriteField("m_int32Array", pt.Int32Array, pt.Int32Array.GetType()); |
| pif.WriteField("m_longArray", pt.LongArray, pt.LongArray.GetType()); |
| pif.WriteField("m_floatArray", pt.FloatArray, pt.FloatArray.GetType()); |
| pif.WriteField("m_doubleArray", pt.DoubleArray, pt.DoubleArray.GetType()); |
| pif.WriteField("m_byteByteArray", pt.ByteByteArray, pt.ByteByteArray.GetType()); |
| pif.WriteField("m_stringArray", pt.StringArray, pt.StringArray.GetType()); |
| pif.WriteField("m_map", pt.Map, pt.Map.GetType()); |
| pif.WriteField("m_hashtable", pt.Hashtable, pt.Hashtable.GetType()); |
| pif.WriteField("m_vector", pt.Vector, pt.Vector.GetType()); |
| pif.WriteField("m_chs", pt.Chs, pt.Chs.GetType()); |
| pif.WriteField("m_clhs", pt.Clhs, pt.Clhs.GetType()); |
| pif.WriteField("m_uint32", pt.Uint32, pt.Uint32.GetType()); |
| pif.WriteField("m_ulong", pt.Ulong, pt.Ulong.GetType()); |
| pif.WriteField("m_uint16", pt.Uint16, pt.Uint16.GetType()); |
| pif.WriteField("m_uint32Array", pt.Uint32Array, pt.Uint32Array.GetType()); |
| pif.WriteField("m_ulongArray", pt.UlongArray, pt.UlongArray.GetType()); |
| pif.WriteField("m_uint16Array", pt.Uint16Array, pt.Uint16Array.GetType()); |
| pif.WriteField("m_byte252", pt.Byte252, pt.Byte252.GetType()); |
| pif.WriteField("m_byte253", pt.Byte253, pt.Byte253.GetType()); |
| pif.WriteField("m_byte65535", pt.Byte65535, pt.Byte65535.GetType()); |
| pif.WriteField("m_byte65536", pt.Byte65536, pt.Byte65536.GetType()); |
| pif.WriteField("m_pdxEnum", pt.PdxEnum, pt.PdxEnum.GetType()); |
| |
| var aa = new PdxTests.Address[10]; |
| |
| for (var i = 0; i < 10; i++) |
| { |
| aa[i] = new PdxTests.Address(i + 1, "street" + i.ToString(), "city" + i.ToString()); |
| } |
| |
| pif.WriteField("m_address", pt.AddressArray, aa.GetType()); |
| pif.WriteField("m_objectArray", pt.ObjectArray, pt.ObjectArray.GetType()); |
| |
| var pi = pif.Create(); |
| |
| var piObject = pi.GetObject(); |
| |
| Assert.AreEqual(piObject, pt); |
| |
| region0["pi2"] = pi; |
| |
| var ret = region0["pi2"]; |
| |
| Assert.AreEqual(ret, pt); |
| |
| var pp = new ParentPdx(2); |
| var if2 = CacheHelper.DCache.CreatePdxInstanceFactory(pp.GetType().FullName); |
| if2.WriteField("_parentId", pp._parentId, pp._parentId.GetType()); |
| if2.WriteField("_gender", pp._gender, pp._gender.GetType()); |
| if2.WriteField("_parentName", pp._parentName, pp._parentName.GetType()); |
| if2.WriteField("_childPdx", pp._childPdx, pp._childPdx.GetType()); |
| |
| var ip2 = if2.Create(); |
| region0["ppwf"] = ip2; |
| |
| ret = region0["ppwf"]; |
| |
| Assert.AreEqual(ret, pp, "parent pdx should be same"); |
| } |
| |
| public void runPdxInstanceFactoryTest() |
| { |
| CacheHelper.SetupJavaServers(true, "cacheserverPdxSerializer.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, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/); |
| Util.Log("StepOne (pool locators) complete."); |
| |
| m_client2.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/); |
| Util.Log("StepTwo (pool locators) complete."); |
| |
| |
| m_client1.Call(pdxIFPutGetTest); |
| //m_client2.Call(); |
| Util.Log("StepThree complete."); |
| m_client1.Call(pdxIFPutGetTest2); |
| Util.Log("StepFour 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(); |
| } |
| |
| public void pdxTypeMapperTest1() |
| { |
| Console.WriteLine("pdxTypeMapperTest 1"); |
| CacheHelper.DCache.TypeRegistry.PdxTypeMapper = new PdxTypeMapper(); |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| if (region0 == null) |
| Console.WriteLine("pdxTypeMapperTest region is null"); |
| else |
| Console.WriteLine("pdxTypeMapperTest region is NOT null"); |
| |
| var pt = new PdxType(); |
| |
| for (var i = 0; i < 10; i++) |
| { |
| region0[i] = pt; |
| } |
| |
| for (var i = 0; i < 10; i++) |
| { |
| var ret = region0[i]; |
| |
| Assert.AreEqual(ret, pt); |
| } |
| } |
| |
| public void pdxTypeMapperTest2() |
| { |
| CacheHelper.DCache.TypeRegistry.PdxTypeMapper = new PdxTypeMapper(); |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var pt = new PdxType(); |
| |
| for (var i = 0; i < 10; i++) |
| { |
| var ret = region0[1]; |
| |
| Assert.AreEqual(ret, pt); |
| } |
| } |
| |
| public void pdxITypeMapperTest() |
| { |
| CacheHelper.DCache.TypeRegistry.PdxTypeMapper = new PdxTypeMapper(); |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var pt = new PdxType(); |
| |
| for (var i = 0; i < 10; i++) |
| { |
| var ret = region0[1]; |
| |
| var pi = ret as IPdxInstance; |
| Assert.IsNotNull(pi); |
| |
| using (pi) |
| { |
| Assert.AreEqual(pi.GetObject(), pt); |
| } |
| } |
| } |
| |
| public void pdxASTypeMapperTest() |
| { |
| CacheHelper.DCache.TypeRegistry.PdxSerializer = new AutoSerializerEx(); |
| CacheHelper.DCache.TypeRegistry.PdxTypeMapper = new PdxTypeMapper(); |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var sp3 = new SerializePdx3(true, 2); |
| |
| for (var i = 100; i < 110; i++) |
| { |
| region0[i] = sp3; |
| } |
| |
| for (var i = 100; i < 110; i++) |
| { |
| var ret = region0[i]; |
| Assert.AreEqual(sp3, ret); |
| } |
| } |
| |
| public void runPdxTypeMapperTest() |
| { |
| CacheHelper.SetupJavaServers(true, "cacheserverPdxSerializer.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, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/); |
| Util.Log("StepOne (pool locators) complete."); |
| |
| m_client2.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/); |
| Util.Log("StepTwo (pool locators) complete."); |
| |
| m_client4.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/); |
| |
| m_client3.Call(CreateTCRegions_Pool_PDX2, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/); |
| |
| |
| Util.Log("StepTwo (pool locators) complete."); |
| Console.WriteLine("client created"); |
| |
| m_client1.Call(pdxTypeMapperTest1); |
| Console.WriteLine("client created2"); |
| m_client2.Call(pdxTypeMapperTest2); |
| m_client3.Call(pdxITypeMapperTest); |
| m_client4.Call(pdxASTypeMapperTest); |
| |
| |
| m_client1.Call(Close); |
| Util.Log("Client 1 closed"); |
| m_client2.Call(Close); |
| m_client3.Call(Close); |
| m_client4.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 int nPdxPuts = 100000; |
| private int pdxobjsize = 5000; |
| |
| private void checkLocalCache() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| var localregion = region0.GetLocalView(); |
| |
| var entryNotFound = 0; |
| var entryFound = 0; |
| for (var i = 0; i < nPdxPuts; i++) |
| { |
| try |
| { |
| var ret = localregion[i]; |
| if (ret != null) |
| { |
| var ht = ret as Heaptest; |
| if (ht != null) |
| entryFound++; |
| } |
| } |
| catch (Client.KeyNotFoundException) |
| { |
| entryNotFound++; |
| } |
| } |
| |
| Assert.Greater(entryFound, 100, "enteries should be in local cache"); |
| Assert.Greater(nPdxPuts, entryFound + 50000, "pdx object should have evicted"); |
| } |
| |
| private void putPdxheaptest() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| for (var i = 0; i < nPdxPuts; i++) |
| { |
| region0[i] = new Heaptest(pdxobjsize); |
| } |
| |
| checkLocalCache(); |
| } |
| |
| private void getPdxHeaptest() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| for (var i = 0; i < nPdxPuts; i++) |
| { |
| var ret = region0[i]; |
| } |
| |
| checkLocalCache(); |
| } |
| |
| private void runPdxTypeObjectSizeTest() |
| { |
| CacheHelper.SetupJavaServers(true, "cacheserverPdxSerializer.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator 1 started."); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| m_client1.Call(SetHeaplimit, 100, 10); |
| m_client2.Call(SetHeaplimit, 100, 10); |
| |
| m_client1.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, true /*local caching false*/); |
| Util.Log("StepOne (pool locators) complete."); |
| |
| m_client2.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, true /*local caching false*/); |
| Util.Log("StepTwo (pool locators) complete."); |
| |
| m_client1.Call(putPdxheaptest); |
| m_client2.Call(getPdxHeaptest); |
| |
| m_client1.Call(UnsetHeapLimit); |
| m_client2.Call(UnsetHeapLimit); |
| 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 readonly int nBAPuts = 25; |
| private readonly int baSize = 16240000; |
| |
| private void checkLocalCacheBA(bool checkmem) |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| var localregion = region0.GetLocalView(); |
| |
| var entryNotFound = 0; |
| var entryFound = 0; |
| for (var i = 0; i < nBAPuts; i++) |
| { |
| try |
| { |
| var ret = localregion[i]; |
| if (ret != null) |
| { |
| var ht = ret as byte[]; |
| if (ht != null) |
| entryFound++; |
| } |
| } |
| catch (Client.KeyNotFoundException) |
| { |
| entryNotFound++; |
| } |
| } |
| |
| Assert.Greater(entryFound, 8, "enteries should be in local cache"); |
| Assert.Greater(nBAPuts, entryFound + 10, "pdx object should have evicted"); |
| |
| var mem = (int) GC.GetTotalMemory(true); |
| // if(checkmem) |
| //Assert.Less(mem, 200000000, "Memory should be less then 200 mb"); |
| } |
| |
| private void putBAheaptest() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| for (var i = 0; i < nBAPuts; i++) |
| { |
| region0[i] = new byte[baSize]; |
| } |
| |
| checkLocalCacheBA(false); |
| } |
| |
| private void getBAHeaptest() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| for (var i = 0; i < nBAPuts; i++) |
| { |
| var ret = region0[i]; |
| } |
| |
| checkLocalCacheBA(true); |
| } |
| |
| private void runByteArrayObjectSizeTest() |
| { |
| CacheHelper.SetupJavaServers(true, "cacheserverPdxSerializer.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator 1 started."); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| m_client1.Call(SetHeaplimit, 150, 5); |
| m_client2.Call(SetHeaplimit, 150, 5); |
| |
| m_client1.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, true /*local caching false*/); |
| Util.Log("StepOne (pool locators) complete."); |
| |
| m_client2.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, true /*local caching false*/); |
| Util.Log("StepTwo (pool locators) complete."); |
| |
| m_client1.Call(putBAheaptest); |
| m_client2.Call(getBAHeaptest); |
| |
| m_client1.Call(UnsetHeapLimit); |
| m_client2.Call(UnsetHeapLimit); |
| 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 putPdxWithEnum() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| region0[0] = new PdxEnumTestClass(0); |
| region0[1] = new PdxEnumTestClass(1); |
| region0[2] = new PdxEnumTestClass(2); |
| } |
| |
| private void pdxEnumQuery() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| var sr = region0.Query<object>("_enumid.name = 'id2'"); |
| |
| Assert.AreEqual(1, sr.Size, "query result should have one item"); |
| |
| var en = sr.GetEnumerator(); |
| |
| while (en.MoveNext()) |
| { |
| var re = (PdxEnumTestClass) en.Current; |
| Assert.AreEqual(1, re.ID, "query should have return id 1"); |
| } |
| } |
| |
| private void runPdxEnumQueryTest() |
| { |
| CacheHelper.SetupJavaServers(true, "cacheserverPdxSerializer.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, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, true /*local caching false*/); |
| Util.Log("StepOne (pool locators) complete."); |
| |
| m_client2.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, true /*local caching false*/); |
| Util.Log("StepTwo (pool locators) complete."); |
| |
| m_client1.Call(putPdxWithEnum); |
| m_client1.Call(pdxEnumQuery); |
| |
| 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 registerPdxDelta() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| region0.GetSubscriptionService().RegisterAllKeys(); |
| } |
| |
| private void putPdxDelta() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| var pd = new javaobject.PdxDelta(1001); |
| for (var i = 0; i < 10; i++) |
| { |
| region0["pdxdelta"] = pd; |
| } |
| |
| Assert.Greater(javaobject.PdxDelta.GotDelta, 7, "this should have more todelta"); |
| } |
| |
| private void verifyPdxDelta() |
| { |
| System.Threading.Thread.Sleep(5000); |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| //Assert.Greater(javaobject.PdxDelta.GotDelta, 7, "this should have recieve delta"); |
| var pd = (javaobject.PdxDelta) region0.GetLocalView()["pdxdelta"]; |
| Assert.Greater(pd.Delta, 7, "this should have recieve delta"); |
| Assert.Greater(javaobject.PdxDelta.GotDelta, 7, "this should have more todelta"); |
| } |
| |
| private void runPdxDeltaTest() |
| { |
| CacheHelper.SetupJavaServers(true, "cacheserverForPdx.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, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, true /*local caching false*/); |
| Util.Log("StepOne (pool locators) complete."); |
| |
| m_client2.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", true, false, true /*local caching false*/); |
| Util.Log("StepTwo (pool locators) complete."); |
| m_client2.Call(registerPdxDelta); |
| m_client1.Call(putPdxDelta); |
| m_client2.Call(verifyPdxDelta); |
| |
| 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 generateJavaPdxType() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var args = "saveAllJavaPdxTypes"; |
| var filter = new List<object>(); |
| filter.Add(1); |
| var execution = FunctionService<object>.OnRegion<object, object>(region0) |
| .WithArgs<object>(args).WithFilter<object>(filter); |
| |
| |
| var resultCollector = execution.Execute("ComparePdxTypes"); |
| |
| var executeFunctionResult = resultCollector.GetResult(); |
| |
| var gotResult = false; |
| foreach (var item in executeFunctionResult) |
| { |
| Assert.AreEqual(item, true, "Function should return true"); |
| gotResult = true; |
| } |
| |
| Assert.AreEqual(gotResult, true, "Function should return true"); |
| } |
| |
| private void putAllPdxTypes() |
| { |
| var r = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| var p1 = new PdxTypes1(); |
| r[p1.GetType().FullName] = p1; |
| |
| var p2 = new PdxTypes2(); |
| r[p2.GetType().FullName] = p2; |
| |
| var p3 = new PdxTypes3(); |
| r[p3.GetType().FullName] = p3; |
| |
| var p4 = new PdxTypes4(); |
| r[p4.GetType().FullName] = p4; |
| |
| var p5 = new PdxTypes5(); |
| r[p5.GetType().FullName] = p5; |
| |
| var p6 = new PdxTypes6(); |
| r[p6.GetType().FullName] = p6; |
| |
| var p7 = new PdxTypes7(); |
| r[p7.GetType().FullName] = p7; |
| |
| var p8 = new PdxTypes8(); |
| r[p8.GetType().FullName] = p8; |
| |
| var p9 = new PdxTypes9(); |
| r[p9.GetType().FullName] = p9; |
| |
| var p10 = new PdxTypes10(); |
| r[p10.GetType().FullName] = p10; |
| } |
| |
| private void verifyDotNetPdxTypes() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var args = "compareDotNETPdxTypes"; |
| var filter = new List<object>(); |
| filter.Add(1); |
| var execution = FunctionService<object>.OnRegion<object, object>(region0) |
| .WithArgs<object>(args).WithFilter<object>(filter); |
| |
| |
| var resultCollector = execution.Execute("ComparePdxTypes"); |
| |
| var executeFunctionResult = resultCollector.GetResult(); |
| |
| var gotResult = false; |
| foreach (var item in executeFunctionResult) |
| { |
| Assert.AreEqual(item, true, "Function should return true"); |
| gotResult = true; |
| } |
| |
| Assert.AreEqual(gotResult, true, "Function should return true"); |
| } |
| |
| private void runPdxMetadataCheckTest() |
| { |
| CacheHelper.SetupJavaServers(true, "cacheserverPdx2.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, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, true /*local caching false*/); |
| Util.Log("StepOne (pool locators) complete."); |
| |
| m_client2.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", true, false, true /*local caching false*/); |
| Util.Log("StepTwo (pool locators) complete."); |
| |
| m_client1.Call(generateJavaPdxType); |
| m_client1.Call(putAllPdxTypes); |
| m_client1.Call(verifyDotNetPdxTypes); |
| |
| 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 client1PutsV1Object() |
| { |
| initializePdxAssemblyOne3(false); |
| |
| |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var pt = m_pdxVesionOneAsm.GetType("PdxVersionTests.PdxTypes3"); |
| var np = pt.InvokeMember("PdxTypes3", BindingFlags.CreateInstance, null, null, null); |
| region0[1] = np; |
| |
| var pRet = region0[1]; |
| } |
| |
| //this has v2 object |
| private void client2GetsV1ObjectAndPutsV2Object() |
| { |
| initializePdxAssemblyTwo3(false); |
| |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var pt = m_pdxVesionTwoAsm.GetType("PdxVersionTests.PdxTypes3"); |
| var np = pt.InvokeMember("PdxTypes3", BindingFlags.CreateInstance, null, null, null); |
| |
| //get v1 ojbject .. |
| var pRet = (object) region0[1]; |
| |
| //now put v2 object |
| region0[2] = np; |
| } |
| |
| //this should fails.. |
| private void client3GetsV2Object() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| var execution = FunctionService<object>.OnRegion<object, object>(region0); |
| |
| var resultCollector = execution.Execute("IterateRegion"); |
| |
| var executeFunctionResult = resultCollector.GetResult(); |
| |
| var gotResult = false; |
| foreach (var item in executeFunctionResult) |
| { |
| Assert.AreEqual(item, true, "Function should return true"); |
| gotResult = true; |
| } |
| |
| Assert.AreEqual(gotResult, true, "Function should return true"); |
| } |
| |
| private void runPdxBankTest() |
| { |
| CacheHelper.SetupJavaServers(true, "cacheserverPdx2.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, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, true /*local caching false*/); |
| Util.Log("StepOne (pool locators) complete."); |
| |
| m_client2.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", true, false, true /*local caching false*/); |
| |
| m_client3.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", true, false, true /*local caching false*/); |
| Util.Log("StepTwo (pool locators) complete."); |
| m_client1.Call(client1PutsV1Object); |
| m_client2.Call(client2GetsV1ObjectAndPutsV2Object); |
| m_client3.Call(client3GetsV2Object); |
| |
| m_client1.Call(Close); |
| Util.Log("Client 1 closed"); |
| m_client2.Call(Close); |
| Util.Log("Client 2 closed"); |
| m_client3.Call(Close); |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| |
| CacheHelper.StopJavaLocator(1); |
| Util.Log("Locator 1 stopped."); |
| |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| } |
| |
| private void putFromLongRunningClient() |
| { |
| CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxTypes1.CreateDeserializable); |
| CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxTypes2.CreateDeserializable); |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| region0[1] = new PdxTypes1(); |
| region0[2] = new PdxTypes2(); |
| } |
| |
| private void put2FromLongRunningClient() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| |
| region0[2] = new PdxTypes2(); |
| } |
| |
| private void VerifyEntry2FLRC() |
| { |
| var region0 = CacheHelper.GetVerifyRegion<object, object>(m_regionNames[0]); |
| try |
| { |
| var ret = region0[2]; |
| Assert.Fail("Expected exception."); |
| } |
| catch (Exception) |
| { |
| // Expected |
| } |
| } |
| |
| private readonly string testSysPropFileName = "testLR.properties"; |
| |
| private void createExtraSysPropFile(string name, string value) |
| { |
| // create a file for alternate properties... |
| var sw = new StreamWriter(testSysPropFileName); |
| sw.WriteLine(name + "=" + value); |
| sw.Close(); |
| } |
| |
| private void runPdxLongrunningClientTest() |
| { |
| CacheHelper.SetupJavaServers(true, "cacheserverPdx.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator 1 started."); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| createExtraSysPropFile("on-client-disconnect-clear-pdxType-Ids", "true"); |
| m_client1.Call(CacheHelper.SetExtraPropertiesFile, testSysPropFileName); |
| m_client2.Call(CacheHelper.SetExtraPropertiesFile, testSysPropFileName); |
| |
| m_client1.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/); |
| Util.Log("StepOne (pool locators) complete."); |
| |
| m_client2.Call(CreateTCRegions_Pool, RegionNames, |
| CacheHelper.Locators, "__TESTPOOL1_", false, false, false /*local caching false*/); |
| Util.Log("StepTwo (pool locators) complete."); |
| |
| |
| m_client1.Call(putFromLongRunningClient); |
| Util.Log("StepThree complete."); |
| |
| //m_client2.Call(VerifyEntryFLRC); |
| Util.Log("StepFour complete."); |
| |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started again."); |
| |
| //different object |
| m_client1.Call(put2FromLongRunningClient); |
| Util.Log("StepFive complete."); |
| |
| //this should throw exception |
| m_client2.Call(VerifyEntry2FLRC); |
| Util.Log("StepSeven 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(); |
| |
| m_client1.Call(CacheHelper.SetExtraPropertiesFile, (string) null); |
| m_client2.Call(CacheHelper.SetExtraPropertiesFile, (string) null); |
| } |
| |
| #region Tests |
| |
| [Test] |
| public void PdxVersionClassesEqualTest() |
| { |
| runPdxVersionClassesEqualTest(); |
| } |
| |
| [Test] |
| public void PdxInstanceLocalTest() |
| { |
| runPdxInstanceLocalTest(); |
| } |
| |
| [Test] |
| public void PdxInstanceFactoryTest() |
| { |
| runPdxInstanceFactoryTest(); |
| } |
| |
| [Test] |
| public void PdxTypeMapperTest() |
| { |
| runPdxTypeMapperTest(); |
| } |
| |
| //[Test] |
| public void PdxTypeObjectSizeTest() |
| { |
| runPdxTypeObjectSizeTest(); |
| } |
| |
| [Test] |
| public void ByteArrayObjectSizeTest() |
| { |
| runByteArrayObjectSizeTest(); |
| } |
| |
| [Test] |
| public void PdxEnumQueryTest() |
| { |
| runPdxEnumQueryTest(); |
| } |
| |
| [Test] |
| public void PdxDeltaTest() |
| { |
| runPdxDeltaTest(); |
| } |
| |
| [Test] |
| public void PdxMetadataCheckTest() |
| { |
| runPdxMetadataCheckTest(); |
| } |
| |
| [Test] |
| public void PdxBankTest() |
| { |
| runPdxBankTest(); |
| } |
| |
| [Test] |
| public void PdxLongrunningClientTest() |
| { |
| runPdxLongrunningClientTest(); |
| } |
| |
| #endregion |
| } |
| } |