Exemplo n.º 1
0
        public void ProxySystem_Read_ReadFromFakeDistributor_ExpectedData()
        {
            var queue      = new QueueConfiguration(1, 100);
            var connection = new ConnectionConfiguration("testService", 10);
            var ndrc2      = new NetReceiverConfiguration(32192, "localhost", "testService");
            var pcc        = new ProxyCacheConfiguration(TimeSpan.FromSeconds(20000000));

            var proxy = new TestProxySystem(new ServerId("", 1), queue, connection, pcc, pcc,
                                            ndrc2,
                                            new AsyncTasksConfiguration(TimeSpan.FromMinutes(60000)),
                                            new AsyncTasksConfiguration(TimeSpan.FromMinutes(60000)),
                                            new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout));

            proxy.Build();
            proxy.Start();

            var distr = new ServerId("localhost", 22194);

            TestHelper.OpenDistributorHost(distr, connection);
            proxy.Distributor.SayIAmHere(distr);

            var provider = new IntHashConvertor();

            var hash        = provider.CalculateHashFromKey(10);
            var transaction = new Transaction(hash, "")
            {
                OperationName = OperationName.Read,
                OperationType = OperationType.Sync
            };

            Task.Factory.StartNew(() =>
            {
                Thread.Sleep(200);
                transaction.Complete();
                var data = new InnerData(transaction)
                {
                    Data = provider.SerializeValue(10)
                };
                proxy.Queue.ProxyDistributorQueue.Add(new ReadOperationCompleteCommand(data));
            });
            try
            {
                UserTransaction userTransaction;
                var             api  = proxy.CreateApi("", false, new IntHashConvertor());
                var             wait = api.Read(10, out userTransaction);

                Assert.AreEqual(10, wait);
                Assert.AreEqual(TransactionState.Complete, userTransaction.State);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }
            proxy.Dispose();
        }
Exemplo n.º 2
0
        public void DbModule_LocalAndRemoteData_Count()
        {
            var provider = new IntHashConvertor();

            var writer =
                new HashWriter(new HashMapConfiguration("TestLocalAndRemote", HashMapCreationMode.CreateNew, 2, 3,
                                                        HashFileType.Collector));

            writer.CreateMap();
            writer.SetServer(0, "localhost", 157, 157);
            writer.SetServer(1, "localhost", 11011, 157);
            writer.Save();

            _writer1.Build(157, "TestLocalAndRemote", 1);

            var       list  = new List <InnerData>();
            const int count = 100;

            for (int i = 0; i < count; i++)
            {
                var ev =
                    new InnerData(new Transaction(provider.CalculateHashFromKey(i), "")
                {
                    OperationName = OperationName.Create
                })
                {
                    Data        = CommonDataSerializer.Serialize(i),
                    Key         = CommonDataSerializer.Serialize(i),
                    Transaction = { Distributor = new ServerId("localhost", 22188) }
                };
                ev.Transaction.TableName = "Int";

                list.Add(ev);
            }

            TestHelper.OpenDistributorHostForDb(new ServerId("localhost", 22188), new ConnectionConfiguration("testService", 10));

            _writer1.Start();

            foreach (var data in list)
            {
                _writer1.Input.Process(data);
            }

            Thread.Sleep(1000);

            var mem = _writer1.Db.GetDbModules.First() as TestDbInMemory;

            Assert.AreNotEqual(count, mem.Local);
            Assert.AreNotEqual(count, mem.Remote);
            Assert.AreEqual(count, mem.Local + mem.Remote);

            _writer1.Dispose();
        }