summaryrefslogtreecommitdiffstats
path: root/tests/unit/rpc
Commit message (Collapse)AuthorAgeFilesLines
* Allow exceptions to hop up cellsMatthew Sherborne2013-06-121-0/+40
| | | | | | | | | | | | | | | | | | When an exception happens in an RPC call using nova cells, it can travel back up several RPC boundaries. eg, child-cell=>parent-cell=>nova-api Before this patch if an exception (eg. AggregateNotFound) was raised in the bottom layer, the next layer up would turn it into a special exception ( AggregateNotFound_Remote ), then in the final layer, it would see this as an unrecognizable exception and raise RemoteException. After this patch, at each layer where the expeption is deserialized, it'll recognize exceptions with the _Remote postfix, and leave them as they are, instead of turning them into RemoteExceptions. It also preserves the exception's original __module__ now. Change-Id: I158a80f1cec20d3e1805b565ffddaffd7a15295b
* Merge "Remove the amqp_rpc_single_reply_queue option from Havana"Jenkins2013-06-112-132/+56
|\
| * Remove the amqp_rpc_single_reply_queue option from HavanaRaymond Pekowski2013-06-052-132/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | blueprint amqp-rpc-fast-reply-queue As part of the Grizzly code review for the above blueprint (Idb09a714), the Grizzly code base is "aware" of this feature in terms of receiving RPCs and provided with an option for enabling it on the RPC send side. It was decided that in Havana the option would be removed, RPCs would only be sent using the new functionality yet awareness of prior functionality be retained for the receiving of RPCs. This code change implements the Havana piece. Change-Id: I5f2a8e432cf84a637c1aa813656c1cbc8db6e7eb
* | Merge "Add can_send_version() to RpcProxy."Jenkins2013-06-111-0/+10
|\ \
| * | Add can_send_version() to RpcProxy.Russell Bryant2013-06-111-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | Add a helper method to the RpcProxy class. This is a little nicer to use for checking to see if a given message is copmatible with the set version cap. Change-Id: Ic44d76f4181351dff367f2d1181a3d508a11db78
* | | Enable hacking H404 test.Dina Belova2013-06-115-37/+24
|/ / | | | | | | | | | | H404 - multi line docstring should start with a summary. Change-Id: I2099e1ee81ff9657f7a07401b8e8f3327d03bdbd
* | Merge "MatchMakerStub - make it work & add test"Jenkins2013-06-111-0/+10
|\ \ | |/ |/|
| * MatchMakerStub - make it work & add testEric Windisch2013-05-291-0/+10
| | | | | | | | | | | | | | | | | | | | | | The super() in MatchMakerStub.__init__ was referencing the wrong class due to copy/paste. I've also added a test for this class. Fixes bug 1185501 Change-Id: I298c8c1df4dcb3d3e905ecbb5400d16b3383fdf9
* | Merge "Enable H306 hacking check."Jenkins2013-06-041-0/+1
|\ \
| * | Enable H306 hacking check.Dina Belova2013-06-041-0/+1
| | | | | | | | | | | | | | | | | | H306 - imports not in alphabetical order. Change-Id: Iaa93bcafed562833318ac86241ad36662c2d8ca6
* | | Fix problem with long messages in QpidBen Nemec2013-06-031-0/+83
|/ / | | | | | | | | | | | | | | | | | | | | | | | | Qpid has a limitation where it cannot serialize a dict containing a string greater than 65535 characters. This change alters the Qpid implementation to JSON encode the dict before sending it, but only if Qpid would fail to serialize it. This maintains as much backward compatibility as possible, though long messages will still fail if they are sent to an older receiver. Fixes bug 1175808 Change-Id: I5d104e099f523508dae2b657f7d06d96984b10f0
* | Enable hacking H402 testSergey Lukjanov2013-06-033-11/+11
| | | | | | | | | | | | H402 one line docstring needs punctuation Change-Id: Ie848453cace318d8310cdf0234c512f4c1121119
* | Merge "Use mox object from moxstubout fixture"Jenkins2013-05-311-2/+0
|\ \
| * | Use mox object from moxstubout fixtureMark McLoughlin2013-05-201-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The moxstubout fixture creates a mox object which we can re-use in tests. It also ensures verify() is called, which it clearly wasn't in the case of the qpid tests. Change-Id: Ibf3326f18b160865012d40a5841b65438262c4df
* | | Enable hacking H403 testSergey Lukjanov2013-05-301-1/+2
| |/ |/| | | | | | | | | H403 multi line docstring end on new line Change-Id: I33249651026b54ef346214965e909835288bb14e
* | Add generic serialization supportDan Smith2013-05-212-0/+62
| | | | | | | | | | | | | | | | | | | | | | | | This adds a generic serialization model that the RpcProxy and RpcDispatcher will use to serialize and deserialize arguments and return values. The base definition is provided, as well as a default NoOpSerializer which performs no special action (retaining the existing behavior). Related to blueprint rpc-object-serialization Change-Id: I0a33baddee3e28dfc47100eb3216b679558b0bdd
* | Allow RPC_API_NAMESPACE on RpcProxy objectsChris Behrens2013-05-201-2/+13
|/ | | | | | | | | | This allows one to subclass RpcProxy for use with a particular namespace without having to repeatedly pass the namespace into the make_namespaced_msg() method. This new RPC_API_NAMESPACE attribute will be used for the make_msg() call. It is defaulted to None to match previous behavior. Change-Id: Ied62df839cda0be6f9f9b060bbfc22e086f61be8
* Merge "Extract matchmaker_ring to own module"Jenkins2013-05-171-1/+2
|\
| * Extract matchmaker_ring to own moduleEric Windisch2013-05-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | The base matchmaker module should not have all the matchmakers implemented within. Instead, we desire to break them out. For purposes of deprecation, logs a warning when importing from the ZeroMQ driver. Change-Id: I76936edd97309621a9c28363dccd792293a1c0d3
* | Merge "Fixes import order nits"Jenkins2013-05-165-5/+5
|\ \
| * | Fixes import order nitsZhongyue Luo2013-05-155-5/+5
| |/ | | | | | | Change-Id: I4fdc8eed74dd90d6450864daba7492d5e7266448
* / Support capping message versions in the client.Russell Bryant2013-05-151-0/+6
|/ | | | | | | | | | | | | | | | | | | When doing a rolling upgrade, we need to be able to tell all rpc clients to hold off on sending newer versions of messages until all nodes understand the new message version. This patch adds the oslo component of this. It's quite simple. The rpc proxy just stores the version cap and will raise an exception if code ever tries to send a message that exceeds this cap. Allowing the cap to be configured and generating different types of messages based on the configured value is the hard part here, but that is left up to the project using the rpc library. Implements blueprint rpc-version-control. Change-Id: Ia69db03a80dc3b1c63d52c7e163ea3cfec80c882
* Merge "Convert unicode strings for python3 portability"Jenkins2013-05-101-4/+4
|\
| * Convert unicode strings for python3 portabilityChuck Short2013-05-071-4/+4
| | | | | | | | | | | | | | | | | | | | | | From http://docs.python.org/3.1/whatsnew/3.0.html You can no longer use u"..." literals for Unicode text. However, you must use b"..." literals for binary data. Use python-six to make this migration easier. Change-Id: I95166a07f4edf33be55a4bdf2674c2f238a06f19 Signed-off-by: Chuck Short <chuck.short@canonical.com>
* | Merge "Convert unicode for python3 portability"Jenkins2013-05-073-10/+18
|\ \ | |/ |/|
| * Convert unicode for python3 portabilityChuck Short2013-05-063-10/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | From http://docs.python.org/3.1/whatsnew/3.0.html: "Python 3.0 uses the concepts of text and (binary) data instead of Unicode strings and 8-bit strings." Use six.text_type to Type for representing (Unicode) textual data. This is unicode() in Python 2 and str in Python 3. Change-Id: I3da268a714a34a8e626a2590f01b86e414dc3411 Signed-off-by: Chuck Short <chuck.short@canonical.com>
* | Use range rather than xrangeChuck Short2013-05-011-1/+1
|/ | | | | | | | Use range rather than xrange to improve python3 compatibiltiy. Change-Id: I5a4434bbd2e5d509f84c3aa668eea8e46262816f Signed-off-by: Chuck Short <chuck.short@canonical.com>
* Improve Python 3.x compatibilityDirk Mueller2013-04-221-2/+2
| | | | | | | Mechanical translation of deprecated constructs to 3.x compatible variants. Change-Id: I4988d0ac656903e0d0320aaa8361d4eeb774a0f9
* Add rpc method namespace support.Russell Bryant2013-04-122-6/+50
| | | | | | | | | | | | | | | | | | | | | | RPC endpoints already had the ability to expose multiple APIs ... sort of. You could pass multiple callback objects to the dispatcher and it would check all of them for a method call. This patch adds the ability to set a namespace on a callback object. This makes exposing multiple APIs a bit more like you would expect it to work. You can invoke a method on a specific callback object, as opposed to having it check all of them for the method. This will allow you to create, manage, and version APIs without any potential conflicts with other APIs being exposed by the same endpoint. An example of where I would like to use this is in Nova, where we have some methods that we would like to expose on *all* rpc endpoints. This includes no public API changes and is fully backwards compatible. Implement blueprint rpc-multi-api. Change-Id: Ief4433e2e1c32cfb05b4cd27b87fe32b40f4341d
* Move bin/ scripts to entrypoints.Monty Taylor2013-04-071-1/+1
| | | | | | | Instead of propogating more bin scripts, migrate these to be things that can be consumed as entrypoints. Change-Id: Ic01e0f16fe9e7634708fbb51499ccea3f4f40d63
* rpc: fix positional args in remote exceptionsKiall Mac Innes2013-03-311-2/+23
| | | | | | | | | | Fixes bug #1160475. Positional arguments were dropped during the deserialization of valid remote exceptions, while keyword arguments are correctly supplied. Change-Id: I7b95fc4ed3fb9e5c75f5711ed6aace7aa5593727
* Update to use flake8.Monty Taylor2013-03-246-13/+7
| | | | | | | flake8 is pluggable and handles pep8 and pyflakes, as well as configuration through tox.ini. It also removes the need for flakes.py. Change-Id: If5f7d8ad348b4fb8119fa4ec7b5e9d17bdc72a39
* Merge "Improves Logging for for rpc method timeouts"Jenkins2013-03-221-21/+39
|\
| * Improves Logging for for rpc method timeoutsMatthew Sherborne2013-03-221-21/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch moves the traceback for an rpc timeout from inside an iterator, which gave a useless traceback, into the main flow of the program. It also adds the rpc method being called and the topic used to the exception's message. When the caller logs the message higher up the stack, the log information and traceback will be more useful. Finally it removes the timeout logging in the amqp.py module, in the spirit of bug #1137994 and https://review.openstack.org/#/c/23295/ Works towards: bug #1148516 Change-Id: I29a3b1b97c6114c4479e2b71c1257c4d72131535
* | Enable message envelope.Russell Bryant2013-03-213-36/+2
|/ | | | | | | Grizzly had the ability to receive messages with an envelope, but did not send them. Now update the code to send them. Change-Id: I73aad7697cf83ad4aabb3c2058b7cc4f53f783c2
* Removes unused imports in the tests moduleZhongyue Luo2013-03-206-11/+0
| | | | | | Fixes bug #1157596 Change-Id: I36d5484eaa2f0e21188eed6e70cc1ad785233d6a
* update OpenStack, LLC to OpenStack FoundationMark McClain2013-03-131-1/+1
| | | | | | | | | | fixes bug 1154745 The previous update (https://review.openstack.org/#/c/24103/) missed header files that contained "OpenStack, LLC". This change corrects the missed files to reflect the OpenStack Foundation. Change-Id: I9c6de265267485ef2c82ea7e6d8643e82134d102
* Merge "Sanitize input before creating IPC socket."Jenkins2013-03-131-0/+19
|\
| * Sanitize input before creating IPC socket.Eric Windisch2013-03-121-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | Sockets are created by the zeromq driver for the topic specified by each incoming message. Because the topic is arbitrarily supplied by the sender, path separators in the topic must be illegal. Fixes bug 1122763 Change-Id: Iccdb9b69e646bfe7665ee34c367fd4019db25f17
* | Fix Copyright Headers - Rename LLC to FoundationDavanum Srinivas2013-03-111-1/+1
|/ | | | | | One code change, rest are in headers Change-Id: I73f59681358629e1ad74e49d3d3ca13fcb5c2eb1
* Simple code cleanupMatthew Sherborne2013-03-061-5/+3
| | | | | | | | | * Fix an exception that was raising a tuple * Remove unused imports * Remove unused exceptions * Remove extra blank lines Change-Id: I9127be991e9081dc173525c9b57ea297f389d16d
* Merge "Redis-based matchmaker"Jenkins2013-03-013-31/+217
|\
| * Redis-based matchmakerEric Windisch2013-03-013-31/+217
| | | | | | | | | | | | | | | | | | | | | | | | | | Introduces a reference implementation of a matchmaker (based on redis) that supports dynamic host/topic registrations, host expiration, and hooks for consuming applications to acknowledge or neg-acknowledge topic.host service availability. Implements blueprint advanced-matchmaking Change-Id: I8608d2089fca118b0e369f2eb5c6aedacf6821fe
* | AMQP: skip duplicate messagesKei Masumoto2013-02-221-0/+32
|/ | | | | | | | | | | | | | | | | | | | When using rabbit's mirrored queues or qpid's replicated queues, there are conditions under which you can receive the same message twice. One such condition is where a message has been sent to a consumer but before an ack is received by a consumer, the master fails over to a slave and the slave resends the message. Note that the consumer may have sent the ack, but it was lost as the master went down. Dispatching the same message twice is obviously something we want to avoid. In order to do so, we add a unique_id to each message sent and have consumers maintain a fixed length queue of recently seen unique message IDs. Before dispatching any received message, the queue is checked and the message is skipped if it is a duplicate. Fixes bugs 1107064. Change-Id: I5bfacadbdf7de8b34d6370b9aa869c271957692d
* Revert "Implement replay detection."Mark McLoughlin2013-02-202-37/+3
| | | | | | | | | | | | | | | | | | | This reverts Ib0260a0c62e3d312d2e3448a125bed64d861319e (commit a603678) The issue we're trying to fix here is bug #1107064 - when using mirrored queues with AMQP, acks can be lost while a master is failing over to a slace causing the new slave to re-send messages which had previously been acked. The "replay detection" code applies to more than just amqp and also has the appearance of a security measure (e.g. the use of the term 'nonce') when clearly it serves no security purpose until we actually have message signing. Revert the "replay detection" approach in favour of the more targetted amqp bugfix. Change-Id: I8b8d15835c8b4c85cd388f5df08b60ff4c74e38d
* Fix IPC direct topic routing.Eric Windisch2013-02-192-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | Direct messages were being stripped of the host value when performing IPC forwarding. This caused direct topics to be round-robined to all services running on the system consuming from the same base topic name. i.e. if 'scheduler.host1' and 'scheduler.host2' were running on the SAME machine, messages to 'scheduler.host1' may have been routed to 'scheduler.host2'. Now, mulitple processing specifying different rpc_zmq_host parameters will consume on separate direct topics and will not round-robin to other processes. Adds a zmq-specific test to ensure that messages to directed topics are not consumed by other consumers of direct topics sharing a bare topic on the same host. Fixes bug 1123715 Change-Id: I939c24397e58492fc16561666aed3ca891325e9c
* Merge "Implement replay detection."Jenkins2013-02-202-3/+37
|\
| * Implement replay detection.Eric Windisch2013-02-192-3/+37
| | | | | | | | | | | | Bumps the envelope revision to 2.1 Change-Id: Ib0260a0c62e3d312d2e3448a125bed64d861319e
* | Support RPC envelopes in impl_zmqEric Windisch2013-02-191-2/+10
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch began as a set of tests verifying the functionality of sending and receiving RPC envelopes when using impl_zmq. It was discovered that when enabled, RPC envelopes were not actually working, The ZeroMQ driver includes its own envelopes. This patch introduce versioning to that envelope, eliminating the previously reserved 'style' field. A new iteration of the zeromq-envelope is introduced, 'impl_zmq_v2'. It specifies that the zeromq-envelope should be followed by an unpacked array representing key value pairs of the standard RPC Envelope. Because the key-values of the RPC Envelope can be successfully transformed with bytes(), this prevents the need to double-serialize the content traversing the message bus. Also removes some unused imports. Closes bug 1123709 Closes bug 1055446 Change-Id: Ib04e3d092c9596146f1048d3502ac248496d313b
* blueprint amqp-rpc-fast-reply-queueRaymond Pekowski2013-02-183-72/+359
| | | | | | | | | | | For AMQP based RPC, specifically RabbitMQ and Qpid, this change replaces the dynamically created RPC call reply queue with a single queue that is created on the first RPC call and used on all subsequent calls. It provides backward compatibility on the callee side by recognizing downlevel callers and on the caller side by adding a config option to revert to the old dynamically created queue based upon the msg_id. Change-Id: Idb09a71472866bd3950f58d4f7f45a3181eb40fc