From e8121ba9c9915a81113e71c043bb1115e9c28b81 Mon Sep 17 00:00:00 2001 From: Marcin Bachry Date: Fri, 10 Mar 2017 15:17:38 +0300 Subject: [PATCH 1/3] Python 3 fix for tornado HTTPResponse --- graphite_beacon/alerts.py | 2 +- tests/integration/graphite_test.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/graphite_beacon/alerts.py b/graphite_beacon/alerts.py index 17604b5..0a0a282 100644 --- a/graphite_beacon/alerts.py +++ b/graphite_beacon/alerts.py @@ -270,7 +270,7 @@ def load(self): connect_timeout=self.connect_timeout, validate_cert=self.validate_cert) records = ( - GraphiteRecord(line, self.default_nan_value, self.ignore_nan) + GraphiteRecord(line.decode('utf8'), self.default_nan_value, self.ignore_nan) for line in response.buffer) data = [ (None if record.empty else getattr(record, self.method), record.target) diff --git a/tests/integration/graphite_test.py b/tests/integration/graphite_test.py index a54d436..74ba8e9 100644 --- a/tests/integration/graphite_test.py +++ b/tests/integration/graphite_test.py @@ -7,7 +7,7 @@ from graphite_beacon.alerts import GraphiteAlert from graphite_beacon.core import Reactor -from graphite_beacon._compat import StringIO +from io import BytesIO from ..util import build_graphite_response @@ -47,8 +47,9 @@ def test_graphite(self, mock_smpt_notify, mock_fetch): assert isinstance(alert, GraphiteAlert) metric_data = [5, 7, 9] + payload = build_graphite_response(data=metric_data).encode('utf8') build_resp = lambda: HTTPResponse(HTTPRequest('http://localhost:80/graphite'), 200, - buffer=StringIO(build_graphite_response(data=metric_data))) + buffer=BytesIO(payload)) mock_fetch.side_effect = iter(tornado.gen.maybe_future(build_resp()) for _ in range(10)) From afbed7e22e100184c571c47efafd5cf3046ad118 Mon Sep 17 00:00:00 2001 From: Marcin Bachry Date: Sun, 23 Apr 2017 20:07:02 +0200 Subject: [PATCH 2/3] Fix unicode errors in handlers --- graphite_beacon/handlers/__init__.py | 3 ++- graphite_beacon/handlers/slack.py | 3 ++- graphite_beacon/handlers/smtp.py | 4 ++-- tests/unit/handlers/smtp_test.py | 6 +++--- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/graphite_beacon/handlers/__init__.py b/graphite_beacon/handlers/__init__.py index e2f9d59..d558598 100644 --- a/graphite_beacon/handlers/__init__.py +++ b/graphite_beacon/handlers/__init__.py @@ -45,7 +45,8 @@ def __init__(self, reactor): def get_short(self, level, alert, value, target=None, ntype=None, rule=None): # pylint: disable=unused-argument tmpl = TEMPLATES[ntype]['short'] return tmpl.generate( - level=level, reactor=self.reactor, alert=alert, value=value, target=target).strip() + level=level, reactor=self.reactor, alert=alert, value=value, + target=target).decode().strip() def init_handler(self): """ Init configuration here.""" diff --git a/graphite_beacon/handlers/slack.py b/graphite_beacon/handlers/slack.py index 22b9b5c..f1c4b91 100644 --- a/graphite_beacon/handlers/slack.py +++ b/graphite_beacon/handlers/slack.py @@ -38,7 +38,8 @@ def get_message(self, level, alert, value, target=None, ntype=None, rule=None): msg_type = 'slack' if ntype == 'graphite' else 'short' tmpl = TEMPLATES[ntype][msg_type] return tmpl.generate( - level=level, reactor=self.reactor, alert=alert, value=value, target=target).strip() + level=level, reactor=self.reactor, alert=alert, + value=value, target=target).decode().strip() @gen.coroutine def notify(self, level, *args, **kwargs): diff --git a/graphite_beacon/handlers/smtp.py b/graphite_beacon/handlers/smtp.py index d85ad9f..6eb793f 100644 --- a/graphite_beacon/handlers/smtp.py +++ b/graphite_beacon/handlers/smtp.py @@ -64,11 +64,11 @@ def get_message(self, level, alert, value, target=None, ntype=None, rule=None): reactor=self.reactor, alert=alert, value=value, level=level, target=target, dt=dt, rule=rule, **self.options) msg = MIMEMultipart('alternative') - plain = MIMEText(str(txt_tmpl.generate(**ctx)), 'plain') + plain = MIMEText(txt_tmpl.generate(**ctx).decode('utf8'), 'plain') msg.attach(plain) if self.options['html']: html_tmpl = TEMPLATES[ntype]['html'] - html = MIMEText(str(html_tmpl.generate(**ctx)), 'html') + html = MIMEText(html_tmpl.generate(**ctx).decode('utf8'), 'html') msg.attach(html) return msg diff --git a/tests/unit/handlers/smtp_test.py b/tests/unit/handlers/smtp_test.py index 453a517..b35515c 100644 --- a/tests/unit/handlers/smtp_test.py +++ b/tests/unit/handlers/smtp_test.py @@ -13,7 +13,7 @@ def test_html_template(reactor): message = smtp.get_message( 'critical', galert, 3000000, target=target, ntype='graphite', rule=galert.rules[0]) - assert message + assert message.as_string() assert len(message._payload) == 2 text, html = message._payload @@ -22,7 +22,7 @@ def test_html_template(reactor): ualert = BaseAlert.get( reactor, source='url', name='Test', query='http://google.com', rules=["critical: != 200"]) message = smtp.get_message('critical', ualert, '3000000', target, 'url') - assert message + assert message.as_string() assert len(message._payload) == 2 _, html = message._payload @@ -31,6 +31,6 @@ def test_html_template(reactor): ealert = BaseAlert.get(reactor, name='Test', query='*', rules=["critical: > 5 AND < 10"]) message = smtp.get_message( 'critical', ealert, 8, target=target, ntype='graphite', rule=ealert.rules[0]) - assert message + assert message.as_string() assert len(message._payload) == 2 From 92770b95699f126941c795892e6fd44c74563d4b Mon Sep 17 00:00:00 2001 From: Marcin Bachry Date: Sun, 23 Apr 2017 19:10:34 +0200 Subject: [PATCH 3/3] Add Python 3.5 to tox --- .travis.yml | 1 + tox.ini | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3a8b7c6..e4937fe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,7 @@ python: 2.7 env: - TOXENV=py27 - TOXENV=py34 +- TOXENV=py35 - TOXENV=cov - TOXENV=pylint - TOXENV=pep8 diff --git a/tox.ini b/tox.ini index fe88f27..daa4ab2 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist=py27,py34,cov,pylint,pep8 +envlist=py27,py34,py35,cov,pylint,pep8 [testenv] commands=py.test tests