public void Proxy_Restore_HashFromValue() { const int distrServer1 = 22403; const int distrServer12 = 22404; const int st1 = 22405; const int st2 = 22406; const int st3 = 22407; const int st4 = 22408; #region hell var writer = new HashWriter(new HashMapConfiguration("TestHashFromValue", HashMapCreationMode.CreateNew, 2, 2, HashFileType.Distributor)); writer.CreateMap(); writer.SetServer(0, "localhost", st1, st2); writer.SetServer(1, "localhost", st3, st4); writer.Save(); var common = new CommonConfiguration(1, 100); var distrNet = new DistributorNetConfiguration("localhost", distrServer1, distrServer12, "testService", 10); var distrConf = new DistributorConfiguration(1, "TestHashFromValue", TimeSpan.FromMilliseconds(100000), TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1), TimeSpan.FromMilliseconds(10000)); var distr = new DistributorApi(distrNet, distrConf, common); var storageNet1 = new StorageNetConfiguration("localhost", st1, st2, "testService", 10); var storageNet2 = new StorageNetConfiguration("localhost", st3, st4, "testService", 10); var storageConfig = new StorageConfiguration("TestHashFromValue", 1, 10, TimeSpan.FromHours(1), TimeSpan.FromHours(1), TimeSpan.FromHours(1), TimeSpan.FromHours(1), false); var storage1 = new WriterApi(storageNet1, storageConfig, common); var storage2 = new WriterApi(storageNet2, storageConfig, common); #endregion storage1.Build(); storage2.Build(); distr.Build(); var f1 = new TestInMemoryDbFactory("Int3", new IntHashConvertor()); var f2 = new TestInMemoryDbFactory("Int3", new IntHashConvertor()); storage1.AddDbModule(f1); storage2.AddDbModule(f2); storage1.Start(); _proxy.Start(); distr.Start(); _proxy.Int.SayIAmHere("localhost", distrServer1); const int count = 50; for (int i = 0; i < count; i++) { _proxy.Int3.CreateSync(i, i); _proxy.Int3.CreateSync(i, i); } for (int i = 0; i < count; i++) { RequestDescription result; var value = _proxy.Int3.Read(i, out result); Assert.AreEqual(RequestState.Complete, result.State); Assert.AreEqual(i, value); } Assert.AreEqual(count, f1.Db.Local + f1.Db.Remote); storage2.Start(); storage2.Api.Restore(new ServerAddress("localhost", distrServer12), false); Thread.Sleep(TimeSpan.FromMilliseconds(2000)); Assert.AreEqual(count, f1.Db.Local + f2.Db.Local); Assert.AreEqual(0, f1.Db.Remote); Assert.AreEqual(0, f2.Db.Remote); _proxy.Dispose(); distr.Dispose(); storage1.Dispose(); storage2.Dispose(); }
public void Writer_Restore_TimeoutDelete() { #region hell var writer = new HashWriter(new HashMapConfiguration("TestRestore", HashMapCreationMode.CreateNew, 1, 1, HashFileType.Distributor)); writer.CreateMap(); writer.SetServer(0, "localhost", storageServer1, 157); writer.Save(); var storageNet1 = new StorageNetConfiguration("localhost", storageServer1, 157, "testService", 10); var storageConfig = new StorageConfiguration("TestRestore", 1, 10, TimeSpan.FromMilliseconds(10000), TimeSpan.FromMilliseconds(200), TimeSpan.FromMilliseconds(1), TimeSpan.FromSeconds(1), false); var factory = new TestInMemoryDbFactory(); var storage1 = new WriterApi(storageNet1, storageConfig, new CommonConfiguration(1, 10)); #endregion _proxy.Start(); _distr.Start(); _proxy.Int.SayIAmHere("localhost", distrServer1); storage1.Build(); storage1.AddDbModule(factory); storage1.Start(); const int count = 50; for (int i = 0; i < count; i++) { var wait = _proxy.Int.CreateSync(i, i); Assert.AreEqual(RequestState.Complete, wait.State); } Assert.AreEqual(count, factory.Db.Local); for (int i = 0; i < count / 2; i++) { var wait = _proxy.Int.DeleteSync(i); Assert.AreEqual(RequestState.Complete, wait.State); } Assert.AreEqual(count / 2, factory.Db.Local); Assert.AreEqual(count / 2, factory.Db.Deleted); Thread.Sleep(4000); Assert.AreEqual(count / 2, factory.Db.Local); Assert.AreEqual(0, factory.Db.Deleted); _proxy.Dispose(); _distr.Dispose(); storage1.Dispose(); }
public void Proxy_CRUD_TwoTables() { const int distrServer1 = 22379; const int distrServer12 = 22380; const int st1 = 22381; const int st2 = 22382; #region hell var writer = new HashWriter(new HashMapConfiguration("Test2Crud", HashMapCreationMode.CreateNew, 1, 1, HashFileType.Distributor)); writer.CreateMap(); writer.SetServer(0, "localhost", st1, st2); writer.Save(); var common = new CommonConfiguration(1, 100); var distrNet = new DistributorNetConfiguration("localhost", distrServer1, distrServer12, "testService", 10); var distrConf = new DistributorConfiguration(1, "Test2Crud", TimeSpan.FromMilliseconds(100000), TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1), TimeSpan.FromMilliseconds(10000)); var distr = new DistributorApi(distrNet, distrConf, common); var storageNet = new StorageNetConfiguration("localhost", st1, st2, "testService", 10); var storageConfig = new StorageConfiguration("Test2Crud", 1, 10, TimeSpan.FromHours(1), TimeSpan.FromHours(1), TimeSpan.FromHours(1), TimeSpan.FromHours(1), false); var storage = new WriterApi(storageNet, storageConfig, common); #endregion storage.Build(); distr.Build(); var f = new TestInMemoryDbFactory(); var f2 = new TestInMemoryDbFactory("Int2"); storage.AddDbModule(f); storage.AddDbModule(f2); storage.Start(); _proxy.Start(); distr.Start(); _proxy.Int.SayIAmHere("localhost", distrServer1); const int count = 5; for (int i = 0; i < count; i++) { RequestDescription result; _proxy.Int.Read(i, out result); Assert.AreEqual(RequestState.DataNotFound, result.State); _proxy.Int2.Read(i, out result); Assert.AreEqual(RequestState.DataNotFound, result.State); } for (int i = 0; i < count; i++) { RequestDescription result = _proxy.Int.CreateSync(i, i); Assert.AreEqual(RequestState.Complete, result.State); result = _proxy.Int2.CreateSync(i, i); Assert.AreEqual(RequestState.Complete, result.State); } for (int i = 0; i < count; i++) { RequestDescription result; var value = _proxy.Int.Read(i, out result); Assert.AreEqual(RequestState.Complete, result.State); Assert.AreEqual(i, value); value = _proxy.Int2.Read(i, out result); Assert.AreEqual(i, value); } Assert.AreEqual(count, f.Db.Local); Assert.AreEqual(count, f2.Db.Local); _proxy.Dispose(); distr.Dispose(); storage.Dispose(); }