Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
14ae9b62
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
14ae9b62
编写于
11月 05, 2020
作者:
S
Shengliang Guan
提交者:
GitHub
11月 05, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4116 from taosdata/feature/TD-1702
Feature/td 1702
上级
d8f46881
42add31a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
294 addition
and
157 deletion
+294
-157
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBConnection.java
.../jdbc/src/main/java/com/taosdata/jdbc/TSDBConnection.java
+2
-2
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBDatabaseMetaData.java
...src/main/java/com/taosdata/jdbc/TSDBDatabaseMetaData.java
+1
-1
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBDriver.java
...ctor/jdbc/src/main/java/com/taosdata/jdbc/TSDBDriver.java
+94
-120
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBDriverTest.java
.../jdbc/src/test/java/com/taosdata/jdbc/TSDBDriverTest.java
+197
-34
未找到文件。
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBConnection.java
浏览文件 @
14ae9b62
...
...
@@ -52,7 +52,6 @@ public class TSDBConnection implements Connection {
public
TSDBConnection
(
Properties
info
,
TSDBDatabaseMetaData
meta
)
throws
SQLException
{
this
.
dbMetaData
=
meta
;
connect
(
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
),
Integer
.
parseInt
(
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_PORT
,
"0"
)),
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_DBNAME
),
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
),
...
...
@@ -197,12 +196,13 @@ public class TSDBConnection implements Connection {
}
public
SQLWarning
getWarnings
()
throws
SQLException
{
//todo: implement getWarnings according to the warning messages returned from TDengine
throw
new
SQLException
(
TSDBConstants
.
UNSUPPORT_METHOD_EXCEPTIONZ_MSG
);
}
public
void
clearWarnings
()
throws
SQLException
{
// left blank to support HikariCP connection
//todo: implement
get
Warnings according to the warning messages returned from TDengine
//todo: implement
clear
Warnings according to the warning messages returned from TDengine
}
public
Statement
createStatement
(
int
resultSetType
,
int
resultSetConcurrency
)
throws
SQLException
{
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBDatabaseMetaData.java
浏览文件 @
14ae9b62
...
...
@@ -96,7 +96,7 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
}
public
int
getDriverMajorVersion
()
{
return
0
;
return
2
;
}
public
int
getDriverMinorVersion
()
{
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBDriver.java
浏览文件 @
14ae9b62
...
...
@@ -14,13 +14,9 @@
*****************************************************************************/
package
com.taosdata.jdbc
;
import
java.io.*
;
import
java.sql.*
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Properties
;
import
java.util.*
;
import
java.util.logging.Logger
;
/**
...
...
@@ -44,76 +40,53 @@ import java.util.logging.Logger;
*/
public
class
TSDBDriver
implements
java
.
sql
.
Driver
{
@Deprecated
private
static
final
String
URL_PREFIX1
=
"jdbc:TSDB://"
;
private
static
final
String
URL_PREFIX
=
"jdbc:TAOS://"
;
/**
* Key used to retrieve the database value from the properties instance passed
* to the driver.
*/
public
static
final
String
PROPERTY_KEY_DBNAME
=
"dbname"
;
/**
* Key used to retrieve the host value from the properties instance passed to
* the driver.
*/
public
static
final
String
PROPERTY_KEY_HOST
=
"host"
;
/**
* Key used to retrieve the password value from the properties instance passed
* to the driver.
*/
public
static
final
String
PROPERTY_KEY_PASSWORD
=
"password"
;
/**
* Key used to retrieve the port number value from the properties instance
* passed to the driver.
*/
public
static
final
String
PROPERTY_KEY_PORT
=
"port"
;
/**
* Key used to retrieve the database value from the properties instance passed
* to the driver.
*/
public
static
final
String
PROPERTY_KEY_DBNAME
=
"dbname"
;
/**
* Key used to retrieve the user value from the properties instance passed to
* the driver.
*/
public
static
final
String
PROPERTY_KEY_USER
=
"user"
;
/**
* Key used to retrieve the password value from the properties instance passed
* to the driver.
*/
public
static
final
String
PROPERTY_KEY_PASSWORD
=
"password"
;
/**
* Key for the configuration file directory of TSDB client in properties instance
*/
public
static
final
String
PROPERTY_KEY_CONFIG_DIR
=
"cfgdir"
;
/**
* Key for the timezone used by the TSDB client in properties instance
*/
public
static
final
String
PROPERTY_KEY_TIME_ZONE
=
"timezone"
;
/**
* Key for the locale used by the TSDB client in properties instance
*/
public
static
final
String
PROPERTY_KEY_LOCALE
=
"locale"
;
/**
* Key for the char encoding used by the TSDB client in properties instance
*/
public
static
final
String
PROPERTY_KEY_CHARSET
=
"charset"
;
public
static
final
String
PROPERTY_KEY_PROTOCOL
=
"protocol"
;
/**
* Index for port coming out of parseHostPortPair().
*/
public
final
static
int
PORT_NUMBER_INDEX
=
1
;
/**
* Index for host coming out of parseHostPortPair().
*/
public
final
static
int
HOST_NAME_INDEX
=
0
;
private
TSDBDatabaseMetaData
dbMetaData
=
null
;
static
{
...
...
@@ -169,9 +142,11 @@ public class TSDBDriver implements java.sql.Driver {
}
public
Connection
connect
(
String
url
,
Properties
info
)
throws
SQLException
{
if
(
url
==
null
)
{
if
(
url
==
null
)
throw
new
SQLException
(
TSDBConstants
.
WrapErrMsg
(
"url is not set!"
));
}
if
(!
acceptsURL
(
url
))
return
null
;
Properties
props
=
null
;
if
((
props
=
parseURL
(
url
,
info
))
==
null
)
{
...
...
@@ -179,7 +154,10 @@ public class TSDBDriver implements java.sql.Driver {
}
//load taos.cfg start
if
(
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
)
==
null
&&
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_PORT
)
==
null
)
{
if
((
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
)
==
null
||
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
).
isEmpty
())
&&
(
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_PORT
)
==
null
||
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_PORT
).
isEmpty
()))
{
File
cfgDir
=
loadConfigDir
(
info
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_CONFIG_DIR
));
File
cfgFile
=
cfgDir
.
listFiles
((
dir
,
name
)
->
"taos.cfg"
.
equalsIgnoreCase
(
name
))[
0
];
List
<
String
>
endpoints
=
loadConfigEndpoints
(
cfgFile
);
...
...
@@ -190,7 +168,9 @@ public class TSDBDriver implements java.sql.Driver {
}
try
{
TSDBJNIConnector
.
init
((
String
)
props
.
get
(
PROPERTY_KEY_CONFIG_DIR
),
(
String
)
props
.
get
(
PROPERTY_KEY_LOCALE
),
(
String
)
props
.
get
(
PROPERTY_KEY_CHARSET
),
TSDBJNIConnector
.
init
((
String
)
props
.
get
(
PROPERTY_KEY_CONFIG_DIR
),
(
String
)
props
.
get
(
PROPERTY_KEY_LOCALE
),
(
String
)
props
.
get
(
PROPERTY_KEY_CHARSET
),
(
String
)
props
.
get
(
PROPERTY_KEY_TIME_ZONE
));
Connection
newConn
=
new
TSDBConnection
(
props
,
this
.
dbMetaData
);
return
newConn
;
...
...
@@ -208,43 +188,15 @@ public class TSDBDriver implements java.sql.Driver {
}
/**
* Parses hostPortPair in the form of [host][:port] into an array, with the
* element of index HOST_NAME_INDEX being the host (or null if not specified),
* and the element of index PORT_NUMBER_INDEX being the port (or null if not
* specified).
*
* @param hostPortPair host and port in form of of [host][:port]
* @return array containing host and port as Strings
* @throws SQLException if a parse error occurs
* @param url the URL of the database
* @return <code>true</code> if this driver understands the given URL;
* <code>false</code> otherwise
* @throws SQLException if a database access error occurs or the url is {@code null}
*/
protected
static
String
[]
parseHostPortPair
(
String
hostPortPair
)
throws
SQLException
{
String
[]
splitValues
=
new
String
[
2
];
int
portIndex
=
hostPortPair
.
indexOf
(
":"
);
String
hostname
=
null
;
if
(
portIndex
!=
-
1
)
{
if
((
portIndex
+
1
)
<
hostPortPair
.
length
())
{
String
portAsString
=
hostPortPair
.
substring
(
portIndex
+
1
);
hostname
=
hostPortPair
.
substring
(
0
,
portIndex
);
splitValues
[
HOST_NAME_INDEX
]
=
hostname
;
splitValues
[
PORT_NUMBER_INDEX
]
=
portAsString
;
}
else
{
throw
new
SQLException
(
TSDBConstants
.
WrapErrMsg
(
"port is not proper!"
));
}
}
else
{
splitValues
[
HOST_NAME_INDEX
]
=
hostPortPair
;
splitValues
[
PORT_NUMBER_INDEX
]
=
null
;
}
return
splitValues
;
}
public
boolean
acceptsURL
(
String
url
)
throws
SQLException
{
return
(
url
!=
null
&&
url
.
length
()
>
0
&&
url
.
trim
().
length
()
>
0
)
&&
url
.
startsWith
(
URL_PREFIX
);
if
(
url
==
null
)
throw
new
SQLException
(
TSDBConstants
.
WrapErrMsg
(
"url is null"
));
return
(
url
!=
null
&&
url
.
length
()
>
0
&&
url
.
trim
().
length
()
>
0
)
&&
(
url
.
startsWith
(
URL_PREFIX
)
||
url
.
startsWith
(
URL_PREFIX1
));
}
public
DriverPropertyInfo
[]
getPropertyInfo
(
String
url
,
Properties
info
)
throws
SQLException
{
...
...
@@ -252,15 +204,17 @@ public class TSDBDriver implements java.sql.Driver {
info
=
new
Properties
();
}
if
(
(
url
!=
null
)
&&
(
url
.
startsWith
(
URL_PREFIX
)
||
url
.
startsWith
(
URL_PREFIX1
)
))
{
if
(
acceptsURL
(
url
))
{
info
=
parseURL
(
url
,
info
);
}
DriverPropertyInfo
hostProp
=
new
DriverPropertyInfo
(
PROPERTY_KEY_HOST
,
info
.
getProperty
(
PROPERTY_KEY_HOST
));
hostProp
.
required
=
true
;
hostProp
.
required
=
false
;
hostProp
.
description
=
"Hostname"
;
DriverPropertyInfo
portProp
=
new
DriverPropertyInfo
(
PROPERTY_KEY_PORT
,
info
.
getProperty
(
PROPERTY_KEY_PORT
,
TSDBConstants
.
DEFAULT_PORT
));
portProp
.
required
=
false
;
portProp
.
description
=
"Port"
;
DriverPropertyInfo
dbProp
=
new
DriverPropertyInfo
(
PROPERTY_KEY_DBNAME
,
info
.
getProperty
(
PROPERTY_KEY_DBNAME
));
dbProp
.
required
=
false
;
...
...
@@ -268,9 +222,11 @@ public class TSDBDriver implements java.sql.Driver {
DriverPropertyInfo
userProp
=
new
DriverPropertyInfo
(
PROPERTY_KEY_USER
,
info
.
getProperty
(
PROPERTY_KEY_USER
));
userProp
.
required
=
true
;
userProp
.
description
=
"User"
;
DriverPropertyInfo
passwordProp
=
new
DriverPropertyInfo
(
PROPERTY_KEY_PASSWORD
,
info
.
getProperty
(
PROPERTY_KEY_PASSWORD
));
passwordProp
.
required
=
true
;
passwordProp
.
description
=
"Password"
;
DriverPropertyInfo
[]
propertyInfo
=
new
DriverPropertyInfo
[
5
];
propertyInfo
[
0
]
=
hostProp
;
...
...
@@ -283,20 +239,68 @@ public class TSDBDriver implements java.sql.Driver {
}
/**
* example: jdbc:T
SDB
://127.0.0.1:0/db?user=root&password=your_password
* example: jdbc:T
AOS
://127.0.0.1:0/db?user=root&password=your_password
*/
public
Properties
parseURL
(
String
url
,
Properties
defaults
)
throws
java
.
sql
.
SQLException
{
public
Properties
parseURL
(
String
url
,
Properties
defaults
)
{
Properties
urlProps
=
(
defaults
!=
null
)
?
defaults
:
new
Properties
();
if
(
url
==
null
)
{
if
(
url
==
null
||
url
.
length
()
<=
0
||
url
.
trim
().
length
()
<=
0
)
return
null
;
}
if
(!
url
.
startsWith
(
URL_PREFIX
)
&&
!
url
.
startsWith
(
URL_PREFIX1
))
{
if
(!
url
.
startsWith
(
URL_PREFIX
)
&&
!
url
.
startsWith
(
URL_PREFIX1
))
return
null
;
}
// parse properties
String
urlForMeta
=
url
;
int
beginningOfSlashes
=
url
.
indexOf
(
"//"
);
int
index
=
url
.
indexOf
(
"?"
);
if
(
index
!=
-
1
)
{
String
paramString
=
url
.
substring
(
index
+
1
,
url
.
length
());
url
=
url
.
substring
(
0
,
index
);
StringTokenizer
queryParams
=
new
StringTokenizer
(
paramString
,
"&"
);
while
(
queryParams
.
hasMoreElements
())
{
String
parameterValuePair
=
queryParams
.
nextToken
();
int
indexOfEqual
=
parameterValuePair
.
indexOf
(
"="
);
String
parameter
=
null
;
String
value
=
null
;
if
(
indexOfEqual
!=
-
1
)
{
parameter
=
parameterValuePair
.
substring
(
0
,
indexOfEqual
);
if
(
indexOfEqual
+
1
<
parameterValuePair
.
length
())
{
value
=
parameterValuePair
.
substring
(
indexOfEqual
+
1
);
}
}
if
((
value
!=
null
&&
value
.
length
()
>
0
)
&&
(
parameter
!=
null
&&
parameter
.
length
()
>
0
))
{
urlProps
.
setProperty
(
parameter
,
value
);
}
}
}
// parse Product Name
String
dbProductName
=
url
.
substring
(
0
,
beginningOfSlashes
);
dbProductName
=
dbProductName
.
substring
(
dbProductName
.
indexOf
(
":"
)
+
1
);
dbProductName
=
dbProductName
.
substring
(
0
,
dbProductName
.
indexOf
(
":"
));
// parse dbname
url
=
url
.
substring
(
beginningOfSlashes
+
2
);
int
indexOfSlash
=
url
.
indexOf
(
"/"
);
if
(
indexOfSlash
!=
-
1
)
{
if
(
indexOfSlash
+
1
<
url
.
length
())
{
urlProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_DBNAME
,
url
.
substring
(
indexOfSlash
+
1
));
}
url
=
url
.
substring
(
0
,
indexOfSlash
);
}
// parse port
int
indexOfColon
=
url
.
indexOf
(
":"
);
if
(
indexOfColon
!=
-
1
)
{
if
(
indexOfColon
+
1
<
url
.
length
())
{
urlProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_PORT
,
url
.
substring
(
indexOfColon
+
1
));
}
url
=
url
.
substring
(
0
,
indexOfColon
);
}
if
(
url
!=
null
&&
url
.
length
()
>
0
&&
url
.
trim
().
length
()
>
0
)
{
urlProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
,
url
);
}
this
.
dbMetaData
=
new
TSDBDatabaseMetaData
(
dbProductName
,
urlForMeta
,
urlProps
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
));
/*
String urlForMeta = url;
String dbProductName = url.substring(url.indexOf(":") + 1);
dbProductName = dbProductName.substring(0, dbProductName.indexOf(":"));
int beginningOfSlashes = url.indexOf("//");
...
...
@@ -345,11 +349,11 @@ public class TSDBDriver implements java.sql.Driver {
user = urlProps.getProperty(PROPERTY_KEY_USER).toString();
this.dbMetaData = new TSDBDatabaseMetaData(dbProductName, urlForMeta, user);
*/
return
urlProps
;
}
p
ublic
void
setPropertyValue
(
Properties
property
,
String
[]
keyValuePair
)
{
p
rivate
void
setPropertyValue
(
Properties
property
,
String
[]
keyValuePair
)
{
switch
(
keyValuePair
[
0
].
toLowerCase
())
{
case
PROPERTY_KEY_USER:
property
.
setProperty
(
PROPERTY_KEY_USER
,
keyValuePair
[
1
]);
...
...
@@ -372,13 +376,12 @@ public class TSDBDriver implements java.sql.Driver {
}
}
public
int
getMajorVersion
()
{
return
1
;
return
2
;
}
public
int
getMinorVersion
()
{
return
1
;
return
0
;
}
public
boolean
jdbcCompliant
()
{
...
...
@@ -389,33 +392,4 @@ public class TSDBDriver implements java.sql.Driver {
return
null
;
}
/**
* Returns the host property
*
* @param props the java.util.Properties instance to retrieve the hostname from.
* @return the host
*/
public
String
host
(
Properties
props
)
{
return
props
.
getProperty
(
PROPERTY_KEY_HOST
,
"localhost"
);
}
/**
* Returns the port number property
*
* @param props the properties to get the port number from
* @return the port number
*/
public
int
port
(
Properties
props
)
{
return
Integer
.
parseInt
(
props
.
getProperty
(
PROPERTY_KEY_PORT
,
TSDBConstants
.
DEFAULT_PORT
));
}
/**
* Returns the database property from <code>props</code>
*
* @param props the Properties to look for the database property.
* @return the database name.
*/
public
String
database
(
Properties
props
)
{
return
props
.
getProperty
(
PROPERTY_KEY_DBNAME
);
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBDriverTest.java
浏览文件 @
14ae9b62
package
com.taosdata.jdbc
;
import
org.junit.BeforeClass
;
import
org.junit.Test
;
import
java.sql.SQLException
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.sql.*
;
import
java.util.Properties
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
*
;
public
class
TSDBDriverTest
{
private
static
final
String
[]
validURLs
=
{
"jdbc:TAOS://localhost:0"
,
"jdbc:TAOS://localhost"
,
"jdbc:TAOS://localhost:6030/test"
,
"jdbc:TAOS://localhost:6030"
,
"jdbc:TAOS://localhost:6030/"
,
"jdbc:TSDB://localhost:6030"
,
"jdbc:TSDB://localhost:6030/"
,
"jdbc:TAOS://127.0.0.1:0/db?user=root&password=taosdata"
,
"jdbc:TAOS://:"
,
"jdbc:TAOS://:/"
,
"jdbc:TAOS://:/test"
,
"jdbc:TAOS://localhost:0/?user=root&password=taosdata"
};
private
static
boolean
islibLoaded
=
false
;
private
static
boolean
isTaosdActived
;
private
Connection
conn
;
@BeforeClass
public
static
void
before
()
{
String
osName
=
System
.
getProperty
(
"os.name"
).
toLowerCase
();
if
(!
osName
.
equals
(
"linux"
))
return
;
// try to load taos lib
try
{
System
.
loadLibrary
(
"taos"
);
islibLoaded
=
true
;
}
catch
(
UnsatisfiedLinkError
error
)
{
System
.
out
.
println
(
"load tdengine lib failed."
);
error
.
printStackTrace
();
}
// check taosd is activated
try
{
String
[]
cmd
=
{
"/bin/bash"
,
"-c"
,
"ps -ef | grep taosd | grep -v \"grep\""
};
Process
exec
=
Runtime
.
getRuntime
().
exec
(
cmd
);
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
exec
.
getInputStream
()));
int
lineCnt
=
0
;
while
(
reader
.
readLine
()
!=
null
)
{
lineCnt
++;
}
if
(
lineCnt
>
0
)
isTaosdActived
=
true
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
}
@Test
public
void
testConnectWithJdbcURL
()
{
final
String
url
=
"jdbc:TAOS://localhost:6030/log?user=root&password=taosdata"
;
try
{
if
(
islibLoaded
&&
isTaosdActived
)
{
conn
=
DriverManager
.
getConnection
(
url
);
assertNotNull
(
"failure - connection should not be null"
,
conn
);
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
fail
(
"failure - should not throw Exception"
);
}
}
@Test
public
void
testConnectWithProperties
()
{
final
String
jdbcUrl
=
"jdbc:TAOS://localhost:6030/log?user=root&password=taosdata"
;
Properties
connProps
=
new
Properties
();
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
try
{
if
(
islibLoaded
&&
isTaosdActived
)
{
conn
=
DriverManager
.
getConnection
(
jdbcUrl
,
connProps
);
assertNotNull
(
"failure - connection should not be null"
,
conn
);
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
fail
(
"failure - should not throw Exception"
);
}
}
@Test
public
void
urlParserTest
()
throws
SQLException
{
public
void
testConnectWithConfigFile
()
{
String
jdbcUrl
=
"jdbc:TAOS://:/log?user=root&password=taosdata"
;
Properties
connProps
=
new
Properties
();
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
try
{
if
(
islibLoaded
&&
isTaosdActived
)
{
conn
=
DriverManager
.
getConnection
(
jdbcUrl
,
connProps
);
assertNotNull
(
"failure - connection should not be null"
,
conn
);
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
fail
(
"failure - should not throw Exception"
);
}
}
@Test
(
expected
=
SQLException
.
class
)
public
void
testAcceptsURL
()
throws
SQLException
{
Driver
driver
=
new
TSDBDriver
();
for
(
String
url
:
validURLs
)
{
assertTrue
(
"failure - acceptsURL(\" "
+
url
+
" \") should be true"
,
driver
.
acceptsURL
(
url
));
}
driver
.
acceptsURL
(
null
);
fail
(
"acceptsURL throws exception when parameter is null"
);
}
@Test
public
void
testParseURL
()
{
TSDBDriver
driver
=
new
TSDBDriver
();
String
url
=
"jdbc:TSDB://127.0.0.1:0/db"
;
Properties
properties
=
new
Properties
();
driver
.
parseURL
(
url
,
properties
);
assertEquals
(
properties
.
get
(
"host"
),
"127.0.0.1"
);
assertEquals
(
properties
.
get
(
"port"
),
"0"
);
assertEquals
(
properties
.
get
(
"dbname"
),
"db"
);
assertEquals
(
properties
.
get
(
"user"
),
"root"
);
assertEquals
(
properties
.
get
(
"password"
),
"your_password"
);
url
=
"jdbc:TSDB://127.0.0.1:0/log?charset=UTF-8"
;
properties
=
new
Properties
();
driver
.
parseURL
(
url
,
properties
);
assertEquals
(
properties
.
get
(
"host"
),
"127.0.0.1"
);
assertEquals
(
properties
.
get
(
"port"
),
"0"
);
assertEquals
(
properties
.
get
(
"dbname"
),
"log"
);
assertEquals
(
properties
.
get
(
"charset"
),
"UTF-8"
);
url
=
"jdbc:TSDB://127.0.0.1:0/"
;
properties
=
new
Properties
();
driver
.
parseURL
(
url
,
properties
);
assertEquals
(
properties
.
get
(
"host"
),
"127.0.0.1"
);
assertEquals
(
properties
.
get
(
"port"
),
"0"
);
assertEquals
(
properties
.
get
(
"dbname"
),
null
);
url
=
"jdbc:TSDB://127.0.0.1:0/db"
;
properties
=
new
Properties
();
driver
.
parseURL
(
url
,
properties
);
assertEquals
(
properties
.
get
(
"host"
),
"127.0.0.1"
);
assertEquals
(
properties
.
get
(
"port"
),
"0"
);
assertEquals
(
properties
.
get
(
"dbname"
),
"db"
);
String
url
=
"jdbc:TAOS://127.0.0.1:0/db?user=root&password=taosdata&charset=UTF-8"
;
Properties
config
=
new
Properties
();
Properties
actual
=
driver
.
parseURL
(
url
,
config
);
assertEquals
(
"failure - host should be 127.0.0.1"
,
"127.0.0.1"
,
actual
.
get
(
"host"
));
assertEquals
(
"failure - port should be 0"
,
"0"
,
actual
.
get
(
"port"
));
assertEquals
(
"failure - dbname should be db"
,
"db"
,
actual
.
get
(
"dbname"
));
assertEquals
(
"failure - user should be root"
,
"root"
,
actual
.
get
(
"user"
));
assertEquals
(
"failure - password should be taosdata"
,
"taosdata"
,
actual
.
get
(
"password"
));
assertEquals
(
"failure - charset should be UTF-8"
,
"UTF-8"
,
actual
.
get
(
"charset"
));
url
=
"jdbc:TAOS://127.0.0.1:0"
;
config
=
new
Properties
();
actual
=
driver
.
parseURL
(
url
,
config
);
assertEquals
(
"failure - host should be 127.0.0.1"
,
"127.0.0.1"
,
actual
.
getProperty
(
"host"
));
assertEquals
(
"failure - port should be 0"
,
"0"
,
actual
.
get
(
"port"
));
assertNull
(
"failure - dbname should be null"
,
actual
.
get
(
"dbname"
));
url
=
"jdbc:TAOS://127.0.0.1:0/db"
;
config
=
new
Properties
();
actual
=
driver
.
parseURL
(
url
,
config
);
assertEquals
(
"failure - host should be 127.0.0.1"
,
"127.0.0.1"
,
actual
.
getProperty
(
"host"
));
assertEquals
(
"failure - port should be 0"
,
"0"
,
actual
.
get
(
"port"
));
assertEquals
(
"failure - dbname should be db"
,
"db"
,
actual
.
get
(
"dbname"
));
url
=
"jdbc:TAOS://:/?"
;
config
=
new
Properties
();
config
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
,
"root"
);
config
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
,
"taosdata"
);
actual
=
driver
.
parseURL
(
url
,
config
);
assertEquals
(
"failure - user should be root"
,
"root"
,
actual
.
getProperty
(
"user"
));
assertEquals
(
"failure - password should be taosdata"
,
"taosdata"
,
actual
.
getProperty
(
"password"
));
assertNull
(
"failure - host should be null"
,
actual
.
getProperty
(
"host"
));
assertNull
(
"failure - port should be null"
,
actual
.
getProperty
(
"port"
));
assertNull
(
"failure - dbname should be null"
,
actual
.
getProperty
(
"dbname"
));
}
@Test
public
void
testGetPropertyInfo
()
throws
SQLException
{
Driver
driver
=
new
TSDBDriver
();
final
String
url
=
"jdbc:TAOS://localhost:6030/log?user=root&password=taosdata"
;
Properties
connProps
=
new
Properties
();
DriverPropertyInfo
[]
propertyInfo
=
driver
.
getPropertyInfo
(
url
,
connProps
);
for
(
DriverPropertyInfo
info
:
propertyInfo
)
{
if
(
info
.
name
.
equals
(
TSDBDriver
.
PROPERTY_KEY_HOST
))
assertEquals
(
"failure - host should be localhost"
,
"localhost"
,
info
.
value
);
if
(
info
.
name
.
equals
(
TSDBDriver
.
PROPERTY_KEY_PORT
))
assertEquals
(
"failure - port should be 6030"
,
"6030"
,
info
.
value
);
if
(
info
.
name
.
equals
(
TSDBDriver
.
PROPERTY_KEY_DBNAME
))
assertEquals
(
"failure - dbname should be test"
,
"log"
,
info
.
value
);
if
(
info
.
name
.
equals
(
TSDBDriver
.
PROPERTY_KEY_USER
))
assertEquals
(
"failure - user should be root"
,
"root"
,
info
.
value
);
if
(
info
.
name
.
equals
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
))
assertEquals
(
"failure - password should be root"
,
"taosdata"
,
info
.
value
);
}
}
@Test
public
void
testGetMajorVersion
()
{
assertEquals
(
"failure - getMajorVersion should be 2"
,
2
,
new
TSDBDriver
().
getMajorVersion
());
}
@Test
public
void
testGetMinorVersion
()
{
assertEquals
(
"failure - getMinorVersion should be 0"
,
0
,
new
TSDBDriver
().
getMinorVersion
());
}
@Test
public
void
testJdbcCompliant
()
{
assertFalse
(
"failure - jdbcCompliant should be false"
,
new
TSDBDriver
().
jdbcCompliant
());
}
@Test
public
void
testGetParentLogger
()
throws
SQLFeatureNotSupportedException
{
assertNull
(
"failure - getParentLogger should be be null"
,
new
TSDBDriver
().
getParentLogger
());
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录