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 <[email protected]>
+
+- Add fdupes
+
+-------------------------------------------------------------------
+Mon Apr  8 12:03:27 UTC 2019 - Thomas Bechtold <[email protected]>
+
+- 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 <[email protected]>
-Felix Yan <[email protected]>
+Andy Smith <[email protected]>
+David Douard <[email protected]>
 Julien Danjou <[email protected]>
-Mehdi ABAAKOUK <[email protected]>
 Mehdi Abaakouk <[email protected]>
 ajssmith <[email protected]>
 gord chung <[email protected]>
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'?>
+
+<configuration xmlns="urn:activemq"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+               xmlns:xi="http://www.w3.org/2001/XInclude";
+               xsi:schemaLocation="urn:activemq 
/schema/artemis-configuration.xsd">
+
+   <core xmlns="urn:activemq:core" 
xmlns:xsi="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
 


Reply via email to