Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
ab64145d
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看板
提交
ab64145d
编写于
6月 23, 2020
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use unit test to test speed
上级
5ecda58f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
53 addition
and
204 deletion
+53
-204
src/tsdb/src/tsdbMain.c
src/tsdb/src/tsdbMain.c
+2
-2
src/tsdb/tests/CMakeLists.txt
src/tsdb/tests/CMakeLists.txt
+1
-1
src/tsdb/tests/tsdbTests.cpp
src/tsdb/tests/tsdbTests.cpp
+50
-201
未找到文件。
src/tsdb/src/tsdbMain.c
浏览文件 @
ab64145d
...
...
@@ -179,7 +179,7 @@ int32_t tsdbInsertData(TSDB_REPO_T *repo, SSubmitMsg *pMsg, SShellSubmitRspMsg *
return
-
1
;
}
}
pRsp
->
affectedRows
=
htonl
(
affectedrows
);
if
(
pRsp
!=
NULL
)
pRsp
->
affectedRows
=
htonl
(
affectedrows
);
return
0
;
}
...
...
@@ -648,7 +648,7 @@ static STsdbRepo *tsdbNewRepo(char *rootDir, STsdbAppH *pAppH, STsdbCfg *pCfg) {
}
pRepo
->
config
=
*
pCfg
;
pRepo
->
appH
=
*
pAppH
;
if
(
pAppH
)
pRepo
->
appH
=
*
pAppH
;
pRepo
->
tsdbMeta
=
tsdbNewMeta
(
pCfg
);
if
(
pRepo
->
tsdbMeta
==
NULL
)
{
...
...
src/tsdb/tests/CMakeLists.txt
浏览文件 @
ab64145d
aux_source_directory
(
${
CMAKE_CURRENT_SOURCE_DIR
}
SOURCE_LIST
)
add_executable
(
tsdbTests
${
SOURCE_LIST
}
)
target_link_libraries
(
tsdbTests gtest gtest_main pthread common tsdb
)
target_link_libraries
(
tsdbTests gtest gtest_main pthread common tsdb
tutil trpc
)
add_test
(
NAME unit COMMAND
${
CMAKE_CURRENT_BINARY_DIR
}
/tsdbTests
)
\ No newline at end of file
src/tsdb/tests/tsdbTests.cpp
浏览文件 @
ab64145d
...
...
@@ -2,9 +2,8 @@
#include <stdlib.h>
#include <sys/time.h>
#include "t
dataformat
.h"
#include "t
sdb
.h"
#include "tsdbMain.h"
#include "tskiplist.h"
static
double
getCurTime
()
{
struct
timeval
tv
;
...
...
@@ -77,7 +76,7 @@ static int insertData(SInsertInfo *pInfo) {
pMsg
->
numOfBlocks
=
htonl
(
pMsg
->
numOfBlocks
);
pMsg
->
compressed
=
htonl
(
pMsg
->
numOfBlocks
);
if
(
tsdbInsertData
(
pInfo
->
pRepo
,
pMsg
)
<
0
)
{
if
(
tsdbInsertData
(
pInfo
->
pRepo
,
pMsg
,
NULL
)
<
0
)
{
tfree
(
pMsg
);
return
-
1
;
}
...
...
@@ -90,222 +89,72 @@ static int insertData(SInsertInfo *pInfo) {
return
0
;
}
TEST
(
TsdbTest
,
DISABLED_tableEncodeDecode
)
{
// TEST(TsdbTest, tableEncodeDecode) {
STable
*
pTable
=
(
STable
*
)
malloc
(
sizeof
(
STable
));
pTable
->
type
=
TSDB_NORMAL_TABLE
;
pTable
->
tableId
.
uid
=
987607499877672L
;
pTable
->
tableId
.
tid
=
0
;
pTable
->
superUid
=
-
1
;
pTable
->
sversion
=
0
;
pTable
->
tagSchema
=
NULL
;
pTable
->
tagVal
=
NULL
;
int
nCols
=
5
;
STSchema
*
schema
=
tdNewSchema
(
nCols
);
for
(
int
i
=
0
;
i
<
nCols
;
i
++
)
{
if
(
i
==
0
)
{
tdSchemaAddCol
(
schema
,
TSDB_DATA_TYPE_TIMESTAMP
,
i
,
-
1
);
}
else
{
tdSchemaAddCol
(
schema
,
TSDB_DATA_TYPE_INT
,
i
,
-
1
);
}
}
pTable
->
schema
=
schema
;
int
bufLen
=
0
;
void
*
buf
=
tsdbEncodeTable
(
pTable
,
&
bufLen
);
STable
*
tTable
=
tsdbDecodeTable
(
buf
,
bufLen
);
ASSERT_EQ
(
pTable
->
type
,
tTable
->
type
);
ASSERT_EQ
(
pTable
->
tableId
.
uid
,
tTable
->
tableId
.
uid
);
ASSERT_EQ
(
pTable
->
tableId
.
tid
,
tTable
->
tableId
.
tid
);
ASSERT_EQ
(
pTable
->
superUid
,
tTable
->
superUid
);
ASSERT_EQ
(
pTable
->
sversion
,
tTable
->
sversion
);
ASSERT_EQ
(
memcmp
(
pTable
->
schema
,
tTable
->
schema
,
sizeof
(
STSchema
)
+
sizeof
(
STColumn
)
*
nCols
),
0
);
static
void
tsdbSetCfg
(
STsdbCfg
*
pCfg
,
int32_t
tsdbId
,
int32_t
cacheBlockSize
,
int32_t
totalBlocks
,
int32_t
maxTables
,
int32_t
daysPerFile
,
int32_t
keep
,
int32_t
minRows
,
int32_t
maxRows
,
int8_t
precision
,
int8_t
compression
)
{
pCfg
->
tsdbId
=
tsdbId
;
pCfg
->
cacheBlockSize
=
cacheBlockSize
;
pCfg
->
totalBlocks
=
totalBlocks
;
pCfg
->
maxTables
=
maxTables
;
pCfg
->
daysPerFile
=
daysPerFile
;
pCfg
->
keep
=
keep
;
pCfg
->
minRowsPerFileBlock
=
minRows
;
pCfg
->
maxRowsPerFileBlock
=
maxRows
;
pCfg
->
precision
=
precision
;
pCfg
->
compression
=
compression
;
}
// TEST(TsdbTest, DISABLED_createRepo) {
TEST
(
TsdbTest
,
createRepo
)
{
STsdbCfg
config
;
STsdbRepo
*
repo
;
// 1. Create a tsdb repository
tsdbSetDefaultCfg
(
&
config
);
ASSERT_EQ
(
tsdbCreateRepo
(
"/home/ubuntu/work/ttest/vnode0"
,
&
config
,
NULL
),
0
);
TSDB_REPO_T
*
pRepo
=
tsdbOpenRepo
(
"/home/ubuntu/work/ttest/vnode0"
,
NULL
);
ASSERT_NE
(
pRepo
,
nullptr
);
static
void
tsdbSetTableCfg
(
STableCfg
*
pCfg
)
{
STSchemaBuilder
schemaBuilder
=
{
0
};
// 2. Create a normal table
STableCfg
tCfg
;
ASSERT_EQ
(
tsdbInitTableCfg
(
&
tCfg
,
TSDB_SUPER_TABLE
,
987607499877672L
,
0
),
-
1
)
;
ASSERT_EQ
(
tsdbInitTableCfg
(
&
tCfg
,
TSDB_NORMAL_TABLE
,
987607499877672L
,
0
),
0
)
;
t
sdbTableSetName
(
&
tCfg
,
"test"
,
false
);
pCfg
->
type
=
TSDB_NORMAL_TABLE
;
pCfg
->
superUid
=
TSDB_INVALID_SUPER_TABLE_ID
;
pCfg
->
tableId
.
tid
=
1
;
pCfg
->
tableId
.
uid
=
5849583783847394
;
t
dInitTSchemaBuilder
(
&
schemaBuilder
,
0
);
int
nCols
=
5
;
STSchema
*
schema
=
tdNewSchema
(
nCols
);
for
(
int
i
=
0
;
i
<
nCols
;
i
++
)
{
if
(
i
==
0
)
{
tdSchemaAddCol
(
schema
,
TSDB_DATA_TYPE_TIMESTAMP
,
i
,
-
1
);
}
else
{
tdSchemaAddCol
(
schema
,
TSDB_DATA_TYPE_INT
,
i
,
-
1
);
}
int
colId
=
0
;
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
tdAddColToSchema
(
&
schemaBuilder
,
(
colId
==
0
)
?
TSDB_DATA_TYPE_TIMESTAMP
:
TSDB_DATA_TYPE_INT
,
colId
,
0
);
colId
++
;
}
tsdbTableSetSchema
(
&
tCfg
,
schema
,
true
);
tsdbCreateTable
(
pRepo
,
&
tCfg
);
pCfg
->
schema
=
tdGetSchemaFromBuilder
(
&
schemaBuilder
);
pCfg
->
name
=
strdup
(
"t1"
);
// Insert Some Data
SInsertInfo
iInfo
=
{
.
pRepo
=
pRepo
,
// .isAscend = true,
.
isAscend
=
false
,
.
tid
=
tCfg
.
tableId
.
tid
,
.
uid
=
tCfg
.
tableId
.
uid
,
.
sversion
=
tCfg
.
sversion
,
.
startTime
=
1584081000000
,
.
interval
=
1000
,
.
totalRows
=
10000000
,
.
rowsPerSubmit
=
1
,
.
pSchema
=
schema
};
ASSERT_EQ
(
insertData
(
&
iInfo
),
0
);
// Close the repository
tsdbCloseRepo
(
pRepo
);
// Open the repository again
pRepo
=
tsdbOpenRepo
(
"/home/ubuntu/work/ttest/vnode0"
,
NULL
);
repo
=
(
STsdbRepo
*
)
pRepo
;
ASSERT_NE
(
pRepo
,
nullptr
);
// // Insert more data
// iInfo.startTime = iInfo.startTime + iInfo.interval * iInfo.totalRows;
// iInfo.totalRows = 10;
// iInfo.pRepo = pRepo;
// ASSERT_EQ(insertData(&iInfo), 0);
// // Close the repository
// tsdbCloseRepo(pRepo);
// // Open the repository again
// pRepo = tsdbOpenRepo("/home/ubuntu/work/ttest/vnode0", NULL);
// repo = (STsdbRepo *)pRepo;
// ASSERT_NE(pRepo, nullptr);
// // Read from file
// SRWHelper rhelper;
// tsdbInitReadHelper(&rhelper, repo);
// SFileGroup *pFGroup = tsdbSearchFGroup(repo->tsdbFileH, 1833);
// ASSERT_NE(pFGroup, nullptr);
// ASSERT_GE(tsdbSetAndOpenHelperFile(&rhelper, pFGroup), 0);
// STable *pTable = tsdbGetTableByUid(repo->tsdbMeta, tCfg.tableId.uid);
// ASSERT_NE(pTable, nullptr);
// tsdbSetHelperTable(&rhelper, pTable, repo);
// ASSERT_EQ(tsdbLoadCompInfo(&rhelper, NULL), 0);
// ASSERT_EQ(tsdbLoadBlockData(&rhelper, blockAtIdx(&rhelper, 0), NULL), 0);
int
k
=
0
;
tdDestroyTSchemaBuilder
(
&
schemaBuilder
);
}
TEST
(
TsdbTest
,
DISABLED_openRepo
)
{
// TEST(TsdbTest, openRepo) {
// tsdb_repo_t *repo = tsdbOpenRepo("/home/ubuntu/work/build/test/data/vnode/vnode2/tsdb", NULL);
// ASSERT_NE(repo, nullptr);
// STsdbRepo *pRepo = (STsdbRepo *)repo;
// SFileGroup *pGroup = tsdbSearchFGroup(pRepo->tsdbFileH, 1655);
TEST
(
TsdbTest
,
testInsertSpeed
)
{
int
vnode
=
1
;
int
ret
=
0
;
STsdbCfg
tsdbCfg
;
STableCfg
tableCfg
;
std
::
string
testDir
=
"/root/mnt/work/ttest"
;
char
*
rootDir
=
strdup
((
testDir
+
"/vnode"
+
std
::
to_string
(
vnode
)).
c_str
());
// for (int type = TSDB_FILE_TYPE_HEAD; type < TSDB_FILE_TYPE_MAX; type++) {
// tsdbOpenFile(&pGroup->files[type], O_RDONLY);
// }
tsdbDebugFlag
=
131
;
//NOTE: you must set the flag
// SCompIdx *pIdx = (SCompIdx *)calloc(pRepo->config.maxTables, sizeof(SCompIdx));
// tsdbLoadCompIdx(pGroup, (void *)pIdx, pRepo->config.maxTables);
taosRemoveDir
(
rootDir
);
// SCompInfo *pCompInfo = (SCompInfo *)malloc(sizeof(SCompInfo) + pIdx[1].len);
// Create and open repository
tsdbSetCfg
(
&
tsdbCfg
,
1
,
16
,
4
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
);
tsdbCreateRepo
(
rootDir
,
&
tsdbCfg
);
TSDB_REPO_T
*
repo
=
tsdbOpenRepo
(
rootDir
,
NULL
);
ASSERT_NE
(
repo
,
nullptr
);
// tsdbLoadCompBlocks(pGroup, &pIdx[1], (void *)pCompInfo);
// Create table
tsdbSetTableCfg
(
&
tableCfg
);
tsdbCreateTable
(
repo
,
&
tableCfg
);
// int blockIdx = 0;
// SCompBlock *pBlock = &(pCompInfo->blocks[blockIdx])
;
// Insert data
SInsertInfo
iInfo
=
{
repo
,
true
,
1
,
5849583783847394
,
0
,
1590000000000
,
10
,
10000000
,
1000
,
tableCfg
.
schema
}
;
// SCompData *pCompData = (SCompData *)malloc(sizeof(SCompData) + sizeof(SCompCol) * pBlock->numOfCols);
// tsdbLoadCompCols(&pGroup->files[TSDB_FILE_TYPE_DATA], pBlock, (void *)pCompData);
// STable *pTable = tsdbGetTableByUid(pRepo->tsdbMeta, pCompData->uid);
// SDataCols *pDataCols = tdNewDataCols(tdMaxRowBytesFromSchema(tsdbGetTableSchema(pRepo->tsdbMeta, pTable)), 5);
// tdInitDataCols(pDataCols, tsdbGetTableSchema(pRepo->tsdbMeta, pTable));
// tsdbLoadDataBlock(&pGroup->files[TSDB_FILE_TYPE_DATA], pBlock, 1, pDataCols, pCompData);
// tdResetDataCols(pDataCols);
// tsdbLoadDataBlock(&pGroup->files[TSDB_FILE_TYPE_DATA], pBlock + 1, 1, pDataCols, pCompData);
// int k = 0;
insertData
(
&
iInfo
);
}
TEST
(
TsdbTest
,
DISABLED_createFileGroup
)
{
SFileGroup
fGroup
;
// ASSERT_EQ(tsdbCreateFileGroup("/home/ubuntu/work/ttest/vnode0/data", 1820, &fGroup, 1000), 0);
int
k
=
0
;
tsdbCloseRepo
(
repo
,
1
);
}
static
char
*
getTKey
(
const
void
*
data
)
{
return
(
char
*
)
data
;
}
static
void
insertSkipList
(
bool
isAscend
)
{
TSKEY
start_time
=
1587393453000
;
TSKEY
interval
=
1000
;
SSkipList
*
pList
=
tSkipListCreate
(
5
,
TSDB_DATA_TYPE_TIMESTAMP
,
sizeof
(
TSKEY
),
0
,
0
,
1
,
getTKey
);
ASSERT_NE
(
pList
,
nullptr
);
for
(
size_t
i
=
0
;
i
<
20000000
;
i
++
)
{
TSKEY
time
=
isAscend
?
(
start_time
+
i
*
interval
)
:
(
start_time
-
i
*
interval
);
int32_t
level
=
0
;
int32_t
headSize
=
0
;
tSkipListNewNodeInfo
(
pList
,
&
level
,
&
headSize
);
SSkipListNode
*
pNode
=
(
SSkipListNode
*
)
malloc
(
headSize
+
sizeof
(
TSKEY
));
ASSERT_NE
(
pNode
,
nullptr
);
pNode
->
level
=
level
;
*
(
TSKEY
*
)((
char
*
)
pNode
+
headSize
)
=
time
;
tSkipListPut
(
pList
,
pNode
);
}
tSkipListDestroy
(
pList
);
}
TEST
(
TsdbTest
,
DISABLED_testSkipList
)
{
// TEST(TsdbTest, testSkipList) {
double
stime
=
getCurTime
();
insertSkipList
(
true
);
double
etime
=
getCurTime
();
printf
(
"Time used to insert 100000000 records takes %f seconds
\n
"
,
etime
-
stime
);
stime
=
getCurTime
();
insertSkipList
(
false
);
etime
=
getCurTime
();
printf
(
"Time used to insert 100000000 records takes %f seconds
\n
"
,
etime
-
stime
);
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录