From d6244abb990bb45cf0ca29ec8102686af125684c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20Ma=C5=9Blanka?= <piotr.maslanka@henrietta.com.pl>
Date: Thu, 9 Jul 2020 16:27:55 +0200
Subject: [PATCH] v1.2.5 - fixed log_frames

---
 CHANGELOG.md                             |  2 +-
 coolamqp/__init__.py                     |  2 +-
 coolamqp/clustering/cluster.py           |  9 ++++--
 docker-compose.yml                       |  2 +-
 tests/Dockerfile                         |  2 +-
 tests/test_clustering/test_log_frames.py | 35 ++++++++++++++++++++++++
 tests/test_clustering/test_things.py     |  2 +-
 7 files changed, 46 insertions(+), 8 deletions(-)
 create mode 100644 tests/test_clustering/test_log_frames.py

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 690db17..b85395c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
 # v1.2.5
 
-* _TBA_
+* bugfix: fixed `log_frames` in `Cluster`
 
 # v1.2.4
 
diff --git a/coolamqp/__init__.py b/coolamqp/__init__.py
index dd3dbb6..09964d6 100644
--- a/coolamqp/__init__.py
+++ b/coolamqp/__init__.py
@@ -1 +1 @@
-__version__ = '1.2.5_a1'
+__version__ = '1.2.5'
diff --git a/coolamqp/clustering/cluster.py b/coolamqp/clustering/cluster.py
index 598e5f1..9cfe3a3 100644
--- a/coolamqp/clustering/cluster.py
+++ b/coolamqp/clustering/cluster.py
@@ -83,6 +83,10 @@ class Cluster(object):
         self.log_frames = log_frames
         self.on_blocked = on_blocked
         self.connected = False
+        self.listener = None
+        self.attache_group = None
+        self.events = None
+        self.snr = None     # type: SingleNodeReconnector
 
         if on_fail is not None:
             def decorated():
@@ -265,7 +269,7 @@ class Cluster(object):
             raise NotImplementedError(
                 u'Sorry, this functionality is not yet implemented!')
 
-    def start(self, wait=True, timeout=10.0, log_frames=None):  # type: (bool, float, bool) -> None
+    def start(self, wait=True, timeout=10.0):  # type: (bool, float, bool) -> None
         """
         Connect to broker. Initialize Cluster.
 
@@ -277,7 +281,6 @@ class Cluster(object):
                         ConnectionDead error will be raised
         :raise RuntimeError: called more than once
         :raise ConnectionDead: failed to connect within timeout
-        :param log_frames: whether to keep a log of sent/received frames in self.log_frames
         """
 
         try:
@@ -295,7 +298,7 @@ class Cluster(object):
 
         self.snr = SingleNodeReconnector(self.node, self.attache_group,
                                          self.listener, self.extra_properties,
-                                         log_frames, self.name)
+                                         self.log_frames, self.name)
         self.snr.on_fail.add(lambda: self.events.put_nowait(ConnectionLost()))
         if self.on_fail is not None:
             self.snr.on_fail.add(self.on_fail)
diff --git a/docker-compose.yml b/docker-compose.yml
index e525a5d..812b4ef 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -2,7 +2,7 @@ version: '3.2'
 services:
   amqp:
     image: rabbitmq
-  tests:
+  unittest:
     build:
       context: .
       dockerfile: tests/Dockerfile
diff --git a/tests/Dockerfile b/tests/Dockerfile
index f61ab62..e0ad63d 100644
--- a/tests/Dockerfile
+++ b/tests/Dockerfile
@@ -16,5 +16,5 @@ ENV AMQP_HOST=amqp
 # for those pesky builds on Windows
 RUN chmod -R ugo-x /coolamqp
 
-CMD python setup.py test
+CMD ["python", "setup.py", "test"]
 
diff --git a/tests/test_clustering/test_log_frames.py b/tests/test_clustering/test_log_frames.py
new file mode 100644
index 0000000..02c4c6c
--- /dev/null
+++ b/tests/test_clustering/test_log_frames.py
@@ -0,0 +1,35 @@
+# coding=UTF-8
+"""
+Test things
+"""
+from __future__ import print_function, absolute_import, division
+
+import logging
+import os
+import time
+import unittest
+
+from coolamqp.clustering import Cluster
+from coolamqp.objects import NodeDefinition, FrameLogger
+
+NODE = NodeDefinition(os.environ.get('AMQP_HOST', '127.0.0.1'), 'guest', 'guest', heartbeat=20)
+logging.basicConfig(level=logging.DEBUG)
+
+
+class TestLogFrames(unittest.TestCase):
+    def test_log_frames_works(self):
+        class LogFrames(FrameLogger):
+            def __init__(self):
+                self.received_frames = 0
+
+            def on_frame(self, timestamp, frame, direction):
+                self.received_frames += 1
+
+        frame_logger = LogFrames()
+        self.c = Cluster([NODE], log_frames=frame_logger)
+        self.c.start()
+        self.assertGreaterEqual(frame_logger.received_frames, 3)
+
+    def tearDown(self):
+        self.c.shutdown()
+
diff --git a/tests/test_clustering/test_things.py b/tests/test_clustering/test_things.py
index 3369eb2..5c7878a 100644
--- a/tests/test_clustering/test_things.py
+++ b/tests/test_clustering/test_things.py
@@ -63,4 +63,4 @@ class TestConnecting(unittest.TestCase):
     def test_amqpconnstring_port(self):
         node = NodeDefinition('amqp://lol:lol@lol:4123/vhost')
 
-        self.assertEquals(node.port, 4123)
+        self.assertEqual(node.port, 4123)
-- 
GitLab