summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authoryangwei <[email protected]>2023-04-11 12:11:12 +0800
committeryangwei <[email protected]>2023-04-11 16:08:02 +0800
commitf181d7c8bc68f713b4b46c128a045dabaf805bc6 (patch)
tree4fde6c37d6afe4e082720b3f8c2207e2f5b2c56a /test
parent8521902b397ea248930af380058871cc556be452 (diff)
🧪 test(unit test): 增加对http_url_decode的单元测试
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt24
-rw-r--r--test/googletest-release-1.8.0.tar.gzbin0 -> 1281617 bytes
-rw-r--r--test/mock_sapp.cpp61
-rw-r--r--test/unit_test.cpp30
4 files changed, 114 insertions, 1 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 7149fed..4aaef79 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -2,10 +2,32 @@ cmake_minimum_required (VERSION 2.8)
project(${lib_name}_test)
+
include(ExternalProject)
-#### Protoco_test_run
+#### GoogleTest
+ExternalProject_Add(GoogleTest PREFIX GoogleTest
+ URL ${CMAKE_CURRENT_SOURCE_DIR}/googletest-release-1.8.0.tar.gz
+ URL_MD5 16877098823401d1bf2ed7891d7dce36
+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
+
+ExternalProject_Get_Property(GoogleTest INSTALL_DIR)
+file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
+add_library(gtest STATIC IMPORTED GLOBAL)
+add_dependencies(gtest GoogleTest)
+set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libgtest.a)
+set_property(TARGET gtest PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
+set_property(TARGET gtest PROPERTY INTERFACE_LINK_LIBRARIES pthread)
+
+
+enable_testing()
+add_executable(HTTPUintTest unit_test.cpp mock_sapp.cpp)
+target_link_libraries(HTTPUintTest gtest http)
+
+include(ExternalProject)
+#### Protoco_test_run
+
ExternalProject_Add(ProtoTest PREFIX ProtoTest
URL ${CMAKE_CURRENT_SOURCE_DIR}/test_protocol_run.zip
URL_MD5 71d8284b59af0286b5f31f0a3160bc44
diff --git a/test/googletest-release-1.8.0.tar.gz b/test/googletest-release-1.8.0.tar.gz
new file mode 100644
index 0000000..a40df33
--- /dev/null
+++ b/test/googletest-release-1.8.0.tar.gz
Binary files differ
diff --git a/test/mock_sapp.cpp b/test/mock_sapp.cpp
new file mode 100644
index 0000000..ece6388
--- /dev/null
+++ b/test/mock_sapp.cpp
@@ -0,0 +1,61 @@
+#include <stdlib.h>
+
+#include "stream.h"
+
+void free_tcp_proxy_stream(struct streaminfo *pstream,struct streaminfo *pProxy)
+{
+ return;
+}
+
+void set_proxy_fstream(struct streaminfo *pstream,struct streaminfo *pProxy)
+{
+ return;
+}
+void *dictator_malloc(int thread_seq,size_t size)
+{
+ return malloc(size);
+}
+void dictator_free(int thread_seq,void *pbuf)
+{
+ free(pbuf);
+}
+
+void *dictator_realloc(int thread_seq, void* pbuf, size_t size)
+{
+ return realloc(pbuf, size);
+}
+
+char PROT_PROCESS(stSessionInfo* session_info, void **pme, int thread_seq,struct streaminfo *a_stream,const void *a_packet)
+{
+ return 0;
+}
+
+int get_thread_count(void)
+{
+ return 0;
+}
+
+const void *project_req_get_struct(const struct streaminfo *stream, int project_req_id)
+{
+ return NULL;
+}
+
+const char *printaddr (const struct layer_addr *paddrinfo, int threadindex)
+{
+ return NULL;
+}
+
+int project_producer_register(const char *project_req_name, const char *project_req_val_type, project_req_free_t *free_cb)
+{
+ return 0;
+}
+
+int project_req_add_struct(struct streaminfo *stream, int project_req_id, const void *project_req_value)
+{
+ return 0;
+}
+
+int deal_tcp_in_proxy_stream(struct streaminfo *a_tcp,void * a_packet,struct streaminfo *pProxy)
+{
+ return 0;
+} \ No newline at end of file
diff --git a/test/unit_test.cpp b/test/unit_test.cpp
new file mode 100644
index 0000000..50a5092
--- /dev/null
+++ b/test/unit_test.cpp
@@ -0,0 +1,30 @@
+#include <gtest/gtest.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "http.h"
+
+TEST(HTTPUnitTest, url_decode)
+{
+ const char *input = "%A9%E4%B8%8B%E8%B6%B3%E7%90%83%2CRB%E8%8E%B1%E6%AF%94%E9%94%A1%2C%E5%BC%97%E8%B5%96%E5%A0%A1%2C%E6%96%AF%E6%89%98%E5%85%8B%E5%9F%8E%2C%E4%BC%AF%E6%81%A9%E8%8C%85%E6%96%AF%2C%E9%97%A8%E5%85%B4%2C%E8%90%A8%E7%B4%A2%E6%B4%9B%2C%E8%B6%B3%E7%90%83%2C%E7%9A%87%E5%AE%B6%E7%A4%BE%E4%BC%9A%2C%E8%8B%B1%E8%B6%85%2C%E6%9B%BC%E5%BD%BB%E6%96%AF%E7%89%B9%E8%81%94%2C%E5%9F%83%E7%93%A6%E5%B0%94%2C%E8%A5%BF%E4%B9%99%2C%E6%B3%95%E5%85%B0%E5%85%8B%E7%A6%8F%2C%E6%8B%89%E6%96%AF%E5%B8%95%E5%B0%94%E9%A9%AC%E6%96%AF%2C%E6%B2%99%E5%B0%94%E5%85%8B%2C%E7%9A%87%E5%AE%B6%E9%A9%AC%E5%BE%B7%E9%87%8C%2C%E7%83%AD%E9%82%A3%E4%BA%9A%2C%E7%BE%8E%E5%9B%A0%E8%8C%A8%2C%E5%B7%B4%E8%90%A8%2C%E8%8E%B1%E6%AF%94%E9%94%A1%E7%BA%A2%E7%89%9B%2C%E6%96%AF%E5%9B%BE%E5%8A%A0%E7%89%B9%2CCBA%2C%E5%A5%A5%E8%90%A8%E8%8B%8F%E7%BA%B3%2C%E6%8B%9C%E4%BB%81%E6%85%95%E5%B0%BC%E9%BB%91%2C%E8%B5%AB%E7%BD%97%E7%BA%B3%2C%E6%81%A9%E6%B3%A2%E5%88%A9%2C%E6%AF%95%E5%B0%94%E5%B7%B4%E9%84%82%2C%E5%A1%9E%E5%B0%94%E5%A1%94%2C%E7%9A%87%E5%AE%B6%E8%B4%9D%E8%92%82%E6%96%AF%2C%E6%B2%8";
+ int len = strlen(input);
+ char *output = (char*)calloc(strlen(input)+1, 1);
+ memcpy(output, input, strlen(input));
+
+ http_url_decode(output, &len);
+
+ EXPECT_EQ(len, 347);
+ EXPECT_EQ(strlen(output), 346);
+
+ free(output);
+
+}
+
+int main(int argc, char ** argv)
+{
+ int ret=0;
+ ::testing::InitGoogleTest(&argc, argv);
+ ret=RUN_ALL_TESTS();
+ return ret;
+}