|
|
|
|
@@ -19,45 +19,49 @@ import sys
|
|
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
suite_test_config_dict = {'test_securityPolicy_bypass': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_dnsRequest_deny_drop': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_dnsRequest_deny_redirect_a': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_dnsRequest_deny_redirect_aaaa': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_dnsRequest_deny_redirect_a_range_ttl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_dnsRequest_deny_redirect_aaaa_range_ttl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
suite_test_config_dict = {'test_firewallBypass_ssl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyDrop_dns': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyRedirectA_dns': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyRedirectAAAA_dns': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyRedirectARangeTTL_dns': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyRedirectAAAARangeTTL_dns': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_dnsRequest_allow_rdtype_a': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_dnsRequest_allow_rdtype_aaaa': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_dnsRequest_allow_rdtype_cname': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_securityPolicy_intercept': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_securityPolicy_intercept_certerrExpired': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_securityPolicy_intercept_certerrSelf_signed': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_securityPolicy_intercept_certerrUntrusted_root': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyPolicy_ssl_redirect': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyPolicy_ssl_block': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyPolicy_ssl_replace': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyPolicy_ssl_hijack': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyPolicy_ssl_insert': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyPolicy_http_redirect': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyPolicy_http_block': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyPolicy_http_replace': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyPolicy_http_hijack': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyPolicy_http_insert': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_https_con_traffic_1k': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_https_con_traffic_4k': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_https_con_traffic_16k': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_https_con_traffic_64k': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_https_con_traffic_256k': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_https_con_traffic_1M': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_https_con_traffic_4M': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_https_con_traffic_16M': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_https_con_traffic_64M': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_http_firewall_allow': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_http_firewall_deny_drop': {'enabled':1,'conn_timeout':4,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_http_firewall_deny_rst': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_http_firewall_deny_block': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_ssl_firewall_allow': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_ssl_firewall_deny_drop': {'enabled':1,'conn_timeout':4,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_ssl_firewall_deny_rst': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_ssl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslCerterrExpired': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslCerterrSelfsigned': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslCerterrUntrustedroot': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyRedirect_ssl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyBlock_ssl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyReplace_ssl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyHijack_ssl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyInsert_ssl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyRedirect_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyBlock_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyReplace_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyHijack_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyInsert_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslDownloadSize1k': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslDownloadSize4k': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslDownloadSize16k': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslDownloadSize64k': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslDownloadSize256k': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslDownloadSize1M': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslDownloadSize4M': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslDownloadSize16M': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallIntercept_sslDownloadSize64M': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallAllow_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyDrop_http': {'enabled':1,'conn_timeout':4,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyReset_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyBlock_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallAllow_ssl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyDrop_ssl': {'enabled':1,'conn_timeout':4,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyReset_ssl': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyResetFilterHost_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_firewallDenyResetFilterURL_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyDenyFilterHost_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'test_proxyDenyFilterURL_http': {'enabled':1,'conn_timeout':1,'max_recv_speed_large':6553600},
|
|
|
|
|
'start_time_random_delay_range': {'enabled':1,'left_edge':1,'right_edge':30}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -134,6 +138,15 @@ URLSslFirewallAllow = "https://sha512.badssl.selftest.gdnt-cloud.websit
|
|
|
|
|
URLSslFirewallDenyDrop = "https://rsa2048.badssl.selftest.gdnt-cloud.website"
|
|
|
|
|
URLSslFirewallDenyRst = "https://rsa4096.badssl.selftest.gdnt-cloud.website"
|
|
|
|
|
|
|
|
|
|
URLHttpFirewallDenyRstFilterHost = 'http://testing-firewall-filter-host.badssl.selftest.gdnt-cloud.website'
|
|
|
|
|
URLHttpFirewallDenyRstFilterURL = 'http://testing-firewall-filter-url.badssl.selftest.gdnt-cloud.website'
|
|
|
|
|
URLHttpProxyDenyFilterHost = 'http://testing-proxy-filter-host.badssl.selftest.gdnt-cloud.website'
|
|
|
|
|
URLHttpProxyDenyFilterURL = 'http://testing-proxy-filter-url.badssl.selftest.gdnt-cloud.website'
|
|
|
|
|
|
|
|
|
|
http_firewall_deny_rst_filter_host_re = "testing firewall deny reset filter host ok"
|
|
|
|
|
http_firewall_deny_rst_filter_url_re = "testing firewall deny reset filter url ok"
|
|
|
|
|
http_proxy_deny_filter_host_re = "testing proxy deny filter host ok"
|
|
|
|
|
http_proxy_deny_filter_url_re = "testing proxy deny filter url ok"
|
|
|
|
|
|
|
|
|
|
HOST_DNS_ALLOW_A = "dnstest.allow-a-ipv4.selftest.gdnt-cloud.website"
|
|
|
|
|
HOST_DNS_DENY_REDIRECT_A = "dnstest.deny-redirect-a-ipv4.selftest.gdnt-cloud.website"
|
|
|
|
|
@@ -205,7 +218,7 @@ class DignTextTestResult(unittest.result.TestResult):
|
|
|
|
|
if self.descriptions and doc_first_line:
|
|
|
|
|
return '\n'.join((str(test), doc_first_line))
|
|
|
|
|
else:
|
|
|
|
|
return str(test)
|
|
|
|
|
return str(test).split(' ', 1 )[0]
|
|
|
|
|
|
|
|
|
|
def startTest(self, test):
|
|
|
|
|
super(DignTextTestResult, self).startTest(test)
|
|
|
|
|
@@ -922,29 +935,76 @@ class SslFirewallActionBuild:
|
|
|
|
|
raise Exception("Error: The stream may be not rst %s" % errorinfo)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SslUnitTest(unittest.TestCase):
|
|
|
|
|
class FilterTestingBuild:
|
|
|
|
|
def __init__(self):
|
|
|
|
|
self.conn = pycurl.Curl()
|
|
|
|
|
self.conn.setopt(self.conn.WRITEFUNCTION, BytesIO().write)
|
|
|
|
|
|
|
|
|
|
def test_dnsRequest_deny_drop(self):
|
|
|
|
|
def _set_conn_opt(self,test_suite_name, url):
|
|
|
|
|
self.conn.setopt(self.conn.MAX_RECV_SPEED_LARGE, int(suite_test_config_dict[test_suite_name]['max_recv_speed_large']))
|
|
|
|
|
self.conn.setopt(self.conn.URL,url)
|
|
|
|
|
self.conn.setopt(self.conn.TIMEOUT, int(suite_test_config_dict[test_suite_name]['conn_timeout']))
|
|
|
|
|
|
|
|
|
|
def _firewall_deny_reset(self,test_suite_name, url, raise_re):
|
|
|
|
|
self._set_conn_opt(test_suite_name,url)
|
|
|
|
|
try:
|
|
|
|
|
self.conn.perform()
|
|
|
|
|
self.conn.close()
|
|
|
|
|
except pycurl.error as errorinfo:
|
|
|
|
|
errcode = errorinfo.args[0]
|
|
|
|
|
if(errcode == 56):
|
|
|
|
|
raise Exception(raise_re)
|
|
|
|
|
else:
|
|
|
|
|
raise Exception("Error: The stream may be not rst %s" % errorinfo)
|
|
|
|
|
|
|
|
|
|
def _proxy_deny(self,test_suite_name,url,replaceStr,raise_re):
|
|
|
|
|
bodyBuf = BytesIO()
|
|
|
|
|
self._set_conn_opt(test_suite_name,url)
|
|
|
|
|
self.conn.setopt(self.conn.WRITEDATA, bodyBuf)
|
|
|
|
|
self.conn.perform()
|
|
|
|
|
rescode = self.conn.getinfo(self.conn.RESPONSE_CODE)
|
|
|
|
|
body = bodyBuf.getvalue().decode('utf-8')
|
|
|
|
|
self.conn.close()
|
|
|
|
|
if re.search(replaceStr, body, 0) and (rescode == 404 or rescode == 451):
|
|
|
|
|
raise Exception(raise_re)
|
|
|
|
|
else:
|
|
|
|
|
raise Exception("Error:Http connection block fail, RESPONSE_CODE = %d" % rescode)
|
|
|
|
|
|
|
|
|
|
def firewall_http_deny_reset_filter_host(self,test_suite_name):
|
|
|
|
|
self._firewall_deny_reset(test_suite_name,URLHttpFirewallDenyRstFilterHost,http_firewall_deny_rst_filter_host_re)
|
|
|
|
|
|
|
|
|
|
def firewall_http_deny_reset_filter_url(self,test_suite_name):
|
|
|
|
|
self._firewall_deny_reset(test_suite_name,URLHttpFirewallDenyRstFilterURL,http_firewall_deny_rst_filter_url_re)
|
|
|
|
|
|
|
|
|
|
def proxy_http_deny_filter_host(self,test_suite_name):
|
|
|
|
|
self._proxy_deny(test_suite_name,URLHttpProxyDenyFilterHost, "testing-proxy-filter-host",http_proxy_deny_filter_host_re)
|
|
|
|
|
|
|
|
|
|
def proxy_http_deny_filter_url(self,test_suite_name):
|
|
|
|
|
self._proxy_deny(test_suite_name,URLHttpProxyDenyFilterURL,"testing-proxy-filter-url",http_proxy_deny_filter_url_re)
|
|
|
|
|
|
|
|
|
|
class TSGDiagnoseTest(unittest.TestCase):
|
|
|
|
|
|
|
|
|
|
def test_firewallDenyDrop_dns(self):
|
|
|
|
|
dnsHandler = DNSCheckRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, DnsRequestFirewallDenyDrop):
|
|
|
|
|
dnsHandler.dns_action_deny_subaction_drop()
|
|
|
|
|
|
|
|
|
|
def test_dnsRequest_deny_redirect_a(self):
|
|
|
|
|
def test_firewallDenyRedirectA_dns(self):
|
|
|
|
|
dnsHandler = DNSCheckRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, DnsARequestFireWallDenyRedirect):
|
|
|
|
|
dnsHandler.dns_action_deny_subaction_redirect_a()
|
|
|
|
|
|
|
|
|
|
def test_dnsRequest_deny_redirect_aaaa(self):
|
|
|
|
|
def test_firewallDenyRedirectAAAA_dns(self):
|
|
|
|
|
dnsHandler = DNSCheckRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, DnsAAAARequestFireWallDenyRedirect):
|
|
|
|
|
dnsHandler.dns_action_deny_subaction_redirect_aaaa()
|
|
|
|
|
|
|
|
|
|
def test_dnsRequest_deny_redirect_a_range_ttl(self):
|
|
|
|
|
def test_firewallDenyRedirectARangeTTL_dns(self):
|
|
|
|
|
dnsHandler = DNSCheckRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, DnsARequestFireWallDenyRedirectRangTTL):
|
|
|
|
|
dnsHandler.dns_action_deny_subaction_redirect_a_rang_ttl()
|
|
|
|
|
|
|
|
|
|
def test_dnsRequest_deny_redirect_aaaa_range_ttl(self):
|
|
|
|
|
def test_firewallDenyRedirectAAAARangeTTL_dns(self):
|
|
|
|
|
dnsHandler = DNSCheckRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, DnsAAAARequestFireWallDenyRedirectRangTTL):
|
|
|
|
|
dnsHandler.dns_action_deny_subaction_redirect_aaaa_rang_ttl()
|
|
|
|
|
@@ -964,161 +1024,181 @@ class SslUnitTest(unittest.TestCase):
|
|
|
|
|
with self.assertRaisesRegex(Exception, DnsCNAMERequestFirewallAllow):
|
|
|
|
|
dnsHandler.dns_action_allow_rdtype_cname()
|
|
|
|
|
|
|
|
|
|
def test_securityPolicy_bypass(self):
|
|
|
|
|
def test_firewallBypass_ssl(self):
|
|
|
|
|
sslHandler = SSLCheckRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, ssl_bypass_info_re):
|
|
|
|
|
sslHandler.ssl_bypass('test_securityPolicy_bypass')
|
|
|
|
|
sslHandler.ssl_bypass('test_firewallBypass_ssl')
|
|
|
|
|
|
|
|
|
|
def test_securityPolicy_intercept(self):
|
|
|
|
|
def test_firewallIntercept_ssl(self):
|
|
|
|
|
sslHandler = SSLCheckRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, ssl_intercept_info_re):
|
|
|
|
|
sslHandler.ssl_intercept('test_securityPolicy_intercept')
|
|
|
|
|
sslHandler.ssl_intercept('test_firewallIntercept_ssl')
|
|
|
|
|
|
|
|
|
|
def test_securityPolicy_intercept_certerrExpired(self):
|
|
|
|
|
def test_firewallIntercept_sslCerterrExpired(self):
|
|
|
|
|
requestHandler = SslInterceptRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, https_exprired_info_re):
|
|
|
|
|
requestHandler.ssl_intercept_certerrExpired('test_securityPolicy_intercept_certerrExpired')
|
|
|
|
|
requestHandler.ssl_intercept_certerrExpired('test_firewallIntercept_sslCerterrExpired')
|
|
|
|
|
|
|
|
|
|
def test_securityPolicy_intercept_certerrSelf_signed(self):
|
|
|
|
|
def test_firewallIntercept_sslCerterrSelfsigned(self):
|
|
|
|
|
requestHandler = SslInterceptRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, https_self_signed_info_re):
|
|
|
|
|
requestHandler.ssl_intercept_certerrSelf_signed('test_securityPolicy_intercept_certerrSelf_signed')
|
|
|
|
|
requestHandler.ssl_intercept_certerrSelf_signed('test_firewallIntercept_sslCerterrSelfsigned')
|
|
|
|
|
|
|
|
|
|
def test_securityPolicy_intercept_certerrUntrusted_root(self):
|
|
|
|
|
def test_firewallIntercept_sslCerterrUntrustedroot(self):
|
|
|
|
|
requestHandler = SslInterceptRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, https_untrusted_root_info_re):
|
|
|
|
|
requestHandler.ssl_intercept_certerrUntrusted_root('test_securityPolicy_intercept_certerrUntrusted_root')
|
|
|
|
|
requestHandler.ssl_intercept_certerrUntrusted_root('test_firewallIntercept_sslCerterrUntrustedroot')
|
|
|
|
|
|
|
|
|
|
def test_proxyPolicy_ssl_redirect(self):
|
|
|
|
|
def test_proxyRedirect_ssl(self):
|
|
|
|
|
proxyHandler = ProxyRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, ssl_redirect_info_re):
|
|
|
|
|
proxyHandler.proxy_redirect('test_proxyPolicy_ssl_redirect',URLSslRedirect,True)
|
|
|
|
|
proxyHandler.proxy_redirect('test_proxyRedirect_ssl',URLSslRedirect,True)
|
|
|
|
|
|
|
|
|
|
def test_proxyPolicy_ssl_block(self):
|
|
|
|
|
def test_proxyBlock_ssl(self):
|
|
|
|
|
proxyHandler = ProxyRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, ssl_block_info_re):
|
|
|
|
|
proxyHandler.proxy_block('test_proxyPolicy_ssl_block', URLSslBlock,True)
|
|
|
|
|
proxyHandler.proxy_block('test_proxyBlock_ssl', URLSslBlock,True)
|
|
|
|
|
|
|
|
|
|
def test_proxyPolicy_ssl_replace(self):
|
|
|
|
|
def test_proxyReplace_ssl(self):
|
|
|
|
|
proxyHandler = ProxyRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, ssl_replace_info_re):
|
|
|
|
|
proxyHandler.proxy_replace('test_proxyPolicy_ssl_replace',URLSslReplace, True)
|
|
|
|
|
proxyHandler.proxy_replace('test_proxyReplace_ssl',URLSslReplace, True)
|
|
|
|
|
|
|
|
|
|
def test_proxyPolicy_ssl_hijack(self):
|
|
|
|
|
def test_proxyHijack_ssl(self):
|
|
|
|
|
proxyHandler = ProxyRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, ssl_hijack_info_re):
|
|
|
|
|
proxyHandler.proxy_hijack('test_proxyPolicy_ssl_hijack', URLSslHijack,True)
|
|
|
|
|
proxyHandler.proxy_hijack('test_proxyHijack_ssl', URLSslHijack,True)
|
|
|
|
|
|
|
|
|
|
def test_proxyPolicy_ssl_insert(self):
|
|
|
|
|
def test_proxyInsert_ssl(self):
|
|
|
|
|
proxyHandler = ProxyRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, ssl_insert_info_re):
|
|
|
|
|
proxyHandler.proxy_insert('test_proxyPolicy_ssl_insert',URLSslInsert,True)
|
|
|
|
|
proxyHandler.proxy_insert('test_proxyInsert_ssl',URLSslInsert,True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_proxyPolicy_http_redirect(self):
|
|
|
|
|
def test_proxyRedirect_http(self):
|
|
|
|
|
proxyHandler = ProxyRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_redirect_info_re):
|
|
|
|
|
proxyHandler.proxy_redirect('test_proxyPolicy_http_redirect',URLHttpRedirect, False)
|
|
|
|
|
proxyHandler.proxy_redirect('test_proxyRedirect_http',URLHttpRedirect, False)
|
|
|
|
|
|
|
|
|
|
def test_proxyPolicy_http_block(self):
|
|
|
|
|
def test_proxyBlock_http(self):
|
|
|
|
|
proxyHandler = ProxyRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_block_info_re):
|
|
|
|
|
proxyHandler.proxy_block('test_proxyPolicy_http_block', URLHttpBlock,False)
|
|
|
|
|
proxyHandler.proxy_block('test_proxyBlock_http', URLHttpBlock,False)
|
|
|
|
|
|
|
|
|
|
def test_proxyPolicy_http_replace(self):
|
|
|
|
|
def test_proxyReplace_http(self):
|
|
|
|
|
proxyHandler = ProxyRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_replace_info_re):
|
|
|
|
|
proxyHandler.proxy_replace('test_proxyPolicy_http_replace',URLHttpReplace, False)
|
|
|
|
|
proxyHandler.proxy_replace('test_proxyReplace_http',URLHttpReplace, False)
|
|
|
|
|
|
|
|
|
|
def test_proxyPolicy_http_hijack(self):
|
|
|
|
|
def test_proxyHijack_http(self):
|
|
|
|
|
proxyHandler = ProxyRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_hijack_info_re):
|
|
|
|
|
proxyHandler.proxy_hijack('test_proxyPolicy_http_hijack', URLHttpHijack,False)
|
|
|
|
|
proxyHandler.proxy_hijack('test_proxyHijack_http', URLHttpHijack,False)
|
|
|
|
|
|
|
|
|
|
def test_proxyPolicy_http_insert(self):
|
|
|
|
|
def test_proxyInsert_http(self):
|
|
|
|
|
proxyHandler = ProxyRequestBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_insert_info_re):
|
|
|
|
|
proxyHandler.proxy_insert('test_proxyPolicy_http_insert',URLHttpInsert,False)
|
|
|
|
|
proxyHandler.proxy_insert('test_proxyInsert_http',URLHttpInsert,False)
|
|
|
|
|
|
|
|
|
|
def test_https_con_traffic_1k(self):
|
|
|
|
|
def test_firewallIntercept_sslDownloadSize1k(self):
|
|
|
|
|
requestHandler = SSLFileDownloadBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception,https_conn_taffic_1k_re):
|
|
|
|
|
requestHandler.conn_traffic( 'test_https_con_traffic_1k', URLConTraffic_1k, https_conn_taffic_1k_re,'1k', 1024)
|
|
|
|
|
requestHandler.conn_traffic( 'test_firewallIntercept_sslDownloadSize1k', URLConTraffic_1k, https_conn_taffic_1k_re,'1k', 1024)
|
|
|
|
|
|
|
|
|
|
def test_https_con_traffic_4k(self):
|
|
|
|
|
def test_firewallIntercept_sslDownloadSize4k(self):
|
|
|
|
|
requestHandler = SSLFileDownloadBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception,https_conn_taffic_4k_re):
|
|
|
|
|
requestHandler.conn_traffic( 'test_https_con_traffic_4k',URLConTraffic_4k, https_conn_taffic_4k_re, '4k', 4*1024)
|
|
|
|
|
requestHandler.conn_traffic( 'test_firewallIntercept_sslDownloadSize4k',URLConTraffic_4k, https_conn_taffic_4k_re, '4k', 4*1024)
|
|
|
|
|
|
|
|
|
|
def test_https_con_traffic_16k(self):
|
|
|
|
|
def test_firewallIntercept_sslDownloadSize16k(self):
|
|
|
|
|
requestHandler = SSLFileDownloadBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception,https_conn_taffic_16k_re):
|
|
|
|
|
requestHandler.conn_traffic( 'test_https_con_traffic_16k', URLConTraffic_16k, https_conn_taffic_16k_re,'16k', 16*1024)
|
|
|
|
|
requestHandler.conn_traffic( 'test_firewallIntercept_sslDownloadSize16k', URLConTraffic_16k, https_conn_taffic_16k_re,'16k', 16*1024)
|
|
|
|
|
|
|
|
|
|
def test_https_con_traffic_64k(self):
|
|
|
|
|
def test_firewallIntercept_sslDownloadSize64k(self):
|
|
|
|
|
requestHandler = SSLFileDownloadBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception,https_conn_taffic_64k_re):
|
|
|
|
|
requestHandler.conn_traffic( 'test_https_con_traffic_64k',URLConTraffic_64k, https_conn_taffic_64k_re, '64k', 64*1024)
|
|
|
|
|
requestHandler.conn_traffic( 'test_firewallIntercept_sslDownloadSize64k',URLConTraffic_64k, https_conn_taffic_64k_re, '64k', 64*1024)
|
|
|
|
|
|
|
|
|
|
def test_https_con_traffic_256k(self):
|
|
|
|
|
def test_firewallIntercept_sslDownloadSize256k(self):
|
|
|
|
|
requestHandler = SSLFileDownloadBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception,https_conn_taffic_256k_re):
|
|
|
|
|
requestHandler.conn_traffic( 'test_https_con_traffic_256k', URLConTraffic_256k,https_conn_taffic_256k_re,'256k', 256*1024)
|
|
|
|
|
requestHandler.conn_traffic( 'test_firewallIntercept_sslDownloadSize256k', URLConTraffic_256k,https_conn_taffic_256k_re,'256k', 256*1024)
|
|
|
|
|
|
|
|
|
|
def test_https_con_traffic_1M(self):
|
|
|
|
|
def test_firewallIntercept_sslDownloadSize1M(self):
|
|
|
|
|
requestHandler = SSLFileDownloadBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception,https_conn_taffic_1M_re):
|
|
|
|
|
requestHandler.conn_traffic( 'test_https_con_traffic_1M', URLConTraffic_1M, https_conn_taffic_1M_re, '1M', 1024 * 1024)
|
|
|
|
|
requestHandler.conn_traffic( 'test_firewallIntercept_sslDownloadSize1M', URLConTraffic_1M, https_conn_taffic_1M_re, '1M', 1024 * 1024)
|
|
|
|
|
|
|
|
|
|
def test_https_con_traffic_4M(self):
|
|
|
|
|
def test_firewallIntercept_sslDownloadSize4M(self):
|
|
|
|
|
requestHandler = SSLFileDownloadBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception,https_conn_taffic_4M_re):
|
|
|
|
|
requestHandler.conn_traffic( 'test_https_con_traffic_4M', URLConTraffic_4M, https_conn_taffic_4M_re,'4M', 4*1024*1024)
|
|
|
|
|
requestHandler.conn_traffic( 'test_firewallIntercept_sslDownloadSize4M', URLConTraffic_4M, https_conn_taffic_4M_re,'4M', 4*1024*1024)
|
|
|
|
|
|
|
|
|
|
def test_https_con_traffic_16M(self):
|
|
|
|
|
def test_firewallIntercept_sslDownloadSize16M(self):
|
|
|
|
|
requestHandler = SSLFileDownloadBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception,https_conn_taffic_16M_re):
|
|
|
|
|
requestHandler.conn_traffic( 'test_https_con_traffic_16M', URLConTraffic_16M,https_conn_taffic_16M_re,'16M',16*1024*1024)
|
|
|
|
|
requestHandler.conn_traffic( 'test_firewallIntercept_sslDownloadSize16M', URLConTraffic_16M,https_conn_taffic_16M_re,'16M',16*1024*1024)
|
|
|
|
|
|
|
|
|
|
def test_https_con_traffic_64M(self):
|
|
|
|
|
def test_firewallIntercept_sslDownloadSize64M(self):
|
|
|
|
|
requestHandler = SSLFileDownloadBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception,https_conn_taffic_64M_re):
|
|
|
|
|
requestHandler.conn_traffic( 'test_https_con_traffic_64M',URLConTraffic_64M,https_conn_taffic_64M_re, '64M', 64*1024*1024)
|
|
|
|
|
requestHandler.conn_traffic( 'test_firewallIntercept_sslDownloadSize64M',URLConTraffic_64M,https_conn_taffic_64M_re, '64M', 64*1024*1024)
|
|
|
|
|
|
|
|
|
|
def test_http_firewall_allow(self):
|
|
|
|
|
def test_firewallAllow_http(self):
|
|
|
|
|
requestHandler = HttpFirewallActionBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_firewall_allow_re):
|
|
|
|
|
requestHandler.action_allow('test_http_firewall_allow')
|
|
|
|
|
requestHandler.action_allow('test_firewallAllow_http')
|
|
|
|
|
|
|
|
|
|
def test_http_firewall_deny_drop(self):
|
|
|
|
|
def test_firewallDenyDrop_http(self):
|
|
|
|
|
requestHandler = HttpFirewallActionBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_firewall_deny_drop_re):
|
|
|
|
|
requestHandler.action_deny_subaction_drop('test_http_firewall_deny_drop')
|
|
|
|
|
requestHandler.action_deny_subaction_drop('test_firewallDenyDrop_http')
|
|
|
|
|
|
|
|
|
|
def test_http_firewall_deny_rst(self):
|
|
|
|
|
def test_firewallDenyReset_http(self):
|
|
|
|
|
requestHandler = HttpFirewallActionBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_firewall_deny_rst_re):
|
|
|
|
|
requestHandler.action_deny_subaction_rst('test_http_firewall_deny_rst')
|
|
|
|
|
requestHandler.action_deny_subaction_rst('test_firewallDenyReset_http')
|
|
|
|
|
|
|
|
|
|
def test_http_firewall_deny_block(self):
|
|
|
|
|
def test_firewallDenyBlock_http(self):
|
|
|
|
|
requestHandler = HttpFirewallActionBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_firewall_deny_block_re):
|
|
|
|
|
requestHandler.action_deny_subaction_block('test_http_firewall_deny_block')
|
|
|
|
|
requestHandler.action_deny_subaction_block('test_firewallDenyBlock_http')
|
|
|
|
|
|
|
|
|
|
def test_ssl_firewall_allow(self):
|
|
|
|
|
def test_firewallAllow_ssl(self):
|
|
|
|
|
requestHandler = SslFirewallActionBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, ssl_firewall_allow_re):
|
|
|
|
|
requestHandler.action_allow('test_ssl_firewall_allow')
|
|
|
|
|
requestHandler.action_allow('test_firewallAllow_ssl')
|
|
|
|
|
|
|
|
|
|
def test_ssl_firewall_deny_drop(self):
|
|
|
|
|
def test_firewallDenyDrop_ssl(self):
|
|
|
|
|
requestHandler = SslFirewallActionBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, ssl_firewall_deny_drop_re):
|
|
|
|
|
requestHandler.action_deny_subaction_drop('test_ssl_firewall_deny_drop')
|
|
|
|
|
requestHandler.action_deny_subaction_drop('test_firewallDenyDrop_ssl')
|
|
|
|
|
|
|
|
|
|
def test_ssl_firewall_deny_rst(self):
|
|
|
|
|
def test_firewallDenyReset_ssl(self):
|
|
|
|
|
requestHandler = SslFirewallActionBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, ssl_firewall_deny_rst_re):
|
|
|
|
|
requestHandler.action_deny_subaction_rst('test_ssl_firewall_deny_rst')
|
|
|
|
|
requestHandler.action_deny_subaction_rst('test_firewallDenyReset_ssl')
|
|
|
|
|
|
|
|
|
|
def test_firewallDenyResetFilterHost_http(self):
|
|
|
|
|
requestHandler = FilterTestingBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_firewall_deny_rst_filter_host_re):
|
|
|
|
|
requestHandler.firewall_http_deny_reset_filter_host('test_firewallDenyResetFilterHost_http')
|
|
|
|
|
|
|
|
|
|
def test_firewallDenyResetFilterURL_http(self):
|
|
|
|
|
requestHandler = FilterTestingBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_firewall_deny_rst_filter_url_re):
|
|
|
|
|
requestHandler.firewall_http_deny_reset_filter_url('test_firewallDenyResetFilterURL_http')
|
|
|
|
|
|
|
|
|
|
def test_proxyDenyFilterHost_http(self):
|
|
|
|
|
requestHandler = FilterTestingBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_proxy_deny_filter_host_re):
|
|
|
|
|
requestHandler.proxy_http_deny_filter_host('test_proxyDenyFilterHost_http')
|
|
|
|
|
|
|
|
|
|
def test_proxyDenyFilterURL_http(self):
|
|
|
|
|
requestHandler = FilterTestingBuild()
|
|
|
|
|
with self.assertRaisesRegex(Exception, http_proxy_deny_filter_url_re):
|
|
|
|
|
requestHandler.proxy_http_deny_filter_url('test_proxyDenyFilterURL_http')
|
|
|
|
|
|
|
|
|
|
class TsgDiagnose:
|
|
|
|
|
def __init__(self):
|
|
|
|
|
@@ -1166,50 +1246,54 @@ class TsgDiagnose:
|
|
|
|
|
|
|
|
|
|
def _add_suite(self,test_suite_name):
|
|
|
|
|
if int(self.config_dict[test_suite_name]['enabled']) == 1:
|
|
|
|
|
self.suite.addTest(SslUnitTest(test_suite_name))
|
|
|
|
|
self.suite.addTest(TSGDiagnoseTest(test_suite_name))
|
|
|
|
|
|
|
|
|
|
def _add_dign_case(self):
|
|
|
|
|
self.suite = unittest.TestSuite()
|
|
|
|
|
self.suite._cleanup = False
|
|
|
|
|
self._add_suite('test_securityPolicy_bypass')
|
|
|
|
|
self._add_suite('test_securityPolicy_intercept')
|
|
|
|
|
self._add_suite('test_securityPolicy_intercept_certerrExpired')
|
|
|
|
|
self._add_suite('test_securityPolicy_intercept_certerrSelf_signed')
|
|
|
|
|
self._add_suite('test_securityPolicy_intercept_certerrUntrusted_root')
|
|
|
|
|
self._add_suite('test_proxyPolicy_ssl_redirect')
|
|
|
|
|
self._add_suite('test_proxyPolicy_ssl_block')
|
|
|
|
|
self._add_suite('test_proxyPolicy_ssl_replace')
|
|
|
|
|
self._add_suite('test_proxyPolicy_ssl_hijack')
|
|
|
|
|
self._add_suite('test_proxyPolicy_ssl_insert')
|
|
|
|
|
self._add_suite('test_proxyPolicy_http_redirect')
|
|
|
|
|
self._add_suite('test_proxyPolicy_http_block')
|
|
|
|
|
self._add_suite('test_proxyPolicy_http_replace')
|
|
|
|
|
self._add_suite('test_proxyPolicy_http_hijack')
|
|
|
|
|
self._add_suite('test_proxyPolicy_http_insert')
|
|
|
|
|
self._add_suite('test_https_con_traffic_1k')
|
|
|
|
|
self._add_suite('test_https_con_traffic_4k')
|
|
|
|
|
self._add_suite('test_https_con_traffic_16k')
|
|
|
|
|
self._add_suite('test_https_con_traffic_64k')
|
|
|
|
|
self._add_suite('test_https_con_traffic_256k')
|
|
|
|
|
self._add_suite('test_https_con_traffic_1M')
|
|
|
|
|
self._add_suite('test_https_con_traffic_4M')
|
|
|
|
|
self._add_suite('test_https_con_traffic_16M')
|
|
|
|
|
self._add_suite('test_https_con_traffic_64M')
|
|
|
|
|
self._add_suite('test_http_firewall_allow')
|
|
|
|
|
self._add_suite('test_http_firewall_deny_drop')
|
|
|
|
|
self._add_suite('test_http_firewall_deny_rst')
|
|
|
|
|
self._add_suite('test_http_firewall_deny_block')
|
|
|
|
|
self._add_suite('test_ssl_firewall_allow')
|
|
|
|
|
self._add_suite('test_ssl_firewall_deny_drop')
|
|
|
|
|
self._add_suite('test_ssl_firewall_deny_rst')
|
|
|
|
|
self._add_suite('test_dnsRequest_deny_drop')
|
|
|
|
|
self._add_suite('test_dnsRequest_deny_redirect_a')
|
|
|
|
|
self._add_suite('test_dnsRequest_deny_redirect_aaaa')
|
|
|
|
|
self._add_suite('test_dnsRequest_deny_redirect_a_range_ttl')
|
|
|
|
|
self._add_suite('test_dnsRequest_deny_redirect_aaaa_range_ttl')
|
|
|
|
|
self._add_suite('test_firewallBypass_ssl')
|
|
|
|
|
self._add_suite('test_firewallIntercept_ssl')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslCerterrExpired')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslCerterrSelfsigned')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslCerterrUntrustedroot')
|
|
|
|
|
self._add_suite('test_proxyRedirect_ssl')
|
|
|
|
|
self._add_suite('test_proxyBlock_ssl')
|
|
|
|
|
self._add_suite('test_proxyReplace_ssl')
|
|
|
|
|
self._add_suite('test_proxyHijack_ssl')
|
|
|
|
|
self._add_suite('test_proxyInsert_ssl')
|
|
|
|
|
self._add_suite('test_proxyRedirect_http')
|
|
|
|
|
self._add_suite('test_proxyBlock_http')
|
|
|
|
|
self._add_suite('test_proxyReplace_http')
|
|
|
|
|
self._add_suite('test_proxyHijack_http')
|
|
|
|
|
self._add_suite('test_proxyInsert_http')
|
|
|
|
|
self._add_suite('test_firewallAllow_http')
|
|
|
|
|
self._add_suite('test_firewallDenyDrop_http')
|
|
|
|
|
self._add_suite('test_firewallDenyReset_http')
|
|
|
|
|
self._add_suite('test_firewallDenyBlock_http')
|
|
|
|
|
self._add_suite('test_firewallAllow_ssl')
|
|
|
|
|
self._add_suite('test_firewallDenyDrop_ssl')
|
|
|
|
|
self._add_suite('test_firewallDenyReset_ssl')
|
|
|
|
|
self._add_suite('test_firewallDenyDrop_dns')
|
|
|
|
|
self._add_suite('test_firewallDenyRedirectA_dns')
|
|
|
|
|
self._add_suite('test_firewallDenyRedirectAAAA_dns')
|
|
|
|
|
self._add_suite('test_firewallDenyRedirectARangeTTL_dns')
|
|
|
|
|
self._add_suite('test_firewallDenyRedirectAAAARangeTTL_dns')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslDownloadSize1k')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslDownloadSize4k')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslDownloadSize16k')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslDownloadSize64k')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslDownloadSize256k')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslDownloadSize1M')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslDownloadSize4M')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslDownloadSize16M')
|
|
|
|
|
self._add_suite('test_firewallIntercept_sslDownloadSize64M')
|
|
|
|
|
self._add_suite('test_firewallDenyResetFilterHost_http')
|
|
|
|
|
self._add_suite('test_firewallDenyResetFilterURL_http')
|
|
|
|
|
self._add_suite('test_proxyDenyFilterHost_http')
|
|
|
|
|
self._add_suite('test_proxyDenyFilterURL_http')
|
|
|
|
|
|
|
|
|
|
def _dign_running(self):
|
|
|
|
|
print(format(("Test start time: " + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())),'#^120s'))
|
|
|
|
|
print(format(("Test start time: " + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())),'#^70s'))
|
|
|
|
|
runningLogPath = "/opt/dign_client/log/tsg-diagnose.log" + '.' + time.strftime("%Y-%m-%d", time.localtime())
|
|
|
|
|
#runningLogger = get_logger("running",runningLogPath, False)
|
|
|
|
|
#runningLogger.debug("Diagnose Start,the It will take up to %d seconds" %(self.dign_duration))
|
|
|
|
|
@@ -1224,7 +1308,7 @@ class TsgDiagnose:
|
|
|
|
|
f.write(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) + "Diagnose end, Testing results:" + "\n" + result_stream.getvalue())
|
|
|
|
|
f.close()
|
|
|
|
|
#runningLogger.debug("Diagnose end, Testing results:" + "\n" + result_stream.getvalue())
|
|
|
|
|
print(format(("Test end time: " + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())),'=^120s'))
|
|
|
|
|
print(format(("Test end time: " + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())),'=^70s'))
|
|
|
|
|
|
|
|
|
|
def dign_exec(self):
|
|
|
|
|
self._get_dign_option()
|
|
|
|
|
|