mirror of https://github.com/dnomd343/ProxyC
				
				
			
				 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