| /* |
| * 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.Threading; |
| |
| namespace Apache.Geode.Client.UnitTests |
| { |
| using NUnit.Framework; |
| using Apache.Geode.DUnitFramework; |
| using Apache.Geode.Client.Tests; |
| |
| using Apache.Geode.Client; |
| |
| using QueryStatics = Apache.Geode.Client.Tests.QueryStatics; |
| using QueryCategory = Apache.Geode.Client.Tests.QueryCategory; |
| using QueryStrings = Apache.Geode.Client.Tests.QueryStrings; |
| |
| [TestFixture] |
| [Category("group1")] |
| [Category("unicast_only")] |
| [Category("generics")] |
| public class ThinClientQueryTests : ThinClientRegionSteps |
| { |
| #region Private members |
| |
| private UnitProcess m_client1; |
| private UnitProcess m_client2; |
| private static string[] QueryRegionNames = { "Portfolios", "Positions", "Portfolios2", |
| "Portfolios3" }; |
| private static string QERegionName = "Portfolios"; |
| #endregion |
| |
| protected override ClientBase[] GetClients() |
| { |
| m_client1 = new UnitProcess(); |
| m_client2 = new UnitProcess(); |
| return new ClientBase[] { m_client1, m_client2 }; |
| } |
| |
| [TestFixtureSetUp] |
| public override void InitTests() |
| { |
| base.InitTests(); |
| } |
| |
| [TearDown] |
| public override void EndTest() |
| { |
| m_client1.Call(Close); |
| m_client2.Call(Close); |
| CacheHelper.StopJavaServers(); |
| base.EndTest(); |
| } |
| |
| [SetUp] |
| public override void InitTest() |
| { |
| m_client1.Call(InitClient); |
| m_client2.Call(InitClient); |
| } |
| |
| #region Functions invoked by the tests |
| |
| public void InitClient() |
| { |
| CacheHelper.Init(); |
| CacheHelper.DCache.TypeRegistry.RegisterType(Portfolio.CreateDeserializable, 8); |
| CacheHelper.DCache.TypeRegistry.RegisterType(Position.CreateDeserializable, 7); |
| CacheHelper.DCache.TypeRegistry.RegisterPdxType(PortfolioPdx.CreateDeserializable); |
| CacheHelper.DCache.TypeRegistry.RegisterPdxType(PositionPdx.CreateDeserializable); |
| } |
| |
| public void StepOneQE(string locators, bool isPdx) |
| { |
| m_isPdx = isPdx; |
| try |
| { |
| var poolFail = CacheHelper.DCache.GetPoolManager().CreateFactory().Create("_TESTFAILPOOL_"); |
| var qsFail = poolFail.GetQueryService(); |
| var qryFail = qsFail.NewQuery<object>("select distinct * from /" + QERegionName); |
| var resultsFail = qryFail.Execute(); |
| Assert.Fail("Since no endpoints defined, so exception expected"); |
| } |
| catch (IllegalStateException ex) |
| { |
| Util.Log("Got expected exception: {0}", ex); |
| } |
| catch (Exception e) { |
| Util.Log("Caught unexpected exception: {0}", e); |
| throw e; |
| } |
| |
| CacheHelper.CreateTCRegion_Pool<object, object>(QERegionName, true, true, |
| null, locators, "__TESTPOOL1_", true); |
| IRegion<object, object> region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); |
| if (!m_isPdx) |
| { |
| Portfolio p1 = new Portfolio(1, 100); |
| Portfolio p2 = new Portfolio(2, 100); |
| Portfolio p3 = new Portfolio(3, 100); |
| Portfolio p4 = new Portfolio(4, 100); |
| |
| region["1"] = p1; |
| region["2"] = p2; |
| region["3"] = p3; |
| region["4"] = p4; |
| } |
| else |
| { |
| PortfolioPdx p1 = new PortfolioPdx(1, 100); |
| PortfolioPdx p2 = new PortfolioPdx(2, 100); |
| PortfolioPdx p3 = new PortfolioPdx(3, 100); |
| PortfolioPdx p4 = new PortfolioPdx(4, 100); |
| |
| region["1"] = p1; |
| region["2"] = p2; |
| region["3"] = p3; |
| region["4"] = p4; |
| } |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| Query<object> qry = qs.NewQuery<object>("select distinct * from /" + QERegionName); |
| ISelectResults<object> results = qry.Execute(); |
| var count = results.Size; |
| Assert.AreEqual(4, count, "Expected 4 as number of portfolio objects."); |
| |
| // Bring down the region |
| region.GetLocalView().DestroyRegion(); |
| } |
| |
| public void StepTwoQE() |
| { |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| Util.Log("Going to execute the query"); |
| Query<object> qry = qs.NewQuery<object>("select distinct * from /" + QERegionName); |
| ISelectResults<object> results = qry.Execute(); |
| var count = results.Size; |
| Assert.AreEqual(4, count, "Expected 4 as number of portfolio objects."); |
| } |
| |
| public void StepOne(string locators, bool isPdx) |
| { |
| m_isPdx = isPdx; |
| CacheHelper.CreateTCRegion_Pool<object, object>(QueryRegionNames[0], true, true, |
| null, locators, "__TESTPOOL1_", true); |
| CacheHelper.CreateTCRegion_Pool<object, object>(QueryRegionNames[1], true, true, |
| null, locators, "__TESTPOOL1_", true); |
| CacheHelper.CreateTCRegion_Pool<object, object>(QueryRegionNames[2], true, true, |
| null, locators, "__TESTPOOL1_", true); |
| CacheHelper.CreateTCRegion_Pool<object, object>(QueryRegionNames[3], true, true, |
| null, locators, "__TESTPOOL1_", true); |
| |
| IRegion<object, object> region = CacheHelper.GetRegion<object, object>(QueryRegionNames[0]); |
| Apache.Geode.Client.RegionAttributes<object, object> regattrs = region.Attributes; |
| region.CreateSubRegion(QueryRegionNames[1], regattrs); |
| } |
| |
| public void StepTwo(bool isPdx) |
| { |
| m_isPdx = isPdx; |
| IRegion<object, object> region0 = CacheHelper.GetRegion<object, object>(QueryRegionNames[0]); |
| IRegion<object, object> subRegion0 = (IRegion<object, object>)region0.GetSubRegion(QueryRegionNames[1]); |
| IRegion<object, object> region1 = CacheHelper.GetRegion<object, object>(QueryRegionNames[1]); |
| IRegion<object, object> region2 = CacheHelper.GetRegion<object, object>(QueryRegionNames[2]); |
| IRegion<object, object> region3 = CacheHelper.GetRegion<object, object>(QueryRegionNames[3]); |
| |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| Util.Log("SetSize {0}, NumSets {1}.", qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| |
| if (!m_isPdx) |
| { |
| qh.PopulatePortfolioData(region0, qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| qh.PopulatePositionData(subRegion0, qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| qh.PopulatePositionData(region1, qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| qh.PopulatePortfolioData(region2, qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| qh.PopulatePortfolioData(region3, qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| } |
| else |
| { |
| qh.PopulatePortfolioPdxData(region0, qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| qh.PopulatePositionPdxData(subRegion0, qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| qh.PopulatePositionPdxData(region1, qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| qh.PopulatePortfolioPdxData(region2, qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| qh.PopulatePortfolioPdxData(region3, qh.PortfolioSetSize, |
| qh.PortfolioNumSets); |
| } |
| } |
| |
| public void StepTwoQT() |
| { |
| IRegion<object, object> region0 = CacheHelper.GetRegion<object, object>(QueryRegionNames[0]); |
| IRegion<object, object> subRegion0 = region0.GetSubRegion(QueryRegionNames[1]); |
| |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| |
| if (!m_isPdx) |
| { |
| qh.PopulatePortfolioData(region0, 100, 20, 100); |
| qh.PopulatePositionData(subRegion0, 100, 20); |
| } |
| else |
| { |
| qh.PopulatePortfolioPdxData(region0, 100, 20, 100); |
| qh.PopulatePositionPdxData(subRegion0, 100, 20); |
| } |
| } |
| |
| public void StepThreeRS() |
| { |
| bool ErrorOccurred = false; |
| |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.ResultSetQueries) |
| { |
| if (qrystr.Category == QueryCategory.Unsupported) |
| { |
| Util.Log("Skipping query index {0} because it is unsupported.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| if (m_isPdx == true) |
| { |
| if (qryIdx == 2 || qryIdx == 3 || qryIdx == 4) |
| { |
| Util.Log("Skipping query index {0} for Pdx because it is function type.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| } |
| |
| Util.Log("Evaluating query index {0}. Query string {1}", qryIdx, qrystr.Query); |
| |
| Query<object> query = qs.NewQuery<object>(qrystr.Query); |
| |
| ISelectResults<object> results = query.Execute(); |
| |
| int expectedRowCount = qh.IsExpectedRowsConstantRS(qryIdx) ? |
| QueryStatics.ResultSetRowCounts[qryIdx] : QueryStatics.ResultSetRowCounts[qryIdx] * qh.PortfolioNumSets; |
| |
| if (!qh.VerifyRS(results, expectedRowCount)) |
| { |
| ErrorOccurred = true; |
| Util.Log("Query verify failed for query index {0}.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| ResultSet<object> rs = results as ResultSet<object>; |
| |
| foreach (object item in rs) |
| { |
| if (!m_isPdx) |
| { |
| Portfolio port = item as Portfolio; |
| if (port == null) |
| { |
| Position pos = item as Position; |
| if (pos == null) |
| { |
| string cs = item.ToString(); |
| if (cs == null) |
| { |
| Util.Log("Query got other/unknown object."); |
| } |
| else |
| { |
| Util.Log("Query got string : {0}.", cs); |
| } |
| } |
| else |
| { |
| Util.Log("Query got Position object with secId {0}, shares {1}.", pos.SecId, pos.SharesOutstanding); |
| } |
| } |
| else |
| { |
| Util.Log("Query got Portfolio object with ID {0}, pkid {1}.", port.ID, port.Pkid); |
| } |
| } |
| else |
| { |
| PortfolioPdx port = item as PortfolioPdx; |
| if (port == null) |
| { |
| PositionPdx pos = item as PositionPdx; |
| if (pos == null) |
| { |
| string cs = item.ToString(); |
| if (cs == null) |
| { |
| Util.Log("Query got other/unknown object."); |
| } |
| else |
| { |
| Util.Log("Query got string : {0}.", cs); |
| } |
| } |
| else |
| { |
| Util.Log("Query got Position object with secId {0}, shares {1}.", pos.secId, pos.getSharesOutstanding); |
| } |
| } |
| else |
| { |
| Util.Log("Query got Portfolio object with ID {0}, pkid {1}.", port.ID, port.Pkid); |
| } |
| } |
| } |
| |
| qryIdx++; |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "One or more query validation errors occurred."); |
| } |
| |
| public void StepThreePQRS() |
| { |
| bool ErrorOccurred = false; |
| |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings paramqrystr in QueryStatics.ResultSetParamQueries) |
| { |
| if (paramqrystr.Category == QueryCategory.Unsupported) |
| { |
| Util.Log("Skipping query index {0} because it is unsupported.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| Util.Log("Evaluating query index {0}. {1}", qryIdx, paramqrystr.Query); |
| |
| Query<object> query = qs.NewQuery<object>(paramqrystr.Query); |
| |
| //Populate the parameter list (paramList) for the query. |
| object[] paramList = new object[QueryStatics.NoOfQueryParam[qryIdx]]; |
| int numVal = 0; |
| for (int ind = 0; ind < QueryStatics.NoOfQueryParam[qryIdx]; ind++) |
| { |
| //Util.Log("NIL::PQRS:: QueryStatics.QueryParamSet[{0},{1}] = {2}", qryIdx, ind, QueryStatics.QueryParamSet[qryIdx][ind]); |
| |
| try |
| { |
| numVal = Convert.ToInt32(QueryStatics.QueryParamSet[qryIdx][ind]); |
| paramList[ind] = numVal; |
| //Util.Log("NIL::PQRS::361 Interger Args:: paramList[0] = {1}", ind, paramList[ind]); |
| } |
| catch (FormatException) |
| { |
| //Console.WriteLine("Param string is not a sequence of digits."); |
| paramList[ind] = (System.String)QueryStatics.QueryParamSet[qryIdx][ind]; |
| //Util.Log("NIL::PQRS:: Interger Args:: routingObj[0] = {1}", ind, routingObj[ind].ToString()); |
| } |
| } |
| |
| ISelectResults<object> results = query.Execute(paramList); |
| |
| //Varify the result |
| int expectedRowCount = qh.IsExpectedRowsConstantPQRS(qryIdx) ? |
| QueryStatics.ResultSetPQRowCounts[qryIdx] : QueryStatics.ResultSetPQRowCounts[qryIdx] * qh.PortfolioNumSets; |
| |
| if (!qh.VerifyRS(results, expectedRowCount)) |
| { |
| ErrorOccurred = true; |
| Util.Log("Query verify failed for query index {0}.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| ResultSet<object> rs = results as ResultSet<object>; |
| |
| foreach (object item in rs) |
| { |
| if (!m_isPdx) |
| { |
| Portfolio port = item as Portfolio; |
| if (port == null) |
| { |
| Position pos = item as Position; |
| if (pos == null) |
| { |
| string cs = item as string; |
| if (cs == null) |
| { |
| Util.Log("Query got other/unknown object."); |
| } |
| else |
| { |
| Util.Log("Query got string : {0}.", cs); |
| } |
| } |
| else |
| { |
| Util.Log("Query got Position object with secId {0}, shares {1}.", pos.SecId, pos.SharesOutstanding); |
| } |
| } |
| else |
| { |
| Util.Log("Query got Portfolio object with ID {0}, pkid {1}.", port.ID, port.Pkid); |
| } |
| } |
| else |
| { |
| PortfolioPdx port = item as PortfolioPdx; |
| if (port == null) |
| { |
| PositionPdx pos = item as PositionPdx; |
| if (pos == null) |
| { |
| string cs = item as string; |
| if (cs == null) |
| { |
| Util.Log("Query got other/unknown object."); |
| } |
| else |
| { |
| Util.Log("Query got string : {0}.", cs); |
| } |
| } |
| else |
| { |
| Util.Log("Query got PositionPdx object with secId {0}, shares {1}.", pos.secId, pos.getSharesOutstanding); |
| } |
| } |
| else |
| { |
| Util.Log("Query got PortfolioPdx object with ID {0}, pkid {1}.", port.ID, port.Pkid); |
| } |
| } |
| } |
| |
| qryIdx++; |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "One or more query validation errors occurred."); |
| } |
| |
| public void StepFourRS() |
| { |
| bool ErrorOccurred = false; |
| |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.ResultSetQueries) |
| { |
| if (qrystr.Category != QueryCategory.Unsupported) |
| { |
| qryIdx++; |
| continue; |
| } |
| |
| Util.Log("Evaluating unsupported query index {0}.", qryIdx); |
| |
| Query<object> query = qs.NewQuery<object>(qrystr.Query); |
| |
| try |
| { |
| ISelectResults<object> results = query.Execute(); |
| |
| Util.Log("Query exception did not occur for index {0}.", qryIdx); |
| ErrorOccurred = true; |
| qryIdx++; |
| } |
| catch (GeodeException) |
| { |
| // ok, exception expected, do nothing. |
| qryIdx++; |
| } |
| catch (Exception) |
| { |
| Util.Log("Query unexpected exception occurred for index {0}.", qryIdx); |
| ErrorOccurred = true; |
| qryIdx++; |
| } |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "Query expected exceptions did not occur."); |
| } |
| |
| public void StepFourPQRS() |
| { |
| bool ErrorOccurred = false; |
| |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.ResultSetParamQueries) |
| { |
| if (qrystr.Category != QueryCategory.Unsupported) |
| { |
| qryIdx++; |
| continue; |
| } |
| |
| Util.Log("Evaluating unsupported query index {0}.", qryIdx); |
| |
| Query<object> query = qs.NewQuery<object>(qrystr.Query); |
| |
| object[] paramList = new object[QueryStatics.NoOfQueryParam[qryIdx]]; |
| |
| Int32 numVal = 0; |
| for (Int32 ind = 0; ind < QueryStatics.NoOfQueryParam[qryIdx]; ind++) |
| { |
| //Util.Log("NIL::PQRS:: QueryStatics.QueryParamSet[{0},{1}] = {2}", qryIdx, ind, QueryStatics.QueryParamSet[qryIdx, ind]); |
| |
| try |
| { |
| numVal = Convert.ToInt32(QueryStatics.QueryParamSet[qryIdx][ind]); |
| paramList[ind] = numVal; |
| //Util.Log("NIL::PQRS:: Interger Args:: paramList[0] = {1}", ind, paramList[ind]); |
| } |
| catch (FormatException) |
| { |
| //Console.WriteLine("Param string is not a sequence of digits."); |
| paramList[ind] = (System.String)QueryStatics.QueryParamSet[qryIdx][ind]; |
| //Util.Log("NIL::PQRS:: Interger Args:: paramList[0] = {1}", ind, paramList[ind].ToString()); |
| } |
| } |
| |
| try |
| { |
| ISelectResults<object> results = query.Execute(paramList); |
| |
| Util.Log("Query exception did not occur for index {0}.", qryIdx); |
| ErrorOccurred = true; |
| qryIdx++; |
| } |
| catch (GeodeException) |
| { |
| // ok, exception expected, do nothing. |
| qryIdx++; |
| } |
| catch (Exception) |
| { |
| Util.Log("Query unexpected exception occurred for index {0}.", qryIdx); |
| ErrorOccurred = true; |
| qryIdx++; |
| } |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "Query expected exceptions did not occur."); |
| } |
| |
| public void StepThreeSS() |
| { |
| bool ErrorOccurred = false; |
| |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.StructSetQueries) |
| { |
| if (qrystr.Category == QueryCategory.Unsupported) |
| { |
| Util.Log("Skipping query index {0} because it is unsupported.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| if (m_isPdx == true) |
| { |
| if (qryIdx == 12 || qryIdx == 4 || qryIdx == 7 || qryIdx == 22 || qryIdx == 30 || qryIdx == 34) |
| { |
| Util.Log("Skipping query index {0} for pdx because it has function.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| } |
| |
| Util.Log("Evaluating query index {0}. {1}", qryIdx, qrystr.Query); |
| |
| Query<object> query = qs.NewQuery<object>(qrystr.Query); |
| |
| ISelectResults<object> results = query.Execute(); |
| |
| int expectedRowCount = qh.IsExpectedRowsConstantSS(qryIdx) ? |
| QueryStatics.StructSetRowCounts[qryIdx] : QueryStatics.StructSetRowCounts[qryIdx] * qh.PortfolioNumSets; |
| |
| if (!qh.VerifySS(results, expectedRowCount, QueryStatics.StructSetFieldCounts[qryIdx])) |
| { |
| ErrorOccurred = true; |
| Util.Log("Query verify failed for query index {0}.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| StructSet<object> ss = results as StructSet<object>; |
| if (ss == null) |
| { |
| Util.Log("Zero records found for query index {0}, continuing.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| uint rows = 0; |
| Int32 fields = 0; |
| foreach (Struct si in ss) |
| { |
| rows++; |
| fields = (Int32)si.Count; |
| } |
| |
| Util.Log("Query index {0} has {1} rows and {2} fields.", qryIdx, rows, fields); |
| |
| qryIdx++; |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "One or more query validation errors occurred."); |
| } |
| |
| public void StepThreePQSS() |
| { |
| bool ErrorOccurred = false; |
| |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.StructSetParamQueries) |
| { |
| if (qrystr.Category == QueryCategory.Unsupported) |
| { |
| Util.Log("Skipping query index {0} because it is unsupported.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| Util.Log("Evaluating query index {0}. {1}", qryIdx, qrystr.Query); |
| |
| if (m_isPdx == true) |
| { |
| if (qryIdx == 16) |
| { |
| Util.Log("Skipping query index {0} for pdx because it has function.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| } |
| |
| Query<object> query = qs.NewQuery<object>(qrystr.Query); |
| |
| //Populate the param list, paramList for parameterized query |
| object[] paramList = new object[QueryStatics.NoOfQueryParamSS[qryIdx]]; |
| |
| Int32 numVal = 0; |
| for (Int32 ind = 0; ind < QueryStatics.NoOfQueryParamSS[qryIdx]; ind++) |
| { |
| //Util.Log("NIL::PQRS:: QueryStatics.QueryParamSetSS[{0},{1}] = {2}", qryIdx, ind, QueryStatics.QueryParamSetSS[qryIdx, ind]); |
| |
| try |
| { |
| numVal = Convert.ToInt32(QueryStatics.QueryParamSetSS[qryIdx][ind]); |
| paramList[ind] = numVal; |
| //Util.Log("NIL::PQRS:: Interger Args:: paramList[0] = {1}", ind, paramList[ind]); |
| } |
| catch (FormatException) |
| { |
| //Console.WriteLine("Param string is not a sequence of digits."); |
| paramList[ind] = (System.String)QueryStatics.QueryParamSetSS[qryIdx][ind]; |
| //Util.Log("NIL::PQRS:: Interger Args:: paramList[0] = {1}", ind, paramList[ind].ToString()); |
| } |
| } |
| |
| ISelectResults<object> results = query.Execute(paramList); |
| |
| int expectedRowCount = qh.IsExpectedRowsConstantPQSS(qryIdx) ? |
| QueryStatics.StructSetPQRowCounts[qryIdx] : QueryStatics.StructSetPQRowCounts[qryIdx] * qh.PortfolioNumSets; |
| |
| if (!qh.VerifySS(results, expectedRowCount, QueryStatics.StructSetPQFieldCounts[qryIdx])) |
| { |
| ErrorOccurred = true; |
| Util.Log("Query verify failed for query index {0}.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| StructSet<object> ss = results as StructSet<object>; |
| if (ss == null) |
| { |
| Util.Log("Zero records found for query index {0}, continuing.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| uint rows = 0; |
| Int32 fields = 0; |
| foreach (Struct si in ss) |
| { |
| rows++; |
| fields = (Int32)si.Count; |
| } |
| |
| Util.Log("Query index {0} has {1} rows and {2} fields.", qryIdx, rows, fields); |
| |
| qryIdx++; |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "One or more query validation errors occurred."); |
| } |
| |
| public void StepFourSS() |
| { |
| bool ErrorOccurred = false; |
| |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.StructSetQueries) |
| { |
| if (qrystr.Category != QueryCategory.Unsupported) |
| { |
| qryIdx++; |
| continue; |
| } |
| |
| Util.Log("Evaluating unsupported query index {0}.", qryIdx); |
| |
| Query<object> query = qs.NewQuery<object>(qrystr.Query); |
| |
| try |
| { |
| ISelectResults<object> results = query.Execute(); |
| |
| Util.Log("Query exception did not occur for index {0}.", qryIdx); |
| ErrorOccurred = true; |
| qryIdx++; |
| } |
| catch (GeodeException) |
| { |
| // ok, exception expected, do nothing. |
| qryIdx++; |
| } |
| catch (Exception) |
| { |
| Util.Log("Query unexpected exception occurred for index {0}.", qryIdx); |
| ErrorOccurred = true; |
| qryIdx++; |
| } |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "Query expected exceptions did not occur."); |
| } |
| |
| public void StepFourPQSS() |
| { |
| bool ErrorOccurred = false; |
| |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.StructSetParamQueries) |
| { |
| if (qrystr.Category != QueryCategory.Unsupported) |
| { |
| qryIdx++; |
| continue; |
| } |
| |
| Util.Log("Evaluating unsupported query index {0}.", qryIdx); |
| |
| Query<object> query = qs.NewQuery<object>(qrystr.Query); |
| |
| //Populate the param list |
| object[] paramList = new object[QueryStatics.NoOfQueryParamSS[qryIdx]]; |
| |
| Int32 numVal = 0; |
| for (Int32 ind = 0; ind < QueryStatics.NoOfQueryParamSS[qryIdx]; ind++) |
| { |
| //Util.Log("NIL::PQRS:: QueryStatics.QueryParamSetSS[{0},{1}] = {2}", qryIdx, ind, QueryStatics.QueryParamSetSS[qryIdx, ind]); |
| |
| try |
| { |
| numVal = Convert.ToInt32(QueryStatics.QueryParamSetSS[qryIdx][ind]); |
| paramList[ind] = numVal; |
| //Util.Log("NIL::PQRS:: Interger Args:: paramList[0] = {1}", ind, paramList[ind]); |
| } |
| catch (FormatException) |
| { |
| //Console.WriteLine("Param string is not a sequence of digits."); |
| paramList[ind] = (System.String)QueryStatics.QueryParamSetSS[qryIdx][ind]; |
| //Util.Log("NIL::PQRS:: Interger Args:: paramList[0] = {1}", ind, paramList[ind].ToString()); |
| } |
| } |
| |
| try |
| { |
| ISelectResults<object> results = query.Execute(paramList); |
| |
| Util.Log("Query exception did not occur for index {0}.", qryIdx); |
| ErrorOccurred = true; |
| qryIdx++; |
| } |
| catch (GeodeException) |
| { |
| // ok, exception expected, do nothing. |
| qryIdx++; |
| } |
| catch (Exception) |
| { |
| Util.Log("Query unexpected exception occurred for index {0}.", qryIdx); |
| ErrorOccurred = true; |
| qryIdx++; |
| } |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "Query expected exceptions did not occur."); |
| } |
| |
| public void KillServer() |
| { |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| } |
| |
| public delegate void KillServerDelegate(); |
| |
| public void StepOneFailover(bool isPdx) |
| { |
| m_isPdx = isPdx; |
| // This is here so that Client1 registers information of the cacheserver |
| // that has been already started |
| CacheHelper.SetupJavaServers(true, |
| "cacheserver_remoteoqlN.xml", |
| "cacheserver_remoteoql2N.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| CacheHelper.CreateTCRegion_Pool<object, object>(QueryRegionNames[0], true, true, null, |
| CacheHelper.Locators, "__TESTPOOL1_", true); |
| |
| IRegion<object, object> region = CacheHelper.GetVerifyRegion<object, object>(QueryRegionNames[0]); |
| if (!m_isPdx) |
| { |
| Portfolio p1 = new Portfolio(1, 100); |
| Portfolio p2 = new Portfolio(2, 200); |
| Portfolio p3 = new Portfolio(3, 300); |
| Portfolio p4 = new Portfolio(4, 400); |
| |
| region["1"] = p1; |
| region["2"] = p2; |
| region["3"] = p3; |
| region["4"] = p4; |
| } |
| else |
| { |
| PortfolioPdx p1 = new PortfolioPdx(1, 100); |
| PortfolioPdx p2 = new PortfolioPdx(2, 200); |
| PortfolioPdx p3 = new PortfolioPdx(3, 300); |
| PortfolioPdx p4 = new PortfolioPdx(4, 400); |
| |
| region["1"] = p1; |
| region["2"] = p2; |
| region["3"] = p3; |
| region["4"] = p4; |
| } |
| } |
| |
| public void StepTwoFailover() |
| { |
| CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); |
| Util.Log("Cacheserver 2 started."); |
| |
| IAsyncResult killRes = null; |
| KillServerDelegate ksd = new KillServerDelegate(KillServer); |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| for (int i = 0; i < 10000; i++) |
| { |
| Query<object> qry = qs.NewQuery<object>("select distinct * from /" + QueryRegionNames[0]); |
| |
| ISelectResults<object> results = qry.Execute(); |
| |
| if (i == 10) |
| { |
| killRes = ksd.BeginInvoke(null, null); |
| } |
| |
| var resultSize = results.Size; |
| |
| if (i % 100 == 0) |
| { |
| Util.Log("Iteration upto {0} done, result size is {1}", i, resultSize); |
| } |
| |
| Assert.AreEqual(4, resultSize, "Result size is not 4!"); |
| } |
| |
| killRes.AsyncWaitHandle.WaitOne(); |
| ksd.EndInvoke(killRes); |
| } |
| |
| public void StepTwoPQFailover() |
| { |
| CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); |
| Util.Log("Cacheserver 2 started."); |
| |
| IAsyncResult killRes = null; |
| KillServerDelegate ksd = new KillServerDelegate(KillServer); |
| |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| for (int i = 0; i < 10000; i++) |
| { |
| Query<object> qry = qs.NewQuery<object>("select distinct * from /" + QueryRegionNames[0] + " where ID > $1"); |
| |
| //Populate the param list |
| object[] paramList = new object[1]; |
| paramList[0] = 1; |
| |
| ISelectResults<object> results = qry.Execute(paramList); |
| |
| if (i == 10) |
| { |
| killRes = ksd.BeginInvoke(null, null); |
| } |
| |
| var resultSize = results.Size; |
| |
| if (i % 100 == 0) |
| { |
| Util.Log("Iteration upto {0} done, result size is {1}", i, resultSize); |
| } |
| |
| Assert.AreEqual(3, resultSize, "Result size is not 3!"); |
| } |
| |
| killRes.AsyncWaitHandle.WaitOne(); |
| ksd.EndInvoke(killRes); |
| } |
| |
| public void StepThreeQT() |
| { |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| Util.Log("query " + QueryStatics.ResultSetQueries[34].Query); |
| Query<object> query = qs.NewQuery<object>(QueryStatics.ResultSetQueries[34].Query); |
| |
| try |
| { |
| Util.Log("EXECUTE 1 START for query: ", query.QueryString); |
| ISelectResults<object> results = query.Execute(TimeSpan.FromSeconds(3)); |
| Util.Log("EXECUTE 1 STOP"); |
| Util.Log("Result size is {0}", results.Size); |
| Assert.Fail("Didnt get expected timeout exception for first execute"); |
| } |
| catch (GeodeException excp) |
| { |
| Util.Log("First execute expected exception: {0}", excp.Message); |
| } |
| } |
| |
| public void StepFourQT() |
| { |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| Query<object> query = qs.NewQuery<object>(QueryStatics.ResultSetQueries[35].Query); |
| |
| try |
| { |
| Util.Log("EXECUTE 2 START for query: ", query.QueryString); |
| ISelectResults<object> results = query.Execute(TimeSpan.FromSeconds(850)); |
| Util.Log("EXECUTE 2 STOP"); |
| Util.Log("Result size is {0}", results.Size); |
| } |
| catch (GeodeException excp) |
| { |
| Assert.Fail("Second execute unwanted exception: {0}", excp.Message); |
| } |
| } |
| |
| public void StepFiveQT() |
| { |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| Query<object> query = qs.NewQuery<object>(QueryStatics.StructSetQueries[17].Query); |
| |
| try |
| { |
| Util.Log("EXECUTE 3 START for query: ", query.QueryString); |
| ISelectResults<object> results = query.Execute(TimeSpan.FromSeconds(2)); |
| Util.Log("EXECUTE 3 STOP"); |
| Util.Log("Result size is {0}", results.Size); |
| Assert.Fail("Didnt get expected timeout exception for third execute"); |
| } |
| catch (GeodeException excp) |
| { |
| Util.Log("Third execute expected exception: {0}", excp.Message); |
| } |
| } |
| |
| public void StepSixQT() |
| { |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| Query<object> query = qs.NewQuery<object>(QueryStatics.StructSetQueries[17].Query); |
| |
| try |
| { |
| Util.Log("EXECUTE 4 START for query: ", query.QueryString); |
| ISelectResults<object> results = query.Execute(TimeSpan.FromSeconds(850)); |
| Util.Log("EXECUTE 4 STOP"); |
| Util.Log("Result size is {0}", results.Size); |
| } |
| catch (GeodeException excp) |
| { |
| Assert.Fail("Fourth execute unwanted exception: {0}", excp.Message); |
| } |
| } |
| |
| public void StepThreePQT() |
| { |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| Query<object> query = qs.NewQuery<object>(QueryStatics.StructSetParamQueries[5].Query); |
| |
| |
| try |
| { |
| Util.Log("EXECUTE 5 START for query: ", query.QueryString); |
| //Populate the param list, paramList for parameterized query |
| object[] paramList = new object[QueryStatics.NoOfQueryParamSS[5]]; |
| |
| Int32 numVal = 0; |
| for (Int32 ind = 0; ind < QueryStatics.NoOfQueryParamSS[5]; ind++) |
| { |
| try |
| { |
| numVal = Convert.ToInt32(QueryStatics.QueryParamSetSS[5][ind]); |
| paramList[ind] = numVal; |
| //Util.Log("NIL::PQRS:: Interger Args:: paramList[0] = {1}", ind, paramList[ind]); |
| } |
| catch (FormatException) |
| { |
| //Console.WriteLine("Param string is not a sequence of digits."); |
| paramList[ind] = (System.String)QueryStatics.QueryParamSetSS[5][ind]; |
| //Util.Log("NIL::PQRS:: Interger Args:: paramList[0] = {1}", ind, paramList[ind].ToString()); |
| } |
| } |
| |
| ISelectResults<object> results = query.Execute(paramList, TimeSpan.FromSeconds(1)); |
| Util.Log("EXECUTE 5 STOP"); |
| Util.Log("Result size is {0}", results.Size); |
| Assert.Fail("Didnt get expected timeout exception for Fifth execute"); |
| } |
| catch (GeodeException excp) |
| { |
| Util.Log("Fifth execute expected exception: {0}", excp.Message); |
| } |
| } |
| |
| public void StepFourPQT() |
| { |
| QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); |
| |
| Query<object> query = qs.NewQuery<object>(QueryStatics.StructSetParamQueries[5].Query); |
| |
| try |
| { |
| Util.Log("EXECUTE 6 START for query: ", query.QueryString); |
| //Populate the param list, paramList for parameterized query |
| object[] paramList = new object[QueryStatics.NoOfQueryParamSS[5]]; |
| |
| Int32 numVal = 0; |
| for (Int32 ind = 0; ind < QueryStatics.NoOfQueryParamSS[5]; ind++) |
| { |
| try |
| { |
| numVal = Convert.ToInt32(QueryStatics.QueryParamSetSS[5][ind]); |
| paramList[ind] = numVal; |
| //Util.Log("NIL::PQRS:: Interger Args:: paramList[0] = {1}", ind, paramList[ind]); |
| } |
| catch (FormatException) |
| { |
| //Console.WriteLine("Param string is not a sequence of digits."); |
| paramList[ind] = (System.String)QueryStatics.QueryParamSetSS[5][ind]; |
| //Util.Log("NIL::PQRS:: Interger Args:: paramList[0] = {1}", ind, paramList[ind].ToString()); |
| } |
| } |
| |
| ISelectResults<object> results = query.Execute(paramList, TimeSpan.FromSeconds(850)); |
| Util.Log("EXECUTE 6 STOP"); |
| Util.Log("Result size is {0}", results.Size); |
| } |
| catch (GeodeException excp) |
| { |
| Assert.Fail("Sixth execute unwanted exception: {0}", excp.Message); |
| } |
| } |
| |
| public void StepThreeRQ() |
| { |
| bool ErrorOccurred = false; |
| |
| IRegion<object, object> region = CacheHelper.GetRegion<object, object>(QueryRegionNames[0]); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.RegionQueries) |
| { |
| if (qrystr.Category == QueryCategory.Unsupported) |
| { |
| Util.Log("Skipping query index {0} because it is unsupported.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| Util.Log("Evaluating query index {0}. {1}", qryIdx, qrystr.Query); |
| |
| if (m_isPdx) |
| { |
| if (qryIdx == 18) |
| { |
| Util.Log("Skipping query index {0} because it is unsupported for pdx type.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| } |
| |
| ISelectResults<object> results = region.Query<object>(qrystr.Query); |
| |
| if (results.Size != (ulong) QueryStatics.RegionQueryRowCounts[qryIdx]) |
| { |
| ErrorOccurred = true; |
| Util.Log("FAIL: Query # {0} expected result size is {1}, actual is {2}", qryIdx, |
| QueryStatics.RegionQueryRowCounts[qryIdx], results.Size); |
| qryIdx++; |
| continue; |
| } |
| qryIdx++; |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "One or more query validation errors occurred."); |
| |
| try |
| { |
| ISelectResults<object> results = region.Query<object>(""); |
| Assert.Fail("Expected IllegalArgumentException exception for empty predicate"); |
| } |
| catch (IllegalArgumentException ex) |
| { |
| Util.Log("got expected IllegalArgumentException exception for empty predicate:"); |
| Util.Log(ex.Message); |
| } |
| |
| |
| try |
| { |
| ISelectResults<object> results = region.Query<object>(QueryStatics.RegionQueries[0].Query, TimeSpan.FromSeconds(2200000)); |
| Assert.Fail("Expected IllegalArgumentException exception for invalid timeout"); |
| } |
| catch (IllegalArgumentException ex) |
| { |
| Util.Log("got expected IllegalArgumentException exception for invalid timeout:"); |
| Util.Log(ex.Message); |
| } |
| |
| |
| try |
| { |
| ISelectResults<object> results = region.Query<object>("bad predicate"); |
| Assert.Fail("Expected QueryException exception for wrong predicate"); |
| } |
| catch (QueryException ex) |
| { |
| Util.Log("got expected QueryException exception for wrong predicate:"); |
| Util.Log(ex.Message); |
| } |
| } |
| |
| public void StepFourRQ() |
| { |
| bool ErrorOccurred = false; |
| |
| IRegion<object, object> region = CacheHelper.GetRegion<object, object>(QueryRegionNames[0]); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.RegionQueries) |
| { |
| if (qrystr.Category == QueryCategory.Unsupported) |
| { |
| Util.Log("Skipping query index {0} because it is unsupported.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| Util.Log("Evaluating query index {0}.{1}", qryIdx, qrystr.Query); |
| |
| bool existsValue = region.ExistsValue(qrystr.Query); |
| bool expectedResult = QueryStatics.RegionQueryRowCounts[qryIdx] > 0 ? true : false; |
| |
| if (existsValue != expectedResult) |
| { |
| ErrorOccurred = true; |
| Util.Log("FAIL: Query # {0} existsValue expected is {1}, actual is {2}", qryIdx, |
| expectedResult ? "true" : "false", existsValue ? "true" : "false"); |
| qryIdx++; |
| continue; |
| } |
| |
| qryIdx++; |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "One or more query validation errors occurred."); |
| try |
| { |
| bool existsValue = region.ExistsValue(""); |
| Assert.Fail("Expected IllegalArgumentException exception for empty predicate"); |
| } |
| catch (IllegalArgumentException ex) |
| { |
| Util.Log("got expected IllegalArgumentException exception for empty predicate:"); |
| Util.Log(ex.Message); |
| } |
| |
| |
| try |
| { |
| bool existsValue = region.ExistsValue(QueryStatics.RegionQueries[0].Query, TimeSpan.FromSeconds(2200000)); |
| Assert.Fail("Expected IllegalArgumentException exception for invalid timeout"); |
| } |
| catch (IllegalArgumentException ex) |
| { |
| Util.Log("got expected IllegalArgumentException exception for invalid timeout:"); |
| Util.Log(ex.Message); |
| } |
| |
| |
| try |
| { |
| bool existsValue = region.ExistsValue("bad predicate"); |
| Assert.Fail("Expected QueryException exception for wrong predicate"); |
| } |
| catch (QueryException ex) |
| { |
| Util.Log("got expected QueryException exception for wrong predicate:"); |
| Util.Log(ex.Message); |
| } |
| } |
| |
| public void StepFiveRQ() |
| { |
| bool ErrorOccurred = false; |
| |
| IRegion<object, object> region = CacheHelper.GetRegion<object, object>(QueryRegionNames[0]); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.RegionQueries) |
| { |
| if (qrystr.Category == QueryCategory.Unsupported) |
| { |
| Util.Log("Skipping query index {0} because it is unsupported.", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| Util.Log("Evaluating query index {0}.", qryIdx); |
| |
| try |
| { |
| Object result = region.SelectValue(qrystr.Query); |
| |
| if (!(QueryStatics.RegionQueryRowCounts[qryIdx] == 0 || |
| QueryStatics.RegionQueryRowCounts[qryIdx] == 1)) |
| { |
| ErrorOccurred = true; |
| Util.Log("FAIL: Query # {0} expected query exception did not occur", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| } |
| catch (QueryException) |
| { |
| if (QueryStatics.RegionQueryRowCounts[qryIdx] == 0 || |
| QueryStatics.RegionQueryRowCounts[qryIdx] == 1) |
| { |
| ErrorOccurred = true; |
| Util.Log("FAIL: Query # {0} unexpected query exception occured", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| } |
| catch (Exception) |
| { |
| ErrorOccurred = true; |
| Util.Log("FAIL: Query # {0} unexpected exception occured", qryIdx); |
| qryIdx++; |
| continue; |
| } |
| |
| qryIdx++; |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "One or more query validation errors occurred."); |
| |
| try |
| { |
| Object result = region.SelectValue(""); |
| Assert.Fail("Expected IllegalArgumentException exception for empty predicate"); |
| } |
| catch (IllegalArgumentException ex) |
| { |
| Util.Log("got expected IllegalArgumentException exception for empty predicate:"); |
| Util.Log(ex.Message); |
| } |
| |
| |
| try |
| { |
| Object result = region.SelectValue(QueryStatics.RegionQueries[0].Query, TimeSpan.FromSeconds(2200000)); |
| Assert.Fail("Expected IllegalArgumentException exception for invalid timeout"); |
| } |
| catch (IllegalArgumentException ex) |
| { |
| Util.Log("got expected IllegalArgumentException exception for invalid timeout:"); |
| Util.Log(ex.Message); |
| } |
| |
| try |
| { |
| Object result = region.SelectValue("bad predicate"); |
| Assert.Fail("Expected QueryException exception for wrong predicate"); |
| } |
| catch (QueryException ex) |
| { |
| Util.Log("got expected QueryException exception for wrong predicate:"); |
| Util.Log(ex.Message); |
| } |
| } |
| |
| public void StepSixRQ() |
| { |
| bool ErrorOccurred = false; |
| |
| IRegion<object, object> region = CacheHelper.GetRegion<object, object>(QueryRegionNames[0]); |
| |
| int qryIdx = 0; |
| |
| foreach (QueryStrings qrystr in QueryStatics.RegionQueries) |
| { |
| if ((qrystr.Category != QueryCategory.Unsupported) || (qryIdx == 3)) |
| { |
| qryIdx++; |
| continue; |
| } |
| |
| Util.Log("Evaluating unsupported query index {0}.", qryIdx); |
| |
| try |
| { |
| ISelectResults<object> results = region.Query<object>(qrystr.Query); |
| |
| Util.Log("Query # {0} expected exception did not occur", qryIdx); |
| ErrorOccurred = true; |
| qryIdx++; |
| } |
| catch (QueryException) |
| { |
| // ok, exception expected, do nothing. |
| qryIdx++; |
| } |
| catch (Exception) |
| { |
| ErrorOccurred = true; |
| Util.Log("FAIL: Query # {0} unexpected exception occured", qryIdx); |
| qryIdx++; |
| } |
| } |
| |
| Assert.IsFalse(ErrorOccurred, "Query expected exceptions did not occur."); |
| } |
| |
| //private void CreateRegions(object p, object USE_ACK, object endPoint1, bool p_4) |
| //{ |
| // throw new Exception("The method or operation is not implemented."); |
| //} |
| |
| |
| //public void CompareMap(CacheableHashMap map1, CacheableHashMap map2) |
| //{ |
| // if (map1.Count != map2.Count) |
| // Assert.Fail("Number of Keys dont match"); |
| // if (map1.Count == 0) return; |
| // foreach (KeyValuePair<ICacheableKey, ISerializable> entry in map1) |
| // { |
| // ISerializable value; |
| // if (!(map2.TryGetValue(entry.Key,out value))) |
| // { |
| // Assert.Fail("Key was not found"); |
| // return; |
| // } |
| // if(entry.Value.Equals(value)) |
| // { |
| // Assert.Fail("Value was not found"); |
| // return; |
| // } |
| // } |
| //} |
| |
| //public void GetAllRegionQuery() |
| //{ |
| // IRegion<object, object> region0 = CacheHelper.GetVerifyRegion(QueryRegionNames[0]); |
| // IRegion<object, object> region1 = region0.GetSubRegion(QueryRegionNames[1] ); |
| // IRegion<object, object> region2 = CacheHelper.GetVerifyRegion(QueryRegionNames[1]); |
| // IRegion<object, object> region3 = CacheHelper.GetVerifyRegion(QueryRegionNames[2]); |
| // IRegion<object, object> region4 = CacheHelper.GetVerifyRegion(QueryRegionNames[3]); |
| // string[] SecIds = Portfolio.SecIds; |
| // int NumSecIds = SecIds.Length; |
| // List<ICacheableKey> PosKeys = new List<ICacheableKey>(); |
| // List<ICacheableKey> PortKeys = new List<ICacheableKey>(); |
| // CacheableHashMap ExpectedPosMap = new CacheableHashMap(); |
| // CacheableHashMap ExpectedPortMap = new CacheableHashMap(); |
| // QueryHelper<object, object> qh = QueryHelper<object, object>.GetHelper(CacheHelper.DCache); |
| // int SetSize = qh.PositionSetSize; |
| // int NumSets = qh.PositionNumSets; |
| // for (int set = 1; set <= NumSets; set++) |
| // { |
| // for (int current = 1; current <= SetSize; current++) |
| // { |
| // CacheableKey PosKey = "pos" + set + "-" + current; |
| // Position pos = new Position(SecIds[current % NumSecIds], current * 100 ); |
| // PosKeys.Add(PosKey); |
| // ExpectedPosMap.Add(PosKey, pos); |
| // } |
| // } |
| // SetSize = qh.PortfolioSetSize; |
| // NumSets = qh.PortfolioNumSets; |
| // for (int set = 1; set <= NumSets; set++) |
| // { |
| // for (int current = 1; current <= SetSize; current++) |
| // { |
| // CacheableKey PortKey = "port" + set + "-" + current; |
| // Portfolio Port = new Portfolio(current,1); |
| // PortKeys.Add(PortKey); |
| // ExpectedPortMap.Add(PortKey, Port); |
| // } |
| // } |
| // CacheableHashMap ResMap = new CacheableHashMap(); |
| // Dictionary<ICacheableKey, Exception> ExMap = new Dictionary<ICacheableKey, Exception>(); |
| // region0.GetAll(PortKeys.ToArray(), ResMap, ExMap); |
| // CompareMap(ResMap, ExpectedPortMap); |
| // if (ExMap.Count != 0) |
| // { |
| // Assert.Fail("Expected No Exception"); |
| // } |
| // ResMap.Clear(); |
| |
| // region1.GetAll(PosKeys.ToArray(), ResMap, ExMap); |
| // CompareMap(ResMap, ExpectedPosMap); |
| // if (ExMap.Count != 0) |
| // { |
| // Assert.Fail("Expected No Exception"); |
| // } |
| // ResMap.Clear(); |
| // region2.GetAll(PosKeys.ToArray(), ResMap, ExMap); |
| // CompareMap(ResMap, ExpectedPosMap); |
| // if (ExMap.Count != 0) |
| // { |
| // Assert.Fail("Expected No Exception"); |
| // } |
| // ResMap.Clear(); |
| |
| // region3.GetAll(PortKeys.ToArray(), ResMap, ExMap); |
| // CompareMap(ResMap, ExpectedPortMap); |
| // if (ExMap.Count != 0) |
| // { |
| // Assert.Fail("Expected No Exception"); |
| // } |
| // ResMap.Clear(); |
| |
| // region4.GetAll(PortKeys.ToArray(), ResMap, ExMap); |
| // CompareMap(ResMap, ExpectedPortMap); |
| // if (ExMap.Count != 0) |
| // { |
| // Assert.Fail("Expected No Exception"); |
| // } |
| // ResMap.Clear(); |
| //} |
| #endregion |
| |
| void runRemoteQueryRS() |
| { |
| CacheHelper.SetupJavaServers(true, "remotequeryN.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| m_client1.Call(StepOne, CacheHelper.Locators, m_isPdx); |
| Util.Log("StepOne complete."); |
| |
| m_client1.Call(StepTwo, m_isPdx); |
| Util.Log("StepTwo complete."); |
| |
| m_client1.Call(StepThreeRS); |
| Util.Log("StepThree complete."); |
| |
| m_client1.Call(StepFourRS); |
| Util.Log("StepFour complete."); |
| |
| m_client1.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| |
| CacheHelper.StopJavaLocator(1); |
| Util.Log("Locator stopped"); |
| } |
| |
| void runRemoteParamQueryRS() |
| { |
| CacheHelper.SetupJavaServers(true, "remotequeryN.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| m_client1.Call(StepOne, CacheHelper.Locators, m_isPdx); |
| Util.Log("StepOne complete."); |
| |
| m_client1.Call(StepTwo, m_isPdx); |
| Util.Log("StepTwo complete."); |
| |
| m_client1.Call(StepThreePQRS); |
| Util.Log("StepThree complete."); |
| |
| m_client1.Call(StepFourPQRS); |
| Util.Log("StepFour complete."); |
| |
| m_client1.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| |
| CacheHelper.StopJavaLocator(1); |
| Util.Log("Locator stopped"); |
| } |
| |
| void runRemoteQuerySS() |
| { |
| CacheHelper.SetupJavaServers(true, "remotequeryN.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| m_client2.Call(StepOne, CacheHelper.Locators, m_isPdx); |
| Util.Log("StepOne complete."); |
| |
| m_client2.Call(StepTwo, m_isPdx); |
| Util.Log("StepTwo complete."); |
| |
| m_client2.Call(StepThreeSS); |
| Util.Log("StepThree complete."); |
| |
| m_client2.Call(StepFourSS); |
| Util.Log("StepFour complete."); |
| |
| //m_client2.Call(GetAllRegionQuery); |
| |
| m_client2.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| |
| CacheHelper.StopJavaLocator(1); |
| Util.Log("Locator stopped"); |
| } |
| |
| void runRemoteParamQuerySS() |
| { |
| CacheHelper.SetupJavaServers(true, "remotequeryN.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| m_client2.Call(StepOne, CacheHelper.Locators, m_isPdx); |
| Util.Log("StepOne complete."); |
| |
| m_client2.Call(StepTwo, m_isPdx); |
| Util.Log("StepTwo complete."); |
| |
| m_client2.Call(StepThreePQSS); |
| Util.Log("StepThree complete."); |
| |
| m_client2.Call(StepFourPQSS); |
| Util.Log("StepFour complete."); |
| |
| //m_client2.Call(GetAllRegionQuery); |
| |
| m_client2.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| |
| CacheHelper.StopJavaLocator(1); |
| Util.Log("Locator stopped"); |
| } |
| |
| void runRemoteQueryFailover() |
| { |
| try |
| { |
| m_client1.Call(StepOneFailover, m_isPdx); |
| Util.Log("StepOneFailover complete."); |
| |
| m_client1.Call(StepTwoFailover); |
| Util.Log("StepTwoFailover complete."); |
| |
| m_client1.Call(Close); |
| Util.Log("Client closed"); |
| } |
| finally |
| { |
| m_client1.Call(CacheHelper.StopJavaServers); |
| m_client1.Call(CacheHelper.StopJavaLocator, 1); |
| } |
| } |
| |
| void runRemoteParamQueryFailover() |
| { |
| try |
| { |
| m_client1.Call(StepOneFailover, m_isPdx); |
| Util.Log("StepOneFailover complete."); |
| |
| m_client1.Call(StepTwoPQFailover); |
| Util.Log("StepTwoPQFailover complete."); |
| |
| m_client1.Call(Close); |
| Util.Log("Client closed"); |
| } |
| finally |
| { |
| m_client1.Call(CacheHelper.StopJavaServers); |
| m_client1.Call(CacheHelper.StopJavaLocator, 1); |
| } |
| } |
| |
| void runQueryExclusiveness() |
| { |
| CacheHelper.SetupJavaServers(true, "cacheserver_remoteoqlN.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| m_client1.Call(StepOneQE, CacheHelper.Locators, m_isPdx); |
| Util.Log("StepOne complete."); |
| |
| m_client1.Call(StepTwoQE); |
| Util.Log("StepTwo complete."); |
| |
| m_client1.Call(Close); |
| Util.Log("Client closed"); |
| |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| |
| CacheHelper.StopJavaLocator(1); |
| Util.Log("Locator stopped"); |
| } |
| |
| void runQueryTimeout() |
| { |
| CacheHelper.SetupJavaServers(true, "remotequeryN.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| m_client1.Call(StepOne, CacheHelper.Locators, m_isPdx); |
| Util.Log("StepOne complete."); |
| |
| m_client1.Call(StepTwoQT); |
| Util.Log("StepTwo complete."); |
| |
| m_client1.Call(StepThreeQT); |
| Util.Log("StepThree complete."); |
| |
| Thread.Sleep(150000); // sleep 2.5min to allow server query to complete |
| |
| m_client1.Call(StepFourQT); |
| Util.Log("StepFour complete."); |
| |
| m_client1.Call(StepFiveQT); |
| Util.Log("StepFive complete."); |
| |
| Thread.Sleep(60000); // sleep 1min to allow server query to complete |
| |
| m_client1.Call(StepSixQT); |
| Util.Log("StepSix complete."); |
| |
| m_client1.Call(Close); |
| Util.Log("Client closed"); |
| |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| |
| CacheHelper.StopJavaLocator(1); |
| Util.Log("Locator stopped"); |
| } |
| |
| void runParamQueryTimeout() |
| { |
| CacheHelper.SetupJavaServers(true, "remotequeryN.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started. WITH PDX = " + m_isPdx); |
| |
| m_client1.Call(StepOne, CacheHelper.Locators, m_isPdx); |
| Util.Log("StepOne complete."); |
| |
| m_client1.Call(StepTwoQT); |
| Util.Log("StepTwo complete."); |
| |
| m_client1.Call(StepThreePQT); |
| Util.Log("StepThreePQT complete."); |
| |
| Thread.Sleep(60000); // sleep 1min to allow server query to complete |
| |
| m_client1.Call(StepFourPQT); |
| Util.Log("StepFourPQT complete."); |
| |
| m_client1.Call(Close); |
| Util.Log("Client closed"); |
| |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| |
| CacheHelper.StopJavaLocator(1); |
| Util.Log("Locator stopped"); |
| } |
| |
| void runRegionQuery() |
| { |
| CacheHelper.SetupJavaServers(true, "remotequeryN.xml"); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); |
| Util.Log("Cacheserver 1 started."); |
| |
| m_client2.Call(StepOne, CacheHelper.Locators, m_isPdx); |
| Util.Log("StepOne complete."); |
| |
| m_client2.Call(StepTwo, m_isPdx); |
| Util.Log("StepTwo complete."); |
| |
| //Extra Step |
| //m_client1.Call(StepExtra); |
| |
| m_client2.Call(StepThreeRQ); |
| Util.Log("StepThree complete."); |
| |
| m_client2.Call(StepFourRQ); |
| Util.Log("StepFour complete."); |
| |
| m_client2.Call(StepFiveRQ); |
| Util.Log("StepFive complete."); |
| |
| m_client2.Call(StepSixRQ); |
| Util.Log("StepSix complete."); |
| |
| m_client2.Call(Close); |
| Util.Log("Client closed"); |
| |
| CacheHelper.StopJavaServer(1); |
| Util.Log("Cacheserver 1 stopped."); |
| |
| CacheHelper.StopJavaLocator(1); |
| Util.Log("Locator stopped"); |
| } |
| |
| static bool m_isPdx = false; |
| |
| [Test] |
| public void RemoteQueryRSWithPdx() |
| { |
| m_isPdx = true; |
| runRemoteQueryRS(); |
| } |
| |
| |
| [Test] |
| public void RemoteQueryRSWithoutPdx() |
| { |
| m_isPdx = false; |
| runRemoteQueryRS(); |
| } |
| |
| [Test] |
| public void RemoteParamQueryRSWithPdx() |
| { |
| m_isPdx = true; |
| runRemoteParamQueryRS(); |
| |
| } |
| |
| [Test] |
| public void RemoteParamQueryRSWithoutPdx() |
| { |
| m_isPdx = false; |
| runRemoteParamQueryRS(); |
| |
| } |
| |
| [Test] |
| public void RemoteQuerySSWithPdx() |
| { |
| m_isPdx = true; |
| runRemoteQuerySS(); |
| |
| } |
| |
| [Test] |
| public void RemoteQuerySSWithoutPdx() |
| { |
| m_isPdx = false; |
| runRemoteQuerySS(); |
| |
| } |
| |
| [Test] |
| public void RemoteParamQuerySSWithoutPdx() |
| { |
| |
| m_isPdx = false; |
| runRemoteParamQuerySS(); |
| |
| } |
| |
| [Test] |
| public void RemoteParamQuerySSWithPdx() |
| { |
| |
| m_isPdx = true; |
| runRemoteParamQuerySS(); |
| |
| } |
| |
| [Test] |
| public void RemoteQueryFailoverWithPdx() |
| { |
| m_isPdx = true; |
| runRemoteQueryFailover(); |
| } |
| |
| [Test] |
| public void RemoteQueryFailoverWithoutPdx() |
| { |
| m_isPdx = false; |
| runRemoteQueryFailover(); |
| } |
| |
| [Test] |
| [Ignore] |
| public void RemoteParamQueryFailover() |
| { |
| for (int i = 0; i < 2; i++) |
| { |
| runRemoteParamQueryFailover(); |
| m_isPdx = true; |
| } |
| m_isPdx = false; |
| } |
| |
| [Test] |
| public void QueryExclusivenessWithoutPdx() |
| { |
| m_isPdx = false; |
| runQueryExclusiveness(); |
| |
| } |
| |
| |
| [Test] |
| public void QueryExclusivenessWithPdx() |
| { |
| m_isPdx = true; |
| runQueryExclusiveness(); |
| } |
| |
| [Test] |
| [Ignore] |
| public void QueryTimeout() |
| { |
| for (int i = 0; i < 2; i++) |
| { |
| runQueryTimeout(); |
| m_isPdx = true; |
| } |
| m_isPdx = false; |
| } |
| |
| [Test] |
| [Ignore] |
| public void ParamQueryTimeout() |
| { |
| for (int i = 0; i < 2; i++) |
| { |
| runParamQueryTimeout(); |
| m_isPdx = true; |
| } |
| m_isPdx = false; |
| } |
| |
| [Test] |
| public void RegionQueryWithPdx() |
| { |
| m_isPdx = true; |
| runRegionQuery(); |
| } |
| |
| [Test] |
| public void RegionQueryWithoutPdx() |
| { |
| m_isPdx = false; |
| runRegionQuery(); |
| } |
| |
| } |
| } |