summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author“pengxuanzheng” <[email protected]>2022-07-26 03:13:34 +0000
committer“pengxuanzheng” <[email protected]>2022-07-26 03:13:34 +0000
commitb72a2c160fd81df15732b17468aa24d81c43b4a1 (patch)
treeca10fece2d5c64f0cb937db38b43abdd37b7710c
parentc07f997113d7de551e6ba0839e23387217444943 (diff)
✨ feat(TSG-11154): 添加gtest用例
-rw-r--r--gtest/CMakeLists.txt1
-rw-r--r--gtest/gtest_lua_timeout.cpp109
-rw-r--r--gtest/gtest_tsg_lua_exec_with_context.cpp18
-rw-r--r--gtest/script/c_time_out.lua11
-rw-r--r--gtest/script/lua_time_out.lua10
5 files changed, 139 insertions, 10 deletions
diff --git a/gtest/CMakeLists.txt b/gtest/CMakeLists.txt
index 58b0efa..a692e69 100644
--- a/gtest/CMakeLists.txt
+++ b/gtest/CMakeLists.txt
@@ -11,7 +11,6 @@ link_libraries(tsglua gtest gtest_main pthread)
add_definitions(-g -W -Wall)
add_executable(gtest_tsg_lua ${SRCS})
-# add_executable(gtest_lua_remove_cmd ./gtest_lua_remove_cmd.cpp)
add_dependencies(gtest_tsg_lua ${lib_name}_shared gtest)
#target_link_libraries(gtest_tsg_lua tsglua gtest gtest_main pthread)
diff --git a/gtest/gtest_lua_timeout.cpp b/gtest/gtest_lua_timeout.cpp
new file mode 100644
index 0000000..88dcd78
--- /dev/null
+++ b/gtest/gtest_lua_timeout.cpp
@@ -0,0 +1,109 @@
+#include <gtest/gtest.h>
+#include <time.h>
+#include "tsg_lua_interface.h"
+
+static long mstime()
+{
+ struct timespec now;
+ clock_gettime(CLOCK_MONOTONIC, &now);
+ return now.tv_sec * 1000 + now.tv_nsec/1000000;
+}
+
+static int count_set(tsg_lua_handle L)
+{
+ int num = 0;
+ for (int i = 0; i < 10000; i++)
+ {
+ for (int j = 0; j < 1000; j++)
+ {
+ num++;
+ }
+ }
+ int *count = (int *)lua_get_userdata(L);
+ *count = num;
+ return 0;
+}
+
+TEST(lua_time_out, lua)
+{
+ tsg_lua_handle L = tsg_lua_vm_create_with_name("TEST");
+
+ const char *ud = "hello world.";
+ const char *script = "./script/lua_time_out.lua";
+ lua_data_t in;
+ in.data = (char *)"This is a test";
+ in.len = strlen(in.data);
+ lua_arg_t out;
+ out.type = STRING;
+ out.len = 1024;
+ out.str = (char *)calloc(1, 1024);
+ long tt, elapsed;
+
+ int ret = lua_exec_file(L, script, in, (void *)ud, NULL, 10, &out);
+ EXPECT_EQ(ERR_SCRIPT_TIMEOUT, ret);
+ bzero(out.str, 1024);
+
+ tt = mstime();
+ ret = lua_exec_file(L, script, in, (void *)ud, NULL, 0, &out);
+ elapsed = mstime() - tt;
+ EXPECT_EQ(0, ret);
+ EXPECT_LE(10, elapsed);
+ EXPECT_EQ(in.len, out.len);
+ EXPECT_EQ(STRING, out.type);
+ EXPECT_STREQ(in.data, out.str);
+ bzero(out.str, 1024);
+
+ ret = lua_exec_file(L, script, in, (void *)ud, NULL, 10, &out);
+ EXPECT_EQ(ERR_SCRIPT_TIMEOUT, ret);
+ bzero(out.str, 1024);
+
+ tsg_destory_lua(L);
+ free(out.str);
+}
+
+TEST(lua_time_out, c)
+{
+ tsg_lua_handle L = tsg_lua_vm_create_with_name("TEST");
+
+ int count = 10;
+ const char *script = "./script/c_time_out.lua";
+ lua_data_t in;
+ in.data = (char *)"This is a test";
+ in.len = strlen(in.data);
+ lua_arg_t out;
+ out.type = STRING;
+ out.len = 1024;
+ out.str = (char *)calloc(1, 1024);
+ long tt, elapsed;
+
+ lua_register_function(L, NULL, "set_count", count_set);
+ tt = mstime();
+ int ret = lua_exec_file(L, script, in, (void *)&count, NULL, 10, &out);
+ elapsed = mstime() - tt;
+ EXPECT_EQ(ERR_SCRIPT_TIMEOUT, ret);
+ EXPECT_LE(10, elapsed);
+ EXPECT_EQ(10000000, count);
+ bzero(out.str, 1024);
+
+ tt = mstime();
+ ret = lua_exec_file(L, script, in, (void *)&count, NULL, 0, &out);
+ elapsed = mstime() - tt;
+ EXPECT_EQ(0, ret);
+ EXPECT_LE(10, elapsed);
+ EXPECT_EQ(in.len, out.len);
+ EXPECT_EQ(STRING, out.type);
+ EXPECT_STREQ(in.data, out.str);
+ EXPECT_EQ(10000000, count);
+ bzero(out.str, 1024);
+
+ tt = mstime();
+ ret = lua_exec_file(L, script, in, (void *)&count, NULL, 10, &out);
+ elapsed = mstime() - tt;
+ EXPECT_EQ(ERR_SCRIPT_TIMEOUT, ret);
+ EXPECT_LE(10, elapsed);
+ EXPECT_EQ(10000000, count);
+ bzero(out.str, 1024);
+
+ tsg_destory_lua(L);
+ free(out.str);
+} \ No newline at end of file
diff --git a/gtest/gtest_tsg_lua_exec_with_context.cpp b/gtest/gtest_tsg_lua_exec_with_context.cpp
index 447f460..0b3d454 100644
--- a/gtest/gtest_tsg_lua_exec_with_context.cpp
+++ b/gtest/gtest_tsg_lua_exec_with_context.cpp
@@ -43,7 +43,7 @@ TEST(lua_exec_file, normal)
lua_register_function(L, "get", "get_userdata", get_userdata);
lua_script_context context = NULL;
context = lua_script_context_malloc(L);
- int ret = lua_exec_file(L, script, in, (void *)ud, context, &out);
+ int ret = lua_exec_file(L, script, in, (void *)ud, context, 0, &out);
const char *str = "userdata:hello world., context.count:1, context.message:This is first called";
EXPECT_EQ(0, ret);
EXPECT_EQ(strlen(str), out.len);
@@ -52,7 +52,7 @@ TEST(lua_exec_file, normal)
bzero(out.str, 1024);
ud = "hello lua.";
- ret = lua_exec_file(L, script, in, (void *)ud, context, &out);
+ ret = lua_exec_file(L, script, in, (void *)ud, context, 0, &out);
str = "userdata:hello lua., context.count:2, context.message:This is not first called";
EXPECT_EQ(0, ret);
EXPECT_EQ(strlen(str), out.len);
@@ -62,7 +62,7 @@ TEST(lua_exec_file, normal)
lua_script_context context2 = NULL;
context2 = lua_script_context_malloc(L);
- ret = lua_exec_file(L, script, in, (void *)ud, context2, &out);
+ ret = lua_exec_file(L, script, in, (void *)ud, context2, 0, &out);
str = "userdata:hello lua., context.count:1, context.message:This is first called";
EXPECT_EQ(0, ret);
EXPECT_EQ(strlen(str), out.len);
@@ -95,7 +95,7 @@ TEST(lua_exec, normal)
lua_register_function(L, "get", "get_userdata", get_userdata);
lua_script_context context = NULL;
context = lua_script_context_malloc(L);
- int ret = lua_exec(L, script, in, (void *)ud, context, &out);
+ int ret = lua_exec(L, script, in, (void *)ud, context, 0, &out);
const char *str = "userdata:hello world., context.count:1, context.message:This is first called";
EXPECT_EQ(0, ret);
EXPECT_EQ(strlen(str), out.len);
@@ -104,7 +104,7 @@ TEST(lua_exec, normal)
bzero(out.str, 1024);
ud = "hello lua.";
- ret = lua_exec(L, script, in, (void *)ud, context, &out);
+ ret = lua_exec(L, script, in, (void *)ud, context, 0, &out);
str = "userdata:hello lua., context.count:2, context.message:This is not first called";
EXPECT_EQ(0, ret);
EXPECT_EQ(strlen(str), out.len);
@@ -114,7 +114,7 @@ TEST(lua_exec, normal)
lua_script_context context2 = NULL;
context2 = lua_script_context_malloc(L);
- ret = lua_exec(L, script, in, (void *)ud, context2, &out);
+ ret = lua_exec(L, script, in, (void *)ud, context2, 0, &out);
str = "userdata:hello lua., context.count:1, context.message:This is first called";
EXPECT_EQ(0, ret);
EXPECT_EQ(strlen(str), out.len);
@@ -146,7 +146,7 @@ TEST(lua_cache_exec, normal)
lua_register_function(L, "get", "get_userdata", get_userdata);
lua_script_context context = NULL;
context = lua_script_context_malloc(L);
- int ret = lua_cache_exec(L, script_id, in, (void *)ud, context, &out);
+ int ret = lua_cache_exec(L, script_id, in, (void *)ud, context, 0, &out);
const char *str = "userdata:hello world., context.count:1, context.message:This is first called";
EXPECT_EQ(0, ret);
EXPECT_EQ(strlen(str), out.len);
@@ -155,7 +155,7 @@ TEST(lua_cache_exec, normal)
bzero(out.str, 1024);
ud = "hello lua.";
- ret = lua_cache_exec(L, script_id, in, (void *)ud, context, &out);
+ ret = lua_cache_exec(L, script_id, in, (void *)ud, context, 0, &out);
str = "userdata:hello lua., context.count:2, context.message:This is not first called";
EXPECT_EQ(0, ret);
EXPECT_EQ(strlen(str), out.len);
@@ -165,7 +165,7 @@ TEST(lua_cache_exec, normal)
lua_script_context context2 = NULL;
context2 = lua_script_context_malloc(L);
- ret = lua_cache_exec(L, script_id, in, (void *)ud, context2, &out);
+ ret = lua_cache_exec(L, script_id, in, (void *)ud, context2, 0, &out);
str = "userdata:hello lua., context.count:1, context.message:This is first called";
EXPECT_EQ(0, ret);
EXPECT_EQ(strlen(str), out.len);
diff --git a/gtest/script/c_time_out.lua b/gtest/script/c_time_out.lua
new file mode 100644
index 0000000..6cf6d8c
--- /dev/null
+++ b/gtest/script/c_time_out.lua
@@ -0,0 +1,11 @@
+local str = TEST.data
+
+TEST.set_count()
+
+local sum = 0
+for i = 0, 1000 do
+ for j = 0, 1000 do
+ sum = sum + i + j
+ end
+end
+return string.len(str), str
diff --git a/gtest/script/lua_time_out.lua b/gtest/script/lua_time_out.lua
new file mode 100644
index 0000000..112dabc
--- /dev/null
+++ b/gtest/script/lua_time_out.lua
@@ -0,0 +1,10 @@
+local str = TEST.data
+
+local sum = 0
+for i = 0, 10000 do
+ for j = 0, 1000 do
+ sum = sum + i + j
+ end
+end
+
+return string.len(str), str