public void bonus_test() { Match.MatchService ms = new Match.MatchService(); var t1 = ms.Model.Traders.Where(a => a.Name == "hello56").FirstOrDefault(); InvitorFeeMgr ifm = new InvitorFeeMgr(); var r = ifm.TransBonus(t1, new System.Collections.Generic.List <string> { "hello54", "hello55" }); ms.Flush(); Assert.AreEqual(r, InvitorFeeService.InvitorBonusInCny * 2); }
public void s_o_b_o_all_5() { RestoreDb(); ms = new Match.MatchService(); OrderPreHandler.CountPerMinuteLimit = 1000000; var cs = ms.Model.Contracts.Where(a => a.IsDel == false).ToList(); var ts = ms.Model.Traders.ToList(); List <OrderResult> l = new List <OrderResult>(); Stopwatch sw = new Stopwatch(); sw.Start(); //每种合约,每个人交易10次 for (int i = 0; i < cs.Count; i++) { for (int j = 0; j < ts.Count; j++) { for (int k = 0; k < 5; k++) { var r = ms.AddOrder(ts[j].Id, cs[i].Id, TradeDirectType.卖, OrderType.开仓, OrderPolicy.限价申报, 1, 1); l.Add(r); } } } for (int i = 0; i < cs.Count; i++) { for (int j = 0; j < ts.Count; j++) { for (int k = 0; k < 5; k++) { var r = ms.AddOrder(ts[j].Id, cs[i].Id, TradeDirectType.买, OrderType.开仓, OrderPolicy.限价申报, 1, 1); l.Add(r); } } } sw.Stop(); Assert.IsTrue(sw.Elapsed.TotalMilliseconds < 20000); for (int i = 0; i < l.Count; i++) { var t = l[i]; Assert.AreEqual(t.ResultCode, 0); } }
public void u_100() { List <OrderResult> l = new List <OrderResult>(1200); //TextLog log = new TextLog("u_100.txt"); RestoreDb(); ms = new Match.MatchService(); List <Task> lt = new List <Task>(); var ts = ms.Model.Traders.ToList(); var total = ts.Count; for (int j = 0; j < total; j++) { var v = ts[j]; var dir = j < total / 2 ? TradeDirectType.卖 : TradeDirectType.买; var ta = Task.Factory.StartNew(() => { for (int i = 0; i < 10; i++) { var tr = ms.AddOrder(v.Id, c.Id, dir, OrderType.开仓, OrderPolicy.限价申报, 10, 88); l.Add(tr); //log.Info(tr.ToString()); } }); lt.Add(ta); } Task.WaitAll(lt.ToArray()); ms.Flush(); Arrange.log.Flush(); Assert.IsTrue(l.Count <= total * 10); Assert.IsTrue(l.Count >= total * 8); //Assert.AreEqual(total*10, l.Count); int h = 0; for (int i = 0; i < l.Count; i++) { var v = l[i]; Assert.AreEqual(v.ResultCode, 0); h += v.Order.State == OrderState.已成交 ? 1 : 0; } Assert.IsTrue(h <= total * 10); Assert.IsTrue(h >= total * 5); }
public void u_2() { object loc = new object(); List <OrderResult> l = new List <OrderResult>(); RestoreDb(); ms = new Match.MatchService(); List <Task> lt = new List <Task>(); var task1 = Task.Factory.StartNew(() => { for (int i = 0; i < 10; i++) { var tr = ms.AddOrder(t1.Id, c.Id, TradeDirectType.卖, OrderType.开仓, OrderPolicy.限价申报, 10, 88); l.Add(tr); } }); var task2 = Task.Factory.StartNew(() => { for (int i = 0; i < 10; i++) { var tr = ms.AddOrder(t2.Id, c.Id, TradeDirectType.买, OrderType.开仓, OrderPolicy.限价申报, 10, 88); l.Add(tr); } }); lt.Add(task1); lt.Add(task2); Task.WaitAll(lt.ToArray()); ms.Flush(); Arrange.log.Flush(); Assert.AreEqual(20, l.Count); for (int i = 0; i < l.Count; i++) { var v = l[i]; Assert.AreEqual(v.ResultCode, 0); Assert.AreEqual(v.Order.State, OrderState.已成交); } }