Commit Graph

285 Commits

Author SHA1 Message Date
Simon MacMullen 153be18672 Rejig the configuration to go through an additional layer of indirection so that exchange arguments can plausibly be immutable, and to get rid of the confusing merging.
Also fix the insidious default queue expiry that had been hiding.
2011-06-03 18:09:23 +01:00
Simon MacMullen 04e83ea49a Fix the command-queuing logic. This requires a number of changes:
*  Actually fix the logic: keep track of the next expected
   serial. Queue up commands that come after it, and ignore ones
   before it. Take initial value of the serial in the same tx as
   we execute rabbit_binding:list_for_source.

*  Introduce a function in rabbitmq-server to peek the next value
   of an exchange's serial to support this.

*  Make (un)binding transmission asynchronous, and note it in the
   README. This is the right thing to do, but unfortunately it
   means we need to insert sleep()s all over the place in the
   test suite. Ah well.

*  Make remove_bindings into a single message sent to each link,
   rather than a bunch of (remove_binding)s.

*  Make add_bindings always send a message to each link, even if
   it does nothing, to eat up the serial number.

*  Make the serialisation unit test actually declare exchanges.
2011-06-01 16:38:39 +01:00
Simon MacMullen 4cd0c697e1 Add a (currently stupid) test to ensure we serialise the add / remove bindings calls properly. 2011-05-31 13:51:12 +01:00
Simon MacMullen faff573a89 This is not great, but necessary to run the tests on something other than an Optiplex. Still faster than many other test suites... 2011-05-27 11:57:55 +01:00
Simon MacMullen f6ae916866 Update now that things have been merged to default 2011-05-17 14:44:00 +01:00
Simon MacMullen 87e333be56 Build system changes. 2011-04-12 12:18:42 +01:00
Simon MacMullen a288f25ee1 updating use of amqp_client exit reasons 2011-03-29 17:41:43 +01:00
Simon MacMullen ad8428d9fc This makes tracking down bugs rather easier. 2011-03-23 12:26:14 +00:00
Simon MacMullen 1081f99586 Split up smart_unbind_test and find a way to test that unbinds get sent upstream. 2011-03-23 11:43:43 +00:00
Simon MacMullen 8f5bf686b8 A bit more general and hopefully clearer. 2011-03-23 11:33:24 +00:00
Simon MacMullen 8cb922f1c2 Refactor tests a bit. 2011-03-23 11:11:26 +00:00
Simon MacMullen 11c8fa7b9a The previous commit was buggy because we never added bindings. Add more test to catch that, fix it, and optimise add_binding as well. 2011-03-22 16:35:25 +00:00
Simon MacMullen 3cd4b78949 Rename rabbit_federation_exchange_upstream to rabbit_federation_link. 2011-03-21 11:41:57 +00:00
Simon MacMullen 56bc814d8c Remove URIs from configuration. 2011-03-03 14:13:05 +00:00
Simon MacMullen 693b9b800e Reset bindings on connect. 2011-03-02 13:13:30 +00:00
Simon MacMullen 49e035243d Fix various bugs:
Make supervision more correct
Make shutdown work
Fix durability in tests
2011-03-01 11:01:42 +00:00
Simon MacMullen c3031441b1 Split up such that we have one process per (upstream, downstream) combination. This mostly works, but there's something weird with the supervision hierarchy keeping the Erlang VM alive when rabbit_federation_exchange_upstream is not temporary. 2011-02-28 18:10:01 +00:00
Simon MacMullen 86d41ae23e Create the exchange process at exchange recovery. This means moving the processes / supervisor under the rabbit application, which means making them be able to run in a dumb state when the amqp_client is not yet available, which means splitting code out into a bunch of modules, etc etc. 2011-02-23 16:47:50 +00:00
Simon MacMullen 1cdaeef21f Use rabbitmqctl wait 2011-02-22 17:02:15 +00:00
Simon MacMullen 6a9a6e896e Don't allow binding, unbinding or publishing loops, by the simple expedient of only allowing things to cross one hop. 2011-02-22 16:29:42 +00:00
Simon MacMullen 5f0cd4d884 Add forwarding information in a header. 2011-02-18 16:27:12 +00:00
Simon MacMullen 40b80e9f8a Only transmit unbinds upstream if it's the last with the same {Source, Key, Args}. 2011-02-18 13:40:10 +00:00
Simon MacMullen cdb9c1e20d In multiple_downstreams_test messages can arrive in any order. Deal with that and stop being racy. 2011-02-18 12:51:51 +00:00
Simon MacMullen 45f9aad9f1 Conserve vertical space. 2011-02-18 12:46:31 +00:00
Simon MacMullen 2efd415f87 Delete upstream queues when exchange is deleted. Remove childspec from supervisor when exchange is stopped. 2011-02-18 11:59:20 +00:00
Simon MacMullen 6e4d1f6d81 Validate args 2011-02-17 18:14:06 +00:00
Simon MacMullen a3bcddc176 Delete and recreate upstream queue when creating transient exchange 2011-02-17 17:08:08 +00:00
Simon MacMullen 6c9e11df7c Turns out e2e just works, but let's prove that (and note that we're not completely efficient here, we send all msgs that get routed to the exchanges bound to the federation exchange, regardless of whether they get routed anywhere after that). 2011-02-17 12:49:26 +00:00
Simon MacMullen 5e573553ee Handle the upstream broker going down. 2011-02-15 18:25:21 +00:00
Simon MacMullen c1cf725a5d Grab the port number from URLs, add a test across two brokers. 2011-02-15 14:30:42 +00:00
Simon MacMullen 690eb40534 Revert "readable name" for the time being as it's not unique enough. And add the test that let me find that. 2011-02-15 12:28:35 +00:00
Simon MacMullen 011c19dfe1 Separate out the config based exchange tests entirely. 2011-02-15 12:15:23 +00:00
Simon MacMullen 537f7b9c69 Multiple upstreams. 2011-02-11 14:44:37 +00:00
Simon MacMullen 3b2c67075e Refactor tests, test configuration, allow more than one federation exchange per broker(!) 2011-02-11 13:33:32 +00:00
Simon MacMullen e8bd411781 The simplest possible test. 2011-02-11 12:06:27 +00:00