summaryrefslogtreecommitdiff
path: root/qpid/dotnet/Qpid.Integration.Tests/framework
diff options
context:
space:
mode:
authorAidan Skinner <aidan@apache.org>2009-12-03 23:55:48 +0000
committerAidan Skinner <aidan@apache.org>2009-12-03 23:55:48 +0000
commitde0e81996d63d8a8b7f92d835d2bbdeaf5cccae0 (patch)
tree8dbde527e8f656849ed83981359c8dcd2512395c /qpid/dotnet/Qpid.Integration.Tests/framework
parente769aed97fa119033e38d829be25135a4ea08a52 (diff)
downloadqpid-python-de0e81996d63d8a8b7f92d835d2bbdeaf5cccae0.tar.gz
Fix eol style property
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@886998 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/dotnet/Qpid.Integration.Tests/framework')
-rw-r--r--qpid/dotnet/Qpid.Integration.Tests/framework/Assertion.cs76
-rw-r--r--qpid/dotnet/Qpid.Integration.Tests/framework/Circuit.cs202
-rw-r--r--qpid/dotnet/Qpid.Integration.Tests/framework/FrameworkBaseCase.cs562
-rw-r--r--qpid/dotnet/Qpid.Integration.Tests/framework/Publisher.cs128
-rw-r--r--qpid/dotnet/Qpid.Integration.Tests/framework/Receiver.cs158
-rw-r--r--qpid/dotnet/Qpid.Integration.Tests/framework/TestClientDetails.cs168
-rw-r--r--qpid/dotnet/Qpid.Integration.Tests/framework/TestModel.cs1312
-rw-r--r--qpid/dotnet/Qpid.Integration.Tests/framework/sequencers/CircuitFactory.cs168
8 files changed, 1387 insertions, 1387 deletions
diff --git a/qpid/dotnet/Qpid.Integration.Tests/framework/Assertion.cs b/qpid/dotnet/Qpid.Integration.Tests/framework/Assertion.cs
index fba8253251..de12de6522 100644
--- a/qpid/dotnet/Qpid.Integration.Tests/framework/Assertion.cs
+++ b/qpid/dotnet/Qpid.Integration.Tests/framework/Assertion.cs
@@ -1,39 +1,39 @@
-/*
- *
- * 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.
- *
- */
-namespace Apache.Qpid.Integration.Tests.framework
-{
- /// <summary>
- /// Assertion models an assertion on a test <see cref="Circuit"/>.
- ///
- /// <p/><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities
- /// <tr><td> Indicate whether or not the assertion passes when applied.
- /// </table>
- /// </summary>
- public interface Assertion
- {
- /// <summary>
- /// Applies the assertion.
- /// </summary>
- /// <return> <tt>true</tt> if the assertion passes, <tt>false</tt> if it fails. </return>
- bool apply();
- }
+/*
+ *
+ * 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.
+ *
+ */
+namespace Apache.Qpid.Integration.Tests.framework
+{
+ /// <summary>
+ /// Assertion models an assertion on a test <see cref="Circuit"/>.
+ ///
+ /// <p/><table id="crc"><caption>CRC Card</caption>
+ /// <tr><th> Responsibilities
+ /// <tr><td> Indicate whether or not the assertion passes when applied.
+ /// </table>
+ /// </summary>
+ public interface Assertion
+ {
+ /// <summary>
+ /// Applies the assertion.
+ /// </summary>
+ /// <return> <tt>true</tt> if the assertion passes, <tt>false</tt> if it fails. </return>
+ bool apply();
+ }
} \ No newline at end of file
diff --git a/qpid/dotnet/Qpid.Integration.Tests/framework/Circuit.cs b/qpid/dotnet/Qpid.Integration.Tests/framework/Circuit.cs
index d5f0ed15e2..aae9ca0496 100644
--- a/qpid/dotnet/Qpid.Integration.Tests/framework/Circuit.cs
+++ b/qpid/dotnet/Qpid.Integration.Tests/framework/Circuit.cs
@@ -1,102 +1,102 @@
-/*
- *
- * 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.
- *
- */
-using System.Collections.Generic;//.IList;
-
-namespace Apache.Qpid.Integration.Tests.framework
-{
- /// <summary>
- /// A Circuit is the basic test unit against which test cases are to be written. A circuit consists of two 'ends', an
- /// instigating 'publisher' end and a more passive 'receivers' end.
- ///
- /// <p/>Once created, the life-cycle of a circuit may be controlled by <see cref="#start()"/>ing it, or <see cref="#close()"/>ing it.
- /// Once started, the circuit is ready to send messages over. Once closed the circuit can no longer be used.
- ///
- /// <p/>The state of the circuit may be taken with the <see cref="#check()"/> method, and asserted against by the
- /// <see cref="#applyAssertions(System.Collections.Generic.IList)"/> method.
- ///
- /// <p/>There is a default test procedure which may be performed against the circuit. The outline of this procedure is:
- ///
- /// <p/><pre>
- /// Start the circuit.
- /// Send test messages.
- /// Request a status report.
- /// Assert conditions on the publishing end of the circuit.
- /// Assert conditions on the receiving end of the circuit.
- /// Close the circuit.
- /// Pass with no failed assertions or fail with a list of failed assertions.
- /// </pre>
- ///
- /// <p/><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities
- /// <tr><td> Supply the publishing and receiving ends of a test messaging circuit.
- /// <tr><td> Start the circuit running.
- /// <tr><td> Close the circuit down.
- /// <tr><td> Take a reading of the circuits state.
- /// <tr><td> Apply assertions against the circuits state.
- /// <tr><td> Send test messages over the circuit.
- /// <tr><td> Perform the default test procedue on the circuit.
- /// </table>
- /// </summary>
- public interface Circuit
- {
- /// <summary> Gets the interface on the publishing end of the circuit. </summary>
- ///
- /// <return> The publishing end of the circuit. </return>
- Publisher GetPublisher();
-
- /// <summary> Gets the interface on the receiving end of the circuit. </summary>
- ///
- /// <return> The receiving end of the circuit. </return>
- Receiver GetReceiver();
-
- /// <summary> Connects and starts the circuit. After this method is called the circuit is ready to send messages. </summary>
- void Start();
-
- /// <summary>
- /// Checks the test circuit. The effect of this is to gather the circuits state, for both ends of the circuit,
- /// into a report, against which assertions may be checked.
- /// </summary>
- void Check();
-
- /// <summary> Closes the circuit. All associated resources are closed. </summary>
- void Close();
-
- /// <summary>
- /// Applied a list of assertions against the test circuit. The <see cref="#check()"/> method should be called before doing
- /// this, to ensure that the circuit has gathered its state into a report to assert against.
- /// </summary>
- ///
- /// <param name="assertions"> The list of assertions to apply to the circuit. </param>
- ///
- /// <return> Any assertions that failed. </return>
- IList<Assertion> ApplyAssertions(IList<Assertion> assertions);
-
- /// <summary>
- /// Runs the default test procedure against the circuit, and checks that all of the specified assertions hold.
- /// </summary>
- ///
- /// <param name="numMessages"> The number of messages to send using the default test procedure. </param>
- /// <param name="assertions"> The list of assertions to apply. </param>
- ///
- /// <return> Any assertions that failed. </return>
- IList<Assertion> Test(int numMessages, IList<Assertion> assertions);
- }
+/*
+ *
+ * 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.
+ *
+ */
+using System.Collections.Generic;//.IList;
+
+namespace Apache.Qpid.Integration.Tests.framework
+{
+ /// <summary>
+ /// A Circuit is the basic test unit against which test cases are to be written. A circuit consists of two 'ends', an
+ /// instigating 'publisher' end and a more passive 'receivers' end.
+ ///
+ /// <p/>Once created, the life-cycle of a circuit may be controlled by <see cref="#start()"/>ing it, or <see cref="#close()"/>ing it.
+ /// Once started, the circuit is ready to send messages over. Once closed the circuit can no longer be used.
+ ///
+ /// <p/>The state of the circuit may be taken with the <see cref="#check()"/> method, and asserted against by the
+ /// <see cref="#applyAssertions(System.Collections.Generic.IList)"/> method.
+ ///
+ /// <p/>There is a default test procedure which may be performed against the circuit. The outline of this procedure is:
+ ///
+ /// <p/><pre>
+ /// Start the circuit.
+ /// Send test messages.
+ /// Request a status report.
+ /// Assert conditions on the publishing end of the circuit.
+ /// Assert conditions on the receiving end of the circuit.
+ /// Close the circuit.
+ /// Pass with no failed assertions or fail with a list of failed assertions.
+ /// </pre>
+ ///
+ /// <p/><table id="crc"><caption>CRC Card</caption>
+ /// <tr><th> Responsibilities
+ /// <tr><td> Supply the publishing and receiving ends of a test messaging circuit.
+ /// <tr><td> Start the circuit running.
+ /// <tr><td> Close the circuit down.
+ /// <tr><td> Take a reading of the circuits state.
+ /// <tr><td> Apply assertions against the circuits state.
+ /// <tr><td> Send test messages over the circuit.
+ /// <tr><td> Perform the default test procedue on the circuit.
+ /// </table>
+ /// </summary>
+ public interface Circuit
+ {
+ /// <summary> Gets the interface on the publishing end of the circuit. </summary>
+ ///
+ /// <return> The publishing end of the circuit. </return>
+ Publisher GetPublisher();
+
+ /// <summary> Gets the interface on the receiving end of the circuit. </summary>
+ ///
+ /// <return> The receiving end of the circuit. </return>
+ Receiver GetReceiver();
+
+ /// <summary> Connects and starts the circuit. After this method is called the circuit is ready to send messages. </summary>
+ void Start();
+
+ /// <summary>
+ /// Checks the test circuit. The effect of this is to gather the circuits state, for both ends of the circuit,
+ /// into a report, against which assertions may be checked.
+ /// </summary>
+ void Check();
+
+ /// <summary> Closes the circuit. All associated resources are closed. </summary>
+ void Close();
+
+ /// <summary>
+ /// Applied a list of assertions against the test circuit. The <see cref="#check()"/> method should be called before doing
+ /// this, to ensure that the circuit has gathered its state into a report to assert against.
+ /// </summary>
+ ///
+ /// <param name="assertions"> The list of assertions to apply to the circuit. </param>
+ ///
+ /// <return> Any assertions that failed. </return>
+ IList<Assertion> ApplyAssertions(IList<Assertion> assertions);
+
+ /// <summary>
+ /// Runs the default test procedure against the circuit, and checks that all of the specified assertions hold.
+ /// </summary>
+ ///
+ /// <param name="numMessages"> The number of messages to send using the default test procedure. </param>
+ /// <param name="assertions"> The list of assertions to apply. </param>
+ ///
+ /// <return> Any assertions that failed. </return>
+ IList<Assertion> Test(int numMessages, IList<Assertion> assertions);
+ }
} \ No newline at end of file
diff --git a/qpid/dotnet/Qpid.Integration.Tests/framework/FrameworkBaseCase.cs b/qpid/dotnet/Qpid.Integration.Tests/framework/FrameworkBaseCase.cs
index a7a663e531..77c1cae0ad 100644
--- a/qpid/dotnet/Qpid.Integration.Tests/framework/FrameworkBaseCase.cs
+++ b/qpid/dotnet/Qpid.Integration.Tests/framework/FrameworkBaseCase.cs
@@ -1,282 +1,282 @@
-/*
- *
- * 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.
- *
- */
-using log4net;
-using NUnit.Framework;
-//using org.apache.log4j.NDC;
-
-using Apache.Qpid.Integration.Tests.framework.sequencers;//.CircuitFactory;
-
-//using uk.co.thebadgerset.junit.extensions.AsymptoticTestCase;
-//using uk.co.thebadgerset.junit.extensions.SetupTaskAware;
-//using uk.co.thebadgerset.junit.extensions.SetupTaskHandler;
-//using uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
-//using uk.co.thebadgerset.junit.extensions.util.TestContextProperties;
-
-//using java.util.ArrayList;
-using System.Collections.Generic;//.IList;
-
-namespace Apache.Qpid.Integration.Tests.framework
-{
- /// <summary>
- /// FrameworkBaseCase provides a starting point for writing test cases against the test framework. Its main purpose is
- /// to provide some convenience methods for testing.
- ///
- /// <p/><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities <th> Collaborations
- /// <tr><td> Create and clean up in-vm brokers on every test case.
- /// <tr><td> Produce lists of assertions from assertion creation calls.
- /// <tr><td> Produce JUnit failures from assertion failures.
- /// <tr><td> Convert failed assertions to error messages.
- /// </table>
- /// </summary>
- public class FrameworkBaseCase //extends AsymptoticTestCase : FrameworkTestContext, SetupTaskAware, BrokerLifecycleAware
- {
- /// <summary> Used for debugging purposes. </summary>
- private static ILog log = LogManager.GetLogger(typeof(FrameworkBaseCase));
-
- /// <summary> Holds the test sequencer to create and run test circuits with. </summary>
- protected CircuitFactory circuitFactory;// = new LocalCircuitFactory();
-
- /// <summary> Used to read the tests configurable properties through. </summary>
- protected TestModel testProps;
-
- /// <summary> A default setup task processor to delegate setup tasks to. </summary>
- //protected SetupTaskHandler taskHandler = new SetupTaskHandler();
-
- /// <summary> Flag used to track whether the test is in-vm or not. </summary>
- //protected bool isUsingInVM;
-
- /// <summary> Holds the failure mechanism. </summary>
- //protected CauseFailure failureMechanism = new CauseFailureUserPrompt();
-
- /*
- /// <summary>
- /// Creates a new test case with the specified name.
- /// </summary>
- /// <param name="name"> The test case name. </param>
- public FrameworkBaseCase(string name) : base(name)
- {
- }
- */
-
- /// <summary>
- /// Returns the test case sequencer that provides test circuit, and test sequence implementations. The sequencer
- /// that this base case returns by default is suitable for running a test circuit with both circuit ends colocated
- /// on the same JVM.
- /// </summary>
- /// <return> The test case sequencer. </return>
- protected CircuitFactory GetCircuitFactory()
- {
- return circuitFactory;
- }
-
- /// <summary>
- /// Overrides the default test circuit factory. Test decorators can use this to supply distributed test sequencers or
- /// other test circuit factory specializations.
- /// </summary>
- /// <param name="circuitFactory"> The new test circuit factory. </param>
- public void SetCircuitFactory(CircuitFactory circuitFactory)
- {
- this.circuitFactory = circuitFactory;
- }
-
- /*
- /// <summary>
- /// Reports the current test case name.
- /// </summary>
- /// <return> The current test case name. </return>
- public TestCaseVector GetTestCaseVector()
- {
- return new TestCaseVector(this.getName(), 0);
- }
- */
-
- /// <summary>
- /// Reports the current test case parameters.
- /// </summary>
- /// <return> The current test case parameters. </return>
- public TestModel getTestParameters()
- {
- return testProps;
- }
-
- /// <summary>
- /// Creates a list of assertions.
- /// </summary>
- /// <param name="asserts"> The assertions to compile in a list. </param>
- ///
- /// <return> A list of assertions. </return>
- protected IList<Assertion> AssertionList(params Assertion[] asserts)
- {
- IList<Assertion> result = new List<Assertion>();
-
- foreach (Assertion assertion in asserts)
- {
- result.Add(assertion);
- }
-
- return result;
- }
-
- /// <summary>
- /// Generates a JUnit assertion exception (failure) if any assertions are passed into this method, also concatenating
- /// all of the error messages in the assertions together to form an error message to diagnose the test failure with.
- /// </summary>
- /// <param name="asserts"> The list of failed assertions. </param>
- protected static void AssertNoFailures(List<Assertion> asserts)
- {
- log.Debug("protected void assertNoFailures(List<Assertion> asserts = " + asserts + "): called");
-
- // Check if there are no assertion failures, and return without doing anything if so.
- if ((asserts == null) || (asserts.Count == 0))
- {
- return;
- }
-
- // Compile all of the assertion failure messages together.
- string errorMessage = AssertionsToString(asserts);
-
- // Fail with the error message from all of the assertions.
- Assert.Fail(errorMessage);
- }
-
- /// <summary>
- /// Converts a list of failed assertions into an error message.
- /// </summary>
- /// <param name="asserts"> The failed assertions. </param>
- ///
- /// <return> The error message. </return>
- protected static string AssertionsToString(List<Assertion> asserts)
- {
- string errorMessage = "";
-
- foreach (Assertion assertion in asserts)
- {
- errorMessage += assertion.ToString() + "\n";
- }
-
- return errorMessage;
- }
-
- /// <summary>
- /// Ensures that the in-vm broker is created and initialized.
- /// </summary>
- ///
- /// <exception cref="Exception"> Any exceptions allowed to fall through and fail the test. </exception>
- [SetUp]
- protected void SetUp()
- {
- //NDC.Push(Name);
-
- //testProps = TestContextProperties.getInstance(TestModel.defaults);
-
- // Process all optional setup tasks. This may include in-vm broker creation, if a decorator has added it.
- //taskHandler.runSetupTasks();
- }
-
- /// <summary> Ensures that the in-vm broker is cleaned up after each test run. </summary>
- [TearDown]
- protected void TearDown()
- {
- //NDC.Pop();
-
- // Process all optional tear down tasks. This may include in-vm broker clean up, if a decorator has added it.
- //taskHandler.runTearDownTasks();
- }
-
- /*
- /// <summary>
- /// Adds the specified task to the tests setup.
- /// </summary>
- /// <param name="task"> The task to add to the tests setup. </param>
- public void chainSetupTask(Runnable task)
- {
- taskHandler.chainSetupTask(task);
- }
- */
-
- /*
- /// <summary>
- /// Adds the specified task to the tests tear down.
- /// </summary>
- /// <param name="task"> The task to add to the tests tear down. </param>
- public void chainTearDownTask(Runnable task)
- {
- taskHandler.chainTearDownTask(task);
- }
- */
-
- /*
- /// <summary>
- /// Should provide a translation from the junit method name of a test to its test case name as known to the test
- /// clients that will run the test. The purpose of this is to convert the JUnit method name into the correct test
- /// case name to place into the test invite. For example the method "testP2P" might map onto the interop test case
- /// name "TC2_BasicP2P".
- /// </summary>
- /// <param name="methodName"> The name of the JUnit test method. </param>
- ///
- /// <return> The name of the corresponding interop test case. </return>
- public string getTestCaseNameForTestMethod(string methodName)
- {
- return methodName;
- }
-
- public void setInVmBrokers()
- {
- isUsingInVM = true;
- }
-
- /// <summary>
- /// Indicates whether or not a test case is using in-vm brokers.
- /// </summary>
- /// <return> <tt>true</tt> if the test is using in-vm brokers, <tt>false</tt> otherwise. </return>
- public bool usingInVmBroker()
- {
- return isUsingInVM;
- }
-
- /// <summary>
- /// Sets the currently live in-vm broker.
- /// </summary>
- /// <param name="i"> The currently live in-vm broker. </param>
- public void setLiveBroker(int i)
- { }
-
- /// <summary>
- /// Reports the currently live in-vm broker.
- /// </summary>
- /// <return> The currently live in-vm broker. </return>
- public int getLiveBroker()
- {
- return 0;
- }
-
- /// <summary>
- /// Accepts a failure mechanism.
- /// </summary>
- /// <param name="failureMechanism"> The failure mechanism. </param>
- public void setFailureMechanism(CauseFailure failureMechanism)
- {
- this.failureMechanism = failureMechanism;
- }
- */
- }
+/*
+ *
+ * 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.
+ *
+ */
+using log4net;
+using NUnit.Framework;
+//using org.apache.log4j.NDC;
+
+using Apache.Qpid.Integration.Tests.framework.sequencers;//.CircuitFactory;
+
+//using uk.co.thebadgerset.junit.extensions.AsymptoticTestCase;
+//using uk.co.thebadgerset.junit.extensions.SetupTaskAware;
+//using uk.co.thebadgerset.junit.extensions.SetupTaskHandler;
+//using uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
+//using uk.co.thebadgerset.junit.extensions.util.TestContextProperties;
+
+//using java.util.ArrayList;
+using System.Collections.Generic;//.IList;
+
+namespace Apache.Qpid.Integration.Tests.framework
+{
+ /// <summary>
+ /// FrameworkBaseCase provides a starting point for writing test cases against the test framework. Its main purpose is
+ /// to provide some convenience methods for testing.
+ ///
+ /// <p/><table id="crc"><caption>CRC Card</caption>
+ /// <tr><th> Responsibilities <th> Collaborations
+ /// <tr><td> Create and clean up in-vm brokers on every test case.
+ /// <tr><td> Produce lists of assertions from assertion creation calls.
+ /// <tr><td> Produce JUnit failures from assertion failures.
+ /// <tr><td> Convert failed assertions to error messages.
+ /// </table>
+ /// </summary>
+ public class FrameworkBaseCase //extends AsymptoticTestCase : FrameworkTestContext, SetupTaskAware, BrokerLifecycleAware
+ {
+ /// <summary> Used for debugging purposes. </summary>
+ private static ILog log = LogManager.GetLogger(typeof(FrameworkBaseCase));
+
+ /// <summary> Holds the test sequencer to create and run test circuits with. </summary>
+ protected CircuitFactory circuitFactory;// = new LocalCircuitFactory();
+
+ /// <summary> Used to read the tests configurable properties through. </summary>
+ protected TestModel testProps;
+
+ /// <summary> A default setup task processor to delegate setup tasks to. </summary>
+ //protected SetupTaskHandler taskHandler = new SetupTaskHandler();
+
+ /// <summary> Flag used to track whether the test is in-vm or not. </summary>
+ //protected bool isUsingInVM;
+
+ /// <summary> Holds the failure mechanism. </summary>
+ //protected CauseFailure failureMechanism = new CauseFailureUserPrompt();
+
+ /*
+ /// <summary>
+ /// Creates a new test case with the specified name.
+ /// </summary>
+ /// <param name="name"> The test case name. </param>
+ public FrameworkBaseCase(string name) : base(name)
+ {
+ }
+ */
+
+ /// <summary>
+ /// Returns the test case sequencer that provides test circuit, and test sequence implementations. The sequencer
+ /// that this base case returns by default is suitable for running a test circuit with both circuit ends colocated
+ /// on the same JVM.
+ /// </summary>
+ /// <return> The test case sequencer. </return>
+ protected CircuitFactory GetCircuitFactory()
+ {
+ return circuitFactory;
+ }
+
+ /// <summary>
+ /// Overrides the default test circuit factory. Test decorators can use this to supply distributed test sequencers or
+ /// other test circuit factory specializations.
+ /// </summary>
+ /// <param name="circuitFactory"> The new test circuit factory. </param>
+ public void SetCircuitFactory(CircuitFactory circuitFactory)
+ {
+ this.circuitFactory = circuitFactory;
+ }
+
+ /*
+ /// <summary>
+ /// Reports the current test case name.
+ /// </summary>
+ /// <return> The current test case name. </return>
+ public TestCaseVector GetTestCaseVector()
+ {
+ return new TestCaseVector(this.getName(), 0);
+ }
+ */
+
+ /// <summary>
+ /// Reports the current test case parameters.
+ /// </summary>
+ /// <return> The current test case parameters. </return>
+ public TestModel getTestParameters()
+ {
+ return testProps;
+ }
+
+ /// <summary>
+ /// Creates a list of assertions.
+ /// </summary>
+ /// <param name="asserts"> The assertions to compile in a list. </param>
+ ///
+ /// <return> A list of assertions. </return>
+ protected IList<Assertion> AssertionList(params Assertion[] asserts)
+ {
+ IList<Assertion> result = new List<Assertion>();
+
+ foreach (Assertion assertion in asserts)
+ {
+ result.Add(assertion);
+ }
+
+ return result;
+ }
+
+ /// <summary>
+ /// Generates a JUnit assertion exception (failure) if any assertions are passed into this method, also concatenating
+ /// all of the error messages in the assertions together to form an error message to diagnose the test failure with.
+ /// </summary>
+ /// <param name="asserts"> The list of failed assertions. </param>
+ protected static void AssertNoFailures(List<Assertion> asserts)
+ {
+ log.Debug("protected void assertNoFailures(List<Assertion> asserts = " + asserts + "): called");
+
+ // Check if there are no assertion failures, and return without doing anything if so.
+ if ((asserts == null) || (asserts.Count == 0))
+ {
+ return;
+ }
+
+ // Compile all of the assertion failure messages together.
+ string errorMessage = AssertionsToString(asserts);
+
+ // Fail with the error message from all of the assertions.
+ Assert.Fail(errorMessage);
+ }
+
+ /// <summary>
+ /// Converts a list of failed assertions into an error message.
+ /// </summary>
+ /// <param name="asserts"> The failed assertions. </param>
+ ///
+ /// <return> The error message. </return>
+ protected static string AssertionsToString(List<Assertion> asserts)
+ {
+ string errorMessage = "";
+
+ foreach (Assertion assertion in asserts)
+ {
+ errorMessage += assertion.ToString() + "\n";
+ }
+
+ return errorMessage;
+ }
+
+ /// <summary>
+ /// Ensures that the in-vm broker is created and initialized.
+ /// </summary>
+ ///
+ /// <exception cref="Exception"> Any exceptions allowed to fall through and fail the test. </exception>
+ [SetUp]
+ protected void SetUp()
+ {
+ //NDC.Push(Name);
+
+ //testProps = TestContextProperties.getInstance(TestModel.defaults);
+
+ // Process all optional setup tasks. This may include in-vm broker creation, if a decorator has added it.
+ //taskHandler.runSetupTasks();
+ }
+
+ /// <summary> Ensures that the in-vm broker is cleaned up after each test run. </summary>
+ [TearDown]
+ protected void TearDown()
+ {
+ //NDC.Pop();
+
+ // Process all optional tear down tasks. This may include in-vm broker clean up, if a decorator has added it.
+ //taskHandler.runTearDownTasks();
+ }
+
+ /*
+ /// <summary>
+ /// Adds the specified task to the tests setup.
+ /// </summary>
+ /// <param name="task"> The task to add to the tests setup. </param>
+ public void chainSetupTask(Runnable task)
+ {
+ taskHandler.chainSetupTask(task);
+ }
+ */
+
+ /*
+ /// <summary>
+ /// Adds the specified task to the tests tear down.
+ /// </summary>
+ /// <param name="task"> The task to add to the tests tear down. </param>
+ public void chainTearDownTask(Runnable task)
+ {
+ taskHandler.chainTearDownTask(task);
+ }
+ */
+
+ /*
+ /// <summary>
+ /// Should provide a translation from the junit method name of a test to its test case name as known to the test
+ /// clients that will run the test. The purpose of this is to convert the JUnit method name into the correct test
+ /// case name to place into the test invite. For example the method "testP2P" might map onto the interop test case
+ /// name "TC2_BasicP2P".
+ /// </summary>
+ /// <param name="methodName"> The name of the JUnit test method. </param>
+ ///
+ /// <return> The name of the corresponding interop test case. </return>
+ public string getTestCaseNameForTestMethod(string methodName)
+ {
+ return methodName;
+ }
+
+ public void setInVmBrokers()
+ {
+ isUsingInVM = true;
+ }
+
+ /// <summary>
+ /// Indicates whether or not a test case is using in-vm brokers.
+ /// </summary>
+ /// <return> <tt>true</tt> if the test is using in-vm brokers, <tt>false</tt> otherwise. </return>
+ public bool usingInVmBroker()
+ {
+ return isUsingInVM;
+ }
+
+ /// <summary>
+ /// Sets the currently live in-vm broker.
+ /// </summary>
+ /// <param name="i"> The currently live in-vm broker. </param>
+ public void setLiveBroker(int i)
+ { }
+
+ /// <summary>
+ /// Reports the currently live in-vm broker.
+ /// </summary>
+ /// <return> The currently live in-vm broker. </return>
+ public int getLiveBroker()
+ {
+ return 0;
+ }
+
+ /// <summary>
+ /// Accepts a failure mechanism.
+ /// </summary>
+ /// <param name="failureMechanism"> The failure mechanism. </param>
+ public void setFailureMechanism(CauseFailure failureMechanism)
+ {
+ this.failureMechanism = failureMechanism;
+ }
+ */
+ }
} \ No newline at end of file
diff --git a/qpid/dotnet/Qpid.Integration.Tests/framework/Publisher.cs b/qpid/dotnet/Qpid.Integration.Tests/framework/Publisher.cs
index 72bd079277..5fbdc7a907 100644
--- a/qpid/dotnet/Qpid.Integration.Tests/framework/Publisher.cs
+++ b/qpid/dotnet/Qpid.Integration.Tests/framework/Publisher.cs
@@ -1,65 +1,65 @@
-/*
- *
- * 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.
- *
- */
-//using uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
-using System;
-
-namespace Apache.Qpid.Integration.Tests.framework
-{
- /// <summary>
- /// A Publisher represents the status of the publishing side of a test circuit. Its main purpose is to provide assertions
- /// that can be applied to test the behaviour of the publishers.
- ///
- /// <p/><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities
- /// <tr><td> Provide assertion that the publishers received no exceptions.
- /// </table>
- /// </summary>
- public interface Publisher
- {
- /// <summary>
- /// Provides an assertion that the publisher encountered no exceptions.
- /// </summary>
- ///
- /// <param name="testProps"> The test configuration properties. </param>
- ///
- /// <return> An assertion that the publisher encountered no exceptions. </return>
- Assertion NoExceptionsAssertion(TestModel testProps);
-
- /// <summary>
- /// Provides an assertion that the AMQP channel was forcibly closed by an error condition.
- /// </summary>
- ///
- /// <param name="testProps"> The test configuration properties. </param>
- ///
- /// <return> An assertion that the AMQP channel was forcibly closed by an error condition. </return>
- Assertion ChannelClosedAssertion(TestModel testProps);
-
- /// <summary>
- /// Provides an assertion that the publisher got a given exception during the test.
- /// </summary>
- ///
- /// <param name="testProps"> The test configuration properties. </param>
- /// <param name="exceptionClass"> The exception class to check for. </param>
- ///
- /// <return> An assertion that the publisher got a given exception during the test. </return>
- Assertion ExceptionAssertion(TestModel testProps, Type exceptionClass);
- }
+/*
+ *
+ * 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.
+ *
+ */
+//using uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
+using System;
+
+namespace Apache.Qpid.Integration.Tests.framework
+{
+ /// <summary>
+ /// A Publisher represents the status of the publishing side of a test circuit. Its main purpose is to provide assertions
+ /// that can be applied to test the behaviour of the publishers.
+ ///
+ /// <p/><table id="crc"><caption>CRC Card</caption>
+ /// <tr><th> Responsibilities
+ /// <tr><td> Provide assertion that the publishers received no exceptions.
+ /// </table>
+ /// </summary>
+ public interface Publisher
+ {
+ /// <summary>
+ /// Provides an assertion that the publisher encountered no exceptions.
+ /// </summary>
+ ///
+ /// <param name="testProps"> The test configuration properties. </param>
+ ///
+ /// <return> An assertion that the publisher encountered no exceptions. </return>
+ Assertion NoExceptionsAssertion(TestModel testProps);
+
+ /// <summary>
+ /// Provides an assertion that the AMQP channel was forcibly closed by an error condition.
+ /// </summary>
+ ///
+ /// <param name="testProps"> The test configuration properties. </param>
+ ///
+ /// <return> An assertion that the AMQP channel was forcibly closed by an error condition. </return>
+ Assertion ChannelClosedAssertion(TestModel testProps);
+
+ /// <summary>
+ /// Provides an assertion that the publisher got a given exception during the test.
+ /// </summary>
+ ///
+ /// <param name="testProps"> The test configuration properties. </param>
+ /// <param name="exceptionClass"> The exception class to check for. </param>
+ ///
+ /// <return> An assertion that the publisher got a given exception during the test. </return>
+ Assertion ExceptionAssertion(TestModel testProps, Type exceptionClass);
+ }
} \ No newline at end of file
diff --git a/qpid/dotnet/Qpid.Integration.Tests/framework/Receiver.cs b/qpid/dotnet/Qpid.Integration.Tests/framework/Receiver.cs
index 80320c68b6..96820b5980 100644
--- a/qpid/dotnet/Qpid.Integration.Tests/framework/Receiver.cs
+++ b/qpid/dotnet/Qpid.Integration.Tests/framework/Receiver.cs
@@ -1,80 +1,80 @@
-/*
- *
- * 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.
- *
- */
-//using uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
-using System;
-
-namespace Apache.Qpid.Integration.Tests.framework
-{
- /// <summary>
- /// A Receiver is a <see cref="CircuitEnd"/> that represents the status of the receiving side of a test circuit. Its main
- /// purpose is to provide assertions that can be applied to check the behaviour of the receivers.
- ///
- /// <p/><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities
- /// <tr><td> Provide assertion that the receivers received no exceptions.
- /// <tr><td> Provide assertion that the receivers received all test messages sent to it.
- /// </table>
- /// </summary>
- public interface Receiver
- {
- /// <summary>
- /// Provides an assertion that the receivers encountered no exceptions.
- /// </summary>
- ///
- /// <param name="testProps"> The test configuration properties. </param>
- ///
- /// <return> An assertion that the receivers encountered no exceptions. </return>
- Assertion NoExceptionsAssertion(TestModel testProps);
-
- /// <summary>
- /// Provides an assertion that the receivers got all messages that were sent to it.
- /// </summary>
- /// <param name="testProps"> The test configuration properties. </param>
- ///
- /// <return> An assertion that the receivers got all messages that were sent to it. </return>
- Assertion AllMessagesReceivedAssertion(TestModel testProps);
-
- /// <summary>
- /// Provides an assertion that the receivers got none of the messages that were sent to it.
- /// </summary>
- /// <param name="testProps"> The test configuration properties. </param>
- ///
- /// <return> An assertion that the receivers got none of the messages that were sent to it. </return>
- Assertion NoMessagesReceivedAssertion(TestModel testProps);
-
- /// <summary>
- /// Provides an assertion that the AMQP channel was forcibly closed by an error condition.
- /// </summary>
- /// <param name="testProps"> The test configuration properties. </param>
- ///
- /// <return> An assertion that the AMQP channel was forcibly closed by an error condition. </return>
- Assertion ChannelClosedAssertion(TestModel testProps);
-
- /// <summary>
- /// Provides an assertion that the receiver got a given exception during the test.
- /// </summary>
- /// <param name="testProps"> The test configuration properties. </param>
- /// <param name="exceptionClass"> The exception class to check for. </param>
- ///
- /// <return> An assertion that the receiver got a given exception during the test. </return>
- Assertion ExceptionAssertion(TestModel testProps, Type exceptionClass);
- }
+/*
+ *
+ * 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.
+ *
+ */
+//using uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
+using System;
+
+namespace Apache.Qpid.Integration.Tests.framework
+{
+ /// <summary>
+ /// A Receiver is a <see cref="CircuitEnd"/> that represents the status of the receiving side of a test circuit. Its main
+ /// purpose is to provide assertions that can be applied to check the behaviour of the receivers.
+ ///
+ /// <p/><table id="crc"><caption>CRC Card</caption>
+ /// <tr><th> Responsibilities
+ /// <tr><td> Provide assertion that the receivers received no exceptions.
+ /// <tr><td> Provide assertion that the receivers received all test messages sent to it.
+ /// </table>
+ /// </summary>
+ public interface Receiver
+ {
+ /// <summary>
+ /// Provides an assertion that the receivers encountered no exceptions.
+ /// </summary>
+ ///
+ /// <param name="testProps"> The test configuration properties. </param>
+ ///
+ /// <return> An assertion that the receivers encountered no exceptions. </return>
+ Assertion NoExceptionsAssertion(TestModel testProps);
+
+ /// <summary>
+ /// Provides an assertion that the receivers got all messages that were sent to it.
+ /// </summary>
+ /// <param name="testProps"> The test configuration properties. </param>
+ ///
+ /// <return> An assertion that the receivers got all messages that were sent to it. </return>
+ Assertion AllMessagesReceivedAssertion(TestModel testProps);
+
+ /// <summary>
+ /// Provides an assertion that the receivers got none of the messages that were sent to it.
+ /// </summary>
+ /// <param name="testProps"> The test configuration properties. </param>
+ ///
+ /// <return> An assertion that the receivers got none of the messages that were sent to it. </return>
+ Assertion NoMessagesReceivedAssertion(TestModel testProps);
+
+ /// <summary>
+ /// Provides an assertion that the AMQP channel was forcibly closed by an error condition.
+ /// </summary>
+ /// <param name="testProps"> The test configuration properties. </param>
+ ///
+ /// <return> An assertion that the AMQP channel was forcibly closed by an error condition. </return>
+ Assertion ChannelClosedAssertion(TestModel testProps);
+
+ /// <summary>
+ /// Provides an assertion that the receiver got a given exception during the test.
+ /// </summary>
+ /// <param name="testProps"> The test configuration properties. </param>
+ /// <param name="exceptionClass"> The exception class to check for. </param>
+ ///
+ /// <return> An assertion that the receiver got a given exception during the test. </return>
+ Assertion ExceptionAssertion(TestModel testProps, Type exceptionClass);
+ }
} \ No newline at end of file
diff --git a/qpid/dotnet/Qpid.Integration.Tests/framework/TestClientDetails.cs b/qpid/dotnet/Qpid.Integration.Tests/framework/TestClientDetails.cs
index 401e183fd0..8be8de3d96 100644
--- a/qpid/dotnet/Qpid.Integration.Tests/framework/TestClientDetails.cs
+++ b/qpid/dotnet/Qpid.Integration.Tests/framework/TestClientDetails.cs
@@ -1,84 +1,84 @@
-/*
- *
- * 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.
- *
- */
-using System;
-
-namespace Apache.Qpid.Integration.Tests.framework
-{
- /// <summary>
- /// TestClientDetails is used to encapsulate information about an interop test client. It pairs together the unique
- /// name of the client, and the route on which it listens to its control messages.
- ///
- /// <p><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities <th> Collaborations
- /// <tr><td> Record test clients control addresses together with their names.
- /// </table>
- /// </summary>
- public class TestClientDetails
- {
- /// <summary> The test clients name. </summary>
- public string clientName;
-
- /// <summary> The routing key of the test clients control topic. </summary>
- public string privateControlKey;
-
- /// <summary>
- /// Two TestClientDetails are considered to be equal, iff they have the same client name.
- /// </summary>
- /// <param name="o"> The object to compare to. </param>
- ///
- /// <return> <tt>If the object to compare to is a TestClientDetails equal to this one, <tt>false</tt> otherwise. </return>
- public override bool Equals(Object o)
- {
- if (this == o)
- {
- return true;
- }
-
- if (!(o is TestClientDetails))
- {
- return false;
- }
-
- TestClientDetails testClientDetails = (TestClientDetails) o;
-
- return !((clientName != null) ? (!clientName.Equals(testClientDetails.clientName))
- : (testClientDetails.clientName != null));
- }
-
- /// <summary>
- /// Computes a hash code compatible with the equals method; based on the client name alone.
- /// </summary>
- /// <return> A hash code for this. </return>
- public override int GetHashCode()
- {
- return ((clientName != null) ? clientName.GetHashCode() : 0);
- }
-
- /// <summary>
- /// Outputs the client name and address details. Mostly used for debugging purposes.
- /// </summary>
- /// <return> The client name and address. </return>
- public override string ToString()
- {
- return "TestClientDetails: [ clientName = " + clientName + ", privateControlKey = " + privateControlKey + " ]";
- }
- }
-}
+/*
+ *
+ * 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.
+ *
+ */
+using System;
+
+namespace Apache.Qpid.Integration.Tests.framework
+{
+ /// <summary>
+ /// TestClientDetails is used to encapsulate information about an interop test client. It pairs together the unique
+ /// name of the client, and the route on which it listens to its control messages.
+ ///
+ /// <p><table id="crc"><caption>CRC Card</caption>
+ /// <tr><th> Responsibilities <th> Collaborations
+ /// <tr><td> Record test clients control addresses together with their names.
+ /// </table>
+ /// </summary>
+ public class TestClientDetails
+ {
+ /// <summary> The test clients name. </summary>
+ public string clientName;
+
+ /// <summary> The routing key of the test clients control topic. </summary>
+ public string privateControlKey;
+
+ /// <summary>
+ /// Two TestClientDetails are considered to be equal, iff they have the same client name.
+ /// </summary>
+ /// <param name="o"> The object to compare to. </param>
+ ///
+ /// <return> <tt>If the object to compare to is a TestClientDetails equal to this one, <tt>false</tt> otherwise. </return>
+ public override bool Equals(Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+
+ if (!(o is TestClientDetails))
+ {
+ return false;
+ }
+
+ TestClientDetails testClientDetails = (TestClientDetails) o;
+
+ return !((clientName != null) ? (!clientName.Equals(testClientDetails.clientName))
+ : (testClientDetails.clientName != null));
+ }
+
+ /// <summary>
+ /// Computes a hash code compatible with the equals method; based on the client name alone.
+ /// </summary>
+ /// <return> A hash code for this. </return>
+ public override int GetHashCode()
+ {
+ return ((clientName != null) ? clientName.GetHashCode() : 0);
+ }
+
+ /// <summary>
+ /// Outputs the client name and address details. Mostly used for debugging purposes.
+ /// </summary>
+ /// <return> The client name and address. </return>
+ public override string ToString()
+ {
+ return "TestClientDetails: [ clientName = " + clientName + ", privateControlKey = " + privateControlKey + " ]";
+ }
+ }
+}
diff --git a/qpid/dotnet/Qpid.Integration.Tests/framework/TestModel.cs b/qpid/dotnet/Qpid.Integration.Tests/framework/TestModel.cs
index a4a1d7db9b..88bea1e5ad 100644
--- a/qpid/dotnet/Qpid.Integration.Tests/framework/TestModel.cs
+++ b/qpid/dotnet/Qpid.Integration.Tests/framework/TestModel.cs
@@ -1,657 +1,657 @@
-/*
- *
- * 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.
- *
- */
-//using uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
-
-//using javax.jms.Session;
-
-//using java.util.Properties;
-
-namespace Apache.Qpid.Integration.Tests.framework
-{
- public class TestModel //extends ParsedProperties
- {}
-
- /*
- /// <summary>
- /// MessagingTestConfigProperties defines a set of property names and default values for specifying a messaging topology,
- /// and test parameters for running a messaging test over that topology. A Properties object holding some of these
- /// properties, superimposed onto the defaults, is used to establish test topologies and control test behaviour.
- ///
- /// <p/>A complete list of the parameters, default values and comments on their usage is provided here:
- ///
- /// <p/><table><caption>Parameters</caption>
- /// <tr><th> Parameter <th> Default <th> Comments
- /// <tr><td> messageSize <td> 0 <td> Message size in bytes. Not including any headers.
- /// <tr><td> destinationName <td> ping <td> The root name to use to generate destination names to ping.
- /// <tr><td> persistent <td> false <td> Determines whether peristent delivery is used.
- /// <tr><td> transacted <td> false <td> Determines whether messages are sent/received in transactions.
- /// <tr><td> broker <td> tcp://localhost:5672 <td> Determines the broker to connect to.
- /// <tr><td> virtualHost <td> test <td> Determines the virtual host to send all ping over.
- /// <tr><td> rate <td> 0 <td> The maximum rate (in hertz) to send messages at. 0 means no limit.
- /// <tr><td> verbose <td> false <td> The verbose flag for debugging. Prints to console on every message.
- /// <tr><td> pubsub <td> false <td> Whether to ping topics or queues. Uses p2p by default.
- /// <tr><td> username <td> guest <td> The username to access the broker with.
- /// <tr><td> password <td> guest <td> The password to access the broker with.
- /// <tr><td> selector <td> null <td> Not used. Defines a message selector to filter pings with.
- /// <tr><td> destinationCount <td> 1 <td> The number of receivers listening to the pings.
- /// <tr><td> timeout <td> 30000 <td> In milliseconds. The timeout to stop waiting for replies.
- /// <tr><td> commitBatchSize <td> 1 <td> The number of messages per transaction in transactional mode.
- /// <tr><td> uniqueDests <td> true <td> Whether each receivers only listens to one ping destination or all.
- /// <tr><td> durableDests <td> false <td> Whether or not durable destinations are used.
- /// <tr><td> ackMode <td> AUTO_ACK <td> The message acknowledgement mode. Possible values are:
- /// 0 - SESSION_TRANSACTED
- /// 1 - AUTO_ACKNOWLEDGE
- /// 2 - CLIENT_ACKNOWLEDGE
- /// 3 - DUPS_OK_ACKNOWLEDGE
- /// 257 - NO_ACKNOWLEDGE
- /// 258 - PRE_ACKNOWLEDGE
- /// <tr><td> maxPending <td> 0 <td> The maximum size in bytes, of messages sent but not yet received.
- /// Limits the volume of messages currently buffered on the client
- /// or broker. Can help scale test clients by limiting amount of buffered
- /// data to avoid out of memory errors.
- /// </table>
- ///
- /// <p><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities <th> Collaborations
- /// <tr><td> Provide the names and defaults of all test parameters.
- /// </table>
- /// </summary>
- ///
- /// <remarks> Put a type-safe wrapper around these properties, but continue to store the parameters as properties. This is
- /// simply to ensure that it is a simple matter to serialize/deserialize string/string pairs onto messages.</remarks>
- public class MessagingTestConfigProperties extends ParsedProperties
- {
- // ====================== Connection Properties ==================================
-
- /// <summary> Holds the name of the default connection configuration. </summary>
- public static final string CONNECTION_NAME = "broker";
-
- /// <summary> Holds the name of the property to get the initial context factory name from. </summary>
- public static final string INITIAL_CONTEXT_FACTORY_PROPNAME = "java.naming.factory.initial";
-
- /// <summary> Defines the class to use as the initial context factory by default. </summary>
- public static final string INITIAL_CONTEXT_FACTORY_DEFAULT = "org.apache.qpid.jndi.PropertiesFileInitialContextFactory";
-
- /// <summary> Holds the name of the property to get the test broker url from. </summary>
- public static final string BROKER_PROPNAME = "qpid.test.broker";
-
- /// <summary> Holds the default broker url for the test. </summary>
- public static final string BROKER_DEFAULT = "vm://:1";
-
- /// <summary> Holds the name of the property to get the test broker virtual path. </summary>
- public static final string VIRTUAL_HOST_PROPNAME = "virtualHost";
-
- /// <summary> Holds the default virtual path for the test. </summary>
- public static final string VIRTUAL_HOST_DEFAULT = "";
-
- /// <summary> Holds the name of the property to get the broker access username from. </summary>
- public static final string USERNAME_PROPNAME = "username";
-
- /// <summary> Holds the default broker log on username. </summary>
- public static final string USERNAME_DEFAULT = "guest";
-
- /// <summary> Holds the name of the property to get the broker access password from. </summary>
- public static final string PASSWORD_PROPNAME = "password";
-
- /// <summary> Holds the default broker log on password. </summary>
- public static final string PASSWORD_DEFAULT = "guest";
-
- // ====================== Messaging Topology Properties ==========================
-
- /// <summary> Holds the name of the property to get the bind publisher procuder flag from. </summary>
- public static final string PUBLISHER_PRODUCER_BIND_PROPNAME = "publisherProducerBind";
-
- /// <summary> Holds the default value of the publisher producer flag. </summary>
- public static final bool PUBLISHER_PRODUCER_BIND_DEFAULT = true;
-
- /// <summary> Holds the name of the property to get the bind publisher procuder flag from. </summary>
- public static final string PUBLISHER_CONSUMER_BIND_PROPNAME = "publisherConsumerBind";
-
- /// <summary> Holds the default value of the publisher consumer flag. </summary>
- public static final bool PUBLISHER_CONSUMER_BIND_DEFAULT = false;
-
- /// <summary> Holds the name of the property to get the bind receivers procuder flag from. </summary>
- public static final string RECEIVER_PRODUCER_BIND_PROPNAME = "receiverProducerBind";
-
- /// <summary> Holds the default value of the receivers producer flag. </summary>
- public static final bool RECEIVER_PRODUCER_BIND_DEFAULT = false;
-
- /// <summary> Holds the name of the property to get the bind receivers procuder flag from. </summary>
- public static final string RECEIVER_CONSUMER_BIND_PROPNAME = "receiverConsumerBind";
-
- /// <summary> Holds the default value of the receivers consumer flag. </summary>
- public static final bool RECEIVER_CONSUMER_BIND_DEFAULT = true;
-
- /// <summary> Holds the name of the property to get the publishers consumer active flag from. </summary>
- public static final string PUBLISHER_CONSUMER_ACTIVE_PROPNAME = "publisherConsumerActive";
-
- /// <summary> Holds the default value of the publishers consumer active flag. </summary>
- public static final bool PUBLISHER_CONSUMER_ACTIVE_DEFAULT = true;
-
- /// <summary> Holds the name of the property to get the receivers consumer active flag from. </summary>
- public static final string RECEIVER_CONSUMER_ACTIVE_PROPNAME = "receiverConsumerActive";
-
- /// <summary> Holds the default value of the receivers consumer active flag. </summary>
- public static final bool RECEIVER_CONSUMER_ACTIVE_DEFAULT = true;
-
- /// <summary> Holds the name of the property to get the destination name root from. </summary>
- public static final string SEND_DESTINATION_NAME_ROOT_PROPNAME = "sendDestinationRoot";
-
- /// <summary> Holds the root of the name of the default destination to send to. </summary>
- public static final string SEND_DESTINATION_NAME_ROOT_DEFAULT = "sendTo";
-
- /// <summary> Holds the name of the property to get the destination name root from. </summary>
- public static final string RECEIVE_DESTINATION_NAME_ROOT_PROPNAME = "receiveDestinationRoot";
-
- /// <summary> Holds the root of the name of the default destination to send to. </summary>
- public static final string RECEIVE_DESTINATION_NAME_ROOT_DEFAULT = "receiveFrom";
-
- /// <summary> Holds the name of the proeprty to get the destination count from. </summary>
- public static final string DESTINATION_COUNT_PROPNAME = "destinationCount";
-
- /// <summary> Defines the default number of destinations to ping. </summary>
- public static final int DESTINATION_COUNT_DEFAULT = 1;
-
- /// <summary> Holds the name of the property to get the p2p or pub/sub messaging mode from. </summary>
- public static final string PUBSUB_PROPNAME = "pubsub";
-
- /// <summary> Holds the pub/sub mode default, true means ping a topic, false means ping a queue. </summary>
- public static final bool PUBSUB_DEFAULT = false;
-
- // ====================== JMS Options and Flags =================================
-
- /// <summary> Holds the name of the property to get the test delivery mode from. </summary>
- public static final string PERSISTENT_MODE_PROPNAME = "persistent";
-
- /// <summary> Holds the message delivery mode to use for the test. </summary>
- public static final bool PERSISTENT_MODE_DEFAULT = false;
-
- /// <summary> Holds the name of the property to get the test transactional mode from. </summary>
- public static final string TRANSACTED_PUBLISHER_PROPNAME = "transactedPublisher";
-
- /// <summary> Holds the transactional mode to use for the test. </summary>
- public static final bool TRANSACTED_PUBLISHER_DEFAULT = false;
-
- /// <summary> Holds the name of the property to get the test transactional mode from. </summary>
- public static final string TRANSACTED_RECEIVER_PROPNAME = "transactedReceiver";
-
- /// <summary> Holds the transactional mode to use for the test. </summary>
- public static final bool TRANSACTED_RECEIVER_DEFAULT = false;
-
- /// <summary> Holds the name of the property to set the no local flag from. </summary>
- public static final string NO_LOCAL_PROPNAME = "noLocal";
-
- /// <summary> Defines the default value of the no local flag to use when consuming messages. </summary>
- public static final bool NO_LOCAL_DEFAULT = false;
-
- /// <summary> Holds the name of the property to get the message acknowledgement mode from. </summary>
- public static final string ACK_MODE_PROPNAME = "ackMode";
-
- /// <summary> Defines the default message acknowledgement mode. </summary>
- public static final int ACK_MODE_DEFAULT = Session.AUTO_ACKNOWLEDGE;
-
- /// <summary> Holds the name of the property to get the durable subscriptions flag from, when doing pub/sub messaging. </summary>
- public static final string DURABLE_SUBSCRIPTION_PROPNAME = "durableSubscription";
-
- /// <summary> Defines the default value of the durable subscriptions flag. </summary>
- public static final bool DURABLE_SUBSCRIPTION_DEFAULT = false;
-
- // ====================== Qpid/AMQP Options and Flags ================================
-
- /// <summary> Holds the name of the property to set the exclusive flag from. </summary>
- public static final string EXCLUSIVE_PROPNAME = "exclusive";
-
- /// <summary> Defines the default value of the exclusive flag to use when consuming messages. </summary>
- public static final bool EXCLUSIVE_DEFAULT = false;
-
- /// <summary> Holds the name of the property to set the immediate flag from. </summary>
- public static final string IMMEDIATE_PROPNAME = "immediate";
-
- /// <summary> Defines the default value of the immediate flag to use when sending messages. </summary>
- public static final bool IMMEDIATE_DEFAULT = false;
-
- /// <summary> Holds the name of the property to set the mandatory flag from. </summary>
- public static final string MANDATORY_PROPNAME = "mandatory";
-
- /// <summary> Defines the default value of the mandatory flag to use when sending messages. </summary>
- public static final bool MANDATORY_DEFAULT = false;
-
- /// <summary> Holds the name of the property to get the durable destinations flag from. </summary>
- public static final string DURABLE_DESTS_PROPNAME = "durableDests";
-
- /// <summary> Default value for the durable destinations flag. </summary>
- public static final bool DURABLE_DESTS_DEFAULT = false;
-
- /// <summary> Holds the name of the property to set the prefetch size from. </summary>
- public static final string PREFETCH_PROPNAME = "prefetch";
-
- /// <summary> Defines the default prefetch size to use when consuming messages. </summary>
- public static final int PREFETCH_DEFAULT = 100;
-
- // ====================== Common Test Parameters ================================
-
- /// <summary> Holds the name of the property to get the test message size from. </summary>
- public static final string MESSAGE_SIZE_PROPNAME = "messageSize";
-
- /// <summary> Used to set up a default message size. </summary>
- public static final int MESSAGE_SIZE_DEAFULT = 0;
-
- /// <summary> Holds the name of the property to get the message rate from. </summary>
- public static final string RATE_PROPNAME = "rate";
-
- /// <summary> Defines the default rate (in pings per second) to send pings at. 0 means as fast as possible, no restriction. </summary>
- public static final int RATE_DEFAULT = 0;
-
- /// <summary> Holds the name of the proeprty to get the. </summary>
- public static final string SELECTOR_PROPNAME = "selector";
-
- /// <summary> Holds the default message selector. </summary>
- public static final string SELECTOR_DEFAULT = "";
-
- /// <summary> Holds the name of the property to get the waiting timeout for response messages. </summary>
- public static final string TIMEOUT_PROPNAME = "timeout";
-
- /// <summary> Default time to wait before assuming that a ping has timed out. </summary>
- public static final long TIMEOUT_DEFAULT = 30000;
-
- /// <summary> Holds the name of the property to get the commit batch size from. </summary>
- public static final string TX_BATCH_SIZE_PROPNAME = "commitBatchSize";
-
- /// <summary> Defines the default number of pings to send in each transaction when running transactionally. </summary>
- public static final int TX_BATCH_SIZE_DEFAULT = 1;
-
- /// <summary> Holds the name of the property to set the maximum amount of pending message data for a producer to hold. </summary>
- public static final string MAX_PENDING_PROPNAME = "maxPending";
-
- /// <summary> Defines the default maximum quantity of pending message data to allow producers to hold. </summary>
- public static final int MAX_PENDING_DEFAULT = 0;
-
- /// <summary> Holds the name of the property to get the publisher rollback flag from. </summary>
- public static final string ROLLBACK_PUBLISHER_PROPNAME = "rollbackPublisher";
-
- /// <summary> Holds the default publisher roll back setting. </summary>
- public static final bool ROLLBACK_PUBLISHER_DEFAULT = false;
-
- /// <summary> Holds the name of the property to get the publisher rollback flag from. </summary>
- public static final string ROLLBACK_RECEIVER_PROPNAME = "rollbackReceiver";
-
- /// <summary> Holds the default publisher roll back setting. </summary>
- public static final bool ROLLBACK_RECEIVER_DEFAULT = false;
-
- // ====================== Options that control the bahviour of the test framework. =========================
-
- /// <summary> Holds the name of the property to get the behavioural mode of not applicable assertions. </summary>
- public static final string NOT_APPLICABLE_ASSERTION_PROPNAME = "notApplicableAssertion";
-
- /// <summary> Holds the default behavioral mode of not applicable assertions, which is logging them as a warning. </summary>
- public static final string NOT_APPLICABLE_ASSERTION_DEFAULT = "warn";
-
- /// <summary> Holds the name of the property to get the verbose mode proeprty from. </summary>
- public static final string VERBOSE_PROPNAME = "verbose";
-
- /// <summary> Holds the default verbose mode. </summary>
- public static final bool VERBOSE_DEFAULT = false;
-
- /// <summary> Holds the default configuration properties. </summary>
- public static ParsedProperties defaults = new ParsedProperties();
-
- static
- {
- defaults.setPropertyIfNull(INITIAL_CONTEXT_FACTORY_PROPNAME, INITIAL_CONTEXT_FACTORY_DEFAULT);
- defaults.setPropertyIfNull(BROKER_PROPNAME, BROKER_DEFAULT);
- defaults.setPropertyIfNull(VIRTUAL_HOST_PROPNAME, VIRTUAL_HOST_DEFAULT);
- defaults.setPropertyIfNull(USERNAME_PROPNAME, USERNAME_DEFAULT);
- defaults.setPropertyIfNull(PASSWORD_PROPNAME, PASSWORD_DEFAULT);
-
- defaults.setPropertyIfNull(PUBLISHER_PRODUCER_BIND_PROPNAME, PUBLISHER_PRODUCER_BIND_DEFAULT);
- defaults.setPropertyIfNull(PUBLISHER_CONSUMER_BIND_PROPNAME, PUBLISHER_CONSUMER_BIND_DEFAULT);
- defaults.setPropertyIfNull(RECEIVER_PRODUCER_BIND_PROPNAME, RECEIVER_PRODUCER_BIND_DEFAULT);
- defaults.setPropertyIfNull(RECEIVER_CONSUMER_BIND_PROPNAME, RECEIVER_CONSUMER_BIND_DEFAULT);
- defaults.setPropertyIfNull(PUBLISHER_CONSUMER_ACTIVE_PROPNAME, PUBLISHER_CONSUMER_ACTIVE_DEFAULT);
- defaults.setPropertyIfNull(RECEIVER_CONSUMER_ACTIVE_PROPNAME, RECEIVER_CONSUMER_ACTIVE_DEFAULT);
- defaults.setPropertyIfNull(SEND_DESTINATION_NAME_ROOT_PROPNAME, SEND_DESTINATION_NAME_ROOT_DEFAULT);
- defaults.setPropertyIfNull(RECEIVE_DESTINATION_NAME_ROOT_PROPNAME, RECEIVE_DESTINATION_NAME_ROOT_DEFAULT);
- defaults.setPropertyIfNull(DESTINATION_COUNT_PROPNAME, DESTINATION_COUNT_DEFAULT);
- defaults.setPropertyIfNull(PUBSUB_PROPNAME, PUBSUB_DEFAULT);
-
- defaults.setPropertyIfNull(PERSISTENT_MODE_PROPNAME, PERSISTENT_MODE_DEFAULT);
- defaults.setPropertyIfNull(TRANSACTED_PUBLISHER_PROPNAME, TRANSACTED_PUBLISHER_DEFAULT);
- defaults.setPropertyIfNull(TRANSACTED_RECEIVER_PROPNAME, TRANSACTED_RECEIVER_DEFAULT);
- defaults.setPropertyIfNull(NO_LOCAL_PROPNAME, NO_LOCAL_DEFAULT);
- defaults.setPropertyIfNull(ACK_MODE_PROPNAME, ACK_MODE_DEFAULT);
- defaults.setPropertyIfNull(DURABLE_SUBSCRIPTION_PROPNAME, DURABLE_SUBSCRIPTION_DEFAULT);
-
- defaults.setPropertyIfNull(EXCLUSIVE_PROPNAME, EXCLUSIVE_DEFAULT);
- defaults.setPropertyIfNull(IMMEDIATE_PROPNAME, IMMEDIATE_DEFAULT);
- defaults.setPropertyIfNull(MANDATORY_PROPNAME, MANDATORY_DEFAULT);
- defaults.setPropertyIfNull(DURABLE_DESTS_PROPNAME, DURABLE_DESTS_DEFAULT);
- defaults.setPropertyIfNull(PREFETCH_PROPNAME, PREFETCH_DEFAULT);
-
- defaults.setPropertyIfNull(MESSAGE_SIZE_PROPNAME, MESSAGE_SIZE_DEAFULT);
- defaults.setPropertyIfNull(RATE_PROPNAME, RATE_DEFAULT);
- defaults.setPropertyIfNull(SELECTOR_PROPNAME, SELECTOR_DEFAULT);
- defaults.setPropertyIfNull(TIMEOUT_PROPNAME, TIMEOUT_DEFAULT);
- defaults.setPropertyIfNull(TX_BATCH_SIZE_PROPNAME, TX_BATCH_SIZE_DEFAULT);
- defaults.setPropertyIfNull(MAX_PENDING_PROPNAME, MAX_PENDING_DEFAULT);
- defaults.setPropertyIfNull(ROLLBACK_PUBLISHER_PROPNAME, ROLLBACK_PUBLISHER_DEFAULT);
- defaults.setPropertyIfNull(ROLLBACK_RECEIVER_PROPNAME, ROLLBACK_RECEIVER_DEFAULT);
-
- defaults.setPropertyIfNull(NOT_APPLICABLE_ASSERTION_PROPNAME, NOT_APPLICABLE_ASSERTION_DEFAULT);
- defaults.setPropertyIfNull(VERBOSE_PROPNAME, VERBOSE_DEFAULT);
- }
-
- /// <summary> Creates a test configuration based on the defaults. </summary>
- public MessagingTestConfigProperties()
- {
- super(defaults);
- }
-
- /// <summary>
- /// Creates a test configuration based on the supplied properties.
- /// </summary>
- /// <param name="properties"> The test configuration. </param>
- public MessagingTestConfigProperties(Properties properties)
- {
- super(properties);
- }
-
- /// <summary>
- /// The size of test messages to send.
- /// </summary>
- /// <return> The size of test messages to send. </return>
- public int getMessageSize()
- {
- return getPropertyAsInteger(MESSAGE_SIZE_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that the publishing producer should be set up to publish to a destination.
- /// </summary>
- /// <return> Flag to indicate that the publishing producer should be set up to publish to a destination. </return>
- public bool getPublisherProducerBind()
- {
- return getPropertyAsBoolean(PUBLISHER_PRODUCER_BIND_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that the publishing consumer should be set up to receive from a destination.
- /// </summary>
- /// <return> Flag to indicate that the publishing consumer should be set up to receive from a destination. </return>
- public bool getPublisherConsumerBind()
- {
- return getPropertyAsBoolean(PUBLISHER_CONSUMER_BIND_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that the receiving producer should be set up to publish to a destination.
- /// </summary>
- /// <return> Flag to indicate that the receiving producer should be set up to publish to a destination. </return>
- public bool getReceiverProducerBind()
- {
- return getPropertyAsBoolean(RECEIVER_PRODUCER_BIND_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that the receiving consumer should be set up to receive from a destination.
- /// </summary>
- /// <return> Flag to indicate that the receiving consumer should be set up to receive from a destination. </return>
- public bool getReceiverConsumerBind()
- {
- return getPropertyAsBoolean(RECEIVER_CONSUMER_BIND_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that the publishing consumer should be created and actively listening.
- /// </summary>
- /// <return> Flag to indicate that the publishing consumer should be created. </return>
- public bool getPublisherConsumerActive()
- {
- return getPropertyAsBoolean(PUBLISHER_CONSUMER_ACTIVE_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that the receiving consumers should be created and actively listening.
- /// </summary>
- /// <return> Flag to indicate that the receiving consumers should be created and actively listening. </return>
- public bool getReceiverConsumerActive()
- {
- return getPropertyAsBoolean(RECEIVER_CONSUMER_ACTIVE_PROPNAME);
- }
-
- /// <summary>
- /// A root to create all test destination names from.
- /// </summary>
- /// <return> A root to create all test destination names from. </return>
- public string getSendDestinationNameRoot()
- {
- return getProperty(SEND_DESTINATION_NAME_ROOT_PROPNAME);
- }
-
- /// <summary>
- /// A root to create all receiving destination names from.
- /// </summary>
- /// <return> A root to create all receiving destination names from. </return>
- public string getReceiveDestinationNameRoot()
- {
- return getProperty(RECEIVE_DESTINATION_NAME_ROOT_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that persistent messages should be used.
- /// </summary>
- /// <return> Flag to indicate that persistent messages should be used. </return>
- public bool getPersistentMode()
- {
- return getPropertyAsBoolean(PERSISTENT_MODE_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that transactional messages should be sent by the publisher.
- /// </summary>
- /// <return> Flag to indicate that transactional messages should be sent by the publisher. </return>
- public bool getPublisherTransacted()
- {
- return getPropertyAsBoolean(TRANSACTED_PUBLISHER_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that transactional receives should be used by the receiver.
- /// </summary>
- /// <return> Flag to indicate that transactional receives should be used by the receiver. </return>
- public bool getReceiverTransacted()
- {
- return getPropertyAsBoolean(TRANSACTED_PUBLISHER_PROPNAME);
- }
-
- /// <summary>
- /// The name of the virtual host to run all tests over.
- /// </summary>
- /// <return> The name of the virtual host to run all tests over. </return>
- public string getVirtualHost()
- {
- return getProperty(VIRTUAL_HOST_PROPNAME);
- }
-
- /// <summary>
- /// Limiting rate for each sender in messages per second, or zero for unlimited.
- /// </summary>
- /// <return> Limiting rate for each sender in messages per second, or zero for unlimited. </return>
- public string getRate()
- {
- return getProperty(RATE_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that test messages should be received publish/subscribe style by all receivers.
- /// </summary>
- /// <return> Flag to indicate that test messages should be received publish/subscribe style by all receivers. </return>
- public bool getPubsub()
- {
- return getPropertyAsBoolean(PUBSUB_PROPNAME);
- }
-
- /// <summary>
- /// The username credentials to run tests with.
- /// </summary>
- /// <return> The username credentials to run tests with. </return>
- public string getUsername()
- {
- return getProperty(USERNAME_PROPNAME);
- }
-
- /// <summary>
- /// The password credentials to run tests with.
- /// </summary>
- /// <return> The password credentials to run tests with. </return>
- public string getPassword()
- {
- return getProperty(PASSWORD_PROPNAME);
- }
-
- /// <summary>
- /// The timeout duration to fail tests on, should they receive no messages within it.
- /// </summary>
- /// <return> The timeout duration to fail tests on, should they receive no messages within it. </return>
- public long getTimeout()
- {
- return getPropertyAsLong(TIMEOUT_PROPNAME);
- }
-
- /// <summary>
- /// The number of messages to batch into each transaction in transational tests.
- /// </summary>
- /// <return> The number of messages to batch into each transaction in transational tests. </return>
- public int getTxBatchSize()
- {
- return getPropertyAsInteger(TX_BATCH_SIZE_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that tests should use durable destinations.
- /// </summary>
- /// <return> Flag to indicate that tests should use durable destinations. </return>
- public bool getDurableDests()
- {
- return getPropertyAsBoolean(DURABLE_DESTS_PROPNAME);
- }
-
- /// <summary>
- /// The ack mode for message receivers to use.
- /// </summary>
- /// <return> The ack mode for message receivers to use. </return>
- public int getAckMode()
- {
- return getPropertyAsInteger(ACK_MODE_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that tests should use durable subscriptions.
- /// </summary>
- /// <return> Flag to indicate that tests should use durable subscriptions. </return>
- public bool getDurableSubscription()
- {
- return getPropertyAsBoolean(DURABLE_SUBSCRIPTION_PROPNAME);
- }
-
- /// <summary>
- /// The maximum amount of in-flight data, in bytes, that tests should send at any time.
- /// </summary>
- /// <return> The maximum amount of in-flight data, in bytes, that tests should send at any time. </return>
- public int getMaxPending()
- {
- return getPropertyAsInteger(MAX_PENDING_PROPNAME);
- }
-
- /// <summary>
- /// The size of the prefetch queue to use.
- /// </summary>
- /// <return> The size of the prefetch queue to use. </return>
- public int getPrefetch()
- {
- return getPropertyAsInteger(PREFETCH_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that subscriptions should be no-local.
- /// </summary>
- /// <return> Flag to indicate that subscriptions should be no-local. </return>
- public bool getNoLocal()
- {
- return getPropertyAsBoolean(NO_LOCAL_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that subscriptions should be exclusive.
- /// </summary>
- /// <return> Flag to indicate that subscriptions should be exclusive. </return>
- public bool getExclusive()
- {
- return getPropertyAsBoolean(EXCLUSIVE_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that messages must be delivered immediately.
- /// </summary>
- /// <return> Flag to indicate that messages must be delivered immediately. </return>
- public bool getImmediate()
- {
- return getPropertyAsBoolean(IMMEDIATE_PROPNAME);
- }
-
- /// <summary>
- /// Flag to indicate that messages must be routable.
- /// </summary>
- /// <return> Flag to indicate that messages must be routable. </return>
- public bool getMandatory()
- {
- return getPropertyAsBoolean(MANDATORY_PROPNAME);
- }
-
- /// <summary>
- /// Gets the value of a flag to indicate that the publisher should rollback all messages sent.
- /// </summary>
- /// <return> A flag to indicate that the publisher should rollback all messages sent. </return>
- public bool getRollbackPublisher()
- {
- return getPropertyAsBoolean(ROLLBACK_PUBLISHER_PROPNAME);
- }
-
- /// <summary>
- /// Gets the value of a flag to indicate that the receiver should rollback all messages received, then receive them
- /// again.
- /// </summary>
- /// <return> A flag to indicate that the publisher should rollback all messages received. </return>
- public bool getRollbackReceiver()
- {
- return getPropertyAsBoolean(ROLLBACK_RECEIVER_PROPNAME);
- }
-
- /// <summary>
- /// Gets the behavioural mode of not applicable assertions. Should be one of 'quiet', 'warn' or 'fail'.
- /// </summary>
- /// <return> The behavioural mode of not applicable assertions. </return>
- public string getNotApplicableAssertionMode()
- {
- return getProperty(NOT_APPLICABLE_ASSERTION_PROPNAME);
- }
- }
- */
+/*
+ *
+ * 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.
+ *
+ */
+//using uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
+
+//using javax.jms.Session;
+
+//using java.util.Properties;
+
+namespace Apache.Qpid.Integration.Tests.framework
+{
+ public class TestModel //extends ParsedProperties
+ {}
+
+ /*
+ /// <summary>
+ /// MessagingTestConfigProperties defines a set of property names and default values for specifying a messaging topology,
+ /// and test parameters for running a messaging test over that topology. A Properties object holding some of these
+ /// properties, superimposed onto the defaults, is used to establish test topologies and control test behaviour.
+ ///
+ /// <p/>A complete list of the parameters, default values and comments on their usage is provided here:
+ ///
+ /// <p/><table><caption>Parameters</caption>
+ /// <tr><th> Parameter <th> Default <th> Comments
+ /// <tr><td> messageSize <td> 0 <td> Message size in bytes. Not including any headers.
+ /// <tr><td> destinationName <td> ping <td> The root name to use to generate destination names to ping.
+ /// <tr><td> persistent <td> false <td> Determines whether peristent delivery is used.
+ /// <tr><td> transacted <td> false <td> Determines whether messages are sent/received in transactions.
+ /// <tr><td> broker <td> tcp://localhost:5672 <td> Determines the broker to connect to.
+ /// <tr><td> virtualHost <td> test <td> Determines the virtual host to send all ping over.
+ /// <tr><td> rate <td> 0 <td> The maximum rate (in hertz) to send messages at. 0 means no limit.
+ /// <tr><td> verbose <td> false <td> The verbose flag for debugging. Prints to console on every message.
+ /// <tr><td> pubsub <td> false <td> Whether to ping topics or queues. Uses p2p by default.
+ /// <tr><td> username <td> guest <td> The username to access the broker with.
+ /// <tr><td> password <td> guest <td> The password to access the broker with.
+ /// <tr><td> selector <td> null <td> Not used. Defines a message selector to filter pings with.
+ /// <tr><td> destinationCount <td> 1 <td> The number of receivers listening to the pings.
+ /// <tr><td> timeout <td> 30000 <td> In milliseconds. The timeout to stop waiting for replies.
+ /// <tr><td> commitBatchSize <td> 1 <td> The number of messages per transaction in transactional mode.
+ /// <tr><td> uniqueDests <td> true <td> Whether each receivers only listens to one ping destination or all.
+ /// <tr><td> durableDests <td> false <td> Whether or not durable destinations are used.
+ /// <tr><td> ackMode <td> AUTO_ACK <td> The message acknowledgement mode. Possible values are:
+ /// 0 - SESSION_TRANSACTED
+ /// 1 - AUTO_ACKNOWLEDGE
+ /// 2 - CLIENT_ACKNOWLEDGE
+ /// 3 - DUPS_OK_ACKNOWLEDGE
+ /// 257 - NO_ACKNOWLEDGE
+ /// 258 - PRE_ACKNOWLEDGE
+ /// <tr><td> maxPending <td> 0 <td> The maximum size in bytes, of messages sent but not yet received.
+ /// Limits the volume of messages currently buffered on the client
+ /// or broker. Can help scale test clients by limiting amount of buffered
+ /// data to avoid out of memory errors.
+ /// </table>
+ ///
+ /// <p><table id="crc"><caption>CRC Card</caption>
+ /// <tr><th> Responsibilities <th> Collaborations
+ /// <tr><td> Provide the names and defaults of all test parameters.
+ /// </table>
+ /// </summary>
+ ///
+ /// <remarks> Put a type-safe wrapper around these properties, but continue to store the parameters as properties. This is
+ /// simply to ensure that it is a simple matter to serialize/deserialize string/string pairs onto messages.</remarks>
+ public class MessagingTestConfigProperties extends ParsedProperties
+ {
+ // ====================== Connection Properties ==================================
+
+ /// <summary> Holds the name of the default connection configuration. </summary>
+ public static final string CONNECTION_NAME = "broker";
+
+ /// <summary> Holds the name of the property to get the initial context factory name from. </summary>
+ public static final string INITIAL_CONTEXT_FACTORY_PROPNAME = "java.naming.factory.initial";
+
+ /// <summary> Defines the class to use as the initial context factory by default. </summary>
+ public static final string INITIAL_CONTEXT_FACTORY_DEFAULT = "org.apache.qpid.jndi.PropertiesFileInitialContextFactory";
+
+ /// <summary> Holds the name of the property to get the test broker url from. </summary>
+ public static final string BROKER_PROPNAME = "qpid.test.broker";
+
+ /// <summary> Holds the default broker url for the test. </summary>
+ public static final string BROKER_DEFAULT = "vm://:1";
+
+ /// <summary> Holds the name of the property to get the test broker virtual path. </summary>
+ public static final string VIRTUAL_HOST_PROPNAME = "virtualHost";
+
+ /// <summary> Holds the default virtual path for the test. </summary>
+ public static final string VIRTUAL_HOST_DEFAULT = "";
+
+ /// <summary> Holds the name of the property to get the broker access username from. </summary>
+ public static final string USERNAME_PROPNAME = "username";
+
+ /// <summary> Holds the default broker log on username. </summary>
+ public static final string USERNAME_DEFAULT = "guest";
+
+ /// <summary> Holds the name of the property to get the broker access password from. </summary>
+ public static final string PASSWORD_PROPNAME = "password";
+
+ /// <summary> Holds the default broker log on password. </summary>
+ public static final string PASSWORD_DEFAULT = "guest";
+
+ // ====================== Messaging Topology Properties ==========================
+
+ /// <summary> Holds the name of the property to get the bind publisher procuder flag from. </summary>
+ public static final string PUBLISHER_PRODUCER_BIND_PROPNAME = "publisherProducerBind";
+
+ /// <summary> Holds the default value of the publisher producer flag. </summary>
+ public static final bool PUBLISHER_PRODUCER_BIND_DEFAULT = true;
+
+ /// <summary> Holds the name of the property to get the bind publisher procuder flag from. </summary>
+ public static final string PUBLISHER_CONSUMER_BIND_PROPNAME = "publisherConsumerBind";
+
+ /// <summary> Holds the default value of the publisher consumer flag. </summary>
+ public static final bool PUBLISHER_CONSUMER_BIND_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to get the bind receivers procuder flag from. </summary>
+ public static final string RECEIVER_PRODUCER_BIND_PROPNAME = "receiverProducerBind";
+
+ /// <summary> Holds the default value of the receivers producer flag. </summary>
+ public static final bool RECEIVER_PRODUCER_BIND_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to get the bind receivers procuder flag from. </summary>
+ public static final string RECEIVER_CONSUMER_BIND_PROPNAME = "receiverConsumerBind";
+
+ /// <summary> Holds the default value of the receivers consumer flag. </summary>
+ public static final bool RECEIVER_CONSUMER_BIND_DEFAULT = true;
+
+ /// <summary> Holds the name of the property to get the publishers consumer active flag from. </summary>
+ public static final string PUBLISHER_CONSUMER_ACTIVE_PROPNAME = "publisherConsumerActive";
+
+ /// <summary> Holds the default value of the publishers consumer active flag. </summary>
+ public static final bool PUBLISHER_CONSUMER_ACTIVE_DEFAULT = true;
+
+ /// <summary> Holds the name of the property to get the receivers consumer active flag from. </summary>
+ public static final string RECEIVER_CONSUMER_ACTIVE_PROPNAME = "receiverConsumerActive";
+
+ /// <summary> Holds the default value of the receivers consumer active flag. </summary>
+ public static final bool RECEIVER_CONSUMER_ACTIVE_DEFAULT = true;
+
+ /// <summary> Holds the name of the property to get the destination name root from. </summary>
+ public static final string SEND_DESTINATION_NAME_ROOT_PROPNAME = "sendDestinationRoot";
+
+ /// <summary> Holds the root of the name of the default destination to send to. </summary>
+ public static final string SEND_DESTINATION_NAME_ROOT_DEFAULT = "sendTo";
+
+ /// <summary> Holds the name of the property to get the destination name root from. </summary>
+ public static final string RECEIVE_DESTINATION_NAME_ROOT_PROPNAME = "receiveDestinationRoot";
+
+ /// <summary> Holds the root of the name of the default destination to send to. </summary>
+ public static final string RECEIVE_DESTINATION_NAME_ROOT_DEFAULT = "receiveFrom";
+
+ /// <summary> Holds the name of the proeprty to get the destination count from. </summary>
+ public static final string DESTINATION_COUNT_PROPNAME = "destinationCount";
+
+ /// <summary> Defines the default number of destinations to ping. </summary>
+ public static final int DESTINATION_COUNT_DEFAULT = 1;
+
+ /// <summary> Holds the name of the property to get the p2p or pub/sub messaging mode from. </summary>
+ public static final string PUBSUB_PROPNAME = "pubsub";
+
+ /// <summary> Holds the pub/sub mode default, true means ping a topic, false means ping a queue. </summary>
+ public static final bool PUBSUB_DEFAULT = false;
+
+ // ====================== JMS Options and Flags =================================
+
+ /// <summary> Holds the name of the property to get the test delivery mode from. </summary>
+ public static final string PERSISTENT_MODE_PROPNAME = "persistent";
+
+ /// <summary> Holds the message delivery mode to use for the test. </summary>
+ public static final bool PERSISTENT_MODE_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to get the test transactional mode from. </summary>
+ public static final string TRANSACTED_PUBLISHER_PROPNAME = "transactedPublisher";
+
+ /// <summary> Holds the transactional mode to use for the test. </summary>
+ public static final bool TRANSACTED_PUBLISHER_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to get the test transactional mode from. </summary>
+ public static final string TRANSACTED_RECEIVER_PROPNAME = "transactedReceiver";
+
+ /// <summary> Holds the transactional mode to use for the test. </summary>
+ public static final bool TRANSACTED_RECEIVER_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to set the no local flag from. </summary>
+ public static final string NO_LOCAL_PROPNAME = "noLocal";
+
+ /// <summary> Defines the default value of the no local flag to use when consuming messages. </summary>
+ public static final bool NO_LOCAL_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to get the message acknowledgement mode from. </summary>
+ public static final string ACK_MODE_PROPNAME = "ackMode";
+
+ /// <summary> Defines the default message acknowledgement mode. </summary>
+ public static final int ACK_MODE_DEFAULT = Session.AUTO_ACKNOWLEDGE;
+
+ /// <summary> Holds the name of the property to get the durable subscriptions flag from, when doing pub/sub messaging. </summary>
+ public static final string DURABLE_SUBSCRIPTION_PROPNAME = "durableSubscription";
+
+ /// <summary> Defines the default value of the durable subscriptions flag. </summary>
+ public static final bool DURABLE_SUBSCRIPTION_DEFAULT = false;
+
+ // ====================== Qpid/AMQP Options and Flags ================================
+
+ /// <summary> Holds the name of the property to set the exclusive flag from. </summary>
+ public static final string EXCLUSIVE_PROPNAME = "exclusive";
+
+ /// <summary> Defines the default value of the exclusive flag to use when consuming messages. </summary>
+ public static final bool EXCLUSIVE_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to set the immediate flag from. </summary>
+ public static final string IMMEDIATE_PROPNAME = "immediate";
+
+ /// <summary> Defines the default value of the immediate flag to use when sending messages. </summary>
+ public static final bool IMMEDIATE_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to set the mandatory flag from. </summary>
+ public static final string MANDATORY_PROPNAME = "mandatory";
+
+ /// <summary> Defines the default value of the mandatory flag to use when sending messages. </summary>
+ public static final bool MANDATORY_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to get the durable destinations flag from. </summary>
+ public static final string DURABLE_DESTS_PROPNAME = "durableDests";
+
+ /// <summary> Default value for the durable destinations flag. </summary>
+ public static final bool DURABLE_DESTS_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to set the prefetch size from. </summary>
+ public static final string PREFETCH_PROPNAME = "prefetch";
+
+ /// <summary> Defines the default prefetch size to use when consuming messages. </summary>
+ public static final int PREFETCH_DEFAULT = 100;
+
+ // ====================== Common Test Parameters ================================
+
+ /// <summary> Holds the name of the property to get the test message size from. </summary>
+ public static final string MESSAGE_SIZE_PROPNAME = "messageSize";
+
+ /// <summary> Used to set up a default message size. </summary>
+ public static final int MESSAGE_SIZE_DEAFULT = 0;
+
+ /// <summary> Holds the name of the property to get the message rate from. </summary>
+ public static final string RATE_PROPNAME = "rate";
+
+ /// <summary> Defines the default rate (in pings per second) to send pings at. 0 means as fast as possible, no restriction. </summary>
+ public static final int RATE_DEFAULT = 0;
+
+ /// <summary> Holds the name of the proeprty to get the. </summary>
+ public static final string SELECTOR_PROPNAME = "selector";
+
+ /// <summary> Holds the default message selector. </summary>
+ public static final string SELECTOR_DEFAULT = "";
+
+ /// <summary> Holds the name of the property to get the waiting timeout for response messages. </summary>
+ public static final string TIMEOUT_PROPNAME = "timeout";
+
+ /// <summary> Default time to wait before assuming that a ping has timed out. </summary>
+ public static final long TIMEOUT_DEFAULT = 30000;
+
+ /// <summary> Holds the name of the property to get the commit batch size from. </summary>
+ public static final string TX_BATCH_SIZE_PROPNAME = "commitBatchSize";
+
+ /// <summary> Defines the default number of pings to send in each transaction when running transactionally. </summary>
+ public static final int TX_BATCH_SIZE_DEFAULT = 1;
+
+ /// <summary> Holds the name of the property to set the maximum amount of pending message data for a producer to hold. </summary>
+ public static final string MAX_PENDING_PROPNAME = "maxPending";
+
+ /// <summary> Defines the default maximum quantity of pending message data to allow producers to hold. </summary>
+ public static final int MAX_PENDING_DEFAULT = 0;
+
+ /// <summary> Holds the name of the property to get the publisher rollback flag from. </summary>
+ public static final string ROLLBACK_PUBLISHER_PROPNAME = "rollbackPublisher";
+
+ /// <summary> Holds the default publisher roll back setting. </summary>
+ public static final bool ROLLBACK_PUBLISHER_DEFAULT = false;
+
+ /// <summary> Holds the name of the property to get the publisher rollback flag from. </summary>
+ public static final string ROLLBACK_RECEIVER_PROPNAME = "rollbackReceiver";
+
+ /// <summary> Holds the default publisher roll back setting. </summary>
+ public static final bool ROLLBACK_RECEIVER_DEFAULT = false;
+
+ // ====================== Options that control the bahviour of the test framework. =========================
+
+ /// <summary> Holds the name of the property to get the behavioural mode of not applicable assertions. </summary>
+ public static final string NOT_APPLICABLE_ASSERTION_PROPNAME = "notApplicableAssertion";
+
+ /// <summary> Holds the default behavioral mode of not applicable assertions, which is logging them as a warning. </summary>
+ public static final string NOT_APPLICABLE_ASSERTION_DEFAULT = "warn";
+
+ /// <summary> Holds the name of the property to get the verbose mode proeprty from. </summary>
+ public static final string VERBOSE_PROPNAME = "verbose";
+
+ /// <summary> Holds the default verbose mode. </summary>
+ public static final bool VERBOSE_DEFAULT = false;
+
+ /// <summary> Holds the default configuration properties. </summary>
+ public static ParsedProperties defaults = new ParsedProperties();
+
+ static
+ {
+ defaults.setPropertyIfNull(INITIAL_CONTEXT_FACTORY_PROPNAME, INITIAL_CONTEXT_FACTORY_DEFAULT);
+ defaults.setPropertyIfNull(BROKER_PROPNAME, BROKER_DEFAULT);
+ defaults.setPropertyIfNull(VIRTUAL_HOST_PROPNAME, VIRTUAL_HOST_DEFAULT);
+ defaults.setPropertyIfNull(USERNAME_PROPNAME, USERNAME_DEFAULT);
+ defaults.setPropertyIfNull(PASSWORD_PROPNAME, PASSWORD_DEFAULT);
+
+ defaults.setPropertyIfNull(PUBLISHER_PRODUCER_BIND_PROPNAME, PUBLISHER_PRODUCER_BIND_DEFAULT);
+ defaults.setPropertyIfNull(PUBLISHER_CONSUMER_BIND_PROPNAME, PUBLISHER_CONSUMER_BIND_DEFAULT);
+ defaults.setPropertyIfNull(RECEIVER_PRODUCER_BIND_PROPNAME, RECEIVER_PRODUCER_BIND_DEFAULT);
+ defaults.setPropertyIfNull(RECEIVER_CONSUMER_BIND_PROPNAME, RECEIVER_CONSUMER_BIND_DEFAULT);
+ defaults.setPropertyIfNull(PUBLISHER_CONSUMER_ACTIVE_PROPNAME, PUBLISHER_CONSUMER_ACTIVE_DEFAULT);
+ defaults.setPropertyIfNull(RECEIVER_CONSUMER_ACTIVE_PROPNAME, RECEIVER_CONSUMER_ACTIVE_DEFAULT);
+ defaults.setPropertyIfNull(SEND_DESTINATION_NAME_ROOT_PROPNAME, SEND_DESTINATION_NAME_ROOT_DEFAULT);
+ defaults.setPropertyIfNull(RECEIVE_DESTINATION_NAME_ROOT_PROPNAME, RECEIVE_DESTINATION_NAME_ROOT_DEFAULT);
+ defaults.setPropertyIfNull(DESTINATION_COUNT_PROPNAME, DESTINATION_COUNT_DEFAULT);
+ defaults.setPropertyIfNull(PUBSUB_PROPNAME, PUBSUB_DEFAULT);
+
+ defaults.setPropertyIfNull(PERSISTENT_MODE_PROPNAME, PERSISTENT_MODE_DEFAULT);
+ defaults.setPropertyIfNull(TRANSACTED_PUBLISHER_PROPNAME, TRANSACTED_PUBLISHER_DEFAULT);
+ defaults.setPropertyIfNull(TRANSACTED_RECEIVER_PROPNAME, TRANSACTED_RECEIVER_DEFAULT);
+ defaults.setPropertyIfNull(NO_LOCAL_PROPNAME, NO_LOCAL_DEFAULT);
+ defaults.setPropertyIfNull(ACK_MODE_PROPNAME, ACK_MODE_DEFAULT);
+ defaults.setPropertyIfNull(DURABLE_SUBSCRIPTION_PROPNAME, DURABLE_SUBSCRIPTION_DEFAULT);
+
+ defaults.setPropertyIfNull(EXCLUSIVE_PROPNAME, EXCLUSIVE_DEFAULT);
+ defaults.setPropertyIfNull(IMMEDIATE_PROPNAME, IMMEDIATE_DEFAULT);
+ defaults.setPropertyIfNull(MANDATORY_PROPNAME, MANDATORY_DEFAULT);
+ defaults.setPropertyIfNull(DURABLE_DESTS_PROPNAME, DURABLE_DESTS_DEFAULT);
+ defaults.setPropertyIfNull(PREFETCH_PROPNAME, PREFETCH_DEFAULT);
+
+ defaults.setPropertyIfNull(MESSAGE_SIZE_PROPNAME, MESSAGE_SIZE_DEAFULT);
+ defaults.setPropertyIfNull(RATE_PROPNAME, RATE_DEFAULT);
+ defaults.setPropertyIfNull(SELECTOR_PROPNAME, SELECTOR_DEFAULT);
+ defaults.setPropertyIfNull(TIMEOUT_PROPNAME, TIMEOUT_DEFAULT);
+ defaults.setPropertyIfNull(TX_BATCH_SIZE_PROPNAME, TX_BATCH_SIZE_DEFAULT);
+ defaults.setPropertyIfNull(MAX_PENDING_PROPNAME, MAX_PENDING_DEFAULT);
+ defaults.setPropertyIfNull(ROLLBACK_PUBLISHER_PROPNAME, ROLLBACK_PUBLISHER_DEFAULT);
+ defaults.setPropertyIfNull(ROLLBACK_RECEIVER_PROPNAME, ROLLBACK_RECEIVER_DEFAULT);
+
+ defaults.setPropertyIfNull(NOT_APPLICABLE_ASSERTION_PROPNAME, NOT_APPLICABLE_ASSERTION_DEFAULT);
+ defaults.setPropertyIfNull(VERBOSE_PROPNAME, VERBOSE_DEFAULT);
+ }
+
+ /// <summary> Creates a test configuration based on the defaults. </summary>
+ public MessagingTestConfigProperties()
+ {
+ super(defaults);
+ }
+
+ /// <summary>
+ /// Creates a test configuration based on the supplied properties.
+ /// </summary>
+ /// <param name="properties"> The test configuration. </param>
+ public MessagingTestConfigProperties(Properties properties)
+ {
+ super(properties);
+ }
+
+ /// <summary>
+ /// The size of test messages to send.
+ /// </summary>
+ /// <return> The size of test messages to send. </return>
+ public int getMessageSize()
+ {
+ return getPropertyAsInteger(MESSAGE_SIZE_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that the publishing producer should be set up to publish to a destination.
+ /// </summary>
+ /// <return> Flag to indicate that the publishing producer should be set up to publish to a destination. </return>
+ public bool getPublisherProducerBind()
+ {
+ return getPropertyAsBoolean(PUBLISHER_PRODUCER_BIND_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that the publishing consumer should be set up to receive from a destination.
+ /// </summary>
+ /// <return> Flag to indicate that the publishing consumer should be set up to receive from a destination. </return>
+ public bool getPublisherConsumerBind()
+ {
+ return getPropertyAsBoolean(PUBLISHER_CONSUMER_BIND_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that the receiving producer should be set up to publish to a destination.
+ /// </summary>
+ /// <return> Flag to indicate that the receiving producer should be set up to publish to a destination. </return>
+ public bool getReceiverProducerBind()
+ {
+ return getPropertyAsBoolean(RECEIVER_PRODUCER_BIND_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that the receiving consumer should be set up to receive from a destination.
+ /// </summary>
+ /// <return> Flag to indicate that the receiving consumer should be set up to receive from a destination. </return>
+ public bool getReceiverConsumerBind()
+ {
+ return getPropertyAsBoolean(RECEIVER_CONSUMER_BIND_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that the publishing consumer should be created and actively listening.
+ /// </summary>
+ /// <return> Flag to indicate that the publishing consumer should be created. </return>
+ public bool getPublisherConsumerActive()
+ {
+ return getPropertyAsBoolean(PUBLISHER_CONSUMER_ACTIVE_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that the receiving consumers should be created and actively listening.
+ /// </summary>
+ /// <return> Flag to indicate that the receiving consumers should be created and actively listening. </return>
+ public bool getReceiverConsumerActive()
+ {
+ return getPropertyAsBoolean(RECEIVER_CONSUMER_ACTIVE_PROPNAME);
+ }
+
+ /// <summary>
+ /// A root to create all test destination names from.
+ /// </summary>
+ /// <return> A root to create all test destination names from. </return>
+ public string getSendDestinationNameRoot()
+ {
+ return getProperty(SEND_DESTINATION_NAME_ROOT_PROPNAME);
+ }
+
+ /// <summary>
+ /// A root to create all receiving destination names from.
+ /// </summary>
+ /// <return> A root to create all receiving destination names from. </return>
+ public string getReceiveDestinationNameRoot()
+ {
+ return getProperty(RECEIVE_DESTINATION_NAME_ROOT_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that persistent messages should be used.
+ /// </summary>
+ /// <return> Flag to indicate that persistent messages should be used. </return>
+ public bool getPersistentMode()
+ {
+ return getPropertyAsBoolean(PERSISTENT_MODE_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that transactional messages should be sent by the publisher.
+ /// </summary>
+ /// <return> Flag to indicate that transactional messages should be sent by the publisher. </return>
+ public bool getPublisherTransacted()
+ {
+ return getPropertyAsBoolean(TRANSACTED_PUBLISHER_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that transactional receives should be used by the receiver.
+ /// </summary>
+ /// <return> Flag to indicate that transactional receives should be used by the receiver. </return>
+ public bool getReceiverTransacted()
+ {
+ return getPropertyAsBoolean(TRANSACTED_PUBLISHER_PROPNAME);
+ }
+
+ /// <summary>
+ /// The name of the virtual host to run all tests over.
+ /// </summary>
+ /// <return> The name of the virtual host to run all tests over. </return>
+ public string getVirtualHost()
+ {
+ return getProperty(VIRTUAL_HOST_PROPNAME);
+ }
+
+ /// <summary>
+ /// Limiting rate for each sender in messages per second, or zero for unlimited.
+ /// </summary>
+ /// <return> Limiting rate for each sender in messages per second, or zero for unlimited. </return>
+ public string getRate()
+ {
+ return getProperty(RATE_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that test messages should be received publish/subscribe style by all receivers.
+ /// </summary>
+ /// <return> Flag to indicate that test messages should be received publish/subscribe style by all receivers. </return>
+ public bool getPubsub()
+ {
+ return getPropertyAsBoolean(PUBSUB_PROPNAME);
+ }
+
+ /// <summary>
+ /// The username credentials to run tests with.
+ /// </summary>
+ /// <return> The username credentials to run tests with. </return>
+ public string getUsername()
+ {
+ return getProperty(USERNAME_PROPNAME);
+ }
+
+ /// <summary>
+ /// The password credentials to run tests with.
+ /// </summary>
+ /// <return> The password credentials to run tests with. </return>
+ public string getPassword()
+ {
+ return getProperty(PASSWORD_PROPNAME);
+ }
+
+ /// <summary>
+ /// The timeout duration to fail tests on, should they receive no messages within it.
+ /// </summary>
+ /// <return> The timeout duration to fail tests on, should they receive no messages within it. </return>
+ public long getTimeout()
+ {
+ return getPropertyAsLong(TIMEOUT_PROPNAME);
+ }
+
+ /// <summary>
+ /// The number of messages to batch into each transaction in transational tests.
+ /// </summary>
+ /// <return> The number of messages to batch into each transaction in transational tests. </return>
+ public int getTxBatchSize()
+ {
+ return getPropertyAsInteger(TX_BATCH_SIZE_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that tests should use durable destinations.
+ /// </summary>
+ /// <return> Flag to indicate that tests should use durable destinations. </return>
+ public bool getDurableDests()
+ {
+ return getPropertyAsBoolean(DURABLE_DESTS_PROPNAME);
+ }
+
+ /// <summary>
+ /// The ack mode for message receivers to use.
+ /// </summary>
+ /// <return> The ack mode for message receivers to use. </return>
+ public int getAckMode()
+ {
+ return getPropertyAsInteger(ACK_MODE_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that tests should use durable subscriptions.
+ /// </summary>
+ /// <return> Flag to indicate that tests should use durable subscriptions. </return>
+ public bool getDurableSubscription()
+ {
+ return getPropertyAsBoolean(DURABLE_SUBSCRIPTION_PROPNAME);
+ }
+
+ /// <summary>
+ /// The maximum amount of in-flight data, in bytes, that tests should send at any time.
+ /// </summary>
+ /// <return> The maximum amount of in-flight data, in bytes, that tests should send at any time. </return>
+ public int getMaxPending()
+ {
+ return getPropertyAsInteger(MAX_PENDING_PROPNAME);
+ }
+
+ /// <summary>
+ /// The size of the prefetch queue to use.
+ /// </summary>
+ /// <return> The size of the prefetch queue to use. </return>
+ public int getPrefetch()
+ {
+ return getPropertyAsInteger(PREFETCH_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that subscriptions should be no-local.
+ /// </summary>
+ /// <return> Flag to indicate that subscriptions should be no-local. </return>
+ public bool getNoLocal()
+ {
+ return getPropertyAsBoolean(NO_LOCAL_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that subscriptions should be exclusive.
+ /// </summary>
+ /// <return> Flag to indicate that subscriptions should be exclusive. </return>
+ public bool getExclusive()
+ {
+ return getPropertyAsBoolean(EXCLUSIVE_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that messages must be delivered immediately.
+ /// </summary>
+ /// <return> Flag to indicate that messages must be delivered immediately. </return>
+ public bool getImmediate()
+ {
+ return getPropertyAsBoolean(IMMEDIATE_PROPNAME);
+ }
+
+ /// <summary>
+ /// Flag to indicate that messages must be routable.
+ /// </summary>
+ /// <return> Flag to indicate that messages must be routable. </return>
+ public bool getMandatory()
+ {
+ return getPropertyAsBoolean(MANDATORY_PROPNAME);
+ }
+
+ /// <summary>
+ /// Gets the value of a flag to indicate that the publisher should rollback all messages sent.
+ /// </summary>
+ /// <return> A flag to indicate that the publisher should rollback all messages sent. </return>
+ public bool getRollbackPublisher()
+ {
+ return getPropertyAsBoolean(ROLLBACK_PUBLISHER_PROPNAME);
+ }
+
+ /// <summary>
+ /// Gets the value of a flag to indicate that the receiver should rollback all messages received, then receive them
+ /// again.
+ /// </summary>
+ /// <return> A flag to indicate that the publisher should rollback all messages received. </return>
+ public bool getRollbackReceiver()
+ {
+ return getPropertyAsBoolean(ROLLBACK_RECEIVER_PROPNAME);
+ }
+
+ /// <summary>
+ /// Gets the behavioural mode of not applicable assertions. Should be one of 'quiet', 'warn' or 'fail'.
+ /// </summary>
+ /// <return> The behavioural mode of not applicable assertions. </return>
+ public string getNotApplicableAssertionMode()
+ {
+ return getProperty(NOT_APPLICABLE_ASSERTION_PROPNAME);
+ }
+ }
+ */
} \ No newline at end of file
diff --git a/qpid/dotnet/Qpid.Integration.Tests/framework/sequencers/CircuitFactory.cs b/qpid/dotnet/Qpid.Integration.Tests/framework/sequencers/CircuitFactory.cs
index 463cf06dfb..4be08c3f38 100644
--- a/qpid/dotnet/Qpid.Integration.Tests/framework/sequencers/CircuitFactory.cs
+++ b/qpid/dotnet/Qpid.Integration.Tests/framework/sequencers/CircuitFactory.cs
@@ -1,85 +1,85 @@
-/*
- *
- * 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.
- *
- */
-using Apache.Qpid.Integration.Tests.framework;
-//using org.apache.qpid.util.ConversationFactory;
-
-//using uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
-
-//using javax.jms.JMSException;
-//using javax.jms.Message;
-
-using System.Collections.Generic;//.IList;
-//using System.Collections.Generic.IDictionary;
-//using java.util.Properties;
-
-namespace Apache.Qpid.Integration.Tests.framework.sequencers
-{
- /// <summary>
- /// A CircuitFactory is responsibile for creating test circuits appropriate to the context that a test case is
- /// running in, and providing an implementation of a standard test procedure over a test circuit.
- ///
- /// <p/><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities
- /// <tr><td> Provide a standard test procedure over a test circuit.
- /// <tr><td> Construct test circuits appropriate to a tests context.
- /// </table>
- /// </summary>
- public interface CircuitFactory
- {
- /// <summary>
- /// Creates a test circuit for the test, configered by the test parameters specified.
- /// </summary>
- /// <param name="testProperties"> The test parameters. </param>
- ///
- /// <return> A test circuit. </return>
- Circuit CreateCircuit(TestModel testProperties);
-
- /// <summary>
- /// Sets the sender test client to coordinate the test with.
- /// </summary>
- /// <param name="sender"> The contact details of the sending client in the test. </param>
- void SetSender(TestClientDetails sender);
-
- /// <summary>
- /// Sets the receiving test client to coordinate the test with.
- /// </summary>
- /// <param name="receiver"> The contact details of the sending client in the test. </param>
- void SetReceiver(TestClientDetails receiver);
-
- /// <summary>
- /// Supplies the sending test client.
- /// </summary>
- /// <return> The sending test client. </return>
- TestClientDetails GetSender();
-
- /// <summary>
- /// Supplies the receiving test client.
- /// </summary>
- /// <return> The receiving test client. </return>
- IList<TestClientDetails> GetReceivers();
-
- /// <summary>
- /// Accepts the conversation factory over which to hold the test coordinating conversation.
- /// </summary>
- /// <param name="conversationFactory"> The conversation factory to coordinate the test over. </param>
- //void setConversationFactory(ConversationFactory conversationFactory);
- }
+/*
+ *
+ * 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.
+ *
+ */
+using Apache.Qpid.Integration.Tests.framework;
+//using org.apache.qpid.util.ConversationFactory;
+
+//using uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
+
+//using javax.jms.JMSException;
+//using javax.jms.Message;
+
+using System.Collections.Generic;//.IList;
+//using System.Collections.Generic.IDictionary;
+//using java.util.Properties;
+
+namespace Apache.Qpid.Integration.Tests.framework.sequencers
+{
+ /// <summary>
+ /// A CircuitFactory is responsibile for creating test circuits appropriate to the context that a test case is
+ /// running in, and providing an implementation of a standard test procedure over a test circuit.
+ ///
+ /// <p/><table id="crc"><caption>CRC Card</caption>
+ /// <tr><th> Responsibilities
+ /// <tr><td> Provide a standard test procedure over a test circuit.
+ /// <tr><td> Construct test circuits appropriate to a tests context.
+ /// </table>
+ /// </summary>
+ public interface CircuitFactory
+ {
+ /// <summary>
+ /// Creates a test circuit for the test, configered by the test parameters specified.
+ /// </summary>
+ /// <param name="testProperties"> The test parameters. </param>
+ ///
+ /// <return> A test circuit. </return>
+ Circuit CreateCircuit(TestModel testProperties);
+
+ /// <summary>
+ /// Sets the sender test client to coordinate the test with.
+ /// </summary>
+ /// <param name="sender"> The contact details of the sending client in the test. </param>
+ void SetSender(TestClientDetails sender);
+
+ /// <summary>
+ /// Sets the receiving test client to coordinate the test with.
+ /// </summary>
+ /// <param name="receiver"> The contact details of the sending client in the test. </param>
+ void SetReceiver(TestClientDetails receiver);
+
+ /// <summary>
+ /// Supplies the sending test client.
+ /// </summary>
+ /// <return> The sending test client. </return>
+ TestClientDetails GetSender();
+
+ /// <summary>
+ /// Supplies the receiving test client.
+ /// </summary>
+ /// <return> The receiving test client. </return>
+ IList<TestClientDetails> GetReceivers();
+
+ /// <summary>
+ /// Accepts the conversation factory over which to hold the test coordinating conversation.
+ /// </summary>
+ /// <param name="conversationFactory"> The conversation factory to coordinate the test over. </param>
+ //void setConversationFactory(ConversationFactory conversationFactory);
+ }
} \ No newline at end of file