public void DistributedTransactionTest() { //失败事务 BaseBusiness <Base_UnitTest> _bus1 = new BaseBusiness <Base_UnitTest>(); BaseBusiness <Base_UnitTest> _bus2 = new BaseBusiness <Base_UnitTest>("BaseDb_Test"); _bus1.DeleteAll(); _bus2.DeleteAll(); Base_UnitTest data1 = new Base_UnitTest { Id = Guid.NewGuid().ToString(), UserId = "1", UserName = Guid.NewGuid().ToString() }; Base_UnitTest data2 = new Base_UnitTest { Id = Guid.NewGuid().ToString(), UserId = "1", UserName = Guid.NewGuid().ToString() }; Base_UnitTest data3 = new Base_UnitTest { Id = Guid.NewGuid().ToString(), UserId = "2", UserName = Guid.NewGuid().ToString() }; DistributedTransaction distributedTransaction = new DistributedTransaction(_bus1.Service, _bus2.Service); distributedTransaction.BeginTransaction(); _bus1.ExecuteSql("insert into Base_UnitTest(Id) values('10') "); _bus1.Insert(data1); _bus1.Insert(data3); _bus2.Insert(data1); _bus2.Insert(data2); bool succcess = distributedTransaction.EndTransaction(); int count1 = _bus1.GetIQueryable().Count(); int count2 = _bus2.GetIQueryable().Count(); Assert.AreEqual(succcess, false); Assert.AreEqual(count1, 0); Assert.AreEqual(count2, 0); //成功事务 _bus1.DeleteAll(); _bus2.DeleteAll(); distributedTransaction = new DistributedTransaction(_bus1.Service, _bus2.Service); distributedTransaction.BeginTransaction(); _bus1.ExecuteSql("insert into Base_UnitTest(Id) values('10') "); _bus1.Insert(data1); _bus1.Insert(data3); _bus2.Insert(data1); _bus2.Insert(data3); succcess = distributedTransaction.EndTransaction(); count1 = _bus1.GetIQueryable().Count(); count2 = _bus2.GetIQueryable().Count(); Assert.AreEqual(succcess, true); Assert.AreEqual(count1, 3); Assert.AreEqual(count2, 2); }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { Task.Factory.StartNew(async() => { while (true) { try { using (var scop = _serviceProvider.CreateScope()) { //单表 var db = scop.ServiceProvider.GetService <IMyDbAccessor>(); List <Base_UnitTest> insertList = new List <Base_UnitTest>(); for (int i = 0; i < 100; i++) { insertList.Add(new Base_UnitTest { Id = Guid.NewGuid().ToString(), Age = i, CreateTime = DateTime.Now, UserName = Guid.NewGuid().ToString() }); } var single = new Base_UnitTest { Id = Guid.NewGuid().ToString(), Age = 100, CreateTime = DateTime.Now, UserName = Guid.NewGuid().ToString() }; await db.InsertAsync(single); await db.InsertAsync(insertList); int count = await db.GetIQueryable <Base_UnitTest>().CountAsync(); _logger.LogInformation("单表插入数据成功 当前数据量:{Count}", count); //分表 var shardingDb = scop.ServiceProvider.GetService <IShardingDbAccessor>(); await shardingDb.InsertAsync(single); await shardingDb.InsertAsync(insertList); count = await shardingDb.GetIShardingQueryable <Base_UnitTest>().CountAsync(); _logger.LogInformation("分表插入数据成功 当前数据量:{Count}", count); } } catch (Exception ex) { _logger.LogError(ex, ""); } await Task.Delay(2000); } }, TaskCreationOptions.LongRunning); await Task.CompletedTask; }
static Base_BusinessTests() { for (int i = 1; i <= 100; i++) { Base_UnitTest newData = new Base_UnitTest { Id = Guid.NewGuid().ToString(), Age = i, UserId = "Admin" + i, UserName = "******" + i }; _dataList.Add(newData); } }
public BaseTest() { for (int i = 1; i <= 100; i++) { Base_UnitTest newData = new Base_UnitTest { Id = Guid.NewGuid().ToString(), Age = i, UserId = "Admin" + i, UserName = "******" + i }; _dataList.Add(newData); } Clear(); }
public IActionResult Test() { var db = DbFactory.GetRepository(); Base_UnitTest base_UnitTest = new Base_UnitTest { Id = IdHelper.GetId(), Age = int.MaxValue, UserId = IdHelper.GetId(), UserName = IdHelper.GetId() }; db.Insert(base_UnitTest); db.GetIQueryable <Base_UnitTest>().GetPagination(new Pagination()).ToList(); db.Update(base_UnitTest); db.Delete(base_UnitTest); return(Success()); }
/// <summary> /// 压力测试 /// </summary> /// <returns></returns> public ActionResult PressTest() { var bus = AutofacHelper.GetScopeService <IBase_UserBusiness>(); var db = DbFactory.GetRepository(); Base_UnitTest data = new Base_UnitTest { Id = Guid.NewGuid().ToString(), UserId = Guid.NewGuid().ToString(), Age = 10, UserName = Guid.NewGuid().ToString() }; db.Insert(data); db.Update(data); db.GetIQueryable <Base_UnitTest>().FirstOrDefault(); db.Delete(data); return(Success("")); }
public async Task PressTest2() { var bus = AutofacHelper.GetScopeService <IBase_UserBusiness>(); using (var db = DbFactory.GetRepository()) { Base_UnitTest data = new Base_UnitTest { Id = Guid.NewGuid().ToString(), UserId = Guid.NewGuid().ToString(), Age = 10, UserName = Guid.NewGuid().ToString() }; await db.InsertAsync(data); await db.UpdateAsync(data); await db.GetIQueryable <Base_UnitTest>().FirstOrDefaultAsync(); await db.DeleteAsync(data); } }
public void DistributedTransactionTest() { //失败事务 IRepository _bus1 = DbFactory.GetRepository(); IRepository _bus2 = DbFactory.GetRepository("BaseDb_Test"); _bus1.DeleteAll <Base_UnitTest>(); _bus2.DeleteAll <Base_UnitTest>(); Base_UnitTest data1 = new Base_UnitTest { Id = Guid.NewGuid().ToString(), UserId = "1", UserName = Guid.NewGuid().ToString() }; Base_UnitTest data2 = new Base_UnitTest { Id = data1.Id, UserId = "1", UserName = Guid.NewGuid().ToString() }; Base_UnitTest data3 = new Base_UnitTest { Id = Guid.NewGuid().ToString(), UserId = "2", UserName = Guid.NewGuid().ToString() }; new Action(() => { var succcess = DistributedTransactionFactory.GetDistributedTransaction(_bus1, _bus2) .RunTransaction(() => { _bus1.ExecuteSql("insert into Base_UnitTest(Id) values('10') "); _bus1.Insert(data1); _bus1.Insert(data2); _bus2.Insert(data1); _bus2.Insert(data3); }); Assert.AreEqual(succcess.Success, false); Assert.AreEqual(_bus1.GetIQueryable <Base_UnitTest>().Count(), 0); Assert.AreEqual(_bus2.GetIQueryable <Base_UnitTest>().Count(), 0); })(); //成功事务 new Action(() => { var succcess = DistributedTransactionFactory.GetDistributedTransaction(_bus1, _bus2) .RunTransaction(() => { _bus1.ExecuteSql("insert into Base_UnitTest(Id) values('10') "); _bus1.Insert(data1); _bus1.Insert(data3); _bus2.Insert(data1); _bus2.Insert(data3); }); int count1 = _bus1.GetIQueryable <Base_UnitTest>().Count(); int count2 = _bus2.GetIQueryable <Base_UnitTest>().Count(); Assert.AreEqual(succcess.Success, true); Assert.AreEqual(count1, 3); Assert.AreEqual(count2, 2); })(); }