mirror of https://github.com/dnomd343/ProxyC
Dnomd343
3 years ago
1 changed files with 76 additions and 0 deletions
@ -0,0 +1,76 @@ |
|||||
|
#!/usr/bin/python |
||||
|
# -*- coding:utf-8 -*- |
||||
|
|
||||
|
import os |
||||
|
import sys |
||||
|
import time |
||||
|
import subprocess |
||||
|
|
||||
|
import Checker |
||||
|
import ProxyTester as Tester |
||||
|
|
||||
|
testConfig = { |
||||
|
'port': 12345, |
||||
|
'passwd': 'dnomd343', |
||||
|
'host': 'dns.343.re', |
||||
|
'cert': '/etc/ssl/certs/dns.343.re/certificate.crt', |
||||
|
'key': '/etc/ssl/certs/dns.343.re/private.key' |
||||
|
} |
||||
|
|
||||
|
def testBuild(config: dict): # load file and start process |
||||
|
if config['filePath'] is not None: |
||||
|
with open(config['filePath'], 'w') as fileObject: # save file |
||||
|
fileObject.write(config['fileContent']) |
||||
|
return subprocess.Popen( # start process |
||||
|
config['startCommand'], |
||||
|
env = config['envVar'], |
||||
|
stdout = subprocess.DEVNULL, |
||||
|
stderr = subprocess.DEVNULL |
||||
|
) |
||||
|
|
||||
|
def testDestroy(config: dict, process): # remove file and kill process |
||||
|
if process.poll() is None: # still alive |
||||
|
while process.poll() is None: # wait for exit |
||||
|
process.terminate() # SIGTERM |
||||
|
time.sleep(0.2) |
||||
|
if config['filePath'] is not None: |
||||
|
os.remove(config['filePath']) # remove file |
||||
|
|
||||
|
def testObject(option: dict) -> None: # test target object |
||||
|
aiderProcess = None |
||||
|
serverProcess = testBuild(option['server']) # start server process |
||||
|
if option['aider'] is not None: |
||||
|
aiderProcess = testBuild(option['aider']) # start aider process |
||||
|
|
||||
|
checkResult = Checker.proxyTest({ # http check |
||||
|
'check': ['http'], |
||||
|
'info': option['proxy'] |
||||
|
}) |
||||
|
print(option['caption'], end=' -> ') |
||||
|
if not checkResult['success']: # client build error |
||||
|
print('\n----------------------------------------------------------------') |
||||
|
print(option) |
||||
|
print('----------------------------------------------------------------\n') |
||||
|
raise Exception('check error') |
||||
|
delay = checkResult['check']['http']['delay'] # get http delay |
||||
|
print(str(delay) + 'ms') |
||||
|
|
||||
|
testDestroy(option['server'], serverProcess) # destroy server process |
||||
|
if option['aider'] is not None: |
||||
|
testDestroy(option['aider'], aiderProcess) # destroy aider process |
||||
|
|
||||
|
if len(sys.argv) == 1: # no param |
||||
|
print('Unknown test type') |
||||
|
sys.exit(1) |
||||
|
testList = Tester.test(sys.argv[1], testConfig) # get test list |
||||
|
|
||||
|
if len(sys.argv) == 2: # test all |
||||
|
for i in range(0, len(testList)): |
||||
|
print(str(i), end = ': ') |
||||
|
testObject(testList[i]) |
||||
|
sys.exit(0) |
||||
|
|
||||
|
if len(sys.argv) == 3: # test target index |
||||
|
testObject(testList[int(sys.argv[2])]) |
||||
|
else: |
||||
|
print('Too many options') |
Loading…
Reference in new issue