From 8dfc064c79fe58156f5b9c35b578d589379beb74 Mon Sep 17 00:00:00 2001
From: "ChangBo Guo(gcb)" <eric.guo@easystack.cn>
Date: Thu, 7 Jan 2016 14:49:50 +0800
Subject: [PATCH] test: Don't test message's reply timeout

Message's reply time is affected by many factors. Heavy load usually
affects a lot, we use threading module in test, due to the GIL issue,
we can't make sure threads finished quickly as we expected. So we
shouldn't assume messag replies quickly within (timeout + 0.100).

Closes-Bug: #1510481
Change-Id: Ib55d5557c927d9917e355c59da62f8f9cd8a7f9c
---
 .../tests/drivers/test_impl_rabbit.py         | 40 ++-----------------
 1 file changed, 4 insertions(+), 36 deletions(-)

diff --git a/oslo_messaging/tests/drivers/test_impl_rabbit.py b/oslo_messaging/tests/drivers/test_impl_rabbit.py
index 676c81f41..b106fcd77 100644
--- a/oslo_messaging/tests/drivers/test_impl_rabbit.py
+++ b/oslo_messaging/tests/drivers/test_impl_rabbit.py
@@ -351,11 +351,6 @@ class TestSendReceive(test_utils.BaseTestCase):
         ('zero', dict(rx_id=False, reply=0)),
     ]
 
-    _reply_fail = [
-        ('reply_success', dict(reply_failure_404=False)),
-        ('reply_failure', dict(reply_failure_404=True)),
-    ]
-
     _failure = [
         ('success', dict(failure=False)),
         ('failure', dict(failure=True, expected=False)),
@@ -372,7 +367,6 @@ class TestSendReceive(test_utils.BaseTestCase):
         cls.scenarios = testscenarios.multiply_scenarios(cls._n_senders,
                                                          cls._context,
                                                          cls._reply,
-                                                         cls._reply_fail,
                                                          cls._failure,
                                                          cls._timeout)
 
@@ -405,10 +399,8 @@ class TestSendReceive(test_utils.BaseTestCase):
 
         def send_and_wait_for_reply(i):
             try:
-                if self.reply_failure_404:
-                    timeout = 0.01
-                else:
-                    timeout = self.timeout
+
+                timeout = self.timeout
                 replies.append(driver.send(target,
                                            self.ctxt,
                                            {'tx_id': i},
@@ -418,8 +410,7 @@ class TestSendReceive(test_utils.BaseTestCase):
                 self.assertIsNone(self.timeout)
             except (ZeroDivisionError, oslo_messaging.MessagingTimeout) as e:
                 replies.append(e)
-                self.assertTrue(self.failure or self.timeout is not None
-                                or self.reply_failure_404)
+                self.assertTrue(self.failure or self.timeout is not None)
 
         while len(senders) < self.n_senders:
             senders.append(threading.Thread(target=send_and_wait_for_reply,
@@ -439,18 +430,6 @@ class TestSendReceive(test_utils.BaseTestCase):
         if len(order) > 1:
             order[-1], order[-2] = order[-2], order[-1]
 
-        if self.reply_failure_404:
-            start = time.time()
-            # NOTE(sileht): Simulate a rpc client restart
-            # By returning a ExchangeNotFound when we try to
-            # send reply
-            exc = (driver._reply_q_conn.connection.
-                   connection.channel_errors[0]())
-            exc.code = 404
-            self.useFixture(mockpatch.Patch(
-                'kombu.messaging.Producer.publish',
-                side_effect=exc))
-
         for i in order:
             if self.timeout is None:
                 if self.failure:
@@ -464,22 +443,11 @@ class TestSendReceive(test_utils.BaseTestCase):
                     msgs[i].reply({'rx_id': i})
                 else:
                     msgs[i].reply(self.reply)
-            elif self.reply_failure_404:
-                msgs[i].reply({})
             senders[i].join()
 
-        if self.reply_failure_404:
-            # NOTE(sileht) all reply fail, first take
-            # kombu_missing_consumer_retry_timeout seconds to fail
-            # next immediately fail
-            dt = time.time() - start
-            rabbit_conf = self.conf.oslo_messaging_rabbit
-            timeout = rabbit_conf.kombu_missing_consumer_retry_timeout
-            self.assertTrue(timeout <= dt < (timeout + 0.100), dt)
-
         self.assertEqual(len(senders), len(replies))
         for i, reply in enumerate(replies):
-            if self.timeout is not None or self.reply_failure_404:
+            if self.timeout is not None:
                 self.assertIsInstance(reply, oslo_messaging.MessagingTimeout)
             elif self.failure:
                 self.assertIsInstance(reply, ZeroDivisionError)