You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by sh...@apache.org on 2011/10/21 16:42:51 UTC
svn commit: r1187375 [18/43] - in /qpid/branches/QPID-2519: ./ bin/ cpp/
cpp/bindings/ cpp/bindings/qmf/python/ cpp/bindings/qmf/ruby/
cpp/bindings/qmf/tests/ cpp/bindings/qmf2/ cpp/bindings/qmf2/examples/cpp/
cpp/bindings/qmf2/python/ cpp/bindings/qmf...
Modified: qpid/branches/QPID-2519/cpp/src/tests/qpid-perftest.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/qpid-perftest.cpp?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/qpid-perftest.cpp (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/qpid-perftest.cpp Fri Oct 21 14:42:12 2011
@@ -173,7 +173,7 @@ struct Opts : public TestOptions {
if (count % subs) {
count += subs - (count % subs);
cout << "WARNING: Adjusted --count to " << count
- << " the nearest multiple of --nsubs" << endl;
+ << " the next multiple of --nsubs" << endl;
}
totalPubs = pubs*qt;
totalSubs = subs*qt;
@@ -396,7 +396,7 @@ struct Controller : public Client {
void run() { // Controller
try {
// Wait for subscribers to be ready.
- process(opts.totalSubs, fqn("sub_ready"), bind(expect, _1, "ready"));
+ process(opts.totalSubs, fqn("sub_ready"), boost::bind(expect, _1, "ready"));
LocalQueue pubDone;
LocalQueue subDone;
@@ -413,7 +413,7 @@ struct Controller : public Client {
AbsTime start=now();
send(opts.totalPubs, fqn("pub_start"), "start"); // Start publishers
if (j) {
- send(opts.totalPubs, fqn("sub_iteration"), "next"); // Start subscribers on next iteration
+ send(opts.totalSubs, fqn("sub_iteration"), "next"); // Start subscribers on next iteration
}
Stats pubRates;
@@ -423,8 +423,10 @@ struct Controller : public Client {
process(opts.totalSubs, subDone, fqn("sub_done"), boost::ref(subRates));
AbsTime end=now();
-
double time=secs(start, end);
+ if (time <= 0.0) {
+ throw Exception("ERROR: Test completed in zero seconds. Try again with a larger message count.");
+ }
double txrate=opts.transfers/time;
double mbytes=(txrate*opts.size)/(1024*1024);
@@ -508,10 +510,11 @@ struct PublishThread : public Client {
}
SubscriptionManager subs(session);
LocalQueue lq;
- subs.setFlowControl(1, SubscriptionManager::UNLIMITED, true);
- subs.subscribe(lq, fqn("pub_start"));
+ subs.setFlowControl(0, SubscriptionManager::UNLIMITED, false);
+ Subscription cs = subs.subscribe(lq, fqn("pub_start"));
for (size_t j = 0; j < opts.iterations; ++j) {
+ cs.grantMessageCredit(1);
expect(lq.pop().getData(), "start");
AbsTime start=now();
for (size_t i=0; i<opts.count; i++) {
@@ -543,6 +546,9 @@ struct PublishThread : public Client {
if (opts.confirm) session.sync();
AbsTime end=now();
double time=secs(start,end);
+ if (time <= 0.0) {
+ throw Exception("ERROR: Test completed in zero seconds. Try again with a larger message count.");
+ }
// Send result to controller.
Message report(lexical_cast<string>(opts.count/time), fqn("pub_done"));
@@ -638,7 +644,9 @@ struct SubscribeThread : public Client {
//
// For now verify order only for a single publisher.
size_t offset = opts.uniqueData ? 5 /*marker is 'data:'*/ : 0;
- size_t n = *reinterpret_cast<const size_t*>(msg.getData().data() + offset);
+ size_t n;
+ memcpy (&n, reinterpret_cast<const char*>(msg.getData().data() + offset),
+ sizeof(n));
if (opts.pubs == 1) {
if (opts.subs == 1 || opts.mode == FANOUT) verify(n==expect, "==", expect, n);
else verify(n>=expect, ">=", expect, n);
Modified: qpid/branches/QPID-2519/cpp/src/tests/qpid-receive.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/qpid-receive.cpp?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/qpid-receive.cpp (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/qpid-receive.cpp Fri Oct 21 14:42:12 2011
@@ -53,6 +53,7 @@ struct Options : public qpid::Options
bool forever;
uint messages;
bool ignoreDuplicates;
+ bool checkRedelivered;
uint capacity;
uint ackFrequency;
uint tx;
@@ -75,6 +76,7 @@ struct Options : public qpid::Options
forever(false),
messages(0),
ignoreDuplicates(false),
+ checkRedelivered(false),
capacity(1000),
ackFrequency(100),
tx(0),
@@ -92,10 +94,11 @@ struct Options : public qpid::Options
("broker,b", qpid::optValue(url, "URL"), "url of broker to connect to")
("address,a", qpid::optValue(address, "ADDRESS"), "address to receive from")
("connection-options", qpid::optValue(connectionOptions, "OPTIONS"), "options for the connection")
- ("timeout,t", qpid::optValue(timeout, "TIMEOUT"), "timeout in seconds to wait before exiting")
+ ("timeout", qpid::optValue(timeout, "TIMEOUT"), "timeout in seconds to wait before exiting")
("forever,f", qpid::optValue(forever), "ignore timeout and wait forever")
("messages,m", qpid::optValue(messages, "N"), "Number of messages to receive; 0 means receive indefinitely")
("ignore-duplicates", qpid::optValue(ignoreDuplicates), "Detect and ignore duplicates (by checking 'sn' header)")
+ ("check-redelivered", qpid::optValue(checkRedelivered), "Fails with exception if a duplicate is not marked as redelivered (only relevant when ignore-duplicates is selected)")
("capacity", qpid::optValue(capacity, "N"), "Pre-fetch window (0 implies no pre-fetch)")
("ack-frequency", qpid::optValue(ackFrequency, "N"), "Ack frequency (0 implies none of the messages will get accepted)")
("tx", qpid::optValue(tx, "N"), "batch size for transactions (0 implies transaction are not used)")
@@ -216,6 +219,8 @@ int main(int argc, char ** argv)
std::cout << msg.getContent() << std::endl;//TODO: handle map or list messages
if (opts.messages && count >= opts.messages) done = true;
}
+ } else if (opts.checkRedelivered && !msg.getRedelivered()) {
+ throw qpid::Exception("duplicate sequence number received, message not marked as redelivered!");
}
if (opts.tx && (count % opts.tx == 0)) {
if (opts.rollbackFrequency && (++txCount % opts.rollbackFrequency == 0)) {
@@ -257,7 +262,7 @@ int main(int argc, char ** argv)
return 0;
}
} catch(const std::exception& error) {
- std::cerr << "Failure: " << error.what() << std::endl;
+ std::cerr << "qpid-receive: " << error.what() << std::endl;
connection.close();
return 1;
}
Modified: qpid/branches/QPID-2519/cpp/src/tests/qpid-send.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/qpid-send.cpp?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/qpid-send.cpp (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/qpid-send.cpp Fri Oct 21 14:42:12 2011
@@ -28,6 +28,7 @@
#include <qpid/messaging/FailoverUpdates.h>
#include <qpid/sys/Time.h>
#include <qpid/sys/Monitor.h>
+#include <qpid/sys/SystemInfo.h>
#include "TestOptions.h"
#include "Statistics.h"
@@ -76,6 +77,11 @@ struct Options : public qpid::Options
uint flowControl;
bool sequence;
bool timestamp;
+ std::string groupKey;
+ std::string groupPrefix;
+ uint groupSize;
+ bool groupRandSize;
+ uint groupInterleave;
Options(const std::string& argv0=std::string())
: qpid::Options("Options"),
@@ -100,19 +106,23 @@ struct Options : public qpid::Options
sendRate(0),
flowControl(0),
sequence(true),
- timestamp(true)
+ timestamp(true),
+ groupPrefix("GROUP-"),
+ groupSize(10),
+ groupRandSize(false),
+ groupInterleave(1)
{
addOptions()
("broker,b", qpid::optValue(url, "URL"), "url of broker to connect to")
- ("address,a", qpid::optValue(address, "ADDRESS"), "address to drain from")
+ ("address,a", qpid::optValue(address, "ADDRESS"), "address to send to")
("connection-options", qpid::optValue(connectionOptions, "OPTIONS"), "options for the connection")
("messages,m", qpid::optValue(messages, "N"), "stop after N messages have been sent, 0 means no limit")
("id,i", qpid::optValue(id, "ID"), "use the supplied id instead of generating one")
("reply-to", qpid::optValue(replyto, "REPLY-TO"), "specify reply-to address")
("send-eos", qpid::optValue(sendEos, "N"), "Send N EOS messages to mark end of input")
("durable", qpid::optValue(durable, "yes|no"), "Mark messages as durable.")
- ("ttl", qpid::optValue(ttl, "msecs"), "Time-to-live for messages, in milliseconds")
- ("priority", qpid::optValue(priority, "PRIORITY"), "Priority for messages (higher value implies higher priority)")
+ ("ttl", qpid::optValue(ttl, "msecs"), "Time-to-live for messages, in milliseconds")
+ ("priority", qpid::optValue(priority, "PRIORITY"), "Priority for messages (higher value implies higher priority)")
("property,P", qpid::optValue(properties, "NAME=VALUE"), "specify message property")
("correlation-id", qpid::optValue(correlationid, "ID"), "correlation-id for message")
("user-id", qpid::optValue(userid, "USERID"), "userid for message")
@@ -131,6 +141,11 @@ struct Options : public qpid::Options
("flow-control", qpid::optValue(flowControl,"N"), "Do end to end flow control to limit queue depth to 2*N. 0 means no flow control.")
("sequence", qpid::optValue(sequence, "yes|no"), "Add a sequence number messages property (required for duplicate/lost message detection)")
("timestamp", qpid::optValue(timestamp, "yes|no"), "Add a time stamp messages property (required for latency measurement)")
+ ("group-key", qpid::optValue(groupKey, "KEY"), "Generate groups of messages using message header 'KEY' to hold the group identifier")
+ ("group-prefix", qpid::optValue(groupPrefix, "STRING"), "Generate group identifers with 'STRING' prefix (if group-key specified)")
+ ("group-size", qpid::optValue(groupSize, "N"), "Number of messages per a group (if group-key specified)")
+ ("group-randomize-size", qpid::optValue(groupRandSize), "Randomize the number of messages per group to [1...group-size] (if group-key specified)")
+ ("group-interleave", qpid::optValue(groupInterleave, "N"), "Simultaineously interleave messages from N different groups (if group-key specified)")
("help", qpid::optValue(help), "print this usage statement");
add(log);
}
@@ -252,6 +267,68 @@ class MapContentGenerator : public Con
const Options& opts;
};
+// tag each generated message with a group identifer
+//
+class GroupGenerator {
+public:
+ GroupGenerator(const std::string& key,
+ const std::string& prefix,
+ const uint size,
+ const bool randomize,
+ const uint interleave)
+ : groupKey(key), groupPrefix(prefix), groupSize(size),
+ randomizeSize(randomize), groupSuffix(0)
+ {
+ if (randomize) srand((unsigned int)qpid::sys::SystemInfo::getProcessId());
+
+ for (uint i = 0; i < 1 || i < interleave; ++i) {
+ newGroup();
+ }
+ current = groups.begin();
+ }
+
+ void setGroupInfo(Message &msg)
+ {
+ if (current == groups.end())
+ current = groups.begin();
+ msg.getProperties()[groupKey] = current->id;
+ // std::cout << "SENDING GROUPID=[" << current->id << "]" << std::endl;
+ if (++(current->count) == current->size) {
+ newGroup();
+ groups.erase(current++);
+ } else
+ ++current;
+ }
+
+ private:
+ const std::string& groupKey;
+ const std::string& groupPrefix;
+ const uint groupSize;
+ const bool randomizeSize;
+
+ uint groupSuffix;
+
+ struct GroupState {
+ std::string id;
+ const uint size;
+ uint count;
+ GroupState( const std::string& i, const uint s )
+ : id(i), size(s), count(0) {}
+ };
+ typedef std::list<GroupState> GroupList;
+ GroupList groups;
+ GroupList::iterator current;
+
+ void newGroup() {
+ std::ostringstream groupId(groupPrefix, ios_base::out|ios_base::ate);
+ groupId << groupSuffix++;
+ uint size = (randomizeSize) ? (rand() % groupSize) + 1 : groupSize;
+ // std::cout << "New group: GROUPID=[" << groupId.str() << "] size=" << size << std::endl;
+ GroupState group( groupId.str(), size );
+ groups.push_back( group );
+ }
+};
+
int main(int argc, char ** argv)
{
Connection connection;
@@ -296,6 +373,14 @@ int main(int argc, char ** argv)
else
contentGen.reset(new FixedContentGenerator(opts.contentString));
+ std::auto_ptr<GroupGenerator> groupGen;
+ if (!opts.groupKey.empty())
+ groupGen.reset(new GroupGenerator(opts.groupKey,
+ opts.groupPrefix,
+ opts.groupSize,
+ opts.groupRandSize,
+ opts.groupInterleave));
+
qpid::sys::AbsTime start = qpid::sys::now();
int64_t interval = 0;
if (opts.sendRate) interval = qpid::sys::TIME_SEC/opts.sendRate;
@@ -312,9 +397,6 @@ int main(int argc, char ** argv)
++sent;
if (opts.sequence)
msg.getProperties()[SN] = sent;
- if (opts.timestamp)
- msg.getProperties()[TS] = int64_t(
- qpid::sys::Duration(qpid::sys::EPOCH, qpid::sys::now()));
if (opts.flowControl) {
if ((sent % opts.flowControl) == 0) {
msg.setReplyTo(flowControlAddress);
@@ -323,6 +405,12 @@ int main(int argc, char ** argv)
else
msg.setReplyTo(Address()); // Clear the reply address.
}
+ if (groupGen.get())
+ groupGen->setGroupInfo(msg);
+
+ if (opts.timestamp)
+ msg.getProperties()[TS] = int64_t(
+ qpid::sys::Duration(qpid::sys::EPOCH, qpid::sys::now()));
sender.send(msg);
reporter.message(msg);
@@ -368,7 +456,7 @@ int main(int argc, char ** argv)
return 0;
}
} catch(const std::exception& error) {
- std::cout << "Failed: " << error.what() << std::endl;
+ std::cerr << "qpid-send: " << error.what() << std::endl;
connection.close();
return 1;
}
Modified: qpid/branches/QPID-2519/cpp/src/tests/replication_test
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/replication_test?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/replication_test (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/replication_test Fri Oct 21 14:42:12 2011
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
Modified: qpid/branches/QPID-2519/cpp/src/tests/run_acl_tests
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/run_acl_tests?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/run_acl_tests (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/run_acl_tests Fri Oct 21 14:42:12 2011
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
Modified: qpid/branches/QPID-2519/cpp/src/tests/run_cli_tests
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/run_cli_tests?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/run_cli_tests (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/run_cli_tests Fri Oct 21 14:42:12 2011
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
@@ -70,7 +70,8 @@ stop_brokers() {
if test -d ${PYTHON_DIR} ; then
start_brokers
echo "Running CLI tests using brokers on ports $LOCAL_PORT $REMOTE_PORT"
- $QPID_PYTHON_TEST -m cli_tests -b localhost:$LOCAL_PORT -Dremote-port=$REMOTE_PORT -Dcli-dir=$CLI_DIR $targs $@
+ PYTHON_TESTS=${PYTHON_TESTS:-$*}
+ $QPID_PYTHON_TEST -m cli_tests -b localhost:$LOCAL_PORT -Dremote-port=$REMOTE_PORT -Dcli-dir=$CLI_DIR $targs $PYTHON_TESTS $@
RETCODE=$?
stop_brokers
if test x$RETCODE != x0; then
Modified: qpid/branches/QPID-2519/cpp/src/tests/run_federation_tests
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/run_federation_tests?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/run_federation_tests (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/run_federation_tests Fri Oct 21 14:42:12 2011
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
@@ -55,7 +55,7 @@ stop_brokers() {
if test -d ${PYTHON_DIR} ; then
start_brokers
echo "Running federation tests using brokers on ports $LOCAL_PORT $REMOTE_PORT $REMOTE_B1 $REMOTE_B2"
- $QPID_PYTHON_TEST -m federation $SKIPTESTS -b localhost:$LOCAL_PORT -Dremote-port=$REMOTE_PORT -Dextra-brokers="$REMOTE_B1 $REMOTE_B2" $@
+ $QPID_PYTHON_TEST -m federation "$SKIPTESTS" -b localhost:$LOCAL_PORT -Dremote-port=$REMOTE_PORT -Dextra-brokers="$REMOTE_B1 $REMOTE_B2" $@
RETCODE=$?
stop_brokers
if test x$RETCODE != x0; then
Modified: qpid/branches/QPID-2519/cpp/src/tests/run_header_test
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/run_header_test?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/run_header_test (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/run_header_test Fri Oct 21 14:42:12 2011
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
Modified: qpid/branches/QPID-2519/cpp/src/tests/run_store_tests.ps1
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/run_store_tests.ps1?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/run_store_tests.ps1 (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/run_store_tests.ps1 Fri Oct 21 14:42:12 2011
@@ -111,7 +111,7 @@ Invoke-Expression "$prog --quit --port $
# Test 2... store.py starts/stops/restarts its own brokers
$tests = "*"
-$env:PYTHONPATH="$PYTHON_DIR;$srcdir"
+$env:PYTHONPATH="$PYTHON_DIR;$QMF_LIB;$srcdir"
$env:QPIDD_EXEC="$prog"
$env:STORE_LIB="$store_dir\store$suffix.dll"
if ($test_store -eq "MSSQL") {
Modified: qpid/branches/QPID-2519/cpp/src/tests/run_test
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/run_test?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/run_test (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/run_test Fri Oct 21 14:42:12 2011
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
Modified: qpid/branches/QPID-2519/cpp/src/tests/sasl.mk
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/sasl.mk?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/sasl.mk (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/sasl.mk Fri Oct 21 14:42:12 2011
@@ -30,9 +30,21 @@ check_PROGRAMS+=sasl_version
sasl_version_SOURCES=sasl_version.cpp
sasl_version_LDADD=$(lib_client)
-TESTS += run_cluster_authentication_test sasl_fed sasl_fed_ex
+TESTS += run_cluster_authentication_test sasl_fed sasl_fed_ex_dynamic sasl_fed_ex_link sasl_fed_ex_queue sasl_fed_ex_route sasl_fed_ex_route_cluster sasl_fed_ex_link_cluster sasl_fed_ex_queue_cluster sasl_fed_ex_dynamic_cluster sasl_no_dir
LONG_TESTS += run_cluster_authentication_soak
-EXTRA_DIST += run_cluster_authentication_test sasl_fed sasl_fed_ex run_cluster_authentication_soak
+EXTRA_DIST += run_cluster_authentication_test \
+ sasl_fed \
+ sasl_fed_ex \
+ run_cluster_authentication_soak \
+ sasl_fed_ex_dynamic \
+ sasl_fed_ex_link \
+ sasl_fed_ex_queue \
+ sasl_fed_ex_route \
+ sasl_fed_ex_dynamic_cluster \
+ sasl_fed_ex_link_cluster \
+ sasl_fed_ex_queue_cluster \
+ sasl_fed_ex_route_cluster \
+ sasl_no_dir
endif # HAVE_SASL
Modified: qpid/branches/QPID-2519/cpp/src/tests/sasl_fed
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/sasl_fed?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/sasl_fed (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/sasl_fed Fri Oct 21 14:42:12 2011
@@ -123,7 +123,7 @@ n_messages=100
#--------------------------------------------------
#echo " Sending 100 messages to $broker_1_port "
#--------------------------------------------------
-$builddir/datagen --count $n_messages | $SENDER_EXEC --username zag --password zag --exchange $EXCHANGE_NAME --routing-key $ROUTING_KEY --port $broker_1_port
+$builddir/datagen --count $n_messages | $SENDER_EXEC --mechanism DIGEST-MD5 --username zag --password zag --exchange $EXCHANGE_NAME --routing-key $ROUTING_KEY --port $broker_1_port
sleep 5
Modified: qpid/branches/QPID-2519/cpp/src/tests/sasl_fed_ex
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/sasl_fed_ex?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/sasl_fed_ex (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/sasl_fed_ex Fri Oct 21 14:42:12 2011
@@ -19,22 +19,52 @@
# under the License.
#
-
#===============================================================================
-# This test creates a federated link between two brokers using SASL security.
+# These tests create federated links between two brokers using SASL security.
# The SASL mechanism used is EXTERNAL, which is satisfied by SSL
# transport-layer security.
#===============================================================================
source ./test_env.sh
+script_name=`basename $0`
+
+if [ $# -lt 1 ] || [ $# -gt 2 ]
+then
+ echo
+ # These are the four different ways of creating links ( or routes+links )
+ # that the qpid-route command provides.
+ echo "Usage: ${script_name} dynamic|link|queue|route [cluster]"
+ echo
+ exit 1
+fi
+
+# Has the user told us to do clustering ? -----------
+clustering_flag=
+if [ $# -eq "2" ] && [ "$2" == "cluster" ]; then
+ clustering_flag=true
+fi
+
+qpid_route_method=$1
+
+# Debugging print. --------------------------
+debug=
+function print {
+ if [ "$debug" ]; then
+ echo "${script_name}: $1"
+ fi
+}
+
+print "=========== start sasl_fed_ex $* ============"
+
+
# This minimum value corresponds to sasl version 2.1.22
minimum_sasl_version=131350
sasl_version=`$QPID_TEST_EXEC_DIR/sasl_version`
-# This test is necessary becasue this sasl version is the first one that permits
+# This test is necessary because this sasl version is the first one that permits
# redirection of the sasl config file path.
if [ "$sasl_version" -lt "$minimum_sasl_version" ]; then
echo "sasl_fed: must have sasl version 2.1.22 or greater. ( Integer value: $minimum_sasl_version ) Version is: $sasl_version"
@@ -60,6 +90,7 @@ create_certs() {
delete_certs() {
if [[ -e ${CERT_DIR} ]] ; then
+ print "removing cert dir ${CERT_DIR}"
rm -rf ${CERT_DIR}
fi
}
@@ -72,22 +103,40 @@ if [[ !(-x $CERTUTIL) ]] ; then
fi
delete_certs
-create_certs || error "Could not create test certificate"
-
+create_certs 2> /dev/null
+if [ ! $? ]; then
+ error "Could not create test certificate"
+ exit 1
+fi
-sasl_config_file=$builddir/sasl_config
+sasl_config_dir=$builddir/sasl_config
-my_random_number=$RANDOM
-tmp_root=/tmp/sasl_fed_$my_random_number
+tmp_root=${builddir}/sasl_fed_ex_temp
+print "results dir is ${tmp_root}"
+rm -rf ${tmp_root}
mkdir -p $tmp_root
SRC_SSL_PORT=6667
DST_SSL_PORT=6666
+SRC_SSL_PORT_2=6668
+DST_SSL_PORT_2=6669
+
SRC_TCP_PORT=5801
DST_TCP_PORT=5807
-SSL_LIB=../.libs/ssl.so
+SRC_TCP_PORT_2=5802
+DST_TCP_PORT_2=5803
+
+CLUSTER_NAME_SUFFIX=`hostname | tr '.' ' ' | awk '{print $1}'`
+CLUSTER_1_NAME=sasl_fed_ex_cluster_1_${CLUSTER_NAME_SUFFIX}
+CLUSTER_2_NAME=sasl_fed_ex_cluster_2_${CLUSTER_NAME_SUFFIX}
+
+print "CLUSTER_1_NAME == ${CLUSTER_1_NAME}"
+print "CLUSTER_2_NAME == ${CLUSTER_2_NAME}"
+
+SSL_LIB=${moduledir}/ssl.so
+CLUSTER_LIB=${moduledir}/cluster.so
export QPID_SSL_CERT_NAME=${TEST_HOSTNAME}
@@ -116,52 +165,112 @@ export QPID_SSL_CERT_NAME=${TEST_HOSTNAM
# 5. DST pulls messages off the temp queue on SRC to itself.
#
+COMMON_BROKER_OPTIONS=" \
+ --ssl-sasl-no-dict \
+ --sasl-config=$sasl_config_dir \
+ --ssl-require-client-authentication \
+ --auth yes \
+ --ssl-cert-db $CERT_DIR \
+ --ssl-cert-password-file $CERT_PW_FILE \
+ --ssl-cert-name $TEST_HOSTNAME \
+ --no-data-dir \
+ --no-module-dir \
+ --load-module ${SSL_LIB} \
+ --mgmt-enable=yes \
+ --log-enable info+ \
+ --log-source yes \
+ --daemon "
+
+
+function start_brokers {
+ if [ $1 ]; then
+ # clustered ----------------------------------------
+ print "Starting SRC cluster"
+
+ print " src broker 1"
+ $QPIDD_EXEC \
+ --port=${SRC_TCP_PORT} \
+ --ssl-port ${SRC_SSL_PORT} \
+ ${COMMON_BROKER_OPTIONS} \
+ --load-module ${CLUSTER_LIB} \
+ --cluster-name ${CLUSTER_1_NAME} \
+ --log-to-file $tmp_root/qpidd_src.log 2> /dev/null
+
+ broker_ports[0]=${SRC_TCP_PORT}
+
+ print " src broker 2"
+ $QPIDD_EXEC \
+ --port=${SRC_TCP_PORT_2} \
+ --ssl-port ${SRC_SSL_PORT_2} \
+ ${COMMON_BROKER_OPTIONS} \
+ --load-module ${CLUSTER_LIB} \
+ --cluster-name ${CLUSTER_1_NAME} \
+ --log-to-file $tmp_root/qpidd_src_2.log 2> /dev/null
+
+ broker_ports[1]=${SRC_TCP_PORT_2}
+
+
+ print "Starting DST cluster"
+
+ print " dst broker 1"
+ $QPIDD_EXEC \
+ --port=${DST_TCP_PORT} \
+ --ssl-port ${DST_SSL_PORT} \
+ ${COMMON_BROKER_OPTIONS} \
+ --load-module ${CLUSTER_LIB} \
+ --cluster-name ${CLUSTER_2_NAME} \
+ --log-to-file $tmp_root/qpidd_dst.log 2> /dev/null
+
+ broker_ports[2]=${DST_TCP_PORT}
+
+ print " dst broker 2"
+ $QPIDD_EXEC \
+ --port=${DST_TCP_PORT_2} \
+ --ssl-port ${DST_SSL_PORT_2} \
+ ${COMMON_BROKER_OPTIONS} \
+ --load-module ${CLUSTER_LIB} \
+ --cluster-name ${CLUSTER_2_NAME} \
+ --log-to-file $tmp_root/qpidd_dst_2.log 2> /dev/null
+
+ broker_ports[3]=${DST_TCP_PORT_2}
+
+ else
+ # vanilla brokers --------------------------------
+ print "Starting SRC broker"
+ $QPIDD_EXEC \
+ --port=${SRC_TCP_PORT} \
+ --ssl-port ${SRC_SSL_PORT} \
+ ${COMMON_BROKER_OPTIONS} \
+ --log-to-file $tmp_root/qpidd_src.log 2> /dev/null
+
+ broker_ports[0]=${SRC_TCP_PORT}
+
+ print "Starting DST broker"
+ $QPIDD_EXEC \
+ --port=${DST_TCP_PORT} \
+ --ssl-port ${DST_SSL_PORT} \
+ ${COMMON_BROKER_OPTIONS} \
+ --log-to-file $tmp_root/qpidd_dst.log 2> /dev/null
+
+ broker_ports[1]=${DST_TCP_PORT}
+ fi
+}
+
+
+function halt_brokers {
+ n_brokers=${#broker_ports[@]}
+ print "Halting ${n_brokers} brokers."
+ for i in $(seq 0 $((${n_brokers} - 1)))
+ do
+ halt_port=${broker_ports[$i]}
+ print "Halting broker $i on port ${halt_port}"
+ $QPIDD_EXEC --port ${halt_port} --quit
+ done
+
+}
-#echo "-----------------------"
-#echo "Starting SRC broker"
-#echo "-----------------------"
-$QPIDD_EXEC \
- --port=${SRC_TCP_PORT} \
- --ssl-port ${SRC_SSL_PORT} \
- --ssl-sasl-no-dict \
- --sasl-config=$sasl_config_file \
- --ssl-require-client-authentication \
- --auth yes \
- --ssl-cert-db $CERT_DIR \
- --ssl-cert-password-file $CERT_PW_FILE \
- --ssl-cert-name $TEST_HOSTNAME \
- --no-data-dir \
- --no-module-dir \
- --load-module ${SSL_LIB} \
- --mgmt-enable=yes \
- --log-enable info+ \
- --log-source yes \
- --daemon \
- --log-to-file $tmp_root/qpidd_src.log 2> /dev/null
-
-
-#echo "-----------------------"
-#echo "Starting DST broker"
-#echo "-----------------------"
-$QPIDD_EXEC \
- --port=${DST_TCP_PORT} \
- --ssl-port ${DST_SSL_PORT} \
- --ssl-cert-db $CERT_DIR \
- --ssl-cert-password-file $CERT_PW_FILE \
- --ssl-cert-name $TEST_HOSTNAME \
- --ssl-sasl-no-dict \
- --ssl-require-client-authentication \
- --sasl-config=$sasl_config_file \
- --no-data-dir \
- --no-module-dir \
- --load-module ${SSL_LIB} \
- --mgmt-enable=yes \
- --log-enable info+ \
- --log-source yes \
- --daemon \
- $COMMON_BROKER_OPTIONS \
- --log-to-file $tmp_root/qpidd_dst.log 2> /dev/null
+start_brokers $clustering_flag
# I am not randomizing these names, because this test creates its own brokers.
@@ -170,76 +279,83 @@ ROUTING_KEY=sasl_fed_queue
EXCHANGE_NAME=sasl_fedex
-#echo "-----------------------"
-#echo "add exchanges"
-#echo "-----------------------"
+print "add exchanges"
$QPID_CONFIG_EXEC -a localhost:${SRC_TCP_PORT} add exchange direct $EXCHANGE_NAME
$QPID_CONFIG_EXEC -a localhost:${DST_TCP_PORT} add exchange direct $EXCHANGE_NAME
-#echo "-----------------------"
-#echo "add queues"
-#echo "-----------------------"
+print "add queues"
$QPID_CONFIG_EXEC -a localhost:${SRC_TCP_PORT} add queue $QUEUE_NAME
$QPID_CONFIG_EXEC -a localhost:${DST_TCP_PORT} add queue $QUEUE_NAME
-#echo "-----------------------"
-#echo "create bindings"
-#echo "-----------------------"
+print "create bindings"
$QPID_CONFIG_EXEC -a localhost:${SRC_TCP_PORT} bind $EXCHANGE_NAME $QUEUE_NAME $ROUTING_KEY
$QPID_CONFIG_EXEC -a localhost:${DST_TCP_PORT} bind $EXCHANGE_NAME $QUEUE_NAME $ROUTING_KEY
-#echo "-----------------------"
-#echo "qpid-route route add"
-#echo "-----------------------"
+#
# NOTE: The SRC broker *must* be referred to as $TEST_HOSTNAME, and not as "localhost".
# It must be referred to by the exact string given as the Common Name (CN) in the cert,
# which was created in the function create_certs, above.
-$QPID_ROUTE_EXEC route add localhost:${DST_TCP_PORT} $TEST_HOSTNAME:${SRC_SSL_PORT} -t ssl $EXCHANGE_NAME $ROUTING_KEY "" "" EXTERNAL
-
-#echo "-----------------------"
-#echo "view the route :"
-#echo "-----------------------"
-#$PYTHON_COMMANDS/qpid-route route list localhost:${DST_TCP_PORT}
-
-# I don't know how to avoid this sleep yet. It has to come after route-creation.
-sleep 5
-
-n_messages=100
-./datagen --count ${n_messages} | ./sender --broker localhost --port ${SRC_TCP_PORT} --exchange ${EXCHANGE_NAME} --routing-key ${ROUTING_KEY} --mechanism ANONYMOUS
-#echo "-----------------------"
-#echo "Examine DST Broker"
-#echo "-----------------------"
-dst_message_count=`qpid-stat -q localhost:${DST_TCP_PORT} | grep sasl_fed_queue | awk '{print $2}'`
-
+#----------------------------------------------------------------
+# Use qpid-route to create the link, or the link+route, depending
+# on which of its several methods was requested.
+#----------------------------------------------------------------
+if [ ${qpid_route_method} == "dynamic" ]; then
+ print "dynamic add"
+ $QPID_ROUTE_EXEC -t ssl dynamic add localhost:${DST_TCP_PORT} $TEST_HOSTNAME:${SRC_SSL_PORT} $EXCHANGE_NAME "" "" EXTERNAL
+elif [ ${qpid_route_method} == "link" ]; then
+ print "link add"
+ $QPID_ROUTE_EXEC -t ssl link add localhost:${DST_TCP_PORT} $TEST_HOSTNAME:${SRC_SSL_PORT} EXTERNAL
+elif [ ${qpid_route_method} == "queue" ]; then
+ print "queue add"
+ $QPID_ROUTE_EXEC -t ssl queue add localhost:${DST_TCP_PORT} $TEST_HOSTNAME:${SRC_SSL_PORT} $EXCHANGE_NAME $ROUTING_KEY EXTERNAL
+elif [ ${qpid_route_method} == "route" ]; then
+ print "route add"
+ $QPID_ROUTE_EXEC -t ssl route add localhost:${DST_TCP_PORT} $TEST_HOSTNAME:${SRC_SSL_PORT} $EXCHANGE_NAME $ROUTING_KEY "" "" EXTERNAL
+else
+ echo "unknown method: |${qpid_route_method}|"
+ echo " choices are: dynamic|link|queue|route "
+ halt_brokers
+ exit 1
+fi
-#echo "-----------------------"
-#echo "Asking brokers to quit."
-#echo "-----------------------"
-$QPIDD_EXEC --port ${SRC_TCP_PORT} --quit
-$QPIDD_EXEC --port ${DST_TCP_PORT} --quit
+# I don't know how to avoid this sleep yet. It has to come after route-creation
+# to avoid false negatives.
+sleep 5
-#echo "-----------------------"
-#echo "Removing temporary directory $tmp_root"
-#echo "-----------------------"
-rm -rf $tmp_root
+# This should work the same whether or not we are running a clustered test.
+# In the case of clustered tests, the status is not printed by qpid_route.
+# So in either case, I will look only at the transport field, which should be "ssl".
+print "check the link"
+link_status=$($QPID_ROUTE_EXEC link list localhost:${DST_TCP_PORT} | tail -1 | awk '{print $3}')
+
+halt_brokers
+
+sleep 1
+
+if [ ! ${link_status} ]; then
+ print "link_status is empty"
+ print "result: fail"
+ exit 2
+fi
-if [ "$dst_message_count" -eq "$n_messages" ]; then
- #echo "good: |$dst_message_count| == |$n_messages|"
+if [ ${link_status} == "ssl" ]; then
+ print "result: good"
+ # Only remove the tmp_root on success, to permit debugging.
+ print "Removing temporary directory $tmp_root"
+ rm -rf $tmp_root
exit 0
-else
- #echo "not ideal: |$dst_message_count| != |$n_messages|"
- exit 1
fi
-
-
+print "link_status has a bad value: ${link_status}"
+print "result: fail"
+exit 3
Modified: qpid/branches/QPID-2519/cpp/src/tests/sasl_test_setup.sh
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/sasl_test_setup.sh?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/sasl_test_setup.sh (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/sasl_test_setup.sh Fri Oct 21 14:42:12 2011
@@ -30,6 +30,7 @@ pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: $PWD/sasl_config/qpidd.sasldb
sql_select: dummy select
+mech_list: ANONYMOUS PLAIN DIGEST-MD5 EXTERNAL
EOF
# Populate temporary sasl db.
Modified: qpid/branches/QPID-2519/cpp/src/tests/sender.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/sender.cpp?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/sender.cpp (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/sender.cpp Fri Oct 21 14:42:12 2011
@@ -120,7 +120,7 @@ void Sender::execute(AsyncSession& sessi
string data;
while (getline(std::cin, data)) {
message.setData(data);
- message.getHeaders().setInt("SN", ++sent);
+ //message.getHeaders().setInt("SN", ++sent);
string matchKey;
if (lvqMatchValues && getline(lvqMatchValues, matchKey)) {
message.getHeaders().setString(QueueOptions::strLVQMatchProperty, matchKey);
Modified: qpid/branches/QPID-2519/cpp/src/tests/ssl_test
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/ssl_test?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/ssl_test (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/ssl_test Fri Oct 21 14:42:12 2011
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
@@ -47,9 +47,13 @@ delete_certs() {
fi
}
-COMMON_OPTS="--daemon --no-data-dir --no-module-dir --auth no --config $CONFIG --load-module $SSL_LIB --ssl-cert-db $CERT_DIR --ssl-cert-password-file $CERT_PW_FILE --ssl-cert-name $TEST_HOSTNAME --require-encryption"
+COMMON_OPTS="--daemon --no-data-dir --no-module-dir --config $CONFIG --load-module $SSL_LIB --ssl-cert-db $CERT_DIR --ssl-cert-password-file $CERT_PW_FILE --ssl-cert-name $TEST_HOSTNAME"
start_broker() { # $1 = extra opts
- ../qpidd --transport ssl --port 0 --ssl-port 0 $COMMON_OPTS $1;
+ ../qpidd --transport ssl --port 0 --ssl-port 0 $COMMON_OPTS --require-encryption --auth no $1;
+}
+
+start_authenticating_broker() {
+ ../qpidd --transport ssl --port 0 --ssl-port 0 $COMMON_OPTS --require-encryption --ssl-sasl-no-dict --ssl-require-client-authentication --auth yes;
}
stop_brokers() {
@@ -64,6 +68,13 @@ cleanup() {
delete_certs
}
+pick_port() {
+ # We need a fixed port to set --cluster-url. Use qpidd to pick a free port.
+ PICK=`../qpidd --no-module-dir -dp0`
+ ../qpidd --no-module-dir -qp $PICK
+ echo $PICK
+}
+
CERTUTIL=$(type -p certutil)
if [[ !(-x $CERTUTIL) ]] ; then
echo "No certutil, skipping ssl test";
@@ -93,7 +104,7 @@ test "$MSG" = "hello" || { echo "receive
#### Client Authentication tests
-PORT2=`start_broker --ssl-require-client-authentication` || error "Could not start broker"
+PORT2=`start_authenticating_broker` || error "Could not start broker"
echo "Running SSL client authentication test on port $PORT2"
URL=amqp:ssl:$TEST_HOSTNAME:$PORT2
@@ -109,19 +120,22 @@ test "$MSG3" = "" || { echo "receive suc
stop_brokers
+#Test multiplexed connection where SSL and plain TCP are served by the same port
+PORT=`pick_port`; ../qpidd --port $PORT --ssl-port $PORT $COMMON_OPTS --transport ssl --auth no
+echo "Running multiplexed SSL/TCP test on $PORT"
+
+./qpid-perftest --count ${COUNT} --port ${PORT} -P ssl -b $TEST_HOSTNAME --summary || { echo "SSL on multiplexed connection failed!"; exit 1; }
+./qpid-perftest --count ${COUNT} --port ${PORT} -P tcp -b $TEST_HOSTNAME --summary || { echo "Plain TCP on multiplexed connection failed!"; exit 1; }
+
+stop_brokers
+
test -z $CLUSTER_LIB && exit 0 # Exit if cluster not supported.
## Test failover in a cluster using SSL only
. $srcdir/ais_check # Will exit if clustering not enabled.
-pick_port() {
- # We need a fixed port to set --cluster-url. Use qpidd to pick a free port.
- PICK=`../qpidd --no-module-dir -dp0`
- ../qpidd --no-module-dir -qp $PICK
- echo $PICK
-}
ssl_cluster_broker() { # $1 = port
- ../qpidd $COMMON_OPTS --load-module $CLUSTER_LIB --cluster-name ssl_test.$HOSTNAME.$$ --cluster-url amqp:ssl:$TEST_HOSTNAME:$1 --port 0 --ssl-port $1 --transport ssl > /dev/null
+ ../qpidd $COMMON_OPTS --require-encryption --auth no --load-module $CLUSTER_LIB --cluster-name ssl_test.$HOSTNAME.$$ --cluster-url amqp:ssl:$TEST_HOSTNAME:$1 --port 0 --ssl-port $1 --transport ssl > /dev/null
# Wait for broker to be ready
qpid-ping -Pssl -b $TEST_HOSTNAME -qp $1 || { echo "Cannot connect to broker on $1"; exit 1; }
echo "Running SSL cluster broker on port $1"
Modified: qpid/branches/QPID-2519/cpp/src/tests/windows/DisableWin32ErrorWindows.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/tests/windows/DisableWin32ErrorWindows.cpp?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/tests/windows/DisableWin32ErrorWindows.cpp (original)
+++ qpid/branches/QPID-2519/cpp/src/tests/windows/DisableWin32ErrorWindows.cpp Fri Oct 21 14:42:12 2011
@@ -26,7 +26,9 @@
// include this file with the executable being built. If the default
// behaviors are desired, don't include this file in the build.
+#if defined(_MSC_VER)
#include <crtdbg.h>
+#endif
#include <windows.h>
#include <iostream>
@@ -53,12 +55,14 @@ static redirect_errors_to_stderr block;
redirect_errors_to_stderr::redirect_errors_to_stderr()
{
+#if defined(_MSC_VER)
_CrtSetReportMode (_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile (_CRT_WARN, _CRTDBG_FILE_STDERR);
_CrtSetReportMode (_CRT_ERROR, _CRTDBG_MODE_FILE);
_CrtSetReportFile (_CRT_ERROR, _CRTDBG_FILE_STDERR);
_CrtSetReportMode (_CRT_ASSERT, _CRTDBG_MODE_FILE);
_CrtSetReportFile (_CRT_ASSERT, _CRTDBG_FILE_STDERR);
+#endif
// Prevent the system from displaying the critical-error-handler
// and can't-open-file message boxes.
Modified: qpid/branches/QPID-2519/cpp/src/windows/QpiddBroker.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/windows/QpiddBroker.cpp?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/windows/QpiddBroker.cpp (original)
+++ qpid/branches/QPID-2519/cpp/src/windows/QpiddBroker.cpp Fri Oct 21 14:42:12 2011
@@ -147,7 +147,7 @@ NamedSharedMemory<T>::NamedSharedMemory(
name(n),
memory(NULL),
data(0)
-{};
+{}
template <typename T>
NamedSharedMemory<T>::~NamedSharedMemory() {
@@ -155,7 +155,7 @@ NamedSharedMemory<T>::~NamedSharedMemory
::UnmapViewOfFile(data);
if (memory != NULL)
::CloseHandle(memory);
-};
+}
template <typename T>
T& NamedSharedMemory<T>::create() {
Modified: qpid/branches/QPID-2519/cpp/src/windows/resources/template-resource.rc
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/windows/resources/template-resource.rc?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/windows/resources/template-resource.rc (original)
+++ qpid/branches/QPID-2519/cpp/src/windows/resources/template-resource.rc Fri Oct 21 14:42:12 2011
@@ -24,7 +24,7 @@
//
// Generated from the TEXTINCLUDE 2 resource.
//
-#include "afxres.h"
+#include "windows.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
Modified: qpid/branches/QPID-2519/cpp/src/xml.mk
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/src/xml.mk?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/src/xml.mk (original)
+++ qpid/branches/QPID-2519/cpp/src/xml.mk Fri Oct 21 14:42:12 2011
@@ -16,7 +16,7 @@
# specific language governing permissions and limitations
# under the License.
#
-dmodule_LTLIBRARIES += xml.la
+dmoduleexec_LTLIBRARIES += xml.la
xml_la_SOURCES = \
qpid/xml/XmlExchange.cpp \
Modified: qpid/branches/QPID-2519/cpp/xml/cluster.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/cpp/xml/cluster.xml?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/cpp/xml/cluster.xml (original)
+++ qpid/branches/QPID-2519/cpp/xml/cluster.xml Fri Oct 21 14:42:12 2011
@@ -8,9 +8,9 @@
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
--
+-
- http://www.apache.org/licenses/LICENSE-2.0
--
+-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -78,10 +78,6 @@
<field name="left" type="vbin16"/> <!-- packed member-id array -->
</control>
- <control name="message-expired" code="0x12">
- <field name="id" type="uint64"/>
- </control>
-
<domain name="error-type" type="uint8" label="Types of error">
<enum>
<choice name="none" value="0"/>
@@ -89,7 +85,7 @@
<choice name="connection" value="2"/>
</enum>
</domain>
-
+
<!-- Check for error consistency across the cluster -->
<control name="error-check" code="0x14">
<field name="type" type="error-type"/>
@@ -116,6 +112,11 @@
<field name="message" type="vbin32"/>
</control>
+ <!-- Update the cluster time -->
+ <control name="clock" code="0x22">
+ <field name="time" type="uint64"/>
+ </control>
+
</class>
<!-- Controls associated with a specific connection. -->
@@ -149,7 +150,7 @@
<!-- Abort a connection that is sending invalid data. -->
<control name="abort" code="0x4"/>
-
+
<!-- Update controls. Sent to a new broker in joining mode.
A connection is updated as followed:
- send the shadow's management ID in shadow-perpare on the update connection
@@ -183,7 +184,7 @@
<field name="position" type="sequence-no"/>
<field name="tag" type="str8"/>
<field name="id" type="sequence-no"/>
- <field name="acquired" type="bit"/> <!--If not set, message follows. -->
+ <field name="acquired" type="bit"/> <!--If not set, message is on update queue. -->
<field name="accepted" type="bit"/>
<field name="cancelled" type="bit"/>
<field name="completed" type="bit"/>
@@ -192,9 +193,9 @@
<field name="enqueued" type="bit"/>
<field name="credit" type="uint32"/>
</control>
-
+
<!-- Tx transaction state. -->
- <control name="tx-start" code="0x12"/>
+ <control name="tx-start" code="0x12"/>
<control name="tx-accept" code="0x13"> <field name="commands" type="sequence-set"/> </control>
<control name="tx-dequeue" code="0x14"> <field name="queue" type="str8"/> </control>
<control name="tx-enqueue" code="0x15"> <field name="queue" type="str8"/> </control>
@@ -204,13 +205,37 @@
</control>
<control name="tx-end" code="0x17"/>
<control name="accumulated-ack" code="0x18"> <field name="commands" type="sequence-set"/> </control>
-
+
<!-- Consumers in the connection's output task -->
<control name="output-task" code="0x19">
<field name="channel" type="uint16"/>
<field name="name" type="str8"/>
</control>
+ <!-- Dtx transaction state. -->
+ <control name="dtx-start" code="0x1A">
+ <field name="xid" type="str16"/>
+ <field name="ended" type="bit"/>
+ <field name="suspended" type="bit"/>
+ <field name="failed" type="bit"/>
+ <field name="expired" type="bit"/>
+ </control>
+ <control name="dtx-end" code="0x1B"/>
+
+ <control name="dtx-ack" code="0x1C"/>
+
+ <control name="dtx-buffer-ref" code="0x1D">
+ <field name="xid" type="str16"/>
+ <field name="index" type="uint32"/>
+ <field name="suspended" type="bit"/>
+ </control>
+
+ <control name="dtx-work-record" code="0x1E">
+ <field name="xid" type="str16"/>
+ <field name="prepared" type="bit"/>
+ <field name="timeout" type="uint32"/>
+ </control>
+
<!-- Complete a session state update. -->
<control name="session-state" code="0x1F">
<!-- Target session deduced from channel number. -->
@@ -222,6 +247,7 @@
<field name="received" type="sequence-no"/> <!-- Received up to here (>= expected) -->
<field name="unknown-completed" type="sequence-set"/> <!-- Completed but not known to peer. -->
<field name="received-incomplete" type="sequence-set"/> <!-- Received and incomplete -->
+ <field name="dtx-selected" type="bit"/>
</control>
<!-- Complete a shadow connection update. -->
@@ -252,10 +278,6 @@
<!-- Replicate encoded exchanges/queues. -->
<control name="exchange" code="0x31"><field name="encoded" type="str32"/></control>
- <control name="queue" code="0x32"><field name="encoded" type="str32"/></control>
-
- <!-- Set expiry-id for subsequent messages. -->
- <control name="expiry-id" code="0x33"><field name="expiry-id" type="uint64"/></control>
<!-- Add a listener to a queue -->
<control name="add-queue-listener" code="0x34">
@@ -282,6 +304,26 @@
<field name="position" type="uint8"/>
<field name="count" type="uint8"/>
</control>
+
+ <!-- Replicate a QueueObserver for a given queue. -->
+ <control name="queue-observer-state" code="0x39">
+ <field name="queue" type="str8"/>
+ <field name="observer-id" type="str8"/>
+ <field name="state" type="map"/> <!-- "name"=value -->
+ </control>
+
+ <!-- Update the cluster time -->
+ <control name="clock" code="0x40">
+ <field name="time" type="uint64"/>
+ </control>
+
+ <!-- Update a queue's dequeue rate -->
+ <control name="queue-dequeue-since-purge-state" code="0x41">
+ <field name="queue" type="str8"/>
+ <field name="dequeueSincePurge" type="uint32"/>
+ </control>
+
+
</class>
</amqp>
Modified: qpid/branches/QPID-2519/doc/book/build-book.sh
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/doc/book/build-book.sh?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/doc/book/build-book.sh (original)
+++ qpid/branches/QPID-2519/doc/book/build-book.sh Fri Oct 21 14:42:12 2011
@@ -29,6 +29,12 @@
#
########################################################################
+# DOCBOOK XSL STYLESHEET LOCATION
+# Fedora, RHEL:
+DOCBOOK_XSL=/usr/share/sgml/docbook/xsl-stylesheets
+# Ubuntu:
+# DOCBOOK_XSL=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh
+
rm -rf build/$1
mkdir -p build/$1
mkdir -p build/$1/html-single
@@ -38,16 +44,16 @@ cp -r src/images build/$1/html-single
cp -r src/images build/$1/html
# Create single-page .html
-xsltproc --xinclude --stringparam section.autolabel 1 --stringparam callout.graphics 0 --stringparam callout.unicode 0 --stringparam section.label.includes.component.label 1 /usr/share/sgml/docbook/xsl-stylesheets/html/docbook.xsl src/$1.xml >build/$1/html-single/$1.html
+xsltproc --xinclude --stringparam section.autolabel 1 --stringparam callout.graphics 0 --stringparam callout.unicode 0 --stringparam section.label.includes.component.label 1 ${DOCBOOK_XSL}/html/docbook.xsl src/$1.xml >build/$1/html-single/$1.html
# Create chunked .html
INFILE=$(readlink -f src/$1.xml)
pushd build/$1/html
-xsltproc --xinclude --stringparam chunk.section.depth 1 --stringparam section.autolabel 1 --stringparam callout.graphics 0 --stringparam callout.unicode 0 --stringparam section.label.includes.component.label 1 /usr/share/sgml/docbook/xsl-stylesheets/html/chunk.xsl $INFILE
+xsltproc --xinclude --stringparam chunk.section.depth 1 --stringparam section.autolabel 1 --stringparam callout.graphics 0 --stringparam callout.unicode 0 --stringparam section.label.includes.component.label 1 ${DOCBOOK_XSL}/html/chunk.xsl $INFILE
popd
# Create the .fo
-xsltproc --xinclude --stringparam section.autolabel 1 --stringparam callout.graphics 0 --stringparam callout.unicode 0 --stringparam section.label.includes.component.label 1 /usr/share/sgml/docbook/xsl-stylesheets/fo/docbook.xsl src/$1.xml >build/$1/pdf/$1.fo
+xsltproc --xinclude --stringparam section.autolabel 1 --stringparam callout.graphics 0 --stringparam callout.unicode 0 --stringparam section.label.includes.component.label 1 ${DOCBOOK_XSL}/fo/docbook.xsl src/$1.xml >build/$1/pdf/$1.fo
# Use Apache FOP to create the PDF
fop build/$1/pdf/$1.fo build/$1/pdf/$1.pdf
Modified: qpid/branches/QPID-2519/doc/book/src/AMQP-Messaging-Broker-CPP-Book.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/doc/book/src/AMQP-Messaging-Broker-CPP-Book.xml?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/doc/book/src/AMQP-Messaging-Broker-CPP-Book.xml (original)
+++ qpid/branches/QPID-2519/doc/book/src/AMQP-Messaging-Broker-CPP-Book.xml Fri Oct 21 14:42:12 2011
@@ -56,8 +56,10 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="LVQ.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="queue-state-replication.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Starting-a-cluster.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="producer-flow-control.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="AMQP-Compatibility.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Qpid-Interoperability-Documentation.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Using-message-groups.xml"/>
</chapter>
Modified: qpid/branches/QPID-2519/doc/book/src/AMQP-Messaging-Broker-CPP.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/doc/book/src/AMQP-Messaging-Broker-CPP.xml?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/doc/book/src/AMQP-Messaging-Broker-CPP.xml (original)
+++ qpid/branches/QPID-2519/doc/book/src/AMQP-Messaging-Broker-CPP.xml Fri Oct 21 14:42:12 2011
@@ -50,7 +50,9 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="LVQ.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="queue-state-replication.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Starting-a-cluster.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="ACL.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="ACL.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="producer-flow-control.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Using-message-groups.xml"/>
</chapter>
Modified: qpid/branches/QPID-2519/doc/book/src/Cheat-Sheet-for-configuring-Queue-Options.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/doc/book/src/Cheat-Sheet-for-configuring-Queue-Options.xml?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/doc/book/src/Cheat-Sheet-for-configuring-Queue-Options.xml (original)
+++ qpid/branches/QPID-2519/doc/book/src/Cheat-Sheet-for-configuring-Queue-Options.xml Fri Oct 21 14:42:12 2011
@@ -65,6 +65,16 @@
</itemizedlist>
</para></listitem>
</itemizedlist>
+
+ <para>
+ The 0.10 C++ Broker supports the following additional Queue configuration options:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <xref linkend="producer-flow-control"/>
+ </para></listitem>
+ </itemizedlist>
+
<section role="h3" id="CheatSheetforconfiguringQueueOptions-ApplyingQueueSizingConstraints"><title>
Applying Queue Sizing Constraints
</title>
Modified: qpid/branches/QPID-2519/doc/book/src/Configure-Java-Qpid-to-use-a-SSL-connection.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/doc/book/src/Configure-Java-Qpid-to-use-a-SSL-connection.xml?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/doc/book/src/Configure-Java-Qpid-to-use-a-SSL-connection.xml (original)
+++ qpid/branches/QPID-2519/doc/book/src/Configure-Java-Qpid-to-use-a-SSL-connection.xml Fri Oct 21 14:42:12 2011
@@ -51,8 +51,8 @@
<ssl>
<enabled>true</enabled>
<sslOnly>true</sslOnly>
- <keystorePath>/path/to/keystore.ks</keystorePath>
- <keystorePassword>keystorepass</keystorePassword>
+ <keyStorePath>/path/to/keystore.ks</keyStorePath>
+ <keyStorePassword>keystorepass</keyStorePassword>
</ssl>
</programlisting>
Modified: qpid/branches/QPID-2519/doc/book/src/Programming-In-Apache-Qpid.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/doc/book/src/Programming-In-Apache-Qpid.xml?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/doc/book/src/Programming-In-Apache-Qpid.xml (original)
+++ qpid/branches/QPID-2519/doc/book/src/Programming-In-Apache-Qpid.xml Fri Oct 21 14:42:12 2011
@@ -1722,7 +1722,7 @@ try {
<row>
<entry>
- username
+ <literal>username</literal>
</entry>
<entry>
string
@@ -1733,7 +1733,7 @@ try {
</row>
<row>
<entry>
- password
+ <literal>password</literal>
</entry>
<entry>
string
@@ -1744,35 +1744,22 @@ try {
</row>
<row>
<entry>
- sasl-mechanism
+ <literal>sasl_mechanisms</literal>
</entry>
<entry>
string
</entry>
<entry>
- The specific SASL mechanism to use with the c++
- client when authenticating to the broker. Only a
- single value can be specified at present. [C++ only].
- </entry>
- </row>
- <row>
- <entry>
- sasl_mechanisms
- </entry>
- <entry>
- string
- </entry>
- <entry>
- The specific SASL mechanism to use with the python
+ The specific SASL mechanisms to use with the python
client when authenticating to the broker. The value
- is a space separated list in order of preference. [Python only].
+ is a space separated list.
</entry>
</row>
<row>
<entry>
- reconnect
+ <literal>reconnect</literal>
</entry>
<entry>
boolean
@@ -1783,7 +1770,7 @@ try {
</row>
<row>
<entry>
- <literal>reconnect_timeout [Python]</literal> <literal>reconnect-timeout [C++]</literal>
+ <literal>reconnect_timeout</literal>
</entry>
<entry>
integer
@@ -1794,7 +1781,7 @@ try {
</row>
<row>
<entry>
- <literal>reconnect_limit [Python]</literal> <literal>reconnect-limit [C++]</literal>
+ <literal>reconnect_limit</literal>
</entry>
<entry>
integer
@@ -1805,7 +1792,7 @@ try {
</row>
<row>
<entry>
- <literal>reconnect_interval_min [Python]</literal> <literal>reconnect-interval-min [C++]</literal>
+ <literal>reconnect_interval_min</literal>
</entry>
<entry>
integer representing time in seconds
@@ -1816,7 +1803,7 @@ try {
</row>
<row>
<entry>
- <literal>reconnect_interval_max [Python]</literal> <literal>reconnect-interval-max [C++]</literal>
+ <literal>reconnect_interval_max</literal>
</entry>
<entry>
integer representing time in seconds
@@ -1827,7 +1814,7 @@ try {
</row>
<row>
<entry>
- <literal>reconnect_interval [Python]</literal> <literal>reconnect-interval [C++]</literal>
+ <literal>reconnect_interval</literal>
</entry>
<entry>
integer representing time in seconds
@@ -1839,7 +1826,7 @@ try {
<row>
<entry>
- heartbeat
+ <literal>heartbeat</literal>
</entry>
<entry>
integer representing time in seconds
@@ -1852,7 +1839,7 @@ try {
</row>
<row>
<entry>
- protocol
+ <literal>protocol</literal>
</entry>
<entry>
string
@@ -1863,7 +1850,7 @@ try {
</row>
<row>
<entry>
- tcp-nodelay
+ <literal>tcp-nodelay</literal>
</entry>
<entry>
boolean
@@ -3456,9 +3443,8 @@ log4j.appender.console.layout.Conversion
<entry>qpid.amqp.version</entry>
<entry>string</entry>
<entry>0-10</entry>
- <entry>Sets the AMQP version to be used - currently supports one of {0-8,0-9,0-91,0-10}</entry>
- </row>
-
+ <entry><para>Sets the AMQP version to be used - currently supports one of {0-8,0-9,0-91,0-10}.</para><para>The client will begin negotiation at the specified version and only negotiate downwards if the Broker does not support the specified version.</para></entry>
+ </row>
<row>
<entry>qpid.heartbeat</entry>
<entry>int</entry>
@@ -3623,15 +3609,20 @@ log4j.appender.console.layout.Conversion
<entry>qpid.transport</entry>
<entry>string</entry>
<entry>org.apache.qpid.transport.network.io.IoNetworkTransport</entry>
- <entry><para>The transport implementation to be used.</para><para>A user could specify an alternative transport mechanism that implements the <varname>org.apache.qpid.transport.network.NetworkTransport</varname> interface.</para></entry>
- </row>
-
+ <entry><para>The transport implementation to be used.</para><para>A user could specify an alternative transport mechanism that implements the <varname>org.apache.qpid.transport.network.NetworkTransport</varname> interface.</para></entry>
+ </row>
+ <row>
+ <entry>qpid.sync_op_timeout</entry>
+ <entry>long</entry>
+ <entry>60000</entry>
+ <entry><para>The length of time (in milliseconds) to wait for a synchronous operation to complete.</para><para>For compatibility with older clients, the synonym <varname>amqj.default_syncwrite_timeout</varname> is supported.</para></entry>
+ </row>
<row>
<entry>amqj.tcp_nodelay</entry>
<entry>boolean</entry>
<entry>false</entry>
- <entry><para>Sets the TCP_NODELAY property of the underlying socket.</para><para>This could also be set per connection as well (see connection paramters).</para></entry>
- </row>
+ <entry><para>Sets the TCP_NODELAY property of the underlying socket.</para><para>This could also be set per connection as well (see connection paramters).</para></entry>
+ </row>
</tbody>
</tgroup>
</table>
Modified: qpid/branches/QPID-2519/doc/book/src/Qpid-Java-FAQ.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/doc/book/src/Qpid-Java-FAQ.xml?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/doc/book/src/Qpid-Java-FAQ.xml (original)
+++ qpid/branches/QPID-2519/doc/book/src/Qpid-Java-FAQ.xml Fri Oct 21 14:42:12 2011
@@ -736,35 +736,6 @@ amqj.logging.level
</para>
<!--h3--></section>
- <section role="h3" id="QpidJavaFAQ-HowdoIuseanInVMBrokerformyowntests-3F"><title>
- How do I
- use an InVM Broker for my own tests?
- </title>
-
- <para>
- I would take a look at the testPassiveTTL in
- <ulink url="https://svn.apache.org/repos/asf/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/TimeToLiveTest.java">TimeToLiveTest.java</ulink>
- </para><para>
- The setUp and tearDown methods show how to correctly start up a
- broker for InVM testing. If you write your tests using a file for
- the JNDI you can then very easily swap between running your tests
- InVM and against a real broker.
- </para><para>
- See our <xref linkend="How-to-Use-JNDI"/> on how to confgure it
- </para><para>
- Basically though you just need to set two System Properites:
- </para><para>
- java.naming.factory.initial =
- org.apache.qpid.jndi.PropertiesFileInitialContextFactory
- java.naming.provider.url = <your JNDI file>
- </para><para>
- and call getInitialContext() in your code.
- </para><para>
- You will of course need to have the broker libraries on your
- class path for this to run.
- </para>
-<!--h3--></section>
-
<section role="h3" id="QpidJavaFAQ-HowcanIinspectthecontentsofmyMessageStore-3F"><title>
How
can I inspect the contents of my MessageStore?
@@ -907,31 +878,6 @@ java.lang.NullPointerException
</para>
<!--h3--></section>
- <section role="h3" id="QpidJavaFAQ-Clientkeepsthrowing-27Serverdidnotrespondinatimelyfashion-27-5Cerrorcode408-3ARequestTimeout-5C."><title>
- Client keeps throwing 'Server did not respond in a timely
- fashion' [error code 408: Request Timeout].
- </title>
-
- <para>
- Certain operations wait for a response from the Server. One such
- operations is commit. If the server does not respond to the
- commit request within a set time a Request Timeout [error code:
- 408] exception is thrown (Server did not respond in a timely
- fashion). This is to ensure that a server that has hung does not
- cause the client process to be come unresponsive.
- </para><para>
- However, it is possible that the server just needs a long time to
- process a give request. For example, sending a large persistent
- message when using a persistent store will take some time to a)
- Transfer accross the network and b) to be fully written to disk.
- </para><para>
- These situations require that the default timeout value be
- increased. A cilent <xref linkend="qpid_System-Properties"/> 'amqj.default_syncwrite_timeout' can be set
- on the client to increase the wait time. The default in 0.5 is
- 30000 (30s).
- </para>
-<!--h3--></section>
-
<section role="h3" id="QpidJavaFAQ-CanauseTCPKEEPALIVEorAMQPheartbeatingtokeepmyconnectionopen-3F"><title>
Can a use TCP_KEEPALIVE or AMQP heartbeating to keep my
connection open?
Modified: qpid/branches/QPID-2519/doc/book/src/Security.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/doc/book/src/Security.xml?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/doc/book/src/Security.xml (original)
+++ qpid/branches/QPID-2519/doc/book/src/Security.xml Fri Oct 21 14:42:12 2011
@@ -1,5 +1,25 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
<section id="chap-Messaging_User_Guide-Security">
<title>Security</title>
<para>
Modified: qpid/branches/QPID-2519/doc/book/src/System-Properties.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/doc/book/src/System-Properties.xml?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/doc/book/src/System-Properties.xml (original)
+++ qpid/branches/QPID-2519/doc/book/src/System-Properties.xml Fri Oct 21 14:42:12 2011
@@ -135,7 +135,7 @@
<varlistentry>
- <term>amqj.default_syncwrite_timeout</term>
+ <term>qpid.sync_op_timeout</term>
<listitem>
<variablelist>
<varlistentry>
@@ -144,12 +144,11 @@
</varlistentry>
<varlistentry>
<term>Default</term>
- <listitem><para>30000</para></listitem>
+ <listitem><para>60000</para></listitem>
</varlistentry>
</variablelist>
- <para> The number length of time in millisecond to wait
- for a synchronous write to complete.
- </para>
+ <para>The length of time (in milliseconds) to wait for a synchronous operation to complete.
+ For compatibility with older clients, the synonym amqj.default_syncwrite_timeout is supported.</para>
</listitem>
</varlistentry>
@@ -193,7 +192,7 @@
<varlistentry>
- <term>amqj.tcpNoDelay</term>
+ <term>amqj.tcp_nodelay</term>
<listitem>
<variablelist>
<varlistentry>
@@ -211,65 +210,6 @@
</varlistentry>
<varlistentry>
- <term>amqj.sendBufferSize</term>
- <listitem>
- <variablelist>
- <varlistentry>
- <term>integer</term>
- <listitem><para>Boolean</para></listitem>
- </varlistentry>
- <varlistentry>
- <term>Default</term>
- <listitem><para>32768</para></listitem>
- </varlistentry>
- </variablelist>
- <para>This is the default buffer sized created by Mina.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>amqj.receiveBufferSize</term>
- <listitem>
- <variablelist>
- <varlistentry>
- <term>Type</term>
- <listitem><para>integer</para></listitem>
- </varlistentry>
- <varlistentry>
- <term>Default</term>
- <listitem><para>32768</para></listitem>
- </varlistentry>
- </variablelist>
- <para>This is the default buffer sized created by Mina.
- </para>
- </listitem>
- </varlistentry>
-
-
- <varlistentry>
- <term>amqj.protocolprovider.class</term>
- <listitem>
- <variablelist>
- <varlistentry>
- <term>Type</term>
- <listitem><para>String</para></listitem>
- </varlistentry>
- <varlistentry>
- <term>Default</term>
- <listitem><para>org.apache.qpid.server.protocol.AMQPFastProtocolHandler</para></listitem>
- </varlistentry>
- </variablelist>
- <para> This specifies the default IoHandlerAdapter that
- represents the InVM broker. The IoHandlerAdapter must have
- a constructor that takes a single Integer that represents
- the InVM port number.
- </para>
- </listitem>
- </varlistentry>
-
-
- <varlistentry>
<term>amqj.protocol.logging.level</term>
<listitem>
<variablelist>
Modified: qpid/branches/QPID-2519/doc/website/README.txt
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/doc/website/README.txt?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/doc/website/README.txt (original)
+++ qpid/branches/QPID-2519/doc/website/README.txt Fri Oct 21 14:42:12 2011
@@ -1,26 +1,10 @@
-This is the source directory for creating web pages for the Qpid web
-site.
+To edit the website, check out the /site repo area:
-The template used for all pages (template.html), stylesheet
-(style.css), and images are in the ./template directory.
+ svn co https://svn.apache.org/repos/asf/qpid/site
-The tools directory contains a very simple Python script (wrap) that
-combines a template and content to create static html pages. Content
-should be written in XHTML, with one <div/> element at the root - see
-./content/home.html for an example.
+The HTML files for the site reside in the docs directory, where a README
+can be found to describe the process of adding new content.
-Use wrap like this:
+It is no longer necessary to generate the main website pages, the live files
+are now edited directly, and are deployed to the web server after check in.
-$ tools/wrap template/template.html content/<filename> build/<filename>
-
-Content for the main pages should be check into the content
-directory. Content for documentation is created in the ../book
-directory.
-
-To publish generated content, check out the website repo:
-
-$ svn co https://svn.apache.org/repos/asf/qpid/site/docs
-
-Copy generated content (NOT the source!) into the website repo, add it
-using $ svn add, and commit it. When it is committed, it appears on
-the website.
Modified: qpid/branches/QPID-2519/extras/qmf/setup.py
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/extras/qmf/setup.py?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/extras/qmf/setup.py (original)
+++ qpid/branches/QPID-2519/extras/qmf/setup.py Fri Oct 21 14:42:12 2011
@@ -20,10 +20,10 @@
from distutils.core import setup
setup(name="qpid-qmf",
- version="0.9",
+ version="0.13",
author="Apache Qpid",
author_email="dev@qpid.apache.org",
- packages=["qmf", "qmf2", "qmf2.tests"],
+ packages=["qmf"],
package_dir={"": "src/py"},
url="http://qpid.apache.org/",
license="Apache Software License",
Modified: qpid/branches/QPID-2519/extras/qmf/src/py/qmf/console.py
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/extras/qmf/src/py/qmf/console.py?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/extras/qmf/src/py/qmf/console.py (original)
+++ qpid/branches/QPID-2519/extras/qmf/src/py/qmf/console.py Fri Oct 21 14:42:12 2011
@@ -107,8 +107,8 @@ class Console:
# BrokerURL
#===================================================================================================
class BrokerURL(URL):
- def __init__(self, text):
- URL.__init__(self, text)
+ def __init__(self, *args, **kwargs):
+ URL.__init__(self, *args, **kwargs)
if self.port is None:
if self.scheme == URL.AMQPS:
self.port = 5671
@@ -122,7 +122,7 @@ class BrokerURL(URL):
self.authPass = str(self.password)
def name(self):
- return self.host + ":" + str(self.port)
+ return str(self)
def match(self, host, port):
return socket.getaddrinfo(self.host, self.port)[0][4] == socket.getaddrinfo(host, port)[0][4]
@@ -359,8 +359,8 @@ class Object(object):
for arg in method.arguments:
if arg.dir.find("I") != -1:
count += 1
- if count != len(args):
- raise Exception("Incorrect number of arguments: expected %d, got %d" % (count, len(args)))
+ if count != len(args) + len(kwargs):
+ raise Exception("Incorrect number of arguments: expected %d, got %d" % (count, len(args) + len(kwargs)))
if self._agent.isV2:
#
@@ -372,7 +372,10 @@ class Object(object):
argMap = {}
for arg in method.arguments:
if arg.dir.find("I") != -1:
- argMap[arg.name] = args[aIdx]
+ if aIdx < len(args):
+ argMap[arg.name] = args[aIdx]
+ else:
+ argMap[arg.name] = kwargs[arg.name]
aIdx += 1
call['_arguments'] = argMap
@@ -439,6 +442,10 @@ class Object(object):
else:
sync = True
+ # Remove special "meta" kwargs before handing to _sendMethodRequest() to process
+ if "_timeout" in kwargs: del kwargs["_timeout"]
+ if "_async" in kwargs: del kwargs["_async"]
+
seq = self._sendMethodRequest(name, args, kwargs, sync, timeout)
if seq:
if not sync:
@@ -638,7 +645,10 @@ class Session:
Will raise an exception if the session is not managing the connection and
the connection setup to the broker fails.
"""
- url = BrokerURL(target)
+ if isinstance(target, BrokerURL):
+ url = target
+ else:
+ url = BrokerURL(target)
broker = Broker(self, url.host, url.port, mechanisms, url.authName, url.authPass,
ssl = url.scheme == URL.AMQPS, connTimeout=timeout)
@@ -1211,11 +1221,22 @@ class Session:
try:
agentName = ah["qmf.agent"]
values = content["_values"]
- timestamp = values["_timestamp"]
- interval = values["_heartbeat_interval"]
+
+ if '_timestamp' in values:
+ timestamp = values["_timestamp"]
+ else:
+ timestamp = values['timestamp']
+
+ if '_heartbeat_interval' in values:
+ interval = values['_heartbeat_interval']
+ else:
+ interval = values['heartbeat_interval']
+
epoch = 0
if '_epoch' in values:
epoch = values['_epoch']
+ elif 'epoch' in values:
+ epoch = values['epoch']
except Exception,e:
return
@@ -2328,18 +2349,19 @@ class Broker(Thread):
def getUrl(self):
""" """
- return "%s:%d" % (self.host, self.port)
+ return BrokerURL(host=self.host, port=self.port)
def getFullUrl(self, noAuthIfGuestDefault=True):
""" """
- ssl = ""
if self.ssl:
- ssl = "s"
- auth = "%s/%s@" % (self.authUser, self.authPass)
+ scheme = "amqps"
+ else:
+ scheme = "amqp"
if self.authUser == "" or \
(noAuthIfGuestDefault and self.authUser == "guest" and self.authPass == "guest"):
- auth = ""
- return "amqp%s://%s%s:%d" % (ssl, auth, self.host, self.port or 5672)
+ return BrokerURL(scheme=scheme, host=self.host, port=(self.port or 5672))
+ else:
+ return BrokerURL(scheme=scheme, user=self.authUser, password=self.authPass, host=self.host, port=(self.port or 5672))
def __repr__(self):
if self.connected:
@@ -2416,7 +2438,7 @@ class Broker(Thread):
if uid.__class__ == tuple and len(uid) == 2:
self.saslUser = uid[1]
else:
- self.saslUser = None
+ self.saslUser = self.authUser
# prevent topic queues from filling up (and causing the agents to
# disconnect) by discarding the oldest queued messages when full.
@@ -3273,6 +3295,7 @@ class Agent:
self.lock.acquire()
try:
self.contextMap.pop(sequence)
+ self.seqMgr._release(sequence)
except KeyError:
pass # @todo - shouldn't happen, log a warning.
finally:
Modified: qpid/branches/QPID-2519/extras/sasl/bootstrap
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/extras/sasl/bootstrap?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/extras/sasl/bootstrap (original)
+++ qpid/branches/QPID-2519/extras/sasl/bootstrap Fri Oct 21 14:42:12 2011
@@ -22,7 +22,7 @@ aclocal -I m4
autoheader
libtoolize --automake
-automake
+automake --add-missing
autoconf
if [ "$1" = "-build" -o "$1" = "--build" ] ; then
Modified: qpid/branches/QPID-2519/extras/sasl/configure.ac
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/extras/sasl/configure.ac?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/extras/sasl/configure.ac (original)
+++ qpid/branches/QPID-2519/extras/sasl/configure.ac Fri Oct 21 14:42:12 2011
@@ -23,7 +23,6 @@ AC_CONFIG_HEADERS([config.h])
AC_PROG_CC_STDC
AM_PROG_CC_C_O
AC_PROG_CXX
-AC_USE_SYSTEM_EXTENSIONS
AC_LANG([C++])
# Check for optional use of help2man
Modified: qpid/branches/QPID-2519/extras/sasl/python/Makefile.am
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/extras/sasl/python/Makefile.am?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/extras/sasl/python/Makefile.am (original)
+++ qpid/branches/QPID-2519/extras/sasl/python/Makefile.am Fri Oct 21 14:42:12 2011
@@ -29,8 +29,7 @@ BUILT_SOURCES = $(generated_file_list)
$(generated_file_list): python.i $(top_srcdir)/src/saslwrapper.i
$(SWIG) -c++ -python -Wall -I/usr/include $(INCLUDES) -o saslwrapper.cpp $(srcdir)/python.i
-pylibdir = $(PYTHON_LIB)
-python_PYTHON = saslwrapper.py
+pyexec_PYTHON = saslwrapper.py
pyexec_LTLIBRARIES = _saslwrapper.la
_saslwrapper_la_LDFLAGS = -avoid-version -module -shared
Modified: qpid/branches/QPID-2519/extras/sasl/ruby/Makefile.am
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/extras/sasl/ruby/Makefile.am?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/extras/sasl/ruby/Makefile.am (original)
+++ qpid/branches/QPID-2519/extras/sasl/ruby/Makefile.am Fri Oct 21 14:42:12 2011
@@ -35,7 +35,7 @@ rubylibarch_LTLIBRARIES = saslwrapper.la
saslwrapper_la_LDFLAGS = -avoid-version -module -shared ".$(RUBY_DLEXT)"
saslwrapper_la_LIBADD = $(RUBY_LIBS) $(top_builddir)/src/libsaslwrapper.la -lsasl2
-saslwrapper_la_CXXFLAGS = $(INCLUDES) -I$(RUBY_INC) -I$(RUBY_INC_ARCH)
+saslwrapper_la_CXXFLAGS = $(INCLUDES) -I$(RUBY_INC) -I$(RUBY_INC_ARCH) -fno-strict-aliasing
nodist_saslwrapper_la_SOURCES = saslwrapper.cpp
CLEANFILES = $(generated_file_list)
Modified: qpid/branches/QPID-2519/extras/sasl/src/Makefile.am
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/extras/sasl/src/Makefile.am?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/extras/sasl/src/Makefile.am (original)
+++ qpid/branches/QPID-2519/extras/sasl/src/Makefile.am Fri Oct 21 14:42:12 2011
@@ -24,6 +24,7 @@ nobase_include_HEADERS = ../include/sasl
lib_LTLIBRARIES = libsaslwrapper.la
libsaslwrapper_la_SOURCES = cyrus/saslwrapper.cpp
+libsaslwrapper_la_CXXFLAGS = -fno-strict-aliasing
# Library Version Information:
#
Modified: qpid/branches/QPID-2519/gentools/build.xml
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/gentools/build.xml?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/gentools/build.xml (original)
+++ qpid/branches/QPID-2519/gentools/build.xml Fri Oct 21 14:42:12 2011
@@ -25,7 +25,7 @@
<property name="java.target" value="1.5"/>
<target name="compile">
- <javac srcdir="${src}" source="${java.source}" target="${java.target}" fork="true" debug="on">
+ <javac srcdir="${src}" source="${java.source}" target="${java.target}" fork="true" debug="on" includeantruntime="false">
<classpath>
<fileset dir="${src}/../lib">
<include name="**/*.jar"/>
Propchange: qpid/branches/QPID-2519/java/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Oct 21 14:42:12 2011
@@ -1,3 +1,4 @@
+build.overrides
blaze.ipr
blaze.iws
build
Propchange: qpid/branches/QPID-2519/java/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 21 14:42:12 2011
@@ -2,4 +2,6 @@
/qpid/branches/0.5.x-dev/qpid/java:886720-886722,887145,892761,894875,916304,916325,930288,931179
/qpid/branches/java-broker-0-10/qpid/java:795950-829653
/qpid/branches/java-network-refactor/qpid/java:805429-821809
+/qpid/branches/qpid-2935/qpid/java:1061302-1072333
/qpid/trunk/qpid:796646-796653
+/qpid/trunk/qpid/java:1072051-1187351
Propchange: qpid/branches/QPID-2519/java/broker/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 21 14:42:12 2011
@@ -2,4 +2,5 @@
/qpid/branches/java-broker-0-10/qpid/java/broker:795950-829653
/qpid/branches/java-network-refactor/qpid/java/broker:805429-821809
/qpid/branches/jmx_mc_gsoc09/qpid/java/broker:787599
-/qpid/trunk/qpid/java/broker:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875,748561,748591,748641,748680,748686,749149,749282,749285,749315,749340,749572,753219-753220,753253,754934,754958,755256,757258,757270,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790
+/qpid/branches/qpid-2935/qpid/java/broker:1061302-1072333
+/qpid/trunk/qpid/java/broker:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875,748561,748591,748641,748680,748686,749149,749282,749285,749315,749340,749572,753219-753220,753253,754934,754958,755256,757258,757270,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790,1072051-1187351
Modified: qpid/branches/QPID-2519/java/broker-plugins/access-control/MANIFEST.MF
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-2519/java/broker-plugins/access-control/MANIFEST.MF?rev=1187375&r1=1187374&r2=1187375&view=diff
==============================================================================
--- qpid/branches/QPID-2519/java/broker-plugins/access-control/MANIFEST.MF (original)
+++ qpid/branches/QPID-2519/java/broker-plugins/access-control/MANIFEST.MF Fri Oct 21 14:42:12 2011
@@ -35,6 +35,7 @@ Import-Package: org.apache.qpid,
org.apache.log4j;version=1.0.0,
javax.management;version=1.0.0,
javax.management.openmbean;version=1.0.0,
+ javax.security.auth;version=1.0.0,
org.osgi.util.tracker;version=1.0.0,
org.osgi.framework;version=1.3
Private-Package: org.apache.qpid.server.security.access.config,
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org