This change ensures that the amqp1 will be present into the
configfile even the required python module are not present and
also put them into the correct section, [oslo_messaging_amqp1].
Change-Id: I1005405d7ed51090495688eadbe400dbff7c3cc9
The key driver interfaces are implemented in the ProtonDriver class in
driver.py. The logic for interfacing with Pyngus in order to
send/receive messages, manage AMQP connections and links, and handle
protocol events is in controller.py. eventloop.py is a fairly generic
socket connection and I/O processor which runs in its own thread.
controller.py uses the eventloop.py thread to schedule subscription
and message send requests from the driver, as well as handle all
protocol event callbacks coming from Pyngus.
Included in this patch are a set of functional tests that can be run
under tox (tox -eamqp1). These tests fully exercise the new driver,
from the driver API down to the 'wire' - nothing in the driver is
mocked out. The functional tests implement a simple loopback test
broker, which allows the driver to send and receive messages via the
local network. All RPC call patterns, RPC timeouts, and even broker
failover are verified by the included functional tests.
This driver uses the Pyngus module, which is a pure-python client API
built on the Proton AMQP 1.0 protocol engine library from the Apache
Qpid project. Pyngus is available via pypi.python.org.
This driver introduces a dependency on the Proton AMQP 1.0 protocol
library, which is a platform-dependent library that must be installed
in order to use this driver and run the functional tests.
Change-Id: I871703e4cdc04cee3e6c214e911c9df464ede2ed
Implements: blueprint amqp10-driver-implementation
Follow oslo.config conventions for consistency of help strings:
* Use sentence style capitalization.
* End entry with a "."
Fix capitalization of AMQP.
Change-Id: I0a6b170a2a7cfa539e06781f4495c4353d22e4d0
Raising SkipTest at import time fails in recent version of the test
suite. We change that by being more picky at one should or should not be
tested based on what we managed to import; the upside is that we test a
few more things under Python 3 now.
Change-Id: I8971c7291cb261faf00fec73cf53b6132bdaf948
Cast messages will not contain a msg_id and we're currently
sending messages to the default excahgne with empty msg_id.
In order to fix it we should not send replies if there is no
msg_id in message.
Change-Id: I5b1142029d2c718c3929cf6cf1f6e958b95a5c96
Closes-bug: #1355058
This patch enables running all the unit tests (except the qpid ones that
are skipped) under Python 3.3 and Python 3.4.
Change-Id: I711663b4eedfb3cdeea7e6da7d28c6b92663e611
Included commits:
commit ad248f66 Specify namedtuple_as_object=False when using simplejson
commit ef37e032 Added missing jsonutils.dump() function
My motivation of sync is the following neutron change.
https://review.openstack.org/#/c/112178/
Closes-Bug: #1356173
Change-Id: I0086e5ffa27fa5035112d4868aeb14cbdfa8f4de
In Qpid rpc backend, receiver capacity is 1 and is hardcoding.
User can not customize it. This patch adds a parameter to make
user can specify receiver capacity in conf file.
- Reference about Receiver Capacity(Prefetch) from Qpid Doc
By default, receiver requests the next message from the server
in response to each fetch call, resulting in messages being
sent to the receiver one at a time. As in the case of sending,
it is often desirable to avoid this roundtrip for each message.
This can be achieved by allowing the receiver to prefetch messages
in anticipation of fetch calls being made. The receiver needs to
be able to store these prefetched messages, the number it can hold
is controlled by the receivers capacity.
DocImpact
Change-Id: I966b512aba6bdd8e9c5cf65cae01bfd21f04f330
Closes-Bug: #1353914
Under python3 and latest tox a random python hashseed is used. Currently
oslo.messaging tests do not pass this because one test assumes the
resulting list conversion from a list of lists has a specific order.
Sort both lists so that the order is explicit when checking for equality
in this test. Doing so makes the test pass with a random python hash
seed.
Note I am not actually familiar enough with oslo.messaging to know if
this failure is correct and the drivers or something deeper should be
returning lists with an explicit order. This would be the case if order
in these lists is important.
Change-Id: Id54ca1f448f466304b72b1695a5c646311bbd453
oslo-config-generator will use the sample_default for the sample
config file rather than the hostname of the system it happens to
be running on.
Change-Id: I9c7bf24cfe5c66155d00d9a1b390894d1ccb6bd8
Sample code in the documentation for rpc.server has an error which
prevents the code from being run. Replacing the `self` with `None`
results in code that runs. Whether it does anything useful is
an open question.
Change-Id: I81391fa3efdc65d54ca3aa155d63584f2b6f98c2
Instead of the lambda method _ the method should be imported
from oslo.messaging.openstack.common.gettextutils.
Change-Id: I373337cc1227b0d7b7bf93603b53a64de83721a9
The exchanges lock in the fake driver was being disregarded,
probably due to a typo.
Closes-Bug: #1342088
Change-Id: I45261fce501a867b9253112e1608b14ed5afea26