Enable Py35 tests to run
Python3.5 tests were not running because Python3 has not Queue module (instead have queue module). Commit does not fix failing tests but gives an insight in what exactly is failing and allows to fix them in future. Also applied sixer utility to fix common Py2-Py3 compatybility issues. Additionally: * removed unconstrained mysql and psycopg drivers from tox.ini. Instead added them to test-requirements to be picked up by requirements bot. That also allowed to remove 3 tox environments. * added removing .testrepository/times.dbm (may cause py3 environment to fail if present) Change-Id: I9bcc33dad80fdfbf60d95c4bb0ce7f79f642a414
This commit is contained in:
parent
8c29814229
commit
c9f0a8e63c
|
@ -17,6 +17,9 @@ import pymysql
|
|||
from monasca_notification.common.repositories.base import base_repo
|
||||
from monasca_notification.common.repositories import exceptions as exc
|
||||
|
||||
import six
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
@ -49,7 +52,7 @@ class MysqlRepo(base_repo.BaseRepo):
|
|||
self._mysql = pymysql.connect(host=self._mysql_host,
|
||||
port=self._mysql_port,
|
||||
user=self._mysql_user,
|
||||
passwd=unicode(self._mysql_passwd).encode('utf-8'),
|
||||
passwd=six.text_type(self._mysql_passwd).encode('utf-8'),
|
||||
db=self._mysql_dbname,
|
||||
ssl=self._mysql_ssl,
|
||||
use_unicode=True,
|
||||
|
|
|
@ -52,7 +52,7 @@ class Notification(object):
|
|||
retry_count - number of times we've tried to send
|
||||
alarm - info that caused the notification
|
||||
notifications that come after this one to remain uncommitted.
|
||||
Note that data may include unicode strings.
|
||||
Note that data may include six.text_type strings.
|
||||
"""
|
||||
self.id = id
|
||||
self.address = address
|
||||
|
|
|
@ -15,10 +15,12 @@
|
|||
|
||||
import json
|
||||
import requests
|
||||
import urlparse
|
||||
|
||||
from monasca_notification.plugins import abstract_notifier
|
||||
|
||||
from six.moves import urllib
|
||||
|
||||
|
||||
"""
|
||||
notification.address = https://hipchat.hpcloud.net/v2/room/<room_id>/notification?auth_token=432432
|
||||
|
||||
|
@ -88,11 +90,11 @@ class HipChatNotifier(abstract_notifier.AbstractNotifier):
|
|||
"""
|
||||
|
||||
hipchat_message = self._build_hipchat_message(notification)
|
||||
parsed_url = urlparse.urlsplit(notification.address)
|
||||
parsed_url = urllib.parse.urlsplit(notification.address)
|
||||
|
||||
query_params = urlparse.parse_qs(parsed_url.query)
|
||||
query_params = urllib.parse.parse_qs(parsed_url.query)
|
||||
# URL without query params
|
||||
url = urlparse.urljoin(notification.address, urlparse.urlparse(notification.address).path)
|
||||
url = urllib.parse.urljoin(notification.address, urllib.parse.urlparse(notification.address).path)
|
||||
|
||||
# Default option is to do cert verification
|
||||
verify = self._config.get('insecure', False)
|
||||
|
|
|
@ -16,11 +16,13 @@
|
|||
from jinja2 import Template
|
||||
import jira
|
||||
import json
|
||||
import urlparse
|
||||
import yaml
|
||||
|
||||
from monasca_notification.plugins.abstract_notifier import AbstractNotifier
|
||||
|
||||
from six.moves import urllib
|
||||
|
||||
|
||||
"""
|
||||
Note:
|
||||
This plugin doesn't support multi tenancy. Multi tenancy requires support for
|
||||
|
@ -149,10 +151,10 @@ class JiraNotifier(AbstractNotifier):
|
|||
|
||||
jira_fields = self._build_jira_message(notification)
|
||||
|
||||
parsed_url = urlparse.urlsplit(notification.address)
|
||||
query_params = urlparse.parse_qs(parsed_url.query)
|
||||
parsed_url = urllib.parse.urlsplit(notification.address)
|
||||
query_params = urllib.parse.parse_qs(parsed_url.query)
|
||||
# URL without query params
|
||||
url = urlparse.urljoin(notification.address, urlparse.urlparse(notification.address).path)
|
||||
url = urllib.parse.urljoin(notification.address, urllib.parse.urlparse(notification.address).path)
|
||||
|
||||
jira_fields["project"] = query_params["project"][0]
|
||||
if query_params.get("component"):
|
||||
|
|
|
@ -15,10 +15,12 @@
|
|||
|
||||
import json
|
||||
import requests
|
||||
import urlparse
|
||||
|
||||
from monasca_notification.plugins import abstract_notifier
|
||||
|
||||
from six.moves import urllib
|
||||
|
||||
|
||||
"""
|
||||
notification.address = https://slack.com/api/chat.postMessage?token=token&channel=#channel"
|
||||
|
||||
|
@ -77,10 +79,10 @@ class SlackNotifier(abstract_notifier.AbstractNotifier):
|
|||
# Slack room has "#" as first character
|
||||
address = address.replace("#", "%23")
|
||||
|
||||
parsed_url = urlparse.urlsplit(address)
|
||||
query_params = urlparse.parse_qs(parsed_url.query)
|
||||
parsed_url = urllib.parse.urlsplit(address)
|
||||
query_params = urllib.parse.parse_qs(parsed_url.query)
|
||||
# URL without query params
|
||||
url = urlparse.urljoin(address, urlparse.urlparse(address).path)
|
||||
url = urllib.parse.urljoin(address, urllib.parse.urlparse(address).path)
|
||||
|
||||
# Default option is to do cert verification
|
||||
verify = self._config.get('insecure', False)
|
||||
|
|
|
@ -10,3 +10,5 @@ funcsigs>=0.4;python_version=='2.7' or python_version=='2.6' # Apache-2.0
|
|||
os-testr>=0.8.0 # Apache-2.0
|
||||
testrepository>=0.0.18 # Apache-2.0/BSD
|
||||
SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT
|
||||
PyMySQL>=0.7.6 # MIT License
|
||||
psycopg2>=2.5 # LGPL/ZPL
|
||||
|
|
|
@ -19,10 +19,12 @@ import socket
|
|||
import time
|
||||
import unittest
|
||||
|
||||
import six
|
||||
|
||||
from monasca_notification.notification import Notification
|
||||
from monasca_notification.plugins import email_notifier
|
||||
|
||||
UNICODE_CHAR = unichr(2344)
|
||||
UNICODE_CHAR = six.unichr(2344)
|
||||
UNICODE_CHAR_ENCODED = UNICODE_CHAR.encode("utf-8")
|
||||
|
||||
|
||||
|
|
|
@ -13,12 +13,18 @@
|
|||
|
||||
import json
|
||||
import mock
|
||||
import Queue
|
||||
import unittest
|
||||
|
||||
import six
|
||||
|
||||
from monasca_notification import notification as m_notification
|
||||
from monasca_notification.plugins import hipchat_notifier
|
||||
|
||||
if six.PY2:
|
||||
import Queue as queue
|
||||
else:
|
||||
import queue
|
||||
|
||||
|
||||
def alarm(metrics):
|
||||
return {"tenantId": "0",
|
||||
|
@ -43,7 +49,7 @@ class requestsResponse(object):
|
|||
|
||||
class TestHipchat(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.trap = Queue.Queue()
|
||||
self.trap = queue.Queue()
|
||||
self.hipchat_config = {'timeout': 50}
|
||||
|
||||
def tearDown(self):
|
||||
|
|
|
@ -15,14 +15,20 @@
|
|||
|
||||
import json
|
||||
import mock
|
||||
import Queue
|
||||
import requests
|
||||
import time
|
||||
import unittest
|
||||
|
||||
import six
|
||||
|
||||
from monasca_notification import notification as m_notification
|
||||
from monasca_notification.plugins import pagerduty_notifier
|
||||
|
||||
if six.PY2:
|
||||
import Queue as queue
|
||||
else:
|
||||
import queue
|
||||
|
||||
|
||||
def alarm(metrics):
|
||||
return {"tenantId": "0",
|
||||
|
@ -45,7 +51,7 @@ class requestsResponse(object):
|
|||
|
||||
class TestWebhook(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.trap = Queue.Queue()
|
||||
self.trap = queue.Queue()
|
||||
self.pagerduty_config = {'timeout': 50, 'key': 'foobar'}
|
||||
|
||||
def tearDown(self):
|
||||
|
|
|
@ -15,13 +15,19 @@
|
|||
|
||||
import json
|
||||
import mock
|
||||
import Queue
|
||||
import requests
|
||||
import unittest
|
||||
|
||||
import six
|
||||
|
||||
from monasca_notification import notification as m_notification
|
||||
from monasca_notification.plugins import webhook_notifier
|
||||
|
||||
if six.PY2:
|
||||
import Queue as queue
|
||||
else:
|
||||
import queue
|
||||
|
||||
|
||||
def alarm(metrics):
|
||||
return {"tenantId": "0",
|
||||
|
@ -46,7 +52,7 @@ class requestsResponse(object):
|
|||
|
||||
class TestWebhook(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.trap = Queue.Queue()
|
||||
self.trap = queue.Queue()
|
||||
self.webhook_config = {'timeout': 50}
|
||||
|
||||
def tearDown(self):
|
||||
|
|
35
tox.ini
35
tox.ini
|
@ -1,6 +1,6 @@
|
|||
[tox]
|
||||
envlist = {py27,py35,pypy}-{mysql,postgres},pep8,cover
|
||||
minversion = 2.1
|
||||
minversion = 2.5
|
||||
skipsdist = True
|
||||
|
||||
[testenv]
|
||||
|
@ -22,29 +22,12 @@ whitelist_externals = bash
|
|||
rm
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
PyMySQL>=0.6.1
|
||||
commands =
|
||||
find . -type f -name "*.pyc" -delete
|
||||
rm -Rf .testrepository/times.dbm
|
||||
ostestr {posargs}
|
||||
|
||||
[testenv:py27-postgres]
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
psycopg2>=2.5
|
||||
|
||||
[testenv:py35-postgres]
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
psycopg2>=2.5
|
||||
|
||||
[testenv:pypy-postgres]
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
psycopg2>=2.5
|
||||
|
||||
[testenv:cover]
|
||||
basepython = python2.7
|
||||
deps = {[testenv]deps}
|
||||
commands =
|
||||
{[testenv]commands}
|
||||
coverage erase
|
||||
|
@ -56,18 +39,20 @@ commands =
|
|||
oslo_debug_helper -t ./monasca_notification/tests {posargs}
|
||||
|
||||
[testenv:pep8]
|
||||
deps =
|
||||
{[testenv]deps}
|
||||
commands =
|
||||
{[testenv:flake8]commands}
|
||||
{[bandit]commands}
|
||||
{[testenv:bandit]commands}
|
||||
|
||||
[testenv:venv]
|
||||
commands = {posargs}
|
||||
|
||||
[testenv:flake8]
|
||||
commands =
|
||||
flake8 monasca_notification
|
||||
flake8 monasca_notification
|
||||
|
||||
[testenv:bandit]
|
||||
commands =
|
||||
bandit -r monasca_notification -n5 -x monasca_notification/tests
|
||||
|
||||
[flake8]
|
||||
max-line-length = 120
|
||||
|
@ -76,7 +61,3 @@ max-line-length = 120
|
|||
# H405 multi line docstring summary not separated with an empty line
|
||||
ignore = F821,H201,H405
|
||||
exclude=.venv,.git,.tox,dist,*egg,build
|
||||
|
||||
[bandit]
|
||||
commands =
|
||||
bandit -r monasca_notification -n5 -x monasca_notification/tests
|
||||
|
|
Loading…
Reference in New Issue