Example #1
0
        public void TestBadConnection()
        {
            int MAX_CONNECTIONS            = 3;
            ObjectPoolConfiguration config = new ObjectPoolConfiguration();

            config.MaxObjects = (MAX_CONNECTIONS);
            config.MaxIdle    = (MAX_CONNECTIONS);
            config.MinIdle    = (MAX_CONNECTIONS);
            config.MinEvictableIdleTimeMillis = (60 * 1000);
            config.MaxWait = (60 * 1000);
            MyTestConnectionFactory fact = new MyTestConnectionFactory();

            ObjectPool <MyTestConnection> pool = new ObjectPool <MyTestConnection>(fact, config);

            //borrow first connection and return
            MyTestConnection conn = pool.BorrowObject();

            Assert.AreEqual(1, fact.TotalCreatedConnections);
            pool.ReturnObject(conn);
            Assert.AreEqual(1, fact.TotalCreatedConnections);

            //re-borrow same connection and return
            conn = pool.BorrowObject();
            Assert.AreEqual(1, fact.TotalCreatedConnections);
            pool.ReturnObject(conn);
            Assert.AreEqual(1, fact.TotalCreatedConnections);

            //dispose and make sure we get a new connection
            conn.Dispose();
            conn = pool.BorrowObject();
            Assert.AreEqual(2, fact.TotalCreatedConnections);
            pool.ReturnObject(conn);
            Assert.AreEqual(2, fact.TotalCreatedConnections);
        }
Example #2
0
 public void Run()
 {
     try
     {
         for (int i = 0; i < _numIterations; i++)
         {
             MyTestConnection con =
                 _pool.BorrowObject();
             Thread.Sleep(300);
             _pool.ReturnObject(con);
         }
     }
     catch (Exception e)
     {
         _exception = e;
     }
 }
Example #3
0
        public void TestIdleCleanup()
        {
            ObjectPoolConfiguration config = new ObjectPoolConfiguration();

            config.MaxObjects = (3);
            config.MaxIdle    = (2);
            config.MinIdle    = (1);
            config.MinEvictableIdleTimeMillis = (3000);
            config.MaxWait = (60 * 1000);
            MyTestConnectionFactory fact = new MyTestConnectionFactory();

            ObjectPool <MyTestConnection> pool = new ObjectPool <MyTestConnection>(fact, config);

            MyTestConnection conn1 = (MyTestConnection)pool.BorrowObject();
            MyTestConnection conn2 = (MyTestConnection)pool.BorrowObject();
            MyTestConnection conn3 = (MyTestConnection)pool.BorrowObject();

            Assert.AreEqual(3, fact.TotalCreatedConnections);
            pool.ReturnObject(conn1);
            Assert.AreEqual(1, pool.GetStatistics().NumIdle);
            pool.ReturnObject(conn2);
            Assert.AreEqual(2, pool.GetStatistics().NumIdle);
            pool.ReturnObject(conn3);
            Assert.AreEqual(2, pool.GetStatistics().NumIdle);
            Assert.AreEqual(false, conn1.IsGood);
            Assert.AreEqual(true, conn2.IsGood);
            Assert.AreEqual(true, conn3.IsGood);
            Thread.Sleep(((int)(config.MinEvictableIdleTimeMillis + 1000)));
            MyTestConnection conn4 = (MyTestConnection)pool.BorrowObject();

            Assert.AreSame(conn3, conn4);
            Assert.AreEqual(false, conn1.IsGood);
            Assert.AreEqual(false, conn2.IsGood);
            Assert.AreEqual(true, conn3.IsGood);
            Assert.AreEqual(true, conn4.IsGood);
        }