Beispiel #1
0
 public void Dispose()
 {
     m_client.Dispose();
     m_mockPool.VerifyAll();
     m_mockProtocol.VerifyAll();
     m_mockProtocolFactory.VerifyAll();
 }
Beispiel #2
0
        public void MultiThreadedDataAccess()
        {
            //first load data
            for (int i = 0; i < 1000; i++)
            {
                var item = new CacheableTypeOk(i, 10000 + i, "aaa", new DateTime(2010, 10, 10), 1500 + i);
                _client.Put(item);
            }


            const int clients = 10;

            _requestsFinished = new Semaphore(0, clients);

            //CLIENTS parallel requests: each one uses a channel
            for (int i = 0; i < clients; i++)
            {
                ThreadPool.QueueUserWorkItem(delegate
                {
                    Thread.CurrentThread.Name = "client thread";
                    var client        = new CacheClient();
                    var clientChannel =
                        new TcpClientChannel(new TcpClientPool(1, 1, "localhost",
                                                               _serverPort));

                    client.Channel = clientChannel;


                    //reload both items by folder name
                    IList <CacheableTypeOk> items =
                        new List <CacheableTypeOk>(
                            client.GetMany <CacheableTypeOk>("IndexKeyValue < 1700"));
                    Assert.AreEqual(items.Count, 200);

                    _requestsFinished.Release();

                    client.Dispose();
                });
            }


            for (int i = 0; i < clients; i++)
            {
                _requestsFinished.WaitOne();
            }

            //CLIENTS parallel requests shared channel

            for (int i = 0; i < clients; i++)
            {
                ThreadPool.QueueUserWorkItem(delegate
                {
                    Thread.CurrentThread.Name = "client thread";


                    //reload both items by folder name
                    IList <CacheableTypeOk> items =
                        new List <CacheableTypeOk>(
                            _client.GetMany <CacheableTypeOk>("IndexKeyValue < 1700"));
                    Assert.AreEqual(items.Count, 200);

                    _requestsFinished.Release();
                });
            }


            for (int i = 0; i < clients; i++)
            {
                _requestsFinished.WaitOne();
            }
        }