diff options
| -rw-r--r-- | gtest/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | gtest/gtest_lua_timeout.cpp | 109 | ||||
| -rw-r--r-- | gtest/gtest_tsg_lua_exec_with_context.cpp | 18 | ||||
| -rw-r--r-- | gtest/script/c_time_out.lua | 11 | ||||
| -rw-r--r-- | gtest/script/lua_time_out.lua | 10 |
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 |
