You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.1 KiB

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import Tester
from Basis.Logger import logging
threadNum = 16
testItem = None
testFilter = None
testUrl = 'http://baidu.com'
helpMsg = '''
./test.py [ITEM] [OPTIONS]
[ITEM]: ss / ssr / vmess / vless / trojan / trojan-go / brook / hysteria
[OPTIONS]:
--thread NUM thread number
--url URL http check url
--filter ID1[,ID2...] test the specified id
--all test extra shadowsocks items
--ipv6 test on ipv6 network
--help show this message
'''
def getArg(field: str) -> str or None:
try:
index = sys.argv.index(field)
return sys.argv[index + 1]
except:
return None
if '--help' in sys.argv:
print(helpMsg)
sys.exit(0)
if len(sys.argv) > 1 and not sys.argv[1].startswith('--'):
testItem = sys.argv[1]
if getArg('--url') is not None:
testUrl = getArg('--url')
if getArg('--thread') is not None:
threadNum = int(getArg('--thread'))
if getArg('--filter') is not None:
testFilter = set(getArg('--filter').split(','))
isV6 = '--ipv6' in sys.argv
Tester.loadBind(serverV6 = isV6, clientV6 = isV6) # ipv4 / ipv6 (127.0.0.1 / ::1)
Tester.loadCert('proxyc.net', 'ProxyC') # default cert config
logging.critical('TEST ITEM: ' + ('all' if testItem is None else testItem))
logging.critical('FILTER: %s' % testFilter)
logging.critical('URL: ' + testUrl)
logging.critical('THREAD NUMBER: %i' % threadNum)
logging.critical('-------------------------------- TEST START --------------------------------')
if testItem is not None:
if testItem == 'ss' and '--all' in sys.argv:
testItem = 'ss-all'
Tester.test(Tester.entry[testItem], threadNum, testUrl, testFilter)
else:
for item in Tester.entry:
if item == ('ss' if '--all' in sys.argv else 'ss-all'): # skip ss / ss-all
continue
logging.critical('TEST ITEM -> ' + item)
Tester.test(Tester.entry[item], threadNum, testUrl, testFilter)
logging.critical('-------------------------------- TEST COMPLETE --------------------------------')