Send tracebacks from content viewers to event log.

Also, 100% test coverage for content viewers.
This commit is contained in:
Aldo Cortesi 2012-08-18 17:42:40 +12:00
parent e8553f966f
commit b70e91bbd4
3 changed files with 24 additions and 8 deletions

View File

@ -336,7 +336,7 @@ def get(name):
return i
def get_content_view(viewmode, hdrItems, content, limit):
def get_content_view(viewmode, hdrItems, content, limit, logfunc):
"""
Returns a (msg, body) tuple.
"""
@ -355,7 +355,8 @@ def get_content_view(viewmode, hdrItems, content, limit):
# Third-party viewers can fail in unexpected ways...
except Exception, e:
s = traceback.format_exc()
return "", _view_text(s, len(s), len(s))
s = "Content viewer failed: \n" + s
logfunc(s)
ret = None
if not ret:
ret = get("Raw")(hdrs, content, limit)

View File

@ -128,7 +128,7 @@ class FlowView(common.WWrap):
self.view_request()
def _cached_content_view(self, viewmode, hdrItems, content, limit):
return contentview.get_content_view(viewmode, hdrItems, content, limit)
return contentview.get_content_view(viewmode, hdrItems, content, limit, self.master.add_event)
def content_view(self, viewmode, conn):
full = self.state.get_flow_setting(

View File

@ -160,7 +160,8 @@ Larry
cv.get("Raw"),
[["content-type", "application/json"]],
"[1, 2, 3]",
1000
1000,
lambda x: None
)
assert "Raw" in r[0]
@ -168,7 +169,8 @@ Larry
cv.get("Auto"),
[["content-type", "application/json"]],
"[1, 2, 3]",
1000
1000,
lambda x: None
)
assert r[0] == "JSON"
@ -176,10 +178,21 @@ Larry
cv.get("Auto"),
[["content-type", "application/json"]],
"[1, 2",
1000
1000,
lambda x: None
)
assert "Raw" in r[0]
r = cv.get_content_view(
cv.get("AMF"),
[],
"[1, 2",
1000,
lambda x: None
)
assert "Raw" in r[0]
r = cv.get_content_view(
cv.get("Auto"),
[
@ -187,7 +200,8 @@ Larry
["content-encoding", "gzip"]
],
encoding.encode('gzip', "[1, 2, 3]"),
1000
1000,
lambda x: None
)
assert "decoded gzip" in r[0]
assert "JSON" in r[0]
@ -199,7 +213,8 @@ Larry
["content-encoding", "gzip"]
],
encoding.encode('gzip', "[1, 2, 3]"),
1000
1000,
lambda x: None
)
assert "decoded gzip" in r[0]
assert "Raw" in r[0]