test: for tsim
This commit is contained in:
parent
414b1c3061
commit
b5f2d4d382
|
@ -35,7 +35,7 @@ static void *funcPtr1(void *param) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
TEST(osThreadTests, invalidParameter) {
|
||||
TEST(osThreadTests, para1) {
|
||||
TdThread tid1 = {0};
|
||||
TdThread tid2 = {0};
|
||||
int32_t reti = 0;
|
||||
|
@ -192,3 +192,62 @@ TEST(osThreadTests, invalidParameter) {
|
|||
reti = taosThreadCondAttrDestroy(&condattr);
|
||||
EXPECT_EQ(reti, 0);
|
||||
}
|
||||
|
||||
TEST(osThreadTests, option) {
|
||||
int32_t reti = 0;
|
||||
|
||||
TdThreadSpinlock lock = {0};
|
||||
reti = taosThreadSpinInit(&lock, -1);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinLock(&lock);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinTrylock(&lock);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinUnlock(&lock);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinDestroy(&lock);
|
||||
EXPECT_NE(reti, 0);
|
||||
|
||||
reti = taosThreadSpinInit(NULL, 0);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinLock(NULL);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinTrylock(NULL);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinUnlock(NULL);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinDestroy(NULL);
|
||||
EXPECT_NE(reti, 0);
|
||||
}
|
||||
|
||||
TEST(osThreadTests, splilock) {
|
||||
int32_t reti = 0;
|
||||
|
||||
TdThreadSpinlock lock = {0};
|
||||
reti = taosThreadSpinInit(&lock, -1);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinLock(&lock);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinTrylock(&lock);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinUnlock(&lock);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinDestroy(&lock);
|
||||
EXPECT_NE(reti, 0);
|
||||
|
||||
reti = taosThreadSpinInit(NULL, 0);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinLock(NULL);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinTrylock(NULL);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinUnlock(NULL);
|
||||
EXPECT_NE(reti, 0);
|
||||
reti = taosThreadSpinDestroy(NULL);
|
||||
EXPECT_NE(reti, 0);
|
||||
}
|
||||
|
||||
TEST(osThreadTests, others) {
|
||||
taosThreadTestCancel();
|
||||
taosThreadClear(NULL);
|
||||
}
|
|
@ -1,14 +1,29 @@
|
|||
aux_source_directory(src TSIM_SRC)
|
||||
add_executable(tsim ${TSIM_SRC})
|
||||
target_link_libraries(
|
||||
tsim
|
||||
LIST(APPEND TSIM_SRC src/simEntry.c)
|
||||
LIST(APPEND TSIM_SRC src/simExec.c)
|
||||
LIST(APPEND TSIM_SRC src/simParse.c)
|
||||
LIST(APPEND TSIM_SRC src/simSystem.c)
|
||||
|
||||
ADD_LIBRARY(tsim_static STATIC ${TSIM_SRC})
|
||||
TARGET_INCLUDE_DIRECTORIES(
|
||||
tsim_static
|
||||
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/inc"
|
||||
)
|
||||
TARGET_LINK_LIBRARIES(
|
||||
tsim_static
|
||||
PUBLIC ${TAOS_LIB}
|
||||
PUBLIC util
|
||||
PUBLIC common
|
||||
PUBLIC os
|
||||
PUBLIC cjson
|
||||
)
|
||||
target_include_directories(
|
||||
|
||||
LIST(APPEND TSIM_EXE_SRC src/simMain.c)
|
||||
ADD_EXECUTABLE(tsim ${TSIM_EXE_SRC})
|
||||
TARGET_LINK_LIBRARIES(
|
||||
tsim
|
||||
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/inc"
|
||||
PUBLIC tsim_static
|
||||
)
|
||||
|
||||
IF(${BUILD_TEST})
|
||||
ADD_SUBDIRECTORY(test)
|
||||
ENDIF(${BUILD_TEST})
|
||||
|
|
|
@ -16,6 +16,10 @@
|
|||
#ifndef _TD_SIM_INT_H_
|
||||
#define _TD_SIM_INT_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "os.h"
|
||||
|
||||
#include "cJSON.h"
|
||||
|
@ -161,8 +165,8 @@ typedef struct _script_t {
|
|||
int32_t type;
|
||||
bool killed;
|
||||
void *taos;
|
||||
char rows[12]; // number of rows data retrieved
|
||||
char cols[12]; // number of columns data retrieved
|
||||
char rows[12]; // number of rows data retrieved
|
||||
char cols[12]; // number of columns data retrieved
|
||||
char data[MAX_QUERY_ROW_NUM][MAX_QUERY_COL_NUM][MAX_QUERY_VALUE_LEN]; // query results
|
||||
char system_exit_code[12];
|
||||
char system_ret_content[MAX_SYSTEM_RESULT_LEN];
|
||||
|
@ -192,7 +196,7 @@ SScript *simParseScript(char *fileName);
|
|||
SScript *simProcessCallOver(SScript *script);
|
||||
void *simExecuteScript(void *script);
|
||||
void simInitsimCmdList();
|
||||
bool simSystemInit();
|
||||
void simSystemInit();
|
||||
void simSystemCleanUp();
|
||||
char *simGetVariable(SScript *script, char *varName, int32_t varLen);
|
||||
bool simExecuteExpCmd(SScript *script, char *option);
|
||||
|
@ -214,4 +218,11 @@ bool simExecuteLineInsertErrorCmd(SScript *script, char *option);
|
|||
bool simExecuteSetBIModeCmd(SScript *script, char *option);
|
||||
void simVisuallizeOption(SScript *script, char *src, char *dst);
|
||||
|
||||
int32_t simEntry(int32_t argc, char **argv);
|
||||
void simHandleSignal(int32_t signo, void *sigInfo, void *context);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*_TD_SIM_INT_H_*/
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||
*
|
||||
* This program is free software: you can use, redistribute, and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3
|
||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define _DEFAULT_SOURCE
|
||||
#include "simInt.h"
|
||||
|
||||
bool simExecSuccess = false;
|
||||
bool abortExecution = false;
|
||||
bool useValgrind = false;
|
||||
|
||||
void simHandleSignal(int32_t signo, void *sigInfo, void *context) {
|
||||
simSystemCleanUp();
|
||||
abortExecution = true;
|
||||
}
|
||||
|
||||
int32_t simEntry(int32_t argc, char **argv) {
|
||||
char scriptFile[MAX_FILE_NAME_LEN] = "sim_main_test.sim";
|
||||
|
||||
for (int32_t i = 1; i < argc; ++i) {
|
||||
if (strcmp(argv[i], "-c") == 0 && i < argc - 1) {
|
||||
tstrncpy(configDir, argv[++i], 128);
|
||||
} else if (strcmp(argv[i], "-f") == 0 && i < argc - 1) {
|
||||
tstrncpy(scriptFile, argv[++i], MAX_FILE_NAME_LEN);
|
||||
} else if (strcmp(argv[i], "-v") == 0) {
|
||||
useValgrind = true;
|
||||
} else {
|
||||
printf("usage: %s [options] \n", argv[0]);
|
||||
printf(" [-c config]: config directory, default is: %s\n", configDir);
|
||||
printf(" [-f script]: script filename\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
simInfo("simulator is running ...");
|
||||
|
||||
simSystemInit();
|
||||
taosSetSignal(SIGINT, simHandleSignal);
|
||||
|
||||
SScript *script = simParseScript(scriptFile);
|
||||
if (script == NULL) {
|
||||
simError("parse script file:%s failed", scriptFile);
|
||||
return -1;
|
||||
}
|
||||
|
||||
simScriptList[++simScriptPos] = script;
|
||||
simExecuteScript(script);
|
||||
|
||||
int32_t ret = simExecSuccess ? 0 : -1;
|
||||
simInfo("execute result %d", ret);
|
||||
|
||||
return ret;
|
||||
}
|
|
@ -382,8 +382,8 @@ bool simExecuteRunBackCmd(SScript *script, char *option) {
|
|||
return true;
|
||||
}
|
||||
|
||||
void simReplaceDirSep(char *buf) {
|
||||
#ifdef WINDOWS
|
||||
void simReplaceDirSep(char *buf) {
|
||||
int i = 0;
|
||||
while (buf[i] != '\0') {
|
||||
if (buf[i] == '/') {
|
||||
|
@ -391,8 +391,8 @@ void simReplaceDirSep(char *buf) {
|
|||
}
|
||||
i++;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
bool simReplaceStr(char *buf, char *src, char *dst) {
|
||||
bool replaced = false;
|
|
@ -16,58 +16,7 @@
|
|||
#define _DEFAULT_SOURCE
|
||||
#include "simInt.h"
|
||||
|
||||
bool simExecSuccess = false;
|
||||
bool abortExecution = false;
|
||||
bool useValgrind = false;
|
||||
|
||||
void simHandleSignal(int32_t signo, void *sigInfo, void *context) {
|
||||
simSystemCleanUp();
|
||||
abortExecution = true;
|
||||
}
|
||||
|
||||
int32_t main(int32_t argc, char *argv[]) {
|
||||
char scriptFile[MAX_FILE_NAME_LEN] = "sim_main_test.sim";
|
||||
|
||||
for (int32_t i = 1; i < argc; ++i) {
|
||||
if (strcmp(argv[i], "-c") == 0 && i < argc - 1) {
|
||||
tstrncpy(configDir, argv[++i], 128);
|
||||
} else if (strcmp(argv[i], "-f") == 0 && i < argc - 1) {
|
||||
tstrncpy(scriptFile, argv[++i], MAX_FILE_NAME_LEN);
|
||||
} else if (strcmp(argv[i], "-v") == 0) {
|
||||
useValgrind = true;
|
||||
} else {
|
||||
printf("usage: %s [options] \n", argv[0]);
|
||||
printf(" [-c config]: config directory, default is: %s\n", configDir);
|
||||
printf(" [-f script]: script filename\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!simSystemInit()) {
|
||||
simError("failed to initialize the system");
|
||||
simSystemCleanUp();
|
||||
return -1;
|
||||
}
|
||||
|
||||
simInfo("simulator is running ...");
|
||||
taosSetSignal(SIGINT, simHandleSignal);
|
||||
|
||||
SScript *script = simParseScript(scriptFile);
|
||||
if (script == NULL) {
|
||||
simError("parse script file:%s failed", scriptFile);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (abortExecution) {
|
||||
simError("execute abort");
|
||||
return -1;
|
||||
}
|
||||
|
||||
simScriptList[++simScriptPos] = script;
|
||||
simExecuteScript(script);
|
||||
|
||||
int32_t ret = simExecSuccess ? 0 : -1;
|
||||
simInfo("execute result %d", ret);
|
||||
|
||||
return ret;
|
||||
// entry function used for unit testing.
|
||||
return simEntry(argc, argv);
|
||||
}
|
||||
|
|
|
@ -35,11 +35,10 @@ int32_t simInitCfg() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
bool simSystemInit() {
|
||||
void simSystemInit() {
|
||||
simInitCfg();
|
||||
simInitsimCmdList();
|
||||
memset(simScriptList, 0, sizeof(SScript *) * MAX_MAIN_SCRIPT_NUM);
|
||||
return true;
|
||||
}
|
||||
|
||||
void simSystemCleanUp() {}
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8...3.20)
|
||||
PROJECT(TDengine)
|
||||
|
||||
FIND_PATH(HEADER_GTEST_INCLUDE_DIR gtest.h /usr/include/gtest /usr/local/include/gtest)
|
||||
FIND_LIBRARY(LIB_GTEST_STATIC_DIR libgtest.a /usr/lib/ /usr/local/lib /usr/lib64)
|
||||
FIND_LIBRARY(LIB_GTEST_SHARED_DIR libgtest.so /usr/lib/ /usr/local/lib /usr/lib64)
|
||||
|
||||
IF(HEADER_GTEST_INCLUDE_DIR AND(LIB_GTEST_STATIC_DIR OR LIB_GTEST_SHARED_DIR))
|
||||
MESSAGE(STATUS "gTest library found, build os test")
|
||||
|
||||
INCLUDE_DIRECTORIES(${HEADER_GTEST_INCLUDE_DIR})
|
||||
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SOURCE_LIST)
|
||||
ENDIF()
|
||||
|
||||
INCLUDE_DIRECTORIES(${TD_SOURCE_DIR}/src/util/inc)
|
||||
|
||||
ADD_EXECUTABLE(simTests "simTests.cpp")
|
||||
TARGET_LINK_LIBRARIES(simTests os util tsim_static gtest_main)
|
||||
|
||||
ADD_TEST(
|
||||
NAME simTests
|
||||
COMMAND simTests
|
||||
)
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||
*
|
||||
* This program is free software: you can use, redistribute, and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3
|
||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <iostream>
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wwrite-strings"
|
||||
#pragma GCC diagnostic ignored "-Wunused-function"
|
||||
#pragma GCC diagnostic ignored "-Wunused-variable"
|
||||
#pragma GCC diagnostic ignored "-Wsign-compare"
|
||||
#pragma GCC diagnostic ignored "-Wsign-compare"
|
||||
#pragma GCC diagnostic ignored "-Wformat"
|
||||
#pragma GCC diagnostic ignored "-Wint-to-pointer-cast"
|
||||
#pragma GCC diagnostic ignored "-Wpointer-arith"
|
||||
|
||||
#include "simInt.h"
|
||||
|
||||
void simHandleSignal(int32_t signo, void *sigInfo, void *context);
|
||||
|
||||
TEST(simTests, parameters) {
|
||||
int32_t ret = 0;
|
||||
int32_t argc = 2;
|
||||
char *argv[4] = {0};
|
||||
|
||||
simSystemCleanUp();
|
||||
// argv[1] = "-c";
|
||||
// ret = simEntry(argc, argv);
|
||||
// EXPECT_EQ(ret, 0);
|
||||
|
||||
// argv[1] = "-f";
|
||||
// ret = simEntry(argc, argv);
|
||||
// EXPECT_EQ(ret, 0);
|
||||
|
||||
// argv[1] = "-v";
|
||||
// ret = simEntry(argc, argv);
|
||||
// EXPECT_EQ(ret, 0);
|
||||
|
||||
// argv[1] = "-h";
|
||||
// ret = simEntry(argc, argv);
|
||||
// EXPECT_EQ(ret, 0);
|
||||
|
||||
// simHandleSignal(0, NULL, NULL);
|
||||
|
||||
// simDebugFlag = 0;
|
||||
// argc = 1;
|
||||
// ret = simEntry(argc, argv);
|
||||
// EXPECT_EQ(ret, -1);
|
||||
}
|
Loading…
Reference in New Issue