summaryrefslogtreecommitdiff
path: root/cpp/src/tests
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-11-04 19:52:49 +0000
committerAlan Conway <aconway@apache.org>2008-11-04 19:52:49 +0000
commiteda249ff22edb3726243da81ff48c82e4d88e872 (patch)
tree0939d790e6a1b0d86993c9c3804c1adaa369aeb8 /cpp/src/tests
parent5d2471636928eff8b8031237c54348db0d5c388d (diff)
downloadqpid-python-eda249ff22edb3726243da81ff48c82e4d88e872.tar.gz
constants.rb: generate type code constants for AMQP types. Useful with Array.
framing/Array: - added some std:::vector like functions & typedefs. - use TypeCode enums, human readable ostream << operator. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@711365 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests')
-rw-r--r--cpp/src/tests/FieldValue.cpp8
-rw-r--r--cpp/src/tests/cluster_test.cpp45
2 files changed, 49 insertions, 4 deletions
diff --git a/cpp/src/tests/FieldValue.cpp b/cpp/src/tests/FieldValue.cpp
index eacf098034..448f068107 100644
--- a/cpp/src/tests/FieldValue.cpp
+++ b/cpp/src/tests/FieldValue.cpp
@@ -24,17 +24,17 @@ QPID_AUTO_TEST_SUITE(FieldValueTestSuite)
using namespace qpid::framing;
-StringValue s("abc");
+Str16Value s("abc");
IntegerValue i(42);
//DecimalValue d(1234,2);
//FieldTableValue ft;
//EmptyValue e;
-QPID_AUTO_TEST_CASE(testStringValueEquals)
+QPID_AUTO_TEST_CASE(testStr16ValueEquals)
{
- BOOST_CHECK(StringValue("abc") == s);
- BOOST_CHECK(StringValue("foo") != s);
+ BOOST_CHECK(Str16Value("abc") == s);
+ BOOST_CHECK(Str16Value("foo") != s);
BOOST_CHECK(s != i);
BOOST_CHECK(s.convertsTo<std::string>() == true);
BOOST_CHECK(s.convertsTo<int>() == false);
diff --git a/cpp/src/tests/cluster_test.cpp b/cpp/src/tests/cluster_test.cpp
index eeedbf5ec5..d8f366009d 100644
--- a/cpp/src/tests/cluster_test.cpp
+++ b/cpp/src/tests/cluster_test.cpp
@@ -216,6 +216,51 @@ class Sender {
uint16_t channel;
};
+QPID_AUTO_TEST_CASE_EXPECTED_FAILURES(testTxTransaction, 1) {
+ ClusterFixture cluster(1, 1); // FIXME aconway 2008-11-04: local broker at index 1
+ Client c0(cluster[0], "c0");
+ c0.session.queueDeclare(arg::queue="q");
+ c0.session.messageTransfer(arg::content=Message("A", "q"));
+ c0.session.messageTransfer(arg::content=Message("B", "q"));
+
+ // Start a transaction that will commit.
+ Session commitSession = c0.connection.newSession("commit");
+ SubscriptionManager commitSubs(commitSession);
+ commitSession.txSelect();
+ commitSession.messageTransfer(arg::content=Message("a", "q"));
+ commitSession.messageTransfer(arg::content=Message("b", "q"));
+ BOOST_CHECK_EQUAL(commitSubs.get("q", TIME_SEC).getData(), "A");
+
+ // Start a transaction that will roll back.
+ Session rollbackSession = c0.connection.newSession("rollback");
+ SubscriptionManager rollbackSubs(rollbackSession);
+ rollbackSession.txSelect();
+ rollbackSession.messageTransfer(arg::content=Message("1", "q"));
+ BOOST_CHECK_EQUAL(rollbackSubs.get("q", TIME_SEC).getData(), "B");
+
+ BOOST_CHECK_EQUAL(c0.session.queueQuery("q").getMessageCount(), 0u);
+ // Add new member mid transaction.
+ cluster.add();
+ Client c1(cluster[1], "c1");
+
+ // More transactional work
+ BOOST_CHECK_EQUAL(c1.session.queueQuery("q").getMessageCount(), 0u);
+ rollbackSession.messageTransfer(arg::content=Message("2", "q"));
+ commitSession.messageTransfer(arg::content=Message("c", "q"));
+ rollbackSession.messageTransfer(arg::content=Message("3", "q"));
+
+ BOOST_CHECK_EQUAL(c1.session.queueQuery("q").getMessageCount(), 0u);
+ // Commit/roll back.
+ commitSession.txCommit();
+ rollbackSession.txRollback();
+ // Verify queue status: just the comitted messages
+ BOOST_CHECK_EQUAL(c1.session.queueQuery("q").getMessageCount(), 4u);
+ BOOST_CHECK_EQUAL(c1.subs.get("q", TIME_SEC).getData(), "B");
+ BOOST_CHECK_EQUAL(c1.subs.get("q", TIME_SEC).getData(), "a");
+ BOOST_CHECK_EQUAL(c1.subs.get("q", TIME_SEC).getData(), "b");
+ BOOST_CHECK_EQUAL(c1.subs.get("q", TIME_SEC).getData(), "c");
+}
+
QPID_AUTO_TEST_CASE(testUnsupported) {
ScopedSuppressLogging sl;
ClusterFixture cluster(1);