You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by sebb <se...@gmail.com> on 2009/07/24 17:48:18 UTC

Re: svn commit: r797529 - in /tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test: AbandonPercentageTest.java BorrowWaitTest.java DefaultTestCase.java TestConcurrency.java

On 24/07/2009, fhanik@apache.org <fh...@apache.org> wrote:
> Author: fhanik
>  Date: Fri Jul 24 15:25:17 2009
>  New Revision: 797529
>
>  URL: http://svn.apache.org/viewvc?rev=797529&view=rev
>  Log:
>  update test cases
>
>  Modified:
>     tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/AbandonPercentageTest.java
>     tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/BorrowWaitTest.java
>     tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/DefaultTestCase.java
>     tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/TestConcurrency.java
>
>  Modified: tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/AbandonPercentageTest.java
>  URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/AbandonPercentageTest.java?rev=797529&r1=797528&r2=797529&view=diff
>  ==============================================================================
>  --- tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/AbandonPercentageTest.java (original)
>  +++ tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/AbandonPercentageTest.java Fri Jul 24 15:25:17 2009
>  @@ -38,7 +38,6 @@
>          this.datasource.getPoolProperties().setRemoveAbandoned(true);
>          this.datasource.getPoolProperties().setRemoveAbandonedTimeout(1);
>          Connection con = datasource.getConnection();
>  -        long start = System.currentTimeMillis();
>          assertEquals("Number of connections active/busy should be 1",1,datasource.getPool().getActive());
>          Thread.sleep(2000);
>          assertEquals("Number of connections active/busy should be 0",0,datasource.getPool().getActive());
>  @@ -56,7 +55,6 @@
>          this.datasource.getPoolProperties().setRemoveAbandoned(true);
>          this.datasource.getPoolProperties().setRemoveAbandonedTimeout(1);
>          Connection con = datasource.getConnection();
>  -        long start = System.currentTimeMillis();
>          assertEquals("Number of connections active/busy should be 1",1,datasource.getPool().getActive());
>          Thread.sleep(2000);
>          assertEquals("Number of connections active/busy should be 1",1,datasource.getPool().getActive());
>  @@ -75,7 +73,6 @@
>          this.datasource.getPoolProperties().setRemoveAbandonedTimeout(1);
>          this.datasource.getPoolProperties().setJdbcInterceptors(ResetAbandonedTimer.class.getName());
>          Connection con = datasource.getConnection();
>  -        long start = System.currentTimeMillis();
>          assertEquals("Number of connections active/busy should be 1",1,datasource.getPool().getActive());
>          for (int i=0; i<20; i++) {
>              Thread.sleep(200);
>  @@ -97,7 +94,6 @@
>          this.datasource.getPoolProperties().setRemoveAbandonedTimeout(1);
>          Connection[] con = new Connection[size];
>          con[0] = datasource.getConnection();
>  -        long start = System.currentTimeMillis();
>          assertEquals("Number of connections active/busy should be 1",1,datasource.getPool().getActive());
>          for (int i=1; i<25; i++) {
>              con[i] = datasource.getConnection();
>
>  Modified: tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/BorrowWaitTest.java
>  URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/BorrowWaitTest.java?rev=797529&r1=797528&r2=797529&view=diff
>  ==============================================================================
>  --- tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/BorrowWaitTest.java (original)
>  +++ tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/BorrowWaitTest.java Fri Jul 24 15:25:17 2009
>  @@ -32,10 +32,10 @@
>          this.datasource.setMaxActive(1);
>          this.datasource.setMaxWait(wait);
>          Connection con = datasource.getConnection();
>  -        long start = System.currentTimeMillis();
>          try {
>              Connection con2 = datasource.getConnection();
>              assertFalse("This should not happen, connection should be unavailable.",true);
>  +            con2.close();
>          }catch (SQLException x) {
>              long delta = System.currentTimeMillis();
>              boolean inrange = Math.abs(wait-delta) < 1000;
>
>  Modified: tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/DefaultTestCase.java
>  URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/DefaultTestCase.java?rev=797529&r1=797528&r2=797529&view=diff
>  ==============================================================================
>  --- tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/DefaultTestCase.java (original)
>  +++ tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/DefaultTestCase.java Fri Jul 24 15:25:17 2009
>  @@ -52,6 +52,7 @@
>      public org.apache.tomcat.jdbc.pool.DataSource createDefaultDataSource() {
>          org.apache.tomcat.jdbc.pool.DataSource datasource = null;
>          PoolConfiguration p = new DefaultProperties();
>  +        p.setFairQueue(false);
>          p.setJmxEnabled(false);
>          p.setTestWhileIdle(false);
>          p.setTestOnBorrow(false);
>  @@ -77,9 +78,7 @@
>
>      protected void transferProperties() {
>          try {
>  -            BasicDataSourceFactory factory = new BasicDataSourceFactory();
>              Properties p = new Properties();
>  -
>              for (int i=0; i< ALL_PROPERTIES.length; i++) {
>                  String name = "get" + Character.toUpperCase(ALL_PROPERTIES[i].charAt(0)) + ALL_PROPERTIES[i].substring(1);
>                  String bname = "is" + name.substring(3);
>
>  Modified: tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/TestConcurrency.java
>  URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/TestConcurrency.java?rev=797529&r1=797528&r2=797529&view=diff
>  ==============================================================================
>  --- tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/TestConcurrency.java (original)
>  +++ tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/TestConcurrency.java Fri Jul 24 15:25:17 2009
>  @@ -31,11 +31,13 @@
>          ds.getPoolProperties().setTestWhileIdle(true);
>          ds.getPoolProperties().setMinEvictableIdleTimeMillis(750);
>          ds.getPoolProperties().setTimeBetweenEvictionRunsMillis(25);
>  +        ds.setFairQueue(true);
>      }
>
>      @Override
>      protected void tearDown() throws Exception {
>          Driver.reset();
>  +        ds.close(true);
>          super.tearDown();
>      }
>
>  @@ -92,8 +94,8 @@
>      public void testBrutal() throws Exception {
>          ds.getPoolProperties().setRemoveAbandoned(false);
>          ds.getPoolProperties().setRemoveAbandonedTimeout(1);
>  -        ds.getPoolProperties().setMinEvictableIdleTimeMillis(10);
>  -        ds.getPoolProperties().setTimeBetweenEvictionRunsMillis(-1);
>  +        ds.getPoolProperties().setMinEvictableIdleTimeMillis(100);
>  +        ds.getPoolProperties().setTimeBetweenEvictionRunsMillis(10);
>          ds.getConnection().close();
>          final int iter = 100000 * 10;
>          final AtomicInteger loopcount = new AtomicInteger(0);
>  @@ -119,7 +121,7 @@
>          }
>          try {
>              while (loopcount.get()<iter) {
>  -                //assertEquals("Size comparison:",10, ds.getPool().getSize());
>  +                assertTrue("Size comparison(less than 11):",ds.getPool().getSize()<=10);

I think you need to change testSimple() in the same way - either that,
or wait a short while after starting the threads to ensure that they
have all grabbed their connections.

>                  ds.getPool().testAllIdle();
>                  ds.getPool().checkAbandoned();
>                  ds.getPool().checkIdle();
>  @@ -137,8 +139,56 @@
>          assertEquals("Idle comparison:",10, ds.getPool().getIdle());
>          assertEquals("Used comparison:",0, ds.getPool().getActive());
>          assertEquals("Connect count",10,Driver.connectCount.get());
>  -
>      }
>
>  +    public void testBrutalNonFair() throws Exception {
>  +        ds.getPoolProperties().setRemoveAbandoned(false);
>  +        ds.getPoolProperties().setRemoveAbandonedTimeout(1);
>  +        ds.getPoolProperties().setMinEvictableIdleTimeMillis(100);
>  +        ds.getPoolProperties().setTimeBetweenEvictionRunsMillis(10);
>  +        ds.getConnection().close();
>  +        final int iter = 100000 * 10;
>  +        final AtomicInteger loopcount = new AtomicInteger(0);
>  +        final Runnable run = new Runnable() {
>  +            public void run() {
>  +                try {
>  +                    while (loopcount.incrementAndGet() < iter) {
>  +                        Connection con = ds.getConnection();
>  +                        con.close();
>  +                    }
>  +                }catch (Exception x) {
>  +                    loopcount.set(iter); //stops the test
>  +                    x.printStackTrace();
>  +                }
>  +            }
>  +        };
>  +        Thread[] threads = new Thread[20];
>  +        for (int i=0; i<threads.length; i++) {
>  +            threads[i] = new Thread(run);
>  +        }
>  +        for (int i=0; i<threads.length; i++) {
>  +            threads[i].start();
>  +        }
>  +        try {
>  +            while (loopcount.get()<iter) {
>  +                assertTrue("Size comparison(less than 11):",ds.getPool().getSize()<=10);
>  +                ds.getPool().testAllIdle();
>  +                ds.getPool().checkAbandoned();
>  +                ds.getPool().checkIdle();
>  +            }
>  +        }catch (Exception x) {
>  +            loopcount.set(iter); //stops the test
>  +            x.printStackTrace();
>  +        }
>  +        for (int i=0; i<threads.length; i++) {
>  +            threads[i].join();
>  +        }
>  +        System.out.println("Connect count:"+Driver.connectCount.get());
>  +        System.out.println("DisConnect count:"+Driver.disconnectCount.get());
>  +        assertEquals("Size comparison:",10, ds.getPool().getSize());
>  +        assertEquals("Idle comparison:",10, ds.getPool().getIdle());
>  +        assertEquals("Used comparison:",0, ds.getPool().getActive());
>  +        assertEquals("Connect count",10,Driver.connectCount.get());
>  +    }
>
>   }
>
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
>  For additional commands, e-mail: dev-help@tomcat.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org