|
|
|
#!/usr/bin/python
|
|
|
|
# -*- coding:utf-8 -*-
|
|
|
|
|
|
|
|
import sys
|
|
|
|
import time
|
|
|
|
import subprocess
|
|
|
|
|
|
|
|
import test as Tester
|
|
|
|
import ProxyBuilder as Builder
|
|
|
|
import ProxyChecker as Checker
|
|
|
|
|
|
|
|
defaultPort = 10808
|
|
|
|
defaultPasswd = 'dnomd343'
|
|
|
|
|
|
|
|
def startTest(testList):
|
|
|
|
for field in testList:
|
|
|
|
serverProcess = subprocess.Popen(
|
|
|
|
field['serverCommand'],
|
|
|
|
stdout = subprocess.DEVNULL,
|
|
|
|
stderr = subprocess.DEVNULL)
|
|
|
|
time.sleep(0.1) # 等待进程启动
|
|
|
|
if serverProcess.poll() != None: # 服务端启动失败
|
|
|
|
print("server unexpected exit")
|
|
|
|
continue
|
|
|
|
print(field['caption'] + ' => ', end = '')
|
|
|
|
client = Builder.build(field['proxyInfo'], '/tmp/ProxyC')
|
|
|
|
time.sleep(0.5) # 等待初始化完成
|
|
|
|
if not Builder.check(client):
|
|
|
|
print("client unexpected exit") # 客户端启动失败
|
|
|
|
else:
|
|
|
|
print(format(Checker.httpPing(client['port']), '.2f') + 'ms')
|
|
|
|
Builder.destroy(client) # 关闭客户端
|
|
|
|
time.sleep(0.1)
|
|
|
|
serverProcess.terminate() # 关闭服务端
|
|
|
|
time.sleep(0.1)
|
|
|
|
print()
|
|
|
|
|
|
|
|
if len(sys.argv) <= 1:
|
|
|
|
print("no param")
|
|
|
|
sys.exit(0)
|
|
|
|
|
|
|
|
testName = sys.argv[1]
|
|
|
|
if testName == 'ss':
|
|
|
|
testList = Tester.Shadowsocks(defaultPort, defaultPasswd)
|
|
|
|
elif testName == 'ssr':
|
|
|
|
testList = Tester.ShadowsocksR(defaultPort, defaultPasswd)
|
|
|
|
else:
|
|
|
|
print("unknown test name")
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
startTest(testList)
|