public void StepOnePdxQE(string locators) { CacheHelper.CreateTCRegion_Pool <object, object>(QERegionName, true, true, null, locators, "__TESTPOOL1_", true); IRegion <object, object> region = CacheHelper.GetVerifyRegion <object, object>(QERegionName); 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(); CqAttributesFactory <object, object> cqFac = new CqAttributesFactory <object, object>(); ICqListener <object, object> cqLstner = new MyCqListener <object, object>(); cqFac.AddCqListener(cqLstner); CqAttributes <object, object> cqAttr = cqFac.Create(); CqQuery <object, object> qry = qs.NewCq(CqName, "select * from /" + QERegionName + " p where p.ID!=2", cqAttr, false); qry.Execute(); Thread.Sleep(18000); // sleep 0.3min to allow server c query to complete region["4"] = p1; region["3"] = p2; region["2"] = p3; region["1"] = p4; Thread.Sleep(18000); // sleep 0.3min to allow server c query to complete qry = qs.GetCq <object, object>(CqName); CqServiceStatistics cqSvcStats = qs.GetCqStatistics(); Assert.AreEqual(1, cqSvcStats.numCqsActive()); Assert.AreEqual(1, cqSvcStats.numCqsCreated()); Assert.AreEqual(1, cqSvcStats.numCqsOnClient()); cqAttr = qry.GetCqAttributes(); ICqListener <object, object>[] vl = cqAttr.getCqListeners(); Assert.IsNotNull(vl); Assert.AreEqual(1, vl.Length); cqLstner = vl[0]; Assert.IsNotNull(cqLstner); MyCqListener <object, object> myLisner = (MyCqListener <object, object>)cqLstner;// as MyCqListener<object, object>; Util.Log("event count:{0}, error count {1}.", myLisner.getEventCountBefore(), myLisner.getErrorCountBefore()); CqStatistics cqStats = qry.GetStatistics(); Assert.AreEqual(cqStats.numEvents(), myLisner.getEventCountBefore()); if (myLisner.getEventCountBefore() + myLisner.getErrorCountBefore() == 0) { Assert.Fail("cq before count zero"); } qry.Stop(); Assert.AreEqual(1, cqSvcStats.numCqsStopped()); qry.Close(); Assert.AreEqual(1, cqSvcStats.numCqsClosed()); // Bring down the region region.GetLocalView().DestroyRegion(); }
/* * public void StepOneFailover() * { * // This is here so that Client1 registers information of the cacheserver * // that has been already started * CacheHelper.SetupJavaServers("remotequery.xml", * "cqqueryfailover.xml"); * CacheHelper.StartJavaServer(1, "GFECS1"); * Util.Log("Cacheserver 1 started."); * * CacheHelper.CreateTCRegion(QueryRegionNames[0], true, true, null, true); * * Region region = CacheHelper.GetVerifyRegion(QueryRegionNames[0]); * 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.Put("1", p1); * region.Put("2", p2); * region.Put("3", p3); * region.Put("4", p4); * } */ /* * public void StepTwoFailover() * { * CacheHelper.StartJavaServer(2, "GFECS2"); * Util.Log("Cacheserver 2 started."); * * IAsyncResult killRes = null; * KillServerDelegate ksd = new KillServerDelegate(KillServer); * CacheHelper.CreateTCRegion(QueryRegionNames[0], true, true, null, true); * * IRegion<object, object> region = CacheHelper.GetVerifyRegion<object, object>(QueryRegionNames[0]); * * var qs = CacheHelper.DCache.GetQueryService(); * CqAttributesFactory cqFac = new CqAttributesFactory(); * ICqListener cqLstner = new MyCqListener(); * cqFac.AddCqListener(cqLstner); * CqAttributes cqAttr = cqFac.Create(); * CqQuery qry = qs.NewCq(CqName1, "select * from /" + QERegionName + " p where p.ID!<4", cqAttr, true); * qry.Execute(); * Thread.Sleep(18000); // sleep 0.3min to allow server c query to complete * qry = qs.GetCq(CqName1); * cqAttr = qry.GetCqAttributes(); * ICqListener[] vl = cqAttr.getCqListeners(); * Assert.IsNotNull(vl); * Assert.AreEqual(1, vl.Length); * cqLstner = vl[0]; * Assert.IsNotNull(cqLstner); * MyCqListener myLisner = cqLstner as MyCqListener; * if (myLisner.getEventCountAfter() + myLisner.getErrorCountAfter() != 0) * { * Assert.Fail("cq after count not zero"); * } * * killRes = ksd.BeginInvoke(null, null); * Thread.Sleep(18000); // sleep 0.3min to allow failover complete * myLisner.failedOver(); * * 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.Put("4", p1); * region.Put("3", p2); * region.Put("2", p3); * region.Put("1", p4); * Thread.Sleep(18000); // sleep 0.3min to allow server c query to complete * * qry = qs.GetCq(CqName1); * cqAttr = qry.GetCqAttributes(); * vl = cqAttr.getCqListeners(); * cqLstner = vl[0]; * Assert.IsNotNull(vl); * Assert.AreEqual(1, vl.Length); * cqLstner = vl[0]; * Assert.IsNotNull(cqLstner); * myLisner = cqLstner as MyCqListener; * if (myLisner.getEventCountAfter() + myLisner.getErrorCountAfter() == 0) * { * Assert.Fail("no cq after failover"); * } * * killRes.AsyncWaitHandle.WaitOne(); * ksd.EndInvoke(killRes); * qry.Stop(); * qry.Close(); * } */ public void ProcessCQ(string locators) { CacheHelper.CreateTCRegion_Pool <object, object>(QERegionName, true, true, null, locators, "__TESTPOOL1_", true); IRegion <object, object> region = CacheHelper.GetVerifyRegion <object, object>(QERegionName); 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; var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); CqAttributesFactory <object, object> cqFac = new CqAttributesFactory <object, object>(); ICqListener <object, object> cqLstner = new MyCqListener <object, object>(); ICqStatusListener <object, object> cqStatusLstner = new MyCqStatusListener <object, object>(1); ICqListener <object, object>[] v = new ICqListener <object, object> [2]; cqFac.AddCqListener(cqLstner); v[0] = cqLstner; v[1] = cqStatusLstner; cqFac.InitCqListeners(v); Util.Log("InitCqListeners called"); CqAttributes <object, object> cqAttr = cqFac.Create(); CqQuery <object, object> qry1 = qs.NewCq("CQ1", "select * from /" + QERegionName + " p where p.ID >= 1", cqAttr, false); qry1.Execute(); Thread.Sleep(18000); // sleep 0.3min to allow server c query to complete region["4"] = p1; region["3"] = p2; region["2"] = p3; region["1"] = p4; Thread.Sleep(18000); // sleep 0.3min to allow server c query to complete qry1 = qs.GetCq <object, object>("CQ1"); cqAttr = qry1.GetCqAttributes(); ICqListener <object, object>[] vl = cqAttr.getCqListeners(); Assert.IsNotNull(vl); Assert.AreEqual(2, vl.Length); cqLstner = vl[0]; Assert.IsNotNull(cqLstner); MyCqListener <object, object> myLisner = (MyCqListener <object, object>)cqLstner;// as MyCqListener<object, object>; Util.Log("event count:{0}, error count {1}.", myLisner.getEventCountBefore(), myLisner.getErrorCountBefore()); Assert.AreEqual(4, myLisner.getEventCountBefore()); cqStatusLstner = (ICqStatusListener <object, object>)vl[1]; Assert.IsNotNull(cqStatusLstner); MyCqStatusListener <object, object> myStatLisner = (MyCqStatusListener <object, object>)cqStatusLstner;// as MyCqStatusListener<object, object>; Util.Log("event count:{0}, error count {1}.", myStatLisner.getEventCountBefore(), myStatLisner.getErrorCountBefore()); Assert.AreEqual(1, myStatLisner.getCqConnectedCount()); Assert.AreEqual(4, myStatLisner.getEventCountBefore()); CqAttributesMutator <object, object> mutator = qry1.GetCqAttributesMutator(); mutator.RemoveCqListener(cqLstner); cqAttr = qry1.GetCqAttributes(); Util.Log("cqAttr.getCqListeners().Length = {0}", cqAttr.getCqListeners().Length); Assert.AreEqual(1, cqAttr.getCqListeners().Length); mutator.RemoveCqListener(cqStatusLstner); cqAttr = qry1.GetCqAttributes(); Util.Log("1 cqAttr.getCqListeners().Length = {0}", cqAttr.getCqListeners().Length); Assert.AreEqual(0, cqAttr.getCqListeners().Length); ICqListener <object, object>[] v2 = new ICqListener <object, object> [2]; v2[0] = cqLstner; v2[1] = cqStatusLstner; MyCqListener <object, object> myLisner2 = (MyCqListener <object, object>)cqLstner; myLisner2.Clear(); MyCqStatusListener <object, object> myStatLisner2 = (MyCqStatusListener <object, object>)cqStatusLstner; myStatLisner2.Clear(); mutator.SetCqListeners(v2); cqAttr = qry1.GetCqAttributes(); Assert.AreEqual(2, cqAttr.getCqListeners().Length); region["4"] = p1; region["3"] = p2; region["2"] = p3; region["1"] = p4; Thread.Sleep(18000); // sleep 0.3min to allow server c query to complete qry1 = qs.GetCq <object, object>("CQ1"); cqAttr = qry1.GetCqAttributes(); ICqListener <object, object>[] v3 = cqAttr.getCqListeners(); Assert.IsNotNull(v3); Assert.AreEqual(2, vl.Length); cqLstner = v3[0]; Assert.IsNotNull(cqLstner); myLisner2 = (MyCqListener <object, object>)cqLstner;// as MyCqListener<object, object>; Util.Log("event count:{0}, error count {1}.", myLisner2.getEventCountBefore(), myLisner2.getErrorCountBefore()); Assert.AreEqual(4, myLisner2.getEventCountBefore()); cqStatusLstner = (ICqStatusListener <object, object>)v3[1]; Assert.IsNotNull(cqStatusLstner); myStatLisner2 = (MyCqStatusListener <object, object>)cqStatusLstner;// as MyCqStatusListener<object, object>; Util.Log("event count:{0}, error count {1}.", myStatLisner2.getEventCountBefore(), myStatLisner2.getErrorCountBefore()); Assert.AreEqual(0, myStatLisner2.getCqConnectedCount()); Assert.AreEqual(4, myStatLisner2.getEventCountBefore()); mutator = qry1.GetCqAttributesMutator(); mutator.RemoveCqListener(cqLstner); cqAttr = qry1.GetCqAttributes(); Util.Log("cqAttr.getCqListeners().Length = {0}", cqAttr.getCqListeners().Length); Assert.AreEqual(1, cqAttr.getCqListeners().Length); mutator.RemoveCqListener(cqStatusLstner); cqAttr = qry1.GetCqAttributes(); Util.Log("1 cqAttr.getCqListeners().Length = {0}", cqAttr.getCqListeners().Length); Assert.AreEqual(0, cqAttr.getCqListeners().Length); region["4"] = p1; region["3"] = p2; region["2"] = p3; region["1"] = p4; Thread.Sleep(18000); // sleep 0.3min to allow server c query to complete qry1 = qs.GetCq <object, object>("CQ1"); cqAttr = qry1.GetCqAttributes(); ICqListener <object, object>[] v4 = cqAttr.getCqListeners(); Assert.IsNotNull(v4); Assert.AreEqual(0, v4.Length); Util.Log("cqAttr.getCqListeners() done"); }
public void StepOneQE(string locators) { CacheHelper.CreateTCRegion_Pool <object, object>(QERegionName, true, true, null, locators, "__TESTPOOL1_", true); IRegion <object, object> region = CacheHelper.GetVerifyRegion <object, object>(QERegionName); 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; var qs = CacheHelper.DCache.GetPoolManager().Find("__TESTPOOL1_").GetQueryService(); CqAttributesFactory <object, object> cqFac = new CqAttributesFactory <object, object>(); ICqListener <object, object> cqLstner = new MyCqListener <object, object>(); cqFac.AddCqListener(cqLstner); CqAttributes <object, object> cqAttr = cqFac.Create(); CqQuery <object, object> qry = qs.NewCq(CqName, "select * from /" + QERegionName + " p where p.ID!=2", cqAttr, false); ICqResults <object> results = qry.ExecuteWithInitialResults(); Thread.Sleep(18000); // sleep 0.3min to allow server c query to complete region["4"] = p1; region["3"] = p2; region["2"] = p3; region["1"] = p4; Thread.Sleep(18000); // sleep 0.3min to allow server c query to complete Util.Log("Results size {0}.", results.Size); foreach (var item in results) { if (item != null) { Struct st = item as Struct; string key = st["key"] as string; Assert.IsNotNull(key, "key is null"); Portfolio port = st["value"] as Portfolio; if (port == null) { Position pos = st["value"] as Position; if (pos == null) { string cs = item as string; if (cs == null) { Assert.Fail("value is 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); } } } qry = qs.GetCq <object, object>(CqName); qry.Stop(); qry.Close(); // Bring down the region region.GetLocalView().DestroyRegion(); }