Exemplo n.º 1
0
        public void Build(int countReplics, int distrServer1, int distrServer12, string hashFile)
        {
            _q = new GlobalQueueInner();
            GlobalQueue.SetQueue(_q);

            var connection = new ConnectionConfiguration("testService", 10);

            var distrconfig = new DistributorHashConfiguration(countReplics);
            var queueconfig = new QueueConfiguration(1, 100);

            _dnet = new DistributorNetModule(connection,
                                             new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout));
            Distributor = new DistributorModule(new AsyncTasksConfiguration(TimeSpan.FromMinutes(5)),
                                                new AsyncTasksConfiguration(TimeSpan.FromMinutes(5)), distrconfig,
                                                queueconfig, _dnet,
                                                new ServerId("localhost", distrServer1),
                                                new ServerId("localhost", distrServer12),
                                                new HashMapConfiguration(hashFile,
                                                                         HashMapCreationMode.ReadFromFile,
                                                                         1, countReplics, HashFileType.Distributor));

            _dnet.SetDistributor(Distributor);

            _tranc = new TransactionModule(new QueueConfiguration(1, 1000), _dnet, new TransactionConfiguration(4),
                                           distrconfig);
            Main =
                new MainLogicModule(new DistributorTimeoutCache(TimeSpan.FromSeconds(200), TimeSpan.FromSeconds(200)),
                                    Distributor, _tranc);

            var netReceive1 = new NetReceiverConfiguration(distrServer1, "localhost", "testService");
            var netReceive2 = new NetReceiverConfiguration(distrServer12, "localhost", "testService");

            Input     = new InputModuleWithParallel(new QueueConfiguration(2, 100000), Main, _tranc);
            _receiver = new NetDistributorReceiver(Main, Input, Distributor, netReceive1, netReceive2);
        }
Exemplo n.º 2
0
        public DistributorModule(
            AsyncTasksConfiguration asyncPing,
            AsyncTasksConfiguration asyncCheck,
            DistributorHashConfiguration configuration,
            QueueConfiguration queueConfiguration,
            DistributorNetModule distributorNet,
            ServerId localfordb,
            ServerId localforproxy,
            HashMapConfiguration hashMapConfiguration)
        {
            Contract.Requires(configuration != null);
            Contract.Requires(queueConfiguration != null);
            Contract.Requires(distributorNet != null);
            Contract.Requires(localfordb != null);
            Contract.Requires(localforproxy != null);
            Contract.Requires(asyncPing != null);
            _asyncPing       = asyncPing;
            _asyncTaskModule = new AsyncTaskModule(queueConfiguration);

            _queueConfiguration         = queueConfiguration;
            _modelOfDbWriters           = new WriterSystemModel(configuration, hashMapConfiguration);
            _modelOfAnotherDistributors = new DistributorSystemModel();
            _distributorNet             = distributorNet;
            _localfordb    = localfordb;
            _localforproxy = localforproxy;
            _asyncCheck    = asyncCheck;
            _queue         = GlobalQueue.Queue;
        }
Exemplo n.º 3
0
        public DistributorModule(AsyncTaskModule async, AsyncDbWorkModule asyncDbWork,
                                 WriterNetModule writerNet,
                                 ServerId local,
                                 HashMapConfiguration hashMapConfiguration,
                                 QueueConfiguration configuration,
                                 DbModuleCollection dbModuleCollection,
                                 AsyncTasksConfiguration pingConfiguration = null)
        {
            Contract.Requires(local != null);
            Contract.Requires(writerNet != null);
            Contract.Requires(configuration != null);
            Contract.Requires(asyncDbWork != null);
            Contract.Requires(async != null);
            Contract.Assert(dbModuleCollection != null);

            _async              = async;
            _asyncDbWork        = asyncDbWork;
            _model              = new WriterModel(local, hashMapConfiguration);
            _writerNet          = writerNet;
            _queueConfiguration = configuration;
            _dbModuleCollection = dbModuleCollection;
            _queue              = GlobalQueue.Queue;

            var ping = TimeSpan.FromMinutes(1);

            if (pingConfiguration != null)
            {
                ping = pingConfiguration.TimeoutPeriod;
            }

            _async.AddAsyncTask(
                new AsyncDataPeriod(ping, Ping, AsyncTasksNames.AsyncPing, -1), false);
        }
Exemplo n.º 4
0
        public void Build(int storageServer, string hashFile, int countReplics)
        {
            Q = new GlobalQueueInner();
            GlobalQueue.SetQueue(Q);

            var queueConfiguration   = new QueueConfiguration(1, 1000);
            var hashMapConfiguration = new HashMapConfiguration(hashFile,
                                                                HashMapCreationMode.ReadFromFile, 1, countReplics, HashFileType.Writer);
            var local = new ServerId("localhost", storageServer);

            _net = new WriterNetModule(new ConnectionConfiguration("testService", 10),
                                       new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout));

            Db = new DbModuleCollection();
            Db.AddDbModule(new TestDbInMemory());

            _async  = new AsyncTaskModule(new QueueConfiguration(1, 10));
            Restore = new AsyncDbWorkModule(_net, _async, Db,
                                            new RestoreModuleConfiguration(10, TimeSpan.FromMinutes(100)),
                                            new RestoreModuleConfiguration(10, TimeSpan.FromMilliseconds(100)),
                                            new RestoreModuleConfiguration(-1, TimeSpan.FromHours(1), false, TimeSpan.FromHours(1)),
                                            new QueueConfiguration(1, 100), local);

            Distributor = new DistributorModule(_async, Restore, _net, local,
                                                hashMapConfiguration, new QueueConfiguration(2, 10), Db);
            _mainС = new MainLogicModule(Distributor, Db);
            Input  = new InputModule(_mainС, queueConfiguration);
            _netRc = new NetWriterReceiver(Input, Distributor,
                                           new NetReceiverConfiguration(storageServer, "localhost", "testService"),
                                           new NetReceiverConfiguration(1, "fake", "fake"));
        }
Exemplo n.º 5
0
 public InputModule(MainLogicModule mainLogic, QueueConfiguration queueConfiguration)
 {
     Contract.Requires(queueConfiguration != null);
     Contract.Requires(mainLogic != null);
     _queueConfiguration = queueConfiguration;
     _mainLogicModule    = mainLogic;
     _queue = GlobalQueue.Queue;
 }
Exemplo n.º 6
0
        public MainLogicModule(DistributorModule distributor, DbModule db)
        {
            Contract.Requires(distributor != null);
            Contract.Requires(db != null);

            _db          = db;
            _distributor = distributor;
            _queue       = GlobalQueue.Queue;
        }
Exemplo n.º 7
0
 public MainLogicModule(DistributorTimeoutCache cache, DistributorModule distributor,
                        TransactionModule transaction)
 {
     Contract.Requires(cache != null);
     Contract.Requires(distributor != null);
     Contract.Requires(transaction != null);
     _cache       = cache;
     _distributor = distributor;
     _transaction = transaction;
     _queue       = GlobalQueue.Queue;
 }
Exemplo n.º 8
0
 public ProxyDistributorModule(AsyncProxyCache asyncProxyCache, ProxyNetModule net,
                               QueueConfiguration queueConfiguration, ServerId local,
                               AsyncTasksConfiguration asyncGetData, AsyncTasksConfiguration asyncPing)
 {
     _asyncProxyCache        = asyncProxyCache;
     _asynPing               = asyncPing;
     _queueConfiguration     = queueConfiguration;
     _distributorSystemModel = new DistributorSystemModel();
     _asynGetData            = asyncGetData;
     _net   = net;
     _local = local;
     _async = new AsyncTaskModule(queueConfiguration);
     _queue = GlobalQueue.Queue;
 }
Exemplo n.º 9
0
        public TransactionModule(QueueConfiguration configuration, INetModule net, TransactionConfiguration transactionConfiguration,
                                 DistributorHashConfiguration distributorHashConfiguration)
        {
            Contract.Requires(net != null);
            Contract.Requires(transactionConfiguration != null);
            Contract.Requires(distributorHashConfiguration != null);
            Contract.Requires(configuration != null);

            _queueConfiguration = configuration;
            _transactionPool    = new TransactionPool(transactionConfiguration.ElementsCount, net,
                                                      distributorHashConfiguration);
            CountReplics = distributorHashConfiguration.CountReplics;
            _net         = net;
            _queue       = GlobalQueue.Queue;
        }
Exemplo n.º 10
0
        public ProxyInputModuleCommon(ProxyMainLogicModule mainLogic, QueueConfiguration queueConfiguration,
                                      ProxyDistributorModule distributor, AsyncProxyCache asyncProxyCache)
        {
            Contract.Requires(queueConfiguration != null);
            Contract.Requires(mainLogic != null);
            Contract.Requires(distributor != null);
            Contract.Requires(asyncProxyCache != null);

            _queueConfiguration = queueConfiguration;
            _distributor        = distributor;
            _asyncProxyCache    = asyncProxyCache;
            _mainLogic          = mainLogic;
            _queue = GlobalQueue.Queue;
            _apis  = new Dictionary <string, ProxyInputModule>();
        }
Exemplo n.º 11
0
        public TransferRestoreModule(RestoreModuleConfiguration configuration, WriterNetModule writerNet,
                                     AsyncTaskModule asyncTaskModule, DbModuleCollection db, ServerId local,
                                     QueueConfiguration queueConfiguration)
            : base(writerNet, asyncTaskModule)
        {
            Contract.Requires(configuration != null);
            Contract.Requires(db != null);
            Contract.Requires(local != null);
            Contract.Requires(queueConfiguration != null);

            _queue              = GlobalQueue.Queue;
            _db                 = db;
            _configuration      = configuration;
            _local              = local;
            _queueConfiguration = queueConfiguration;
        }
Exemplo n.º 12
0
        public override void Build()
        {
            var q = new GlobalQueueInner();

            GlobalQueue.SetQueue(q);

            var db = new DbModuleCollection();

            var net = new WriterNetModule(_connectionConfiguration, _connectionTimeoutConfiguration);

            var async   = new AsyncTaskModule(_queueConfiguration);
            var restore = new AsyncDbWorkModule(net, async, db, _initiatorRestoreConfiguration,
                                                _transferRestoreConfiguration, _timeoutRestoreConfiguration,
                                                _queueConfigurationRestore, _local, _isNeedRestore);

            var distributor = new DistributorModule(async, restore, net, _local, _hashMapConfiguration,
                                                    _queueConfiguration, db);

            Distributor = distributor;
            DbModule    = db;

            var main     = new MainLogicModule(distributor, db);
            var input    = new InputModule(main, _queueConfiguration);
            var receiver = new NetWriterReceiver(input, distributor, _receiverConfigurationForWrite,
                                                 _receiverConfigurationForCollector);

            AddModule(distributor);
            AddModule(input);
            AddModule(db);
            AddModule(async);
            AddModule(restore);
            AddModule(main);
            AddModule(receiver);
            AddModule(q);

            AddModuleDispose(receiver);
            AddModuleDispose(restore);
            AddModuleDispose(async);
            AddModuleDispose(q);
            AddModuleDispose(input);
            AddModuleDispose(main);
            AddModuleDispose(distributor);
            AddModuleDispose(db);
            AddModuleDispose(net);
        }
Exemplo n.º 13
0
        public override void Build()
        {
            var q = new GlobalQueueInner();

            GlobalQueue.SetQueue(q);

            var cache = new DistributorTimeoutCache(_cacheConfiguration.TimeAliveBeforeDeleteMls,
                                                    _cacheConfiguration.TimeAliveAfterUpdateMls);
            var net         = CreateNetModule(_connectionConfiguration);
            var distributor = new DistributorModule(_pingConfig, _checkConfig, _distributorHashConfiguration,
                                                    new QueueConfiguration(1, 1000), net,
                                                    _localfordb, _localforproxy, _hashMapConfiguration);

            Distributor = distributor;

            net.SetDistributor(distributor);
            var transaction = new TransactionModule(_queueConfiguration, net, _transactionConfiguration,
                                                    _distributorHashConfiguration);
            var main = new MainLogicModule(cache, distributor, transaction);

            cache.SetMainLogicModule(main);
            var input   = new InputModuleWithParallel(_queueConfiguration, main, transaction);
            var receive = new NetDistributorReceiver(main, input, distributor, _receiverConfigurationForDb,
                                                     _receiverConfigurationForProxy);

            AddModule(receive);
            AddModule(transaction);
            AddModule(input);
            AddModule(main);
            AddModule(net);
            AddModule(distributor);
            AddModule(q);

            AddModuleDispose(receive);
            AddModuleDispose(q);
            AddModuleDispose(input);
            AddModuleDispose(cache);
            AddModuleDispose(main);
            AddModuleDispose(distributor);
            AddModuleDispose(transaction);
            AddModuleDispose(net);
        }
Exemplo n.º 14
0
        public override void Build()
        {
            var q = new GlobalQueueInner();

            GlobalQueue.SetQueue(q);

            var asyncCache = new AsyncProxyCache(_asyncCacheConfiguration.TimeAliveSec);

            var net         = new ProxyNetModule(_connectionConfiguration, _connectionTimeoutConfiguration);
            var distributor = new ProxyDistributorModule(asyncCache, net, new QueueConfiguration(1, 1000), _local,
                                                         _asyncGetData, _asyncPing);

            net.SetDistributor(distributor);
            var cache = new ProxyCache(_cacheConfiguration.TimeAliveSec);
            var main  = new ProxyMainLogicModule(distributor, net, cache);
            var input = new ProxyInputModuleCommon(main, _queueConfiguration, distributor, asyncCache);

            CreateApi = input.CreateApi;

            var receive = new ProxyNetReceiver(distributor, _netReceiverConfiguration);

            AddModule(input);
            AddModule(main);
            AddModule(cache);
            AddModule(asyncCache);
            AddModule(net);
            AddModule(distributor);
            AddModule(receive);
            AddModule(q);

            AddModuleDispose(distributor);
            AddModuleDispose(receive);
            AddModuleDispose(q);
            AddModuleDispose(input);
            AddModuleDispose(asyncCache);
            AddModuleDispose(main);
            AddModuleDispose(net);
            AddModuleDispose(cache);
        }
Exemplo n.º 15
0
        public void InputModuleWithParallel_ProcessAsync_SendToOneServersAndTimeoutInCache_Success()
        {
            const int distrServer1   = 22166;
            const int distrServer2   = 23166;
            const int storageServer1 = 22167;

            var q1 = new GlobalQueueInner();

            var writer =
                new HashWriter(new HashMapConfiguration("testAsyncTrans1S", HashMapCreationMode.CreateNew, 1, 1, HashFileType.Distributor));

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

            #region hell

            GlobalQueue.SetQueue(q1);

            var connection = new ConnectionConfiguration("testService", 10);

            var distrconfig = new DistributorHashConfiguration(1);
            var queueconfig = new QueueConfiguration(1, 100);
            var dnet        = new DistributorNetModule(connection,
                                                       new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout));
            var ddistributor = new DistributorModule(new AsyncTasksConfiguration(TimeSpan.FromMinutes(5)),
                                                     new AsyncTasksConfiguration(TimeSpan.FromMinutes(5)), distrconfig,
                                                     queueconfig, dnet,
                                                     new ServerId("localhost", distrServer1),
                                                     new ServerId("localhost", distrServer2),
                                                     new HashMapConfiguration("testAsyncTrans1S",
                                                                              HashMapCreationMode.ReadFromFile,
                                                                              1, 1, HashFileType.Distributor));
            dnet.SetDistributor(ddistributor);

            var tranc = new TransactionModule(new QueueConfiguration(1, 1000), dnet, new TransactionConfiguration(4),
                                              distrconfig);
            var cache = new DistributorTimeoutCache(TimeSpan.FromMilliseconds(2000), TimeSpan.FromMilliseconds(200000));
            var main  = new MainLogicModule(cache, ddistributor, tranc);
            cache.SetMainLogicModule(main);

            var netReceive4  = new NetReceiverConfiguration(distrServer1, "localhost", "testService");
            var netReceive42 = new NetReceiverConfiguration(distrServer2, "localhost", "testService");
            var input        = new InputModuleWithParallel(new QueueConfiguration(2, 100000), main, tranc);
            var receiver4    = new NetDistributorReceiver(main, input, ddistributor, netReceive4, netReceive42);

            #endregion

            var s = TestHelper.OpenWriterHost(new ServerId("localhost", storageServer1),
                                              new ConnectionConfiguration("testService", 10));

            main.Start();
            receiver4.Start();
            input.Start();
            dnet.Start();
            ddistributor.Start();

            q1.Start();

            var       list  = new List <InnerData>();
            const int count = 1;
            for (int i = 1; i < count + 1; i++)
            {
                var ev =
                    new InnerData(new Transaction(HashConvertor.GetString(i.ToString(CultureInfo.InvariantCulture)), "")
                {
                    OperationName = OperationName.Create,
                    OperationType = OperationType.Async
                })
                {
                    Data = CommonDataSerializer.Serialize(i)
                };
                list.Add(ev);
            }

            foreach (var data in list)
            {
                input.ProcessAsync(data);
            }

            Thread.Sleep(TimeSpan.FromMilliseconds(1000));

            Assert.AreEqual(count, s.Value);

            foreach (var data in list)
            {
                var transaction = main.GetTransactionState(data.Transaction.UserTransaction);
                Assert.AreEqual(TransactionState.TransactionInProcess, transaction.State);
            }

            Thread.Sleep(TimeSpan.FromMilliseconds(2000));
            foreach (var data in list)
            {
                var transaction = main.GetTransactionState(data.Transaction.UserTransaction);
                if (transaction.State == TransactionState.DontExist)
                {
                    Thread.Sleep(1000);
                }
                transaction = main.GetTransactionState(data.Transaction.UserTransaction);
                Assert.AreEqual(TransactionState.Error, transaction.State);
            }

            q1.Dispose();

            ddistributor.Dispose();
            dnet.Dispose();
            cache.Dispose();
        }
Exemplo n.º 16
0
        public void ProxyDistributorModule_SayIAmHere_AddDistributor()
        {
            const int server1  = 22250;
            const int server2  = 22251;
            const int server3  = 22252;
            const int server4  = 22253;
            const int server42 = 23253;
            const int server5  = 22254;
            const int server52 = 23254;

            var q1 = new GlobalQueueInner();
            var q2 = new GlobalQueueInner();
            var q3 = new GlobalQueueInner();

            GlobalQueue.SetQueue(q1);
            var queue     = new QueueConfiguration(1, 1000);
            var netconfig = new ConnectionConfiguration("testService", 10);

            var netReceive = new NetReceiverConfiguration(server1, "localhost", "testService");
            var net        = new ProxyNetModule(netconfig,
                                                new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout));
            var distributor = new ProxyDistributorModule(new AsyncProxyCache(TimeSpan.FromMinutes(100)), net, queue, new ServerId("localhost", server1),
                                                         new AsyncTasksConfiguration(TimeSpan.FromDays(1)),
                                                         new AsyncTasksConfiguration(TimeSpan.FromDays(1)));

            net.SetDistributor(distributor);
            var receive = new ProxyNetReceiver(distributor, netReceive);

            GlobalQueue.SetQueue(q2);

            var netReceive2 = new NetReceiverConfiguration(server2, "localhost", "testService");
            var net2        = new ProxyNetModule(netconfig,
                                                 new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout));
            var distributor2 = new ProxyDistributorModule(new AsyncProxyCache(TimeSpan.FromMinutes(100)), net2, queue, new ServerId("localhost", server2),
                                                          new AsyncTasksConfiguration(TimeSpan.FromDays(1)),
                                                          new AsyncTasksConfiguration(TimeSpan.FromDays(1)));

            net2.SetDistributor(distributor2);
            var receive2 = new ProxyNetReceiver(distributor2, netReceive2);

            GlobalQueue.SetQueue(q3);

            var netReceive3 = new NetReceiverConfiguration(server3, "localhost", "testService");
            var net3        = new ProxyNetModule(netconfig,
                                                 new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout));
            var distributor3 = new ProxyDistributorModule(new AsyncProxyCache(TimeSpan.FromMinutes(100)), net3, queue, new ServerId("localhost", server3),
                                                          new AsyncTasksConfiguration(TimeSpan.FromDays(1)),
                                                          new AsyncTasksConfiguration(TimeSpan.FromDays(1)));

            net3.SetDistributor(distributor3);
            var receive3 = new ProxyNetReceiver(distributor3, netReceive3);

            var distrconfig = new DistributorHashConfiguration(2);
            var queueconfig = new QueueConfiguration(1, 100);
            var dnet        = new DistributorNetModule(netconfig,
                                                       new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout));
            var ddistributor = new DistributorModule(new AsyncTasksConfiguration(TimeSpan.FromMinutes(5)),
                                                     new AsyncTasksConfiguration(TimeSpan.FromMinutes(5)), distrconfig,
                                                     queueconfig, dnet, new ServerId("localhost", server4),
                                                     new ServerId("localhost", server42),
                                                     new HashMapConfiguration("test7", HashMapCreationMode.CreateNew, 1, 1, HashFileType.Distributor));

            dnet.SetDistributor(ddistributor);

            var tranc = new TransactionModule(new QueueConfiguration(1, 1000), dnet, new TransactionConfiguration(4),
                                              new DistributorHashConfiguration(1));
            var main = new MainLogicModule(new DistributorTimeoutCache(new TimeSpan(), new TimeSpan()), ddistributor,
                                           tranc);
            var netReceive4  = new NetReceiverConfiguration(server4, "localhost", "testService");
            var netReceive42 = new NetReceiverConfiguration(server42, "localhost", "testService");

            var input     = new InputModuleWithParallel(new QueueConfiguration(1, 1), main, tranc);
            var receiver4 = new NetDistributorReceiver(main, input, ddistributor, netReceive4, netReceive42);

            GlobalQueue.SetQueue(q1);
            var dnet2 = new DistributorNetModule(netconfig,
                                                 new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout));
            var ddistributor2 = new DistributorModule(new AsyncTasksConfiguration(TimeSpan.FromMinutes(5)),
                                                      new AsyncTasksConfiguration(TimeSpan.FromMinutes(5)), distrconfig,
                                                      queueconfig, dnet2,
                                                      new ServerId("localhost", server5),
                                                      new ServerId("localhost", server52),
                                                      new HashMapConfiguration("test6", HashMapCreationMode.CreateNew, 1, 1, HashFileType.Distributor));

            dnet2.SetDistributor(ddistributor2);

            var netReceive5  = new NetReceiverConfiguration(server5, "localhost", "testService");
            var netReceive52 = new NetReceiverConfiguration(server52, "localhost", "testService");
            var receiver5    = new NetDistributorReceiver(main,
                                                          new InputModuleWithParallel(new QueueConfiguration(1, 1), main,
                                                                                      tranc),
                                                          ddistributor2, netReceive5, netReceive52);

            receive.Start();
            receive2.Start();
            receive3.Start();
            receiver4.Start();
            receiver5.Start();
            net.Start();
            net2.Start();
            net3.Start();
            distributor.Start();
            distributor2.Start();
            distributor3.Start();

            dnet.Start();
            dnet2.Start();
            ddistributor.Start();
            ddistributor2.Start();

            q1.Start();
            q2.Start();
            q3.Start();

            distributor.SayIAmHere(new ServerId("localhost", server42));
            distributor2.SayIAmHere(new ServerId("localhost", server42));

            var privateObject = new PrivateObject(distributor);
            var dsm1          = (DistributorSystemModel)privateObject.GetField("_distributorSystemModel");

            privateObject = new PrivateObject(distributor2);
            var dsm2 = (DistributorSystemModel)privateObject.GetField("_distributorSystemModel");

            Assert.AreEqual(1, dsm1.GetDistributorsList().Count);
            Assert.AreEqual(1, dsm2.GetDistributorsList().Count);

            ddistributor2.SayIAmHereRemoteResult(new ServerId("localhost", server42));

            Thread.Sleep(TimeSpan.FromMilliseconds(300));

            privateObject = new PrivateObject(ddistributor);
            var mad1 =
                (Impl.DistributorModules.Model.DistributorSystemModel)
                privateObject.GetField("_modelOfAnotherDistributors");

            privateObject = new PrivateObject(ddistributor2);
            var mad2 =
                (Impl.DistributorModules.Model.DistributorSystemModel)
                privateObject.GetField("_modelOfAnotherDistributors");

            Thread.Sleep(400);

            Assert.AreEqual(1, mad1.GetDistributorList().Count);
            Assert.AreEqual(1, mad2.GetDistributorList().Count);

            distributor3.SayIAmHere(new ServerId("localhost", server52));

            privateObject = new PrivateObject(distributor3);
            var dsm3 = (DistributorSystemModel)privateObject.GetField("_distributorSystemModel");

            Assert.AreEqual(2, dsm3.GetDistributorsList().Count);

            q1.Dispose();
            q2.Dispose();
            q3.Dispose();

            net.Dispose();
            net2.Dispose();
            net3.Dispose();
            dnet.Dispose();
            dnet2.Dispose();

            ddistributor.Dispose();
            ddistributor2.Dispose();

            distributor.Dispose();
            distributor2.Dispose();
            distributor3.Dispose();
        }