package org.skywalking.apm.plugin.jdbc.connectionurl.parser; import org.junit.Test; import org.skywalking.apm.plugin.jdbc.ConnectionInfo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; public class URLParserTest { @Test public void testParseMysqlJDBCURLWithHost() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:mysql//primaryhost/test"); assertThat(connectionInfo.getDBType(), is("Mysql")); assertThat(connectionInfo.getDatabaseName(), is("test")); assertThat(connectionInfo.getHost(), is("primaryhost")); assertThat(connectionInfo.getPort(), is(3306)); } @Test public void testParseMysqlJDBCURLWithHostAndPort() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:mysql//primaryhost:3307/test?profileSQL=true"); assertThat(connectionInfo.getDBType(), is("Mysql")); assertThat(connectionInfo.getDatabaseName(), is("test")); assertThat(connectionInfo.getHost(), is("primaryhost")); assertThat(connectionInfo.getPort(), is(3307)); } @Test public void testParseMysqlJDBCURLWithMultiHost() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:mysql//primaryhost:3307,secondaryhost1,secondaryhost2/test?profileSQL=true"); assertThat(connectionInfo.getDBType(), is("Mysql")); assertThat(connectionInfo.getDatabaseName(), is("test")); assertThat(connectionInfo.getHosts(), is("primaryhost:3307,secondaryhost1:3306,secondaryhost2:3306,")); } @Test public void testParseMysqlJDBCURLWithConnectorJs() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:mysql:replication://master,slave1,slave2,slave3/test"); assertThat(connectionInfo.getDBType(), is("Mysql")); assertThat(connectionInfo.getDatabaseName(), is("test")); assertThat(connectionInfo.getHosts(), is("master:3306,slave1:3306,slave2:3306,slave3:3306,")); } @Test public void testParseOracleJDBCURLWithHost() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:oracle:thin:@localhost:orcl"); assertThat(connectionInfo.getDBType(), is("Oracle")); assertThat(connectionInfo.getDatabaseName(), is("orcl")); assertThat(connectionInfo.getHost(), is("localhost")); assertThat(connectionInfo.getPort(), is(1521)); } @Test public void testParseOracleJDBCURLWithHostAndPort() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:oracle:thin:@localhost:1522:orcl"); assertThat(connectionInfo.getDBType(), is("Oracle")); assertThat(connectionInfo.getDatabaseName(), is("orcl")); assertThat(connectionInfo.getHost(), is("localhost")); assertThat(connectionInfo.getPort(), is(1522)); } @Test public void testParseOracleJDBCURLWithUserNameAndPassword() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:oracle:thin:scott/tiger@myhost:1521:orcl"); assertThat(connectionInfo.getDBType(), is("Oracle")); assertThat(connectionInfo.getDatabaseName(), is("orcl")); assertThat(connectionInfo.getHost(), is("myhost")); assertThat(connectionInfo.getPort(), is(1521)); } @Test public void testParseH2JDBCURLWithEmbedded() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:h2:file:/data/sample"); assertThat(connectionInfo.getDBType(), is("H2")); assertThat(connectionInfo.getDatabaseName(), is("/data/sample")); assertThat(connectionInfo.getHost(), is("localhost")); assertThat(connectionInfo.getPort(), is(-1)); } @Test public void testParseH2JDBCURLWithEmbeddedRunningInWindows() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:h2:file:C:/data/sample"); assertThat(connectionInfo.getDBType(), is("H2")); assertThat(connectionInfo.getDatabaseName(), is("C:/data/sample")); assertThat(connectionInfo.getHost(), is("localhost")); assertThat(connectionInfo.getPort(), is(-1)); } @Test public void testParseH2JDBCURLWithMemoryMode() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:h2:mem:test_mem"); assertThat(connectionInfo.getDBType(), is("H2")); assertThat(connectionInfo.getDatabaseName(), is("test_mem")); assertThat(connectionInfo.getHost(), is("localhost")); assertThat(connectionInfo.getPort(), is(-1)); } @Test public void testParseH2JDBCURL() { ConnectionInfo connectionInfo = new URLParser().parser("jdbc:h2:tcp://localhost:8084/~/sample"); assertThat(connectionInfo.getDBType(), is("H2")); assertThat(connectionInfo.getDatabaseName(), is("sample")); assertThat(connectionInfo.getHost(), is("localhost")); assertThat(connectionInfo.getPort(), is(8084)); } }