/*
* Copyright 2014 NAVER Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.navercorp.pinpoint.plugin.jdbc.mariadb;
import com.navercorp.pinpoint.bootstrap.context.DatabaseInfo;
import com.navercorp.pinpoint.common.trace.ServiceType;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author dawidmalina
*/
public class MariaDBUrlParserTest {
private Logger logger = LoggerFactory.getLogger(MariaDBUrlParserTest.class);
private MariaDBJdbcUrlParser jdbcUrlParser = new MariaDBJdbcUrlParser();
@Test
public void mariadbParse1() {
DatabaseInfo dbInfo = jdbcUrlParser
.parse("jdbc:mariadb://ip_address:3306/database_name?useUnicode=yes&characterEncoding=UTF-8");
Assert.assertTrue(dbInfo.isParsingComplete());
Assert.assertEquals(dbInfo.getType(), MariaDBConstants.MARIADB);
Assert.assertEquals(dbInfo.getHost().get(0), ("ip_address:3306"));
Assert.assertEquals(dbInfo.getDatabaseId(), "database_name");
Assert.assertEquals(dbInfo.getUrl(), "jdbc:mariadb://ip_address:3306/database_name");
}
@Test
public void mariadbParse_mysql() {
DatabaseInfo dbInfo = jdbcUrlParser
.parse("jdbc:mysql://ip_address:3306/database_name?useUnicode=yes&characterEncoding=UTF-8");
Assert.assertTrue(dbInfo.isParsingComplete());
Assert.assertEquals(dbInfo.getType(), MariaDBConstants.MARIADB);
Assert.assertEquals(dbInfo.getHost().get(0), ("ip_address:3306"));
Assert.assertEquals(dbInfo.getDatabaseId(), "database_name");
Assert.assertEquals(dbInfo.getUrl(), "jdbc:mysql://ip_address:3306/database_name");
}
@Test
public void mariadbParse2() {
DatabaseInfo dbInfo = jdbcUrlParser.parse("jdbc:mariadb://10.98.133.22:3306/test_lucy_db");
Assert.assertTrue(dbInfo.isParsingComplete());
Assert.assertEquals(dbInfo.getType(), MariaDBConstants.MARIADB);
Assert.assertEquals(dbInfo.getHost().get(0), "10.98.133.22:3306");
Assert.assertEquals(dbInfo.getDatabaseId(), "test_lucy_db");
Assert.assertEquals(dbInfo.getUrl(), "jdbc:mariadb://10.98.133.22:3306/test_lucy_db");
logger.info(dbInfo.toString());
logger.info(dbInfo.getMultipleHost());
}
@Test
public void mariadbParse3() {
DatabaseInfo dbInfo = jdbcUrlParser
.parse("jdbc:mariadb://61.74.71.31/log?useUnicode=yes&characterEncoding=UTF-8");
Assert.assertTrue(dbInfo.isParsingComplete());
Assert.assertEquals(dbInfo.getType(), MariaDBConstants.MARIADB);
Assert.assertEquals(dbInfo.getHost().get(0), "61.74.71.31");
Assert.assertEquals(dbInfo.getDatabaseId(), "log");
Assert.assertEquals(dbInfo.getUrl(), "jdbc:mariadb://61.74.71.31/log");
logger.info(dbInfo.toString());
}
@Test
public void mariadbParseCookierunMaster() {
DatabaseInfo dbInfo = jdbcUrlParser.parse(
"jdbc:mariadb://10.115.8.209:5605/db_cookierun?useUnicode=true&characterEncoding=UTF-8&noAccessToProcedureBodies=true&autoDeserialize=true&elideSetAutoCommits=true&sessionVariables=time_zone='%2B09:00',tx_isolation='READ-COMMITTED'");
Assert.assertTrue(dbInfo.isParsingComplete());
Assert.assertEquals(dbInfo.getType(), MariaDBConstants.MARIADB);
Assert.assertEquals(dbInfo.getHost().get(0), "10.115.8.209:5605");
Assert.assertEquals(dbInfo.getDatabaseId(), "db_cookierun");
Assert.assertEquals(dbInfo.getUrl(), "jdbc:mariadb://10.115.8.209:5605/db_cookierun");
logger.info(dbInfo.toString());
}
@Test
public void mariadbParseCookierunSlave() {
DatabaseInfo dbInfo = jdbcUrlParser.parse(
"jdbc:mariadb:loadbalance://10.118.222.35:5605/db_cookierun?useUnicode=true&characterEncoding=UTF-8&noAccessToProcedureBodies=true&autoDeserialize=true&elideSetAutoCommits=true&sessionVariables=time_zone='%2B09:00',tx_isolation='READ-UNCOMMITTED'");
Assert.assertTrue(dbInfo.isParsingComplete());
Assert.assertEquals(dbInfo.getType(), MariaDBConstants.MARIADB);
Assert.assertEquals(dbInfo.getHost().get(0), "10.118.222.35:5605");
Assert.assertEquals(dbInfo.getDatabaseId(), "db_cookierun");
Assert.assertEquals(dbInfo.getUrl(), "jdbc:mariadb:loadbalance://10.118.222.35:5605/db_cookierun");
logger.info(dbInfo.toString());
}
@Test
public void mariadbParseCookierunSlave2() {
DatabaseInfo dbInfo = jdbcUrlParser.parse(
"jdbc:mariadb:loadbalance://10.118.222.35:5605,10.118.222.36:5605/db_cookierun?useUnicode=true&characterEncoding=UTF-8&noAccessToProcedureBodies=true&autoDeserialize=true&elideSetAutoCommits=true&sessionVariables=time_zone='%2B09:00',tx_isolation='READ-UNCOMMITTED'");
Assert.assertTrue(dbInfo.isParsingComplete());
Assert.assertEquals(dbInfo.getType(), MariaDBConstants.MARIADB);
Assert.assertEquals(dbInfo.getHost().get(0), "10.118.222.35:5605");
Assert.assertEquals(dbInfo.getHost().get(1), "10.118.222.36:5605");
Assert.assertEquals(dbInfo.getDatabaseId(), "db_cookierun");
Assert.assertEquals(dbInfo.getUrl(),
"jdbc:mariadb:loadbalance://10.118.222.35:5605,10.118.222.36:5605/db_cookierun");
logger.info(dbInfo.toString());
}
@Test
public void parseFailTest1() {
DatabaseInfo dbInfo = jdbcUrlParser.parse(null);
Assert.assertFalse(dbInfo.isParsingComplete());
Assert.assertEquals(ServiceType.UNKNOWN_DB, dbInfo.getType());
}
@Test
public void parseFailTest2() {
DatabaseInfo dbInfo = jdbcUrlParser.parse("jdbc:oracle:loadbalance://10.118.222.35:5605,10.118.222.36:5605/db_cookierun?useUnicode=true&characterEncoding=UTF-8&noAccessToProcedureBodies=true&autoDeserialize=true&elideSetAutoCommits=true&sessionVariables=time_zone='%2B09:00',tx_isolation='READ-UNCOMMITTED'");
Assert.assertFalse(dbInfo.isParsingComplete());
Assert.assertEquals(ServiceType.UNKNOWN_DB, dbInfo.getType());
}
}