From 1db13168ff9599ce4df3bd13fd2d1ff5d29df05b Mon Sep 17 00:00:00 2001 From: wyy Date: Tue, 24 Dec 2013 02:58:34 -0800 Subject: [PATCH] add servertest --- README.md | 2 +- dict/CMakeLists.txt | 2 +- test/servertest/load_test.py | 91 ++++++++++++++++++++++++++++++++++++ test/servertest/run_curl.sh | 11 +++++ test/testdata/curl.res | 1 + test/testdata/load_test.urls | 1 + 6 files changed, 106 insertions(+), 2 deletions(-) create mode 100755 test/servertest/load_test.py create mode 100755 test/servertest/run_curl.sh create mode 100644 test/testdata/curl.res create mode 100644 test/testdata/load_test.urls diff --git a/README.md b/README.md index cad9b1f..9a5cd30 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ FullSegment.hpp #### TransCode模块 -TransCode.cpp/TransCode.h 负责转换编码类型,将utf8和gbk转换成`uint16_t`类型,也负责逆转换。 +TransCode.hpp 负责转换编码类型,将utf8和gbk转换成`uint16_t`类型,也负责逆转换。 ### src/Husky diff --git a/dict/CMakeLists.txt b/dict/CMakeLists.txt index f123246..9076eb8 100644 --- a/dict/CMakeLists.txt +++ b/dict/CMakeLists.txt @@ -1 +1 @@ -INSTALL(FILES hmm_model.utf8 jieba.dict.utf8 DESTINATION share/CppJieba/dicts) +INSTALL(FILES hmm_model.utf8 jieba.dict.utf8 DESTINATION share/CppJieba/dict) diff --git a/test/servertest/load_test.py b/test/servertest/load_test.py new file mode 100755 index 0000000..6ea6ce3 --- /dev/null +++ b/test/servertest/load_test.py @@ -0,0 +1,91 @@ +#!/usr/bin/python +# coding:utf-8 +import time +import urllib2 +import threading +from Queue import Queue +from time import sleep +import sys + +# 性能测试页面 +#PERF_TEST_URL = "http://10.2.66.38/?yyid=-1&suv=1309231700203264&callback=xxxxx" +URLS = [line for line in open("../testdata/load_test.urls", "r")] + +# 配置:压力测试 +THREAD_NUM = 10 # 并发线程总数 +ONE_WORKER_NUM = 500 # 每个线程的循环次数 +LOOP_SLEEP = 0.01 # 每次请求时间间隔(秒) + +# 配置:模拟运行状态 +#THREAD_NUM = 10 # 并发线程总数 +#ONE_WORKER_NUM = 10 # 每个线程的循环次数 +#LOOP_SLEEP = 0 # 每次请求时间间隔(秒) + + +# 出错数 +ERROR_NUM = 0 + + +#具体的处理函数,负责处理单个任务 +def doWork(index, url): + t = threading.currentThread() + #print "["+t.name+" "+str(index)+"] "+PERF_TEST_URL + + try: + html = urllib2.urlopen(url).read() + except urllib2.URLError, e: + print "["+t.name+" "+str(index)+"] " + print e + global ERROR_NUM + ERROR_NUM += 1 + + +#这个是工作进程,负责不断从队列取数据并处理 +def working(): + t = threading.currentThread() + print "["+t.name+"] Sub Thread Begin" + + i = 0 + while i < ONE_WORKER_NUM: + i += 1 + doWork(i, URLS[i % len(URLS)]) + sleep(LOOP_SLEEP) + + print "["+t.name+"] Sub Thread End" + + +def main(): + #doWork(0) + #return + + t1 = time.time() + + Threads = [] + + # 创建线程 + for i in range(THREAD_NUM): + t = threading.Thread(target=working, name="T"+str(i)) + t.setDaemon(True) + Threads.append(t) + + for t in Threads: + t.start() + + for t in Threads: + t.join() + + print "main thread end" + + t2 = time.time() + print "========================================" + #print "URL:", PERF_TEST_URL + print "任务数量:", THREAD_NUM, "*", ONE_WORKER_NUM, "=", THREAD_NUM*ONE_WORKER_NUM + print "总耗时(秒):", t2-t1 + print "每次请求耗时(秒):", (t2-t1) / (THREAD_NUM*ONE_WORKER_NUM) + print "每秒承载请求数:", 1 / ((t2-t1) / (THREAD_NUM*ONE_WORKER_NUM)) + print "错误数量:", ERROR_NUM + + +if __name__ == "__main__": + main() + diff --git a/test/servertest/run_curl.sh b/test/servertest/run_curl.sh new file mode 100755 index 0000000..71ae184 --- /dev/null +++ b/test/servertest/run_curl.sh @@ -0,0 +1,11 @@ +CURL_RES=../testdata/curl.res +TMP=curl.res.tmp +curl -s "http://127.0.0.1:11200/?key=南京市长江大桥" >> $TMP +if diff $TMP $CURL_RES >> /dev/null +then + echo "ok"; +else + echo "failed." +fi + +rm $TMP diff --git a/test/testdata/curl.res b/test/testdata/curl.res new file mode 100644 index 0000000..5be50b3 --- /dev/null +++ b/test/testdata/curl.res @@ -0,0 +1 @@ +["南京市", "长江大桥"] \ No newline at end of file diff --git a/test/testdata/load_test.urls b/test/testdata/load_test.urls new file mode 100644 index 0000000..b710af2 --- /dev/null +++ b/test/testdata/load_test.urls @@ -0,0 +1 @@ +http://127.0.0.1:11200/?key=南京市长江大桥