summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2012-06-28 12:38:36 +0000
committerRobert Gemmell <robbie@apache.org>2012-06-28 12:38:36 +0000
commit384e192d7a5029b062f0016ed1739609bcc43498 (patch)
tree131451fc92f9c87e775847b448bad74ac0081d5d
parentb2c74d9af14e9383c06cfee390fe21b1161ea8d9 (diff)
parentd5a5322d7c9644308a159d6f5d1f24c6e289bf1f (diff)
downloadqpid-python-384e192d7a5029b062f0016ed1739609bcc43498.tar.gz
merge changes from trunk up to r1354912
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-config-and-management@1354981 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/include/qmf/BrokerImportExport.h (renamed from qpid/cpp/src/qmf/BrokerImportExport.h)0
-rw-r--r--qpid/cpp/src/CMakeLists.txt1
-rw-r--r--qpid/cpp/src/qmf.mk4
-rw-r--r--qpid/cpp/src/qpid/broker/windows/SaslAuthenticator.cpp2
-rwxr-xr-xqpid/cpp/src/tests/ha_tests.py7
-rw-r--r--qpid/cpp/src/tests/logging.cpp2
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterWhiteboxTest.java15
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java22
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/txn/DtxBranch.java4
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/txn/DtxRegistry.java7
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java31
-rw-r--r--qpid/tests/src/py/qpid_tests/broker_0_10/qmf_events.py4
-rw-r--r--qpid/tests/src/py/qpid_tests/broker_0_10/query.py2
-rwxr-xr-xqpid/tools/src/py/qpid-ha35
14 files changed, 75 insertions, 61 deletions
diff --git a/qpid/cpp/src/qmf/BrokerImportExport.h b/qpid/cpp/include/qmf/BrokerImportExport.h
index ee05788063..ee05788063 100644
--- a/qpid/cpp/src/qmf/BrokerImportExport.h
+++ b/qpid/cpp/include/qmf/BrokerImportExport.h
diff --git a/qpid/cpp/src/CMakeLists.txt b/qpid/cpp/src/CMakeLists.txt
index a9b2c6bdb2..b65c2b206a 100644
--- a/qpid/cpp/src/CMakeLists.txt
+++ b/qpid/cpp/src/CMakeLists.txt
@@ -1223,6 +1223,7 @@ set (qmf_SOURCES
set (qmf_HEADERS
../include/qpid/agent/ManagementAgent.h
../include/qpid/agent/QmfAgentImportExport.h
+ ../include/qmf/BrokerImportExport.h
)
add_msvc_version (qmf library dll)
diff --git a/qpid/cpp/src/qmf.mk b/qpid/cpp/src/qmf.mk
index 9b5df6c808..6a4bce4087 100644
--- a/qpid/cpp/src/qmf.mk
+++ b/qpid/cpp/src/qmf.mk
@@ -30,7 +30,8 @@ lib_LTLIBRARIES += \
#
QMF_API = \
../include/qpid/agent/ManagementAgent.h \
- ../include/qpid/agent/QmfAgentImportExport.h
+ ../include/qpid/agent/QmfAgentImportExport.h \
+ ../include/qmf/BrokerImportExport.h
#
# Public headers for the QMF2 API
@@ -96,7 +97,6 @@ libqmf2_la_SOURCES = \
qmf/AgentSessionImpl.h \
qmf/AgentSubscription.cpp \
qmf/AgentSubscription.h \
- qmf/BrokerImportExport.h \
qmf/ConsoleEvent.cpp \
qmf/ConsoleEventImpl.h \
qmf/ConsoleSession.cpp \
diff --git a/qpid/cpp/src/qpid/broker/windows/SaslAuthenticator.cpp b/qpid/cpp/src/qpid/broker/windows/SaslAuthenticator.cpp
index 1d026f730e..40e74be018 100644
--- a/qpid/cpp/src/qpid/broker/windows/SaslAuthenticator.cpp
+++ b/qpid/cpp/src/qpid/broker/windows/SaslAuthenticator.cpp
@@ -81,7 +81,7 @@ void SaslAuthenticator::fini(void)
return;
}
-std::auto_ptr<SaslAuthenticator> SaslAuthenticator::createAuthenticator(Connection& c, bool)
+std::auto_ptr<SaslAuthenticator> SaslAuthenticator::createAuthenticator(Connection& c)
{
if (c.getBroker().getOptions().auth) {
return std::auto_ptr<SaslAuthenticator>(new SspiAuthenticator(c));
diff --git a/qpid/cpp/src/tests/ha_tests.py b/qpid/cpp/src/tests/ha_tests.py
index 4d07d386f9..ca7ee31f41 100755
--- a/qpid/cpp/src/tests/ha_tests.py
+++ b/qpid/cpp/src/tests/ha_tests.py
@@ -67,7 +67,9 @@ class HaBroker(Broker):
def __str__(self): return Broker.__str__(self)
- def qpid_ha(self, args): self.qpid_ha_script.main(["", "-b", self.host_port()]+args)
+ # FIXME aconway 2012-06-26: check exit status from script.
+ def qpid_ha(self, args):
+ self.qpid_ha_script.main_except(["", "-b", self.host_port()]+args)
def promote(self): self.qpid_ha(["promote"])
def set_client_url(self, url): self.qpid_ha(["set", "--public-url", url])
@@ -164,7 +166,8 @@ class HaCluster(object):
def update_urls(self):
self.url = ",".join([b.host_port() for b in self])
- for b in self: b.set_brokers_url(self.url)
+ if len(self) > 1: # No failover addresses on a 1 cluster.
+ for b in self: b.set_brokers_url(self.url)
def connect(self, i):
"""Connect with reconnect_urls"""
diff --git a/qpid/cpp/src/tests/logging.cpp b/qpid/cpp/src/tests/logging.cpp
index c408141d6f..a29714c002 100644
--- a/qpid/cpp/src/tests/logging.cpp
+++ b/qpid/cpp/src/tests/logging.cpp
@@ -375,7 +375,7 @@ QPID_AUTO_TEST_CASE(testQuoteNonPrintable) {
char s[] = "null\0tab\tspace newline\nret\r\x80\x99\xff";
string str(s, sizeof(s));
- QPID_LOG(critical, str);
+ QPID_LOG_CAT(critical, test, str);
ifstream log("logging.tmp");
string line;
getline(log, line, '\0');
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterWhiteboxTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterWhiteboxTest.java
index 88f79e8823..408643b98a 100644
--- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterWhiteboxTest.java
+++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterWhiteboxTest.java
@@ -20,7 +20,6 @@
package org.apache.qpid.server.store.berkeleydb;
import java.io.File;
-import java.io.IOException;
import java.util.Set;
import javax.jms.Connection;
@@ -35,8 +34,6 @@ import org.apache.log4j.Logger;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
import org.apache.qpid.url.URLSyntaxException;
-import com.sleepycat.je.rep.ReplicationConfig;
-
/**
* The HA white box tests test the BDB cluster where the test retains the knowledge of the
* individual test nodes. It uses this knowledge to examine the nodes to ensure that they
@@ -103,7 +100,7 @@ public class HAClusterWhiteboxTest extends QpidBrokerTestCase
final Connection initialConnection = getConnectionToNodeInCluster();
assertNotNull(initialConnection);
- killConnectionBroker(initialConnection);
+ closeConnectionAndKillBroker(initialConnection);
final Connection subsequentConnection = getConnectionToNodeInCluster();
assertNotNull(subsequentConnection);
@@ -119,7 +116,7 @@ public class HAClusterWhiteboxTest extends QpidBrokerTestCase
final Connection initialConnection = getConnectionToNodeInCluster();
assertNotNull(initialConnection);
- killConnectionBroker(initialConnection);
+ closeConnectionAndKillBroker(initialConnection);
final Connection subsequentConnection = getConnectionToNodeInCluster();
assertNotNull(subsequentConnection);
@@ -139,6 +136,7 @@ public class HAClusterWhiteboxTest extends QpidBrokerTestCase
assertNotNull(connection);
final int brokerPortNumber = _clusterCreator.getBrokerPortNumberFromConnection(connection);
+ connection.close();
_clusterCreator.stopNode(brokerPortNumber);
_clusterCreator.startNode(brokerPortNumber);
@@ -157,7 +155,7 @@ public class HAClusterWhiteboxTest extends QpidBrokerTestCase
populateBrokerWithData(initialConnection, inbuiltExchangeQueueUrl, customExchangeQueueUrl);
- killConnectionBroker(initialConnection);
+ closeConnectionAndKillBroker(initialConnection);
final Connection subsequentConnection = getConnectionToNodeInCluster();
@@ -229,10 +227,11 @@ public class HAClusterWhiteboxTest extends QpidBrokerTestCase
return connection;
}
- private void killConnectionBroker(final Connection initialConnection) throws IOException,
- InterruptedException
+ private void closeConnectionAndKillBroker(final Connection initialConnection) throws Exception
{
final int initialPortNumber = _clusterCreator.getBrokerPortNumberFromConnection(initialConnection);
+ initialConnection.close();
+
killBroker(initialPortNumber); // kill awaits the death of the child
}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java
index 417244d3f9..9914485638 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java
@@ -20,19 +20,11 @@
*/
package org.apache.qpid.server.transport;
-import java.util.Collections;
-import java.util.HashSet;
-import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CHANNEL_FORMAT;
-import org.apache.qpid.server.message.InboundMessage;
-import org.apache.qpid.server.message.MessageMetaData_0_10;
-import org.apache.qpid.server.message.MessageTransferMessage;
-import org.apache.qpid.server.txn.RollbackOnlyDtxException;
-import org.apache.qpid.server.txn.TimeoutDtxException;
-import static org.apache.qpid.util.Serial.gt;
-
import java.security.Principal;
import java.text.MessageFormat;
import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
@@ -46,9 +38,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
-
import javax.security.auth.Subject;
-
import org.apache.qpid.AMQException;
import org.apache.qpid.AMQStoreException;
import org.apache.qpid.protocol.AMQConstant;
@@ -64,7 +54,10 @@ import org.apache.qpid.server.logging.actors.CurrentActor;
import org.apache.qpid.server.logging.actors.GenericActor;
import org.apache.qpid.server.logging.messages.ChannelMessages;
import org.apache.qpid.server.logging.subjects.ChannelLogSubject;
+import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.message.MessageMetaData_0_10;
import org.apache.qpid.server.message.MessageReference;
+import org.apache.qpid.server.message.MessageTransferMessage;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.server.protocol.AMQSessionModel;
@@ -83,14 +76,19 @@ import org.apache.qpid.server.txn.IncorrectDtxStateException;
import org.apache.qpid.server.txn.JoinAndResumeDtxException;
import org.apache.qpid.server.txn.LocalTransaction;
import org.apache.qpid.server.txn.NotAssociatedDtxException;
+import org.apache.qpid.server.txn.RollbackOnlyDtxException;
import org.apache.qpid.server.txn.ServerTransaction;
import org.apache.qpid.server.txn.SuspendAndFailDtxException;
+import org.apache.qpid.server.txn.TimeoutDtxException;
import org.apache.qpid.server.txn.UnknownDtxBranchException;
import org.apache.qpid.server.virtualhost.VirtualHost;
import org.apache.qpid.transport.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CHANNEL_FORMAT;
+import static org.apache.qpid.util.Serial.gt;
+
public class ServerSession extends Session
implements AuthorizationHolder, SessionConfig,
AMQSessionModel, LogSubject, AsyncAutoCommitTransaction.FutureRecorder
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/DtxBranch.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/DtxBranch.java
index 3ac71fc6a6..900e2ef222 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/DtxBranch.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/DtxBranch.java
@@ -103,7 +103,7 @@ public class DtxBranch
_timeoutFuture.cancel(false);
}
_timeout = timeout;
- _expiration = timeout == 0 ? 0 : System.currentTimeMillis() + timeout;
+ _expiration = timeout == 0 ? 0 : System.currentTimeMillis() + (1000 * timeout);
if(_timeout == 0)
{
@@ -111,7 +111,7 @@ public class DtxBranch
}
else
{
- _timeoutFuture = _vhost.scheduleTask(_timeout, new Runnable()
+ _timeoutFuture = _vhost.scheduleTask(1000*_timeout, new Runnable()
{
public void run()
{
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/DtxRegistry.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/DtxRegistry.java
index e3bc076d72..117beb82ef 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/DtxRegistry.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/DtxRegistry.java
@@ -37,7 +37,7 @@ public class DtxRegistry
private static final class ComparableXid
{
private final Xid _xid;
-
+
private ComparableXid(Xid xid)
{
_xid = xid;
@@ -58,7 +58,7 @@ public class DtxRegistry
ComparableXid that = (ComparableXid) o;
return compareBytes(_xid.getBranchId(), that._xid.getBranchId())
- && compareBytes(_xid.getGlobalId(), that._xid.getGlobalId());
+ && compareBytes(_xid.getGlobalId(), that._xid.getGlobalId());
}
private static boolean compareBytes(byte[] a, byte[] b)
@@ -94,7 +94,7 @@ public class DtxRegistry
return result;
}
}
-
+
public synchronized DtxBranch getBranch(Xid xid)
{
return _branches.get(new ComparableXid(xid));
@@ -318,6 +318,7 @@ public class DtxRegistry
branch.disassociateSession(session);
}
}
+
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java
index e940a73bbb..2ba509e96a 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java
@@ -1,6 +1,6 @@
package org.apache.qpid.test.unit.xa;
/*
- *
+ *
* 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
@@ -8,16 +8,16 @@ package org.apache.qpid.test.unit.xa;
* 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.
- *
+ *
*/
@@ -344,7 +344,7 @@ public class FaultTest extends AbstractXATestCase
{
assertEquals("Wrong error code: ", XAException.XAER_PROTO, e.errorCode);
}
- }
+ }
/**
* Strategy:
@@ -366,27 +366,28 @@ public class FaultTest extends AbstractXATestCase
/**
* Strategy:
* Check that a transaction timeout as expected
- * - set timeout to 10ms
- * - sleep 1000ms
+ * - set timeout to 1s
+ * - sleep 1500ms
* - call end and check that the expected exception is thrown
*/
public void testTransactionTimeout() throws Exception
{
+ _xaResource.setTransactionTimeout(1);
+
Xid xid = getNewXid();
try
{
_xaResource.start(xid, XAResource.TMNOFLAGS);
- assertEquals("Wrong timeout", _xaResource.getTransactionTimeout(), 0);
- _xaResource.setTransactionTimeout(10);
- Thread.sleep(1000);
+ Thread.sleep(1500);
_xaResource.end(xid, XAResource.TMSUCCESS);
+ fail("Timeout expected ");
}
catch (XAException e)
{
assertEquals("Wrong error code: ", XAException.XA_RBTIMEOUT, e.errorCode);
}
}
-
+
/**
* Strategy:
* Set the transaction timeout to 1000
@@ -394,18 +395,18 @@ public class FaultTest extends AbstractXATestCase
public void testTransactionTimeoutAfterCommit() throws Exception
{
Xid xid = getNewXid();
-
+
_xaResource.start(xid, XAResource.TMNOFLAGS);
_xaResource.setTransactionTimeout(1000);
assertEquals("Wrong timeout", 1000,_xaResource.getTransactionTimeout());
-
+
//_xaResource.prepare(xid);
_xaResource.end(xid, XAResource.TMSUCCESS);
_xaResource.commit(xid, true);
-
+
_xaResource.setTransactionTimeout(2000);
assertEquals("Wrong timeout", 2000,_xaResource.getTransactionTimeout());
-
+
xid = getNewXid();
_xaResource.start(xid, XAResource.TMNOFLAGS);
assertEquals("Wrong timeout", 2000, _xaResource.getTransactionTimeout());
diff --git a/qpid/tests/src/py/qpid_tests/broker_0_10/qmf_events.py b/qpid/tests/src/py/qpid_tests/broker_0_10/qmf_events.py
index ac56670044..7ab7b0a1ac 100644
--- a/qpid/tests/src/py/qpid_tests/broker_0_10/qmf_events.py
+++ b/qpid/tests/src/py/qpid_tests/broker_0_10/qmf_events.py
@@ -65,7 +65,7 @@ class EventTests (Base):
snd = ssn2.sender("myq; {create:always, node:{x-declare:{auto-delete:True, exclusive:True}}}")
ssn2.close()
- event = helper.event(rcv.fetch(timeout=1))
+ event = helper.event(rcv.fetch(timeout=5))
assert event.name, "org_apache_qpid_broker:queueDelete"
assert event.qName, "myq"
@@ -77,7 +77,7 @@ class EventTests (Base):
rcv2 = self.ssn.receiver("myq; {create:always, node:{x-declare:{auto-delete:True}}}")
rcv2.close()
- event = helper.event(rcv.fetch(timeout=1))
+ event = helper.event(rcv.fetch(timeout=5))
assert event.name, "org_apache_qpid_broker:queueDelete"
assert event.qName, "myq"
diff --git a/qpid/tests/src/py/qpid_tests/broker_0_10/query.py b/qpid/tests/src/py/qpid_tests/broker_0_10/query.py
index d57e964982..fd741821d5 100644
--- a/qpid/tests/src/py/qpid_tests/broker_0_10/query.py
+++ b/qpid/tests/src/py/qpid_tests/broker_0_10/query.py
@@ -26,7 +26,7 @@ class QueryTests(TestBase010):
def test_queue_query(self):
session = self.session
- session.queue_declare(queue="my-queue", exclusive=True)
+ session.queue_declare(queue="my-queue", exclusive=True, auto_delete=True)
result = session.queue_query(queue="my-queue")
self.assertEqual("my-queue", result.queue)
diff --git a/qpid/tools/src/py/qpid-ha b/qpid/tools/src/py/qpid-ha
index 36f08ba397..38609eef43 100755
--- a/qpid/tools/src/py/qpid-ha
+++ b/qpid/tools/src/py/qpid-ha
@@ -32,6 +32,10 @@ except ImportError:
# QMF address for the HA broker object.
HA_BROKER = "org.apache.qpid.ha:habroker:ha-broker"
+class ExitStatus(Exception):
+ """Raised if a command want's a non-0 exit status from the script"""
+ def __init__(self, status): self.status = status
+
class Command:
commands = {}
@@ -54,7 +58,7 @@ class Command:
qmf_broker = BrokerAgent(connection)
ha_broker = qmf_broker.getHaBroker()
if not ha_broker: raise Exception("HA module is not loaded on broker at %s"%broker)
- try: return self.do_execute(qmf_broker, ha_broker, opts, args)
+ try: self.do_execute(qmf_broker, ha_broker, opts, args)
finally: connection.close()
def do_execute(self, qmf_broker, opts, args):
@@ -75,10 +79,10 @@ class StatusCmd(Command):
help="Don't print status but return 0 if it matches <status>, 1 otherwise")
def do_execute(self, qmf_broker, ha_broker, opts, args):
if opts.expect:
- if opts.expect != ha_broker.status: return 1
+ if opts.expect != ha_broker.status: raise ExitStatus(1)
else:
print ha_broker.status
- return 0
+
StatusCmd()
class ReplicateCmd(Command):
@@ -134,18 +138,25 @@ def find_command(args):
return Command.commands[arg]
return None
-def main(argv):
- try:
- args=argv[1:]
- if args and args[0] == "--help-all":
- for c in Command.commands.itervalues():
- c.op.print_help(); print
- return 1
+def main_except(argv):
+ """This version of main raises exceptions"""
+ args=argv[1:]
+ if args and args[0] == "--help-all":
+ for c in Command.commands.itervalues():
+ c.op.print_help(); print
+ else:
command = find_command(args)
if not command:
print_usage(os.path.basename(argv[0]));
- return 1;
- if command.execute(args): return 1
+ raise Exception("Command not found")
+ command.execute(args)
+
+def main(argv):
+ try:
+ main_except(argv)
+ return 0
+ except ExitStatus, e:
+ return e.status
except Exception, e:
print e
return 1