summaryrefslogtreecommitdiff
path: root/src/test/java/com/zaxxer/hikari/pool/TestMBean.java
diff options
context:
space:
mode:
authorApollon Oikonomopoulos <apoikos@debian.org>2017-09-13 00:26:37 +0300
committerApollon Oikonomopoulos <apoikos@debian.org>2017-09-13 00:26:37 +0300
commit808d040ea9d760bf468621984a3f2de865d35e7c (patch)
tree520db44f3458bcb02a60baacff82408fcfb49840 /src/test/java/com/zaxxer/hikari/pool/TestMBean.java
parentbd7b6679cea5620446718911de7a6764f81a9a7a (diff)
New upstream version 2.7.1
Diffstat (limited to 'src/test/java/com/zaxxer/hikari/pool/TestMBean.java')
-rw-r--r--src/test/java/com/zaxxer/hikari/pool/TestMBean.java93
1 files changed, 73 insertions, 20 deletions
diff --git a/src/test/java/com/zaxxer/hikari/pool/TestMBean.java b/src/test/java/com/zaxxer/hikari/pool/TestMBean.java
index 55ba733..a77c960 100644
--- a/src/test/java/com/zaxxer/hikari/pool/TestMBean.java
+++ b/src/test/java/com/zaxxer/hikari/pool/TestMBean.java
@@ -15,30 +15,83 @@
*/
package com.zaxxer.hikari.pool;
-import static com.zaxxer.hikari.pool.TestElf.newHikariConfig;
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+import com.zaxxer.hikari.HikariPoolMXBean;
+import org.junit.Test;
+import javax.management.JMX;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import java.lang.management.ManagementFactory;
+import java.sql.Connection;
import java.sql.SQLException;
+import java.util.concurrent.TimeUnit;
-import org.junit.Test;
-
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
+import static com.zaxxer.hikari.pool.TestElf.newHikariConfig;
+import static org.junit.Assert.assertEquals;
public class TestMBean
{
- @Test
- public void testMBeanRegistration() throws SQLException
- {
- HikariConfig config = newHikariConfig();
- config.setMinimumIdle(0);
- config.setMaximumPoolSize(1);
- config.setRegisterMbeans(true);
- config.setConnectionTimeout(2800);
- config.setConnectionTestQuery("VALUES 1");
- config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
-
- try (HikariDataSource ds = new HikariDataSource(config)) {
- // Close immediately
- }
- }
+ @Test
+ public void testMBeanRegistration() throws SQLException {
+ HikariConfig config = newHikariConfig();
+ config.setMinimumIdle(0);
+ config.setMaximumPoolSize(1);
+ config.setRegisterMbeans(true);
+ config.setConnectionTimeout(2800);
+ config.setConnectionTestQuery("VALUES 1");
+ config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
+
+ try (HikariDataSource ds = new HikariDataSource(config)) {
+ // Close immediately
+ }
+ }
+
+ @Test
+ public void testMBeanReporting() throws SQLException, InterruptedException, MalformedObjectNameException {
+ HikariConfig config = newHikariConfig();
+ config.setMinimumIdle(3);
+ config.setMaximumPoolSize(5);
+ config.setRegisterMbeans(true);
+ config.setConnectionTimeout(2800);
+ config.setConnectionTestQuery("VALUES 1");
+ config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
+
+ System.setProperty("com.zaxxer.hikari.housekeeping.periodMs", "100");
+
+ try (HikariDataSource ds = new HikariDataSource(config)) {
+
+ ds.setIdleTimeout(3000);
+
+ TimeUnit.SECONDS.sleep(1);
+
+ MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
+ ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (testMBeanReporting)");
+ HikariPoolMXBean hikariPoolMXBean = JMX.newMXBeanProxy(mBeanServer, poolName, HikariPoolMXBean.class);
+
+ assertEquals(0, hikariPoolMXBean.getActiveConnections());
+ assertEquals(3, hikariPoolMXBean.getIdleConnections());
+
+ try (Connection connection = ds.getConnection()) {
+ assertEquals(1, hikariPoolMXBean.getActiveConnections());
+
+ TimeUnit.SECONDS.sleep(1);
+
+ assertEquals(3, hikariPoolMXBean.getIdleConnections());
+ assertEquals(4, hikariPoolMXBean.getTotalConnections());
+ }
+
+ TimeUnit.SECONDS.sleep(2);
+
+ assertEquals(0, hikariPoolMXBean.getActiveConnections());
+ assertEquals(3, hikariPoolMXBean.getIdleConnections());
+ assertEquals(3, hikariPoolMXBean.getTotalConnections());
+
+ }
+ finally {
+ System.clearProperty("com.zaxxer.hikari.housekeeping.periodMs");
+ }
+ }
}