Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb45f698

Browse files
wallisyanJacksonTian
wallisyan
authored andcommitted
add http-debug code;add http-debug case;
modify test_http_responsemodify capital DEBUG; pop the DEBUG environment variable when test overmodify http_response loggersplit get_response and http-debug
1 parent294ac3a commitb45f698

File tree

4 files changed

+136
-51
lines changed

4 files changed

+136
-51
lines changed

‎aliyun-python-sdk-core/aliyunsdkcore/http/http_response.py‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,20 @@
1818
# coding=utf-8
1919

2020
importos
21+
importlogging
22+
2123
fromaliyunsdkcore.vendored.requestsimportRequest,Session
2224
fromaliyunsdkcore.vendored.requests.packagesimporturllib3
2325
fromaliyunsdkcore.http.http_requestimportHttpRequest
2426
fromaliyunsdkcore.httpimportprotocol_typeasPT
2527

28+
fromaliyunsdkcore.vendored.requestsimportstatus_codes
29+
30+
logger=logging.getLogger(__name__)
31+
logger.setLevel(logging.DEBUG)
32+
ch=logging.StreamHandler()
33+
logger.addHandler(ch)
34+
2635
DEFAULT_CONNECT_TIMEOUT=5
2736

2837

@@ -61,6 +70,24 @@ def set_ssl_enable(self, enable):
6170
defget_ssl_enabled(self):
6271
returnself.__ssl_enable
6372

73+
@staticmethod
74+
defprepare_http_debug(request,symbol):
75+
base=''
76+
forkey,valueinrequest.headers.items():
77+
base+='\n%s %s : %s'% (symbol,key,value)
78+
returnbase
79+
80+
defdo_http_debug(self,request,response):
81+
# logger the request
82+
request_base='\n> %s %s HTTP/1.1'% (self.get_method().upper(),self.get_url())
83+
request_base+='\n> Host : %s'%self.get_host()
84+
logger.debug(request_base+self.prepare_http_debug(request,'>'))
85+
86+
# logger the response
87+
response_base='\n< HTTP/1.1 %s %s'% (
88+
response.status_code,status_codes._codes.get(response.status_code)[0].upper())
89+
logger.debug(response_base+self.prepare_http_debug(response,'<'))
90+
6491
defget_response_object(self):
6592
withSession()ass:
6693
current_protocol='https://'ifself.get_ssl_enabled()else'http://'
@@ -87,7 +114,15 @@ def get_response_object(self):
87114
}
88115
# ignore the warning-InsecureRequestWarning
89116
urllib3.disable_warnings()
117+
90118
response=s.send(prepped,proxies=proxies,
91119
timeout=(DEFAULT_CONNECT_TIMEOUT,self._timeout),
92120
allow_redirects=False,verify=None,cert=None)
121+
122+
http_debug=os.environ.get('DEBUG')
123+
124+
ifhttp_debugisnotNoneandhttp_debug.lower()=='sdk':
125+
# http debug information
126+
self.do_http_debug(prepped,response)
127+
93128
returnresponse.status_code,response.headers,response.content

‎aliyun-python-sdk-core/tests/__init__.py‎

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,65 @@
33
# The unittest module got a significant overhaul
44
# in 2.7, so if we're in 2.6 we can use the backported
55
# version unittest2.
6+
importthreading
7+
68
ifsys.version_info[:2]== (2,6):
79
importunittest2asunittest
810
else:
911
importunittest
12+
13+
14+
# the version under py3 use the different package
15+
ifsys.version_info[0]==3:
16+
fromhttp.serverimportSimpleHTTPRequestHandler
17+
fromhttp.serverimportHTTPServer
18+
else:
19+
fromSimpleHTTPServerimportSimpleHTTPRequestHandler
20+
fromBaseHTTPServerimportHTTPServer
21+
22+
23+
classMyServer:
24+
_headers= {}
25+
_url=''
26+
27+
def__enter__(self):
28+
classServerHandler(SimpleHTTPRequestHandler):
29+
30+
defdo_GET(_self):
31+
_self.protocol_version='HTTP/1.1'
32+
self._headers=_self.headers
33+
self._url=_self.path
34+
_self.send_response(200)
35+
_self.send_header("Content-type","application/json")
36+
_self.end_headers()
37+
_self.wfile.write(b"{}")
38+
39+
self.server=HTTPServer(("",51352),ServerHandler)
40+
41+
defthread_func():
42+
self.server.serve_forever()
43+
44+
thread=threading.Thread(target=thread_func)
45+
thread.start()
46+
returnself
47+
48+
def__exit__(self,exc_type,exc_val,exc_tb):
49+
ifself.server:
50+
self.server.shutdown()
51+
self.server=None
52+
53+
@property
54+
defheaders(self):
55+
returnself._headers
56+
57+
@property
58+
defurl(self):
59+
returnself._url
60+
61+
@property
62+
defcontent(self):
63+
classResponse:
64+
def__init__(self,headers):
65+
self.headers=headers
66+
response=Response(self._headers)
67+
returnresponse

‎aliyun-python-sdk-core/tests/http/test_http_response.py‎

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
# coding=utf-8
2+
importos
3+
importsys
24

3-
fromtestsimportunittest
5+
fromtestsimportunittest,MyServer
46

57
fromaliyunsdkcore.http.http_responseimportHttpResponse
68
fromaliyunsdkcore.http.protocol_typeimportHTTPS
79

810

11+
fromaliyunsdkcore.clientimportAcsClient
12+
fromaliyunsdkcore.requestimportCommonRequest
13+
14+
915
classTestHttpResponse(unittest.TestCase):
1016

1117
deftest_http_request(self):
@@ -15,3 +21,38 @@ def test_http_request(self):
1521
self.assertTrue(res.get_ssl_enabled())
1622
res=HttpResponse(protocol=HTTPS)
1723
self.assertTrue(res.get_ssl_enabled())
24+
25+
@staticmethod
26+
defdo_request(client,request):
27+
withMyServer()ass:
28+
client.do_action_with_exception(request)
29+
returns.content
30+
31+
@staticmethod
32+
definit_client():
33+
returnAcsClient("access_key_id","access_key_secret",
34+
timeout=120,port=51352)
35+
36+
deftest_http_debug(self):
37+
os.environ.setdefault('DEBUG','SDK')
38+
39+
http_debug=os.environ.get('DEBUG')
40+
ifhttp_debugisnotNoneandhttp_debug.lower()=='sdk':
41+
request=CommonRequest(
42+
domain="ecs.aliyuncs.com",
43+
version="2014-05-26",
44+
action_name="DescribeRegions")
45+
request.set_endpoint("localhost")
46+
make_request=HttpResponse(request.endpoint,'/')
47+
request.headers= {'User-Agent':'ALIBABACloud'}
48+
49+
content=make_request.prepare_http_debug(request,'>')
50+
self.assertTrue('User-Agent'incontent)
51+
52+
client=self.init_client()
53+
response=self.do_request(client,request)
54+
ifsys.version_info[0]==3:
55+
response=make_request.prepare_http_debug(response,'<')
56+
self.assertTrue('User-Agent'inresponse)
57+
58+
os.environ.pop('DEBUG',None)

‎aliyun-python-sdk-core/tests/test_user_agent.py‎

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,10 @@
11
# encoding:utf-8
2-
importsys
3-
importthreading
42

5-
fromtestsimportunittest
3+
fromtestsimportunittest,MyServer
64

75
fromaliyunsdkcore.clientimportAcsClient
86
fromaliyunsdkcore.requestimportCommonRequest
97

10-
# the version under py3 use the different package
11-
ifsys.version_info[0]==3:
12-
fromhttp.serverimportSimpleHTTPRequestHandler
13-
fromhttp.serverimportHTTPServer
14-
else:
15-
fromSimpleHTTPServerimportSimpleHTTPRequestHandler
16-
fromBaseHTTPServerimportHTTPServer
17-
18-
19-
classMyServer:
20-
_headers= {}
21-
_url=''
22-
23-
def__enter__(self):
24-
classServerHandler(SimpleHTTPRequestHandler):
25-
26-
defdo_GET(_self):
27-
_self.protocol_version='HTTP/1.1'
28-
self._headers=_self.headers
29-
self._url=_self.path
30-
_self.send_response(200)
31-
_self.send_header("Content-type","application/json")
32-
_self.end_headers()
33-
_self.wfile.write(b"{}")
34-
35-
self.server=HTTPServer(("",51352),ServerHandler)
36-
37-
defthread_func():
38-
self.server.serve_forever()
39-
40-
thread=threading.Thread(target=thread_func)
41-
thread.start()
42-
returnself
43-
44-
def__exit__(self,exc_type,exc_val,exc_tb):
45-
ifself.server:
46-
self.server.shutdown()
47-
self.server=None
48-
49-
@property
50-
defheaders(self):
51-
returnself._headers
52-
53-
@property
54-
defurl(self):
55-
returnself._url
56-
578

589
classUserAgentTest(unittest.TestCase):
5910

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp