stress_test
来源:互联网 发布:java 键值对 编辑:程序博客网 时间:2024/06/06 02:32
#!/usr/bin python2.6# -*- coding: utf-8 -*-import threading, datetime, timeimport logging# close output that lower than errorlogging.getLogger("scapy.runtime").setLevel(logging.ERROR)from scapy.all import *# 初始最大并发数START_THEAD_COUNT = 10# 递增并发数THREAD_INCREASE_STEP = 10# 域名DOMAIN = 'www.baidu.com'# 默认http请求METHOD = 'get'# 请求发送间隔 整数INTERVAL = 10 # 5秒# 每个请求的超时TIMEOUT = 5SRC_IP = ['172.29.165.34', '172.29.165.35', '172.29.165.36', '172.29.165.37']'''Factory'''class biz : '''Main''' def run(self) : start = datetime.datetime.now() global FAILED_COUNT FAILED_COUNT = 0 threads = [] src_ip_upper_limit = len(SRC_IP) - 1 # thread instance initialization for i in range(START_THEAD_COUNT) : src = SRC_IP[random.randint(0, src_ip_upper_limit)] t=threading.Thread(target=self.execute, args=(src, )) threads.append(t) # activate threads for i in range(START_THEAD_COUNT) : threads[i].start() # wait for all ends for i in range(START_THEAD_COUNT) : threads[i].join() delta = datetime.datetime.now() - start writeline('INFO', 'Totally \'' + str(START_THEAD_COUNT) + '\' http requests has been sent in ' + str(delta.seconds) + str(delta.microseconds / 1000) + 'ms.') # writeline('INFO', 'Total is \'' + str(START_THEAD_COUNT) + '\' while failed \'' + str(FAILED_COUNT) + '\' in ' + str(delta.seconds) + str(delta.microseconds / 1000) + 'ms.') return (True, None) '''Execute http request and get response status''' def execute(self, src) : global FAILED_COUNT sr(IP(dst = DOMAIN, src = src) / TCP(dport = 80), timeout = TIMEOUT, verbose = 0) # if unans : FAILED_COUNT = FAILED_COUNT + 1'''Log writer'''def writeline(status, msg) : line = time.strftime('%Y-%m-%d %X', time.localtime(time.time())) + ' [' + status + '] ' + msg print line return (True, line)if __name__ == '__main__' : o = biz() while True : r, c = o.run() if not r : writeline('FAILED-', c) time.sleep(INTERVAL) # update max threads START_THEAD_COUNT = START_THEAD_COUNT + THREAD_INCREASE_STEP
0 0
- stress_test
- Unity3D游戏开发之使用Mecanim动画系统控制2D动画
- 转 Grand Central Dispatch 基础教程:Part 1/2 -swift
- Tiny对JDK有什么要求么?
- iOS中UIActionSheet的使用
- TINY框架用到的第三方库有哪些?
- stress_test
- 关于ExecuteNonQuery()执行成功却返回-1的问题
- 我想参与TINY框架的构建,有什么要求没有?
- TestNG Assert 详解
- 3个著名加密算法(MD5、RSA、DES)的解析
- Android高效加载大图、多图解决方案_LruCache,有效避免程序OOM
- 如何给TINY提新需求或报告缺陷?
- thinkphp 自动验证 demo(自用)
- ffmpeg源码跟踪笔记之avformat_find_stream_info