Hello community,
here is the log from the commit of package python-pifpaf for openSUSE:Factory checked in at 2019-04-08 20:53:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pifpaf (Old)
and /work/SRC/openSUSE:Factory/.python-pifpaf.new.3908 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pifpaf"
Mon Apr 8 20:53:59 2019 rev:9 rq:692280 version:2.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pifpaf/python-pifpaf.changes 2018-12-24 11:41:10.701463499 +0100
+++ /work/SRC/openSUSE:Factory/.python-pifpaf.new.3908/python-pifpaf.changes 2019-04-08 20:54:02.322590491 +0200
@@ -1,0 +2,20 @@
+Mon Apr 8 12:05:42 UTC 2019 - Thomas Bechtold
+
+- Add fdupes
+
+-------------------------------------------------------------------
+Mon Apr 8 12:03:27 UTC 2019 - Thomas Bechtold
+
+- update to 2.2.2:
+ * postgresql: fix encoding of pgctl path
+ * stdin expecting bytes instead of str
+ * Implements apache qpid-dispatch-router driver
+ * tests: switch to kafka 1.0.2
+ * postgresql: add a --sync/--no-sync option
+ * Update to Mergify v2
+ * gnocchi: fix escape sequence
+ * Remove Python 3.5 support
+ * pep8: disable W503 and W504
+ * Implements apache artemis driver
+
+-------------------------------------------------------------------
Old:
----
pifpaf-2.1.2.tar.gz
New:
----
pifpaf-2.2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pifpaf.spec ++++++
--- /var/tmp/diff_new_pack.Q3BTKH/_old 2019-04-08 20:54:03.490591348 +0200
+++ /var/tmp/diff_new_pack.Q3BTKH/_new 2019-04-08 20:54:03.514591366 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-pifpaf
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pifpaf
-Version: 2.1.2
+Version: 2.2.2
Release: 0
Summary: Suite of tools and fixtures to manage daemons for testing
License: Apache-2.0
@@ -26,6 +26,7 @@
Url: https://github.com/jd/pifpaf
Source: https://pypi.io/packages/source/p/pifpaf/pifpaf-%{version}.tar.gz
BuildRequires: %{python_module pbr}
+BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-Jinja2
Requires: python-click
@@ -62,6 +63,7 @@
export LC_ALL=en_US.utf8
%python_install
%python_clone -a %{buildroot}%{_bindir}/pifpaf
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
%post
%python_install_alternative pifpaf
++++++ pifpaf-2.1.2.tar.gz -> pifpaf-2.2.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/.mergify.yml new/pifpaf-2.2.2/.mergify.yml
--- old/pifpaf-2.1.2/.mergify.yml 2018-10-03 16:25:47.000000000 +0200
+++ new/pifpaf-2.2.2/.mergify.yml 2019-01-07 16:58:34.000000000 +0100
@@ -1,9 +1,15 @@
-rules:
- default:
- protection:
- required_status_checks:
- strict: True
- contexts:
- - continuous-integration/travis-ci
- required_pull_request_reviews:
- required_approving_review_count: 1
+pull_request_rules:
+ - name: automatic merge
+ conditions:
+ - base=master
+ - status-success=continuous-integration/travis-ci/pr
+ - "#approved-reviews-by>=1"
+ - label!=work-in-progress
+ actions:
+ merge:
+ strict: "smart"
+ method: rebase
+ - name: dismiss reviews
+ conditions: []
+ actions:
+ dismiss_reviews: {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/.travis.yml new/pifpaf-2.2.2/.travis.yml
--- old/pifpaf-2.1.2/.travis.yml 2018-10-03 16:25:47.000000000 +0200
+++ new/pifpaf-2.2.2/.travis.yml 2019-01-07 16:58:34.000000000 +0100
@@ -5,7 +5,6 @@
- pip
python:
- 2.7
- - 3.5
- 3.6
before_install:
# Always redownload tarball
@@ -23,9 +22,9 @@
- sudo dpkg -i influxdb_0.13.0_amd64.deb
# zkEnv.sh can't be overriden with the deb version of zookeeper, this workaround that
- sudo chmod 777 /var/log/zookeeper
- - wget http://www.apache.org/dist/kafka/1.0.0/kafka_2.12-1.0.0.tgz -O /opt/kafka.tar.gz
+ - wget http://www.apache.org/dist/kafka/1.0.2/kafka_2.12-1.0.2.tgz -O /opt/kafka.tar.gz
- tar -xzf /opt/kafka.tar.gz -C /opt
- - ln -s /opt/kafka_2.12-1.0.0 /opt/kafka
+ - ln -s /opt/kafka_2.12-1.0.2 /opt/kafka
install:
# The install requirements in travis virtualenv that will be cached
- pip install tox-travis .[test,ceph]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/AUTHORS new/pifpaf-2.2.2/AUTHORS
--- old/pifpaf-2.1.2/AUTHORS 2018-10-03 16:35:16.000000000 +0200
+++ new/pifpaf-2.2.2/AUTHORS 2019-01-07 17:06:04.000000000 +0100
@@ -1,7 +1,6 @@
-Davanum Srinivas
-Felix Yan
+Andy Smith
+David Douard
Julien Danjou
-Mehdi ABAAKOUK
Mehdi Abaakouk
ajssmith
gord chung
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/ChangeLog new/pifpaf-2.2.2/ChangeLog
--- old/pifpaf-2.1.2/ChangeLog 2018-10-03 16:35:16.000000000 +0200
+++ new/pifpaf-2.2.2/ChangeLog 2019-01-07 17:06:04.000000000 +0100
@@ -1,6 +1,28 @@
CHANGES
=======
+2.2.2
+-----
+
+* postgresql: fix encoding of pgctl path
+
+2.2.1
+-----
+
+* stdin expecting bytes instead of str
+
+2.2.0
+-----
+
+* Implements apache qpid-dispatch-router driver
+* tests: switch to kafka 1.0.2
+* postgresql: add a --sync/--no-sync option
+* Update to Mergify v2
+* gnocchi: fix escape sequence
+* Remove Python 3.5 support
+* pep8: disable W503 and W504
+* Implements apache artemis driver
+
2.1.2
-----
@@ -136,44 +158,3 @@
------
* Fix process cleanup
-
-1.10.0
-------
-
-* Ensure pifpaf kill all processes
-* Fix compatibility with Redis 4.0
-
-1.9.2
------
-
-* Revert "Ensure pifpaf kill all processes"
-
-1.9.1
------
-
-* Ensure pifpaf kill all processes
-
-1.9.0
------
-
-* Add a new driver for Vault
-
-1.8.1
------
-
-* Fix logging in \_kill
-
-1.8.0
------
-
-* memcached: don't read stdout
-* swift: fix configuration typo
-
-1.7.0
------
-
-* swiftclient default auth to 2.0
-
-1.6.0
------
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/PKG-INFO new/pifpaf-2.2.2/PKG-INFO
--- old/pifpaf-2.1.2/PKG-INFO 2018-10-03 16:35:16.000000000 +0200
+++ new/pifpaf-2.2.2/PKG-INFO 2019-01-07 17:06:04.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: pifpaf
-Version: 2.1.2
+Version: 2.2.2
Summary: Suite of tools and fixtures to manage daemons for testing
Home-page: https://github.com/jd/pifpaf
Author: Julien Danjou
@@ -177,7 +177,6 @@
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Testing
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf/drivers/artemis.py new/pifpaf-2.2.2/pifpaf/drivers/artemis.py
--- old/pifpaf-2.1.2/pifpaf/drivers/artemis.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pifpaf-2.2.2/pifpaf/drivers/artemis.py 2019-01-07 16:58:34.000000000 +0100
@@ -0,0 +1,91 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+
+from pifpaf import drivers
+
+
+class ArtemisDriver(drivers.Driver):
+ DEFAULT_PORT = 5673
+ DEFAULT_USERNAME = "pifpaf"
+ DEFAULT_PASSWORD = "secrete"
+
+ def __init__(self, port=DEFAULT_PORT,
+ username=DEFAULT_USERNAME,
+ password=DEFAULT_PASSWORD,
+ require_login=False,
+ **kwargs):
+ """Create a new Artemis instance."""
+ super(ArtemisDriver, self).__init__(templatedir="artemis",
+ **kwargs)
+ self.port = port
+ self.username = username
+ self.password = password
+ self.require_login = require_login
+ self.login = "--require-login" if self.require_login \
+ else "--allow-anonymous"
+ self._path = ["/usr/lib/apache-artemis/bin"]
+
+ @classmethod
+ def get_options(cls):
+ return [
+ {"param_decls": ["--port"],
+ "type": int,
+ "default": cls.DEFAULT_PORT,
+ "help": "port to use for Artemis"},
+ {"param_decls": ["--username"],
+ "default": cls.DEFAULT_USERNAME,
+ "help": "Artemis broker username"},
+ {"param_decls": ["--password"],
+ "default": cls.DEFAULT_PASSWORD,
+ "help": "Artemis broker password"},
+ {"param_decls": ["--require_login"],
+ "is_flag": True,
+ "help": "Disable anonymous users"},
+ ]
+
+ def _setUp(self):
+ super(ArtemisDriver, self)._setUp()
+
+ brokerdir = os.path.join(self.tempdir, "broker")
+ brokerbin = os.path.join(brokerdir, "bin")
+ os.makedirs(brokerdir)
+
+ self._exec(["artemis", "create",
+ "--user", self.username,
+ "--password", self.password,
+ self.login,
+ brokerdir],
+ path=self._path,
+ wait_for_line='You can now start the broker by executing:')
+
+ template_env = {
+ "TMP_DIR": self.tempdir,
+ "PORT": self.port,
+ }
+
+ self.template("broker.xml",
+ template_env,
+ os.path.join(brokerdir, "etc/broker.xml"))
+
+ c, _ = self._exec(["%s/artemis" % brokerbin, "run"],
+ path=self._path,
+ wait_for_port=self.port)
+
+ self.addCleanup(self._exec, ["%s/artemis" % brokerbin, "stop"],
+ ignore_failure=True)
+
+ self.putenv("ARTEMIS_PORT", str(self.port))
+ self.putenv("ARTEMIS_URL", "amqp://localhost:%s" % self.port)
+ self.putenv("URL", "amqp://localhost:%s" % self.port)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf/drivers/gnocchi.py new/pifpaf-2.2.2/pifpaf/drivers/gnocchi.py
--- old/pifpaf-2.1.2/pifpaf/drivers/gnocchi.py 2018-10-03 16:25:47.000000000 +0200
+++ new/pifpaf-2.2.2/pifpaf/drivers/gnocchi.py 2019-01-07 16:58:34.000000000 +0100
@@ -221,7 +221,7 @@
args = ["gnocchi-api", "--config-file=%s" % conffile]
c, _ = self._exec(args,
- wait_for_line="WSGI app 0 \(mountpoint=''\) ready")
+ wait_for_line=r"WSGI app 0 \(mountpoint=''\) ready")
self.addCleanup(self._kill, c)
self.http_url = "http://localhost:%d" % self.port
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf/drivers/postgresql.py new/pifpaf-2.2.2/pifpaf/drivers/postgresql.py
--- old/pifpaf-2.1.2/pifpaf/drivers/postgresql.py 2018-10-03 16:25:47.000000000 +0200
+++ new/pifpaf-2.2.2/pifpaf/drivers/postgresql.py 2019-01-07 16:58:34.000000000 +0100
@@ -20,6 +20,7 @@
DEFAULT_PORT = 9824
DEFAULT_HOST = ""
+ DEFAULT_SYNC = False
@classmethod
def get_options(cls):
@@ -31,14 +32,18 @@
{"param_decls": ["--host"],
"default": cls.DEFAULT_HOST,
"help": "host to listen on"},
+ {"param_decls": ["--sync/--no-sync"],
+ "default": cls.DEFAULT_SYNC,
+ "help": "Make pg as fast as possible"},
]
def __init__(self, port=DEFAULT_PORT, host=DEFAULT_HOST,
- **kwargs):
+ sync=DEFAULT_SYNC, **kwargs):
"""Create a new PostgreSQL instance."""
super(PostgreSQLDriver, self).__init__(**kwargs)
self.port = port
self.host = host
+ self.sync = sync
def _setUp(self):
super(PostgreSQLDriver, self)._setUp()
@@ -47,8 +52,14 @@
self.putenv("PGDATA", self.tempdir, True)
self.putenv("PGDATABASE", "postgres", True)
_, pgbindir = self._exec(["pg_config", "--bindir"], stdout=True)
- pgctl = os.path.join(pgbindir.strip(), b"pg_ctl")
+ pgctl = os.path.join(pgbindir.strip().decode(), "pg_ctl")
self._exec([pgctl, "-o", "'-A trust'", "initdb"])
+ if not self.sync:
+ cfgfile = os.path.join(self.tempdir, 'postgresql.conf')
+ with open(cfgfile, 'a') as cfg:
+ for key in ('fsync', 'synchronous_commit', 'full_page_writes'):
+ cfg.write('{} = off\n'.format(key))
+
self._exec([pgctl, "-w", "-o",
"-k %s -p %d -h \"%s\""
% (self.tempdir, self.port, self.host),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf/drivers/qdrouterd.py new/pifpaf-2.2.2/pifpaf/drivers/qdrouterd.py
--- old/pifpaf-2.1.2/pifpaf/drivers/qdrouterd.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pifpaf-2.2.2/pifpaf/drivers/qdrouterd.py 2019-01-07 16:58:34.000000000 +0100
@@ -0,0 +1,117 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+
+from pifpaf import drivers
+
+
+class QdrouterdDriver(drivers.Driver):
+ DEFAULT_PORT = 5672
+ DEFAULT_ARTEMIS_PORT = 5673
+ DEFAULT_USERNAME = "pifpaf"
+ DEFAULT_PASSWORD = "secrete"
+ DEFAULT_DOMAIN = "localhost"
+
+ def __init__(self, port=DEFAULT_PORT,
+ artemis_port=DEFAULT_ARTEMIS_PORT,
+ username=DEFAULT_USERNAME,
+ password=DEFAULT_PASSWORD,
+ domain=DEFAULT_DOMAIN,
+ mesh=False,
+ direct_notify=False,
+ **kwargs):
+ """Create a new Qdrouterd instance."""
+ super(QdrouterdDriver, self).__init__(templatedir="qdrouterd",
+ **kwargs)
+ self.port = port
+ self.artemis_port = artemis_port
+ self.username = username
+ self.password = password
+ self.domain = domain
+ self.mesh = mesh
+ self.direct_notify = direct_notify
+
+ @classmethod
+ def get_options(cls):
+ return [
+ {"param_decls": ["--port"],
+ "type": int,
+ "default": cls.DEFAULT_PORT,
+ "help": "port to use for Qdrouterd"},
+ {"param_decls": ["--artemis_port"],
+ "type": int,
+ "default": cls.DEFAULT_ARTEMIS_PORT,
+ "help": "port to use for broker link"},
+ {"param_decls": ["--mesh"],
+ "is_flag": True,
+ "help": "TODO: Create a 3 HA node mesh"},
+ {"param_decls": ["--direct_notify"],
+ "is_flag": True,
+ "help": "direct message notify and do not attach to broker"},
+ {"param_decls": ["--username"],
+ "default": cls.DEFAULT_USERNAME,
+ "help": "sasl username"},
+ {"param_decls": ["--password"],
+ "default": cls.DEFAULT_PASSWORD,
+ "help": "sasl password"},
+ {"param_decls": ["--domain"],
+ "default": cls.DEFAULT_DOMAIN,
+ "help": "sasl domain"},
+ ]
+
+ def saslpasswd2(self, username, password, sasl_db):
+ self._exec(["saslpasswd2", "-c", "-p", "-f",
+ sasl_db, username], stdin=password.encode())
+
+ def _setUp(self):
+ super(QdrouterdDriver, self)._setUp()
+
+ # setup log, etc used by qdrouterd
+ logdir = os.path.join(self.tempdir, "log")
+ os.makedirs(logdir)
+ etcdir = os.path.join(self.tempdir, "etc")
+ os.makedirs(etcdir)
+ sasldir = os.path.join(etcdir, "sasl2")
+ os.makedirs(sasldir)
+ logfile = os.path.join(logdir, "qdrouterd.log")
+
+ template_env = {
+ "TMP_DIR": self.tempdir,
+ "PORT": self.port,
+ "ARTEMIS_PORT": self.artemis_port,
+ "SASL_DIR": sasldir,
+ "LOG_FILE": logfile,
+ "DIRECT_NOTIFY": self.direct_notify,
+ }
+
+ qdr_cfg = os.path.join(etcdir, "qdrouterd.conf")
+ self.template("qdrouterd.conf",
+ template_env,
+ qdr_cfg)
+
+ sasl_cfg = os.path.join(sasldir, "sasl_qdrouterd.conf")
+ self.template("sasl_qdrouterd.conf",
+ template_env,
+ sasl_cfg)
+
+ sasl_db = os.path.join(sasldir, "qdrouterd.sasldb")
+ self.saslpasswd2(self.username, self.password, sasl_db)
+
+ c, _ = self._exec(["qdrouterd", "-c", qdr_cfg],
+ wait_for_port=self.port)
+
+ self.putenv("QDROUTERD_PORT", str(self.port))
+ self.putenv("QDROUTERD_URL", "amqp://localhost:%s" % self.port)
+ self.putenv("URL", "amqp://%s:%s@localhost:%s" % (
+ self.username, self.password, self.port))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf/drivers/templates/artemis/broker.xml new/pifpaf-2.2.2/pifpaf/drivers/templates/artemis/broker.xml
--- old/pifpaf-2.1.2/pifpaf/drivers/templates/artemis/broker.xml 1970-01-01 01:00:00.000000000 +0100
+++ new/pifpaf-2.2.2/pifpaf/drivers/templates/artemis/broker.xml 2019-01-07 16:58:34.000000000 +0100
@@ -0,0 +1,140 @@
+<?xml version='1.0'?>
+
+http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xsi:schemaLocation="urn:activemq /schema/artemis-configuration.xsd">
+
+ http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:activemq:core ">
+
+ <name>0.0.0.0</name>
+
+
+ <persistence-enabled>true</persistence-enabled>
+
+ <journal-type>ASYNCIO</journal-type>
+
+ <paging-directory>data/paging</paging-directory>
+
+ <bindings-directory>data/bindings</bindings-directory>
+
+ <journal-directory>data/journal</journal-directory>
+
+ <large-messages-directory>data/large-messages</large-messages-directory>
+
+ <journal-datasync>true</journal-datasync>
+
+ <journal-min-files>2</journal-min-files>
+
+ <journal-pool-files>10</journal-pool-files>
+
+ <journal-file-size>10M</journal-file-size>
+
+ <journal-buffer-timeout>52000</journal-buffer-timeout>
+
+ <journal-max-io>4096</journal-max-io>
+
+ <disk-scan-period>5000</disk-scan-period>
+
+ <max-disk-usage>90</max-disk-usage>
+
+ <critical-analyzer>true</critical-analyzer>
+
+ <critical-analyzer-timeout>120000</critical-analyzer-timeout>
+
+ <critical-analyzer-check-period>60000</critical-analyzer-check-period>
+
+ <critical-analyzer-policy>HALT</critical-analyzer-policy>
+
+ <acceptors>
+
+ <!-- Acceptor for every supported protocol -->
+ <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>
+
+ <!-- AMQP Acceptor. Listens on default AMQP port for AMQP traffic.-->
+ <acceptor name="amqp">tcp://0.0.0.0:{{ PORT }}?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>
+
+ <!-- STOMP Acceptor. -->
+ <acceptor name="stomp">tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true</acceptor>
+
+ <!-- HornetQ Compatibility Acceptor. Enables HornetQ Core and STOMP for legacy HornetQ clients. -->
+ <acceptor name="hornetq">tcp://0.0.0.0:5445?anycastPrefix=jms.queue.;multicastPrefix=jms.topic.;protocols=HORNETQ,STOMP;useEpoll=true</acceptor>
+
+ <!-- MQTT Acceptor -->
+ <acceptor name="mqtt">tcp://0.0.0.0:1883?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=MQTT;useEpoll=true</acceptor>
+
+ </acceptors>
+
+
+ <security-settings>
+ <security-setting match="#">
+ <permission type="createNonDurableQueue" roles="amq"/>
+ <permission type="deleteNonDurableQueue" roles="amq"/>
+ <permission type="createDurableQueue" roles="amq"/>
+ <permission type="deleteDurableQueue" roles="amq"/>
+ <permission type="createAddress" roles="amq"/>
+ <permission type="deleteAddress" roles="amq"/>
+ <permission type="consume" roles="amq"/>
+ <permission type="browse" roles="amq"/>
+ <permission type="send" roles="amq"/>
+ <!-- we need this otherwise ./artemis data imp wouldn't work -->
+ <permission type="manage" roles="amq"/>
+ </security-setting>
+ </security-settings>
+
+ <address-settings>
+ <address-setting match="activemq.management#">
+ <dead-letter-address>DLQ</dead-letter-address>
+ <expiry-address>ExpiryQueue</expiry-address>
+ <redelivery-delay>0</redelivery-delay>
+ <max-size-bytes>-1</max-size-bytes>
+ <message-counter-history-day-limit>10</message-counter-history-day-limit>
+ <address-full-policy>PAGE</address-full-policy>
+ <auto-create-queues>true</auto-create-queues>
+ <auto-create-addresses>true</auto-create-addresses>
+ <auto-create-jms-queues>true</auto-create-jms-queues>
+ <auto-create-jms-topics>true</auto-create-jms-topics>
+ </address-setting>
+
+ <address-setting match="#">
+ <dead-letter-address>DLQ</dead-letter-address>
+ <expiry-address>ExpiryQueue</expiry-address>
+ <redelivery-delay>0</redelivery-delay>
+ <max-size-bytes>-1</max-size-bytes>
+ <message-counter-history-day-limit>10</message-counter-history-day-limit>
+ <address-full-policy>PAGE</address-full-policy>
+ <auto-create-queues>true</auto-create-queues>
+ <auto-create-addresses>true</auto-create-addresses>
+ <auto-create-jms-queues>true</auto-create-jms-queues>
+ <auto-create-jms-topics>true</auto-create-jms-topics>
+ </address-setting>
+ </address-settings>
+
+ <addresses>
+ <address name="DLQ">
+ <anycast>
+ <queue name="DLQ" />
+ </anycast>
+ </address>
+ <address name="ExpiryQueue">
+ <anycast>
+ <queue name="ExpiryQueue" />
+ </anycast>
+ </address>
+ </addresses>
+
+ <broker-plugins>
+ <broker-plugin class-name="org.apache.activemq.artemis.core.server.plugin.impl.LoggingActiveMQServerPlugin">
+ <property key="LOG_ALL_EVENTS" value="true"/>
+ <property key="LOG_CONNECTION_EVENTS" value="true"/>
+ <property key="LOG_SESSION_EVENTS" value="true"/>
+ <property key="LOG_CONSUMER_EVENTS" value="true"/>
+ <property key="LOG_DELIVERING_EVENTS" value="true"/>
+ <property key="LOG_SENDING_EVENTS" value="true"/>
+ <property key="LOG_INTERNAL_EVENTS" value="true"/>
+ </broker-plugin>
+ </broker-plugins>
+
+ </core>
+</configuration>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf/drivers/templates/qdrouterd/broker_om.conf.inc new/pifpaf-2.2.2/pifpaf/drivers/templates/qdrouterd/broker_om.conf.inc
--- old/pifpaf-2.1.2/pifpaf/drivers/templates/qdrouterd/broker_om.conf.inc 1970-01-01 01:00:00.000000000 +0100
+++ new/pifpaf-2.2.2/pifpaf/drivers/templates/qdrouterd/broker_om.conf.inc 2019-01-07 16:58:34.000000000 +0100
@@ -0,0 +1,51 @@
+connector {
+ name: broker
+ role: route-container
+ host: 0.0.0.0
+ port: {{ ARTEMIS_PORT }}
+ sasl-mechanisms: ANONYMOUS
+ linkCapacity: 1000
+ stripAnnotations:no
+}
+
+address {
+ prefix: unicast
+ distribution: closest
+}
+
+address {
+ prefix: exclusive
+ distribution: closest
+}
+
+address {
+ prefix: broadcast
+ distribution: multicast
+}
+
+address {
+ prefix: openstack.org/om/rpc/multicast
+ distribution: multicast
+}
+
+address {
+ prefix: openstack.org/om/rpc/unicast
+ distribution: closest
+}
+
+address {
+ prefix: openstack.org/om/rpc/anycast
+ distribution: balanced
+}
+
+linkRoute {
+ prefix: openstack.org/om/notify
+ connection: broker
+ dir: in
+}
+
+linkRoute {
+ prefix: openstack.org/om/notify
+ connection: broker
+ dir: out
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf/drivers/templates/qdrouterd/direct_om.conf.inc new/pifpaf-2.2.2/pifpaf/drivers/templates/qdrouterd/direct_om.conf.inc
--- old/pifpaf-2.1.2/pifpaf/drivers/templates/qdrouterd/direct_om.conf.inc 1970-01-01 01:00:00.000000000 +0100
+++ new/pifpaf-2.2.2/pifpaf/drivers/templates/qdrouterd/direct_om.conf.inc 2019-01-07 16:58:34.000000000 +0100
@@ -0,0 +1,44 @@
+address {
+ prefix: unicast
+ distribution: closest
+}
+
+address {
+ prefix: exclusive
+ distribution: closest
+}
+
+address {
+ prefix: broadcast
+ distribution: multicast
+}
+
+address {
+ prefix: openstack.org/om/rpc/multicast
+ distribution: multicast
+}
+
+address {
+ prefix: openstack.org/om/rpc/unicast
+ distribution: closest
+}
+
+address {
+ prefix: openstack.org/om/rpc/anycast
+ distribution: balanced
+}
+
+address {
+ prefix: openstack.org/om/notify/multicast
+ distribution: multicast
+}
+
+address {
+ prefix: openstack.org/om/notify/unicast
+ distribution: closest
+}
+
+address {
+ prefix: openstack.org/om/notify/anycast
+ distribution: balanced
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf/drivers/templates/qdrouterd/qdrouterd.conf new/pifpaf-2.2.2/pifpaf/drivers/templates/qdrouterd/qdrouterd.conf
--- old/pifpaf-2.1.2/pifpaf/drivers/templates/qdrouterd/qdrouterd.conf 1970-01-01 01:00:00.000000000 +0100
+++ new/pifpaf-2.2.2/pifpaf/drivers/templates/qdrouterd/qdrouterd.conf 2019-01-07 16:58:34.000000000 +0100
@@ -0,0 +1,28 @@
+router {
+ mode: standalone
+ id: Router.A
+ workerThreads: 4
+ saslConfigPath: {{ SASL_DIR }}
+ saslConfigName: sasl_qdrouterd
+}
+
+listener {
+ host: 0.0.0.0
+ port: {{ PORT }}
+ role: normal
+ sasl-mechanisms: PLAIN ANONYMOUS
+ stripAnnotations: no
+ authenticatePeer: no
+}
+
+{% if DIRECT_NOTIFY %}
+{% include 'direct_om.conf.inc' %}
+{% else %}
+{% include 'broker_om.conf.inc' %}
+{% endif %}
+
+log {
+ module: DEFAULT
+ enable: trace+
+ output: {{ LOG_FILE }}
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf/drivers/templates/qdrouterd/sasl_qdrouterd.conf new/pifpaf-2.2.2/pifpaf/drivers/templates/qdrouterd/sasl_qdrouterd.conf
--- old/pifpaf-2.1.2/pifpaf/drivers/templates/qdrouterd/sasl_qdrouterd.conf 1970-01-01 01:00:00.000000000 +0100
+++ new/pifpaf-2.2.2/pifpaf/drivers/templates/qdrouterd/sasl_qdrouterd.conf 2019-01-07 16:58:34.000000000 +0100
@@ -0,0 +1,4 @@
+pwcheck_method: auxprop
+auxprop_plugin: sasldb
+sasldb_path: {{ SASL_DIR }}/qdrouterd.sasldb
+mech_list: PLAIN ANONYMOUS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf/tests/test_drivers.py new/pifpaf-2.2.2/pifpaf/tests/test_drivers.py
--- old/pifpaf-2.1.2/pifpaf/tests/test_drivers.py 2018-10-03 16:25:47.000000000 +0200
+++ new/pifpaf-2.2.2/pifpaf/tests/test_drivers.py 2019-01-07 16:58:34.000000000 +0100
@@ -30,6 +30,7 @@
from pifpaf import drivers
from pifpaf.drivers import aodh
+from pifpaf.drivers import artemis
from pifpaf.drivers import ceph
from pifpaf.drivers import consul
from pifpaf.drivers import couchdb
@@ -44,6 +45,7 @@
from pifpaf.drivers import mongodb
from pifpaf.drivers import mysql
from pifpaf.drivers import postgresql
+from pifpaf.drivers import qdrouterd
from pifpaf.drivers import rabbitmq
from pifpaf.drivers import redis
from pifpaf.drivers import s3rver
@@ -244,6 +246,17 @@
os.getenv("PIFPAF_URL"))
self._run("psql template1 -c 'CREATE TABLE FOOBAR();'")
+ @testtools.skipUnless(spawn.find_executable("pg_config"),
+ "pg_config not found")
+ def test_postgresql_async(self):
+ port = 9825
+ f = self.useFixture(postgresql.PostgreSQLDriver(port=port, sync=False))
+ self.assertEqual(
+ "postgresql://localhost/postgres?host=%s&port=%d"
+ % (f.tempdir, port),
+ os.getenv("PIFPAF_URL"))
+ self._run("psql template1 -c 'CREATE TABLE FOOBAR();'")
+
@testtools.skipUnless(spawn.find_executable("redis-server"),
"redis-server not found")
def test_redis(self):
@@ -469,6 +482,27 @@
r = requests.get("http://localhost:%d/" % port)
self.assertEqual(r.json()["couchdb"], "Welcome")
+ @testtools.skipUnless(spawn.find_executable("artemis"),
+ "Artemis not found")
+ def test_artemis(self):
+ self.useFixture(artemis.ArtemisDriver(port=54321))
+ self.assertEqual("amqp://localhost:54321",
+ os.getenv("PIFPAF_URL"))
+ self.assertEqual("54321", os.getenv("PIFPAF_ARTEMIS_PORT"))
+ self.assertEqual("amqp://localhost:54321",
+ os.getenv("PIFPAF_ARTEMIS_URL"))
+
+ @testtools.skipUnless(spawn.find_executable("qdrouterd"),
+ "Qdrouterd not found")
+ def test_qdrouterd(self):
+ a = self.useFixture(qdrouterd.QdrouterdDriver(port=54321))
+ self.assertEqual("amqp://%s:%s@localhost:54321" % (a.username,
+ a.password),
+ os.getenv("PIFPAF_URL"))
+ self.assertEqual("54321", os.getenv("PIFPAF_QDROUTERD_PORT"))
+ self.assertEqual("amqp://localhost:54321",
+ os.getenv("PIFPAF_QDROUTERD_URL"))
+
@testtools.skipUnless(spawn.find_executable("kafka-server-start.sh"),
"Kafka not found")
def test_kafka(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf.egg-info/PKG-INFO new/pifpaf-2.2.2/pifpaf.egg-info/PKG-INFO
--- old/pifpaf-2.1.2/pifpaf.egg-info/PKG-INFO 2018-10-03 16:35:16.000000000 +0200
+++ new/pifpaf-2.2.2/pifpaf.egg-info/PKG-INFO 2019-01-07 17:06:04.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: pifpaf
-Version: 2.1.2
+Version: 2.2.2
Summary: Suite of tools and fixtures to manage daemons for testing
Home-page: https://github.com/jd/pifpaf
Author: Julien Danjou
@@ -177,7 +177,6 @@
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Testing
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf.egg-info/SOURCES.txt new/pifpaf-2.2.2/pifpaf.egg-info/SOURCES.txt
--- old/pifpaf-2.1.2/pifpaf.egg-info/SOURCES.txt 2018-10-03 16:35:16.000000000 +0200
+++ new/pifpaf-2.2.2/pifpaf.egg-info/SOURCES.txt 2019-01-07 17:06:04.000000000 +0100
@@ -22,6 +22,7 @@
pifpaf.egg-info/top_level.txt
pifpaf/drivers/__init__.py
pifpaf/drivers/aodh.py
+pifpaf/drivers/artemis.py
pifpaf/drivers/ceph.py
pifpaf/drivers/consul.py
pifpaf/drivers/couchdb.py
@@ -36,12 +37,18 @@
pifpaf/drivers/mongodb.py
pifpaf/drivers/mysql.py
pifpaf/drivers/postgresql.py
+pifpaf/drivers/qdrouterd.py
pifpaf/drivers/rabbitmq.py
pifpaf/drivers/redis.py
pifpaf/drivers/s3rver.py
pifpaf/drivers/swift.py
pifpaf/drivers/vault.py
pifpaf/drivers/zookeeper.py
+pifpaf/drivers/templates/artemis/broker.xml
+pifpaf/drivers/templates/qdrouterd/broker_om.conf.inc
+pifpaf/drivers/templates/qdrouterd/direct_om.conf.inc
+pifpaf/drivers/templates/qdrouterd/qdrouterd.conf
+pifpaf/drivers/templates/qdrouterd/sasl_qdrouterd.conf
pifpaf/drivers/templates/swift/account.conf
pifpaf/drivers/templates/swift/common.conf.inc
pifpaf/drivers/templates/swift/container-sync-realms.conf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf.egg-info/entry_points.txt new/pifpaf-2.2.2/pifpaf.egg-info/entry_points.txt
--- old/pifpaf-2.1.2/pifpaf.egg-info/entry_points.txt 2018-10-03 16:35:16.000000000 +0200
+++ new/pifpaf-2.2.2/pifpaf.egg-info/entry_points.txt 2019-01-07 17:06:04.000000000 +0100
@@ -3,6 +3,7 @@
[pifpaf.daemons]
aodh = pifpaf.drivers.aodh:AodhDriver
+artemis = pifpaf.drivers.artemis:ArtemisDriver
ceph = pifpaf.drivers.ceph:CephDriver
consul = pifpaf.drivers.consul:ConsulDriver
couchdb = pifpaf.drivers.couchdb:CouchDBDriver
@@ -17,6 +18,7 @@
mongodb = pifpaf.drivers.mongodb:MongoDBDriver
mysql = pifpaf.drivers.mysql:MySQLDriver
postgresql = pifpaf.drivers.postgresql:PostgreSQLDriver
+qdrouterd = pifpaf.drivers.qdrouterd:QdrouterdDriver
rabbitmq = pifpaf.drivers.rabbitmq:RabbitMQDriver
redis = pifpaf.drivers.redis:RedisDriver
s3rver = pifpaf.drivers.s3rver:S3rverDriver
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/pifpaf.egg-info/pbr.json new/pifpaf-2.2.2/pifpaf.egg-info/pbr.json
--- old/pifpaf-2.1.2/pifpaf.egg-info/pbr.json 2018-10-03 16:35:16.000000000 +0200
+++ new/pifpaf-2.2.2/pifpaf.egg-info/pbr.json 2019-01-07 17:06:04.000000000 +0100
@@ -1 +1 @@
-{"git_version": "0f49ddc", "is_release": true}
\ No newline at end of file
+{"git_version": "19420b3", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/setup.cfg new/pifpaf-2.2.2/setup.cfg
--- old/pifpaf-2.1.2/setup.cfg 2018-10-03 16:35:16.000000000 +0200
+++ new/pifpaf-2.2.2/setup.cfg 2019-01-07 17:06:04.000000000 +0100
@@ -13,7 +13,6 @@
Programming Language :: Python :: 2
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
- Programming Language :: Python :: 3.5
Programming Language :: Python :: 3.6
Topic :: Software Development :: Testing
@@ -34,6 +33,7 @@
[entry_points]
pifpaf.daemons =
aodh = pifpaf.drivers.aodh:AodhDriver
+ artemis = pifpaf.drivers.artemis:ArtemisDriver
consul = pifpaf.drivers.consul:ConsulDriver
couchdb = pifpaf.drivers.couchdb:CouchDBDriver
elasticsearch = pifpaf.drivers.elasticsearch:ElasticsearchDriver
@@ -49,6 +49,7 @@
mongodb = pifpaf.drivers.mongodb:MongoDBDriver
mysql = pifpaf.drivers.mysql:MySQLDriver
postgresql = pifpaf.drivers.postgresql:PostgreSQLDriver
+ qdrouterd = pifpaf.drivers.qdrouterd:QdrouterdDriver
rabbitmq = pifpaf.drivers.rabbitmq:RabbitMQDriver
redis = pifpaf.drivers.redis:RedisDriver
s3rver = pifpaf.drivers.s3rver:S3rverDriver
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pifpaf-2.1.2/tox.ini new/pifpaf-2.2.2/tox.ini
--- old/pifpaf-2.1.2/tox.ini 2018-10-03 16:25:47.000000000 +0200
+++ new/pifpaf-2.2.2/tox.ini 2019-01-07 16:58:34.000000000 +0100
@@ -29,7 +29,7 @@
basepython = python3.6
exclude = .tox,.eggs,doc
show-source = true
-ignore = D100,D101,D102,D103,D104,G200,G201
+ignore = D100,D101,D102,D103,D104,G200,G201,W503,W504
enable-extensions=G
application-import-names = pifpaf