http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/amqp_dtx_test/Sender.cpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/amqp_dtx_test/Sender.cpp 
b/shims/qpid-proton-cpp/src/qpidit/amqp_dtx_test/Sender.cpp
new file mode 100644
index 0000000..4463954
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/amqp_dtx_test/Sender.cpp
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "qpidit/amqp_dtx_test/Sender.hpp"
+
+#include <stdlib.h> // exit()
+
+namespace qpidit
+{
+    namespace amqp_dtx_test
+    {
+    } /* namespace amqp_dtx_test */
+} /* namespace qpidit */
+
+
+/*
+ * --- main ---
+ * Args: 1: Broker address (ip-addr:port)
+ *       2: Queue name
+ *       ...
+ */
+
+int main(int argc, char** argv) {
+    exit(0);
+}

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/amqp_dtx_test/Sender.hpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/amqp_dtx_test/Sender.hpp 
b/shims/qpid-proton-cpp/src/qpidit/amqp_dtx_test/Sender.hpp
new file mode 100644
index 0000000..1c2e0a3
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/amqp_dtx_test/Sender.hpp
@@ -0,0 +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.
+ *
+ */
+
+#ifndef SRC_QPIDIT_AMQP_DTX_TEST_SENDER_HPP_
+#define SRC_QPIDIT_AMQP_DTX_TEST_SENDER_HPP_
+
+#include "proton/messaging_handler.hpp"
+
+namespace qpidit
+{
+    namespace amqp_dtx_test
+    {
+
+        class Sender : public proton::messaging_handler
+        {
+        };
+
+    } /* namespace amqp_dtx_test */
+} /* namespace qpidit */
+
+#endif /* SRC_QPIDIT_AMQP_DTX_TEST_SENDER_HPP_ */

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Receiver.cpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Receiver.cpp 
b/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Receiver.cpp
new file mode 100644
index 0000000..923b198
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Receiver.cpp
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "qpidit/amqp_features_test/Receiver.hpp"
+
+#include <stdlib.h> // exit()
+
+namespace qpidit
+{
+    namespace amqp_features_test
+    {
+    } /* namespace amqp_features_test */
+} /* namespace qpidit */
+
+
+/*
+ * --- main ---
+ * Args: 1: Broker address (ip-addr:port)
+ *       2: Queue name
+ *       ...
+ */
+
+int main(int argc, char** argv) {
+    exit(0);
+}

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Receiver.hpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Receiver.hpp 
b/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Receiver.hpp
new file mode 100644
index 0000000..71d7757
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Receiver.hpp
@@ -0,0 +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.
+ *
+ */
+
+#ifndef SRC_QPIDIT_AMQP_FEATURES_TEST_RECEIVER_HPP_
+#define SRC_QPIDIT_AMQP_FEATURES_TEST_RECEIVER_HPP_
+
+#include "proton/messaging_handler.hpp"
+
+namespace qpidit
+{
+    namespace amqp_features_test
+    {
+
+        class Receiver : public proton::messaging_handler
+        {
+        };
+
+    } /* namespace amqp_features_test */
+} /* namespace qpidit */
+
+#endif /* SRC_QPIDIT_AMQP_FEATURES_TEST_RECEIVER_HPP_ */

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Sender.cpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Sender.cpp 
b/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Sender.cpp
new file mode 100644
index 0000000..9a81ef8
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Sender.cpp
@@ -0,0 +1,44 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "qpidit/amqp_features_test/Sender.hpp"
+
+#include <stdlib.h> // exit()
+
+
+namespace qpidit
+{
+    namespace amqp_features_test
+    {
+    } /* namespace amqp_features_test */
+} /* namespace qpidit */
+
+
+/*
+ * --- main ---
+ * Args: 1: Broker address (ip-addr:port)
+ *       2: Queue name
+ *       ...
+ */
+
+int main(int argc, char** argv) {
+    exit(0);
+}

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Sender.hpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Sender.hpp 
b/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Sender.hpp
new file mode 100644
index 0000000..05c9bf1
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/amqp_features_test/Sender.hpp
@@ -0,0 +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.
+ *
+ */
+
+#ifndef SRC_QPIDIT_AMQP_DTX_TEST_SENDER_HPP_
+#define SRC_QPIDIT_AMQP_DTX_TEST_SENDER_HPP_
+
+#include "proton/messaging_handler.hpp"
+
+namespace qpidit
+{
+    namespace amqp_features_test
+    {
+
+        class Sender : public proton::messaging_handler
+        {
+        };
+
+    } /* namespace amqp_features_test */
+} /* namespace qpidit */
+
+#endif /* SRC_QPIDIT_AMQP_DTX_TEST_SENDER_HPP_ */

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Receiver.cpp
----------------------------------------------------------------------
diff --git 
a/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Receiver.cpp 
b/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Receiver.cpp
new file mode 100644
index 0000000..f7d7a4b
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Receiver.cpp
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "qpidit/amqp_large_content_test/Receiver.hpp"
+
+#include <stdlib.h> // exit()
+
+namespace qpidit
+{
+    namespace amqp_large_content_test
+    {
+    } /* namespace amqp_large_content_test */
+} /* namespace qpidit */
+
+
+/*
+ * --- main ---
+ * Args: 1: Broker address (ip-addr:port)
+ *       2: Queue name
+ *       ...
+ */
+
+int main(int argc, char** argv) {
+    exit(0);
+}

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Receiver.hpp
----------------------------------------------------------------------
diff --git 
a/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Receiver.hpp 
b/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Receiver.hpp
new file mode 100644
index 0000000..1e56457
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Receiver.hpp
@@ -0,0 +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.
+ *
+ */
+
+#ifndef SRC_QPIDIT_AMQP_LARGE_CONTENT_TEST_RECEIVER_HPP_
+#define SRC_QPIDIT_AMQP_LARGE_CONTENT_TEST_RECEIVER_HPP_
+
+#include "proton/messaging_handler.hpp"
+
+namespace qpidit
+{
+    namespace amqp_large_content_test
+    {
+
+        class Receiver : public proton::messaging_handler
+        {
+        };
+
+    } /* namespace amqp_large_content_test */
+} /* namespace qpidit */
+
+#endif /* SRC_QPIDIT_AMQP_LARGE_CONTENT_TEST_RECEIVER_HPP_ */

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Sender.cpp
----------------------------------------------------------------------
diff --git 
a/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Sender.cpp 
b/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Sender.cpp
new file mode 100644
index 0000000..dd86497
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Sender.cpp
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "qpidit/amqp_large_content_test/Sender.hpp"
+
+#include <stdlib.h> // exit()
+
+namespace qpidit
+{
+    namespace amqp_large_content_test
+    {
+    } /* namespace amqp_large_content_test */
+} /* namespace qpidit */
+
+
+/*
+ * --- main ---
+ * Args: 1: Broker address (ip-addr:port)
+ *       2: Queue name
+ *       ...
+ */
+
+int main(int argc, char** argv) {
+    exit(0);
+}

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Sender.hpp
----------------------------------------------------------------------
diff --git 
a/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Sender.hpp 
b/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Sender.hpp
new file mode 100644
index 0000000..887aec8
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/amqp_large_content_test/Sender.hpp
@@ -0,0 +1,40 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#ifndef SRC_QPIDIT_AMQP_LARGE_CONTENT_TEST_SENDER_HPP_
+#define SRC_QPIDIT_AMQP_LARGE_CONTENT_TEST_SENDER_HPP_
+
+#include "proton/messaging_handler.hpp"
+
+
+namespace qpidit
+{
+    namespace amqp_large_content_test
+    {
+
+        class Sender : public proton::messaging_handler
+        {
+        };
+
+    } /* namespace amqp_large_content_test */
+} /* namespace qpidit */
+
+#endif /* SRC_QPIDIT_AMQP_LARGE_CONTENT_TEST_SENDER_HPP_ */

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Receiver.cpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Receiver.cpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Receiver.cpp
new file mode 100644
index 0000000..027518c
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Receiver.cpp
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "qpidit/jms_dtx_test/Receiver.hpp"
+
+#include <stdlib.h> // exit()
+
+namespace qpidit
+{
+    namespace jms_dtx_test
+    {
+    } /* namespace jms_dtx_test */
+} /* namespace qpidit */
+
+
+/*
+ * --- main ---
+ * Args: 1: Broker address (ip-addr:port)
+ *       2: Queue name
+ *       ...
+ */
+
+int main(int argc, char** argv) {
+    exit(0);
+}

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Receiver.hpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Receiver.hpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Receiver.hpp
new file mode 100644
index 0000000..de98c4b
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Receiver.hpp
@@ -0,0 +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.
+ *
+ */
+
+#ifndef SRC_QPIDIT_JMS_DTX_TEST_RECEIVER_HPP_
+#define SRC_QPIDIT_JMS_DTX_TEST_RECEIVER_HPP_
+
+#include "qpidit/JmsTestBase.hpp"
+
+namespace qpidit
+{
+    namespace jms_dtx_test
+    {
+
+        class Receiver : public qpidit::JmsTestBase
+        {
+        };
+
+    } /* namespace jms_dtx_test */
+} /* namespace qpidit */
+
+#endif /* SRC_QPIDIT_JMS_DTX_TEST_RECEIVER_HPP_ */

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Sender.cpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Sender.cpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Sender.cpp
new file mode 100644
index 0000000..501d0f9
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Sender.cpp
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "qpidit/jms_dtx_test/Sender.hpp"
+
+#include <stdlib.h> // exit()
+
+namespace qpidit
+{
+    namespace jms_dtx_test
+    {
+    } /* namespace jms_dtx_test */
+} /* namespace qpidit */
+
+
+/*
+ * --- main ---
+ * Args: 1: Broker address (ip-addr:port)
+ *       2: Queue name
+ *       ...
+ */
+
+int main(int argc, char** argv) {
+    exit(0);
+}

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Sender.hpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Sender.hpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Sender.hpp
new file mode 100644
index 0000000..ab4fa8a
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_dtx_test/Sender.hpp
@@ -0,0 +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.
+ *
+ */
+
+#ifndef SRC_QPIDIT_JMS_DTX_TEST_SENDER_HPP_
+#define SRC_QPIDIT_JMS_DTX_TEST_SENDER_HPP_
+
+#include "qpidit/JmsTestBase.hpp"
+
+namespace qpidit
+{
+    namespace jms_dtx_test
+    {
+
+        class Sender : public qpidit::JmsTestBase
+        {
+        };
+
+    } /* namespace jms_dtx_test */
+} /* namespace qpidit */
+
+#endif /* SRC_QPIDIT_JMS_DTX_TEST_SENDER_HPP_ */

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Receiver.cpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Receiver.cpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Receiver.cpp
index c5e512a..f1f1c9b 100644
--- a/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Receiver.cpp
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Receiver.cpp
@@ -319,7 +319,8 @@ namespace qpidit
                 // Get and check message headers which are set by a 
JMS-compient sender
                 // See: 
https://docs.oracle.com/cd/E19798-01/821-1841/bnces/index.html
                 // 1. Destination
-                const std::string destination = msg.to();
+                std::string destination = msg.to();
+                stripQueueTopicPrefix(destination); // Some brokers prepend 
"queue://" or "topic://"
                 if (destination.compare(_queueName) != 0) {
                     std::ostringstream oss;
                     oss << "Invalid header: found \"" << destination << "\"; 
expected \"" << _queueName << "\"";
@@ -398,6 +399,16 @@ namespace qpidit
 //            msg.properties().value() >> props;
         }
 
+        //static
+        void Receiver::stripQueueTopicPrefix(std::string& name) {
+            if (name.size() > 8) {
+                if (name.find("queue://") == 0 || name.find("topic://") == 0) {
+                    name.erase(0, 8);
+                }
+            }
+        }
+
+
     } /* namespace jms_hdrs_props_test */
 } /* namespace qpidit */
 

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Receiver.hpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Receiver.hpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Receiver.hpp
index b5240c8..9162690 100644
--- a/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Receiver.hpp
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Receiver.hpp
@@ -24,7 +24,6 @@
 
 #include <iomanip>
 #include <json/value.h>
-#include "proton/messaging_handler.hpp"
 #include "proton/types.hpp"
 #include "qpidit/JmsTestBase.hpp"
 #include <sstream>
@@ -79,6 +78,8 @@ namespace qpidit
             void addMessageHeaderDestination(const std::string& headerName, 
qpidit::jmsDestinationType_t dt, const std::string& d);
             void processMessageProperties(const proton::message& msg);
 
+            static void stripQueueTopicPrefix(std::string& name);
+
             // Format signed numbers in negative hex format if signedFlag is 
true, ie -0xNNNN, positive numbers in 0xNNNN format
             template<typename T> static std::string toHexStr(T val, bool 
fillFlag = false, bool signedFlag = true) {
                 std::ostringstream oss;

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Sender.hpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Sender.hpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Sender.hpp
index 8e3efe7..6619410 100644
--- a/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Sender.hpp
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_hdrs_props_test/Sender.hpp
@@ -24,7 +24,6 @@
 
 #include "json/value.h"
 #include "proton/message.hpp"
-#include "proton/messaging_handler.hpp"
 #include "qpidit/JmsTestBase.hpp"
 #include "qpidit/QpidItErrors.hpp"
 #include <typeinfo>

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Receiver.cpp
----------------------------------------------------------------------
diff --git 
a/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Receiver.cpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Receiver.cpp
new file mode 100644
index 0000000..2234564
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Receiver.cpp
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "qpidit/jms_large_content_test/Receiver.hpp"
+
+#include <stdlib.h> // exit()
+
+namespace qpidit
+{
+    namespace jms_large_content_test
+    {
+    } /* namespace jms_large_content_test */
+} /* namespace qpidit */
+
+
+/*
+ * --- main ---
+ * Args: 1: Broker address (ip-addr:port)
+ *       2: Queue name
+ *       ...
+ */
+
+int main(int argc, char** argv) {
+    exit(0);
+}

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Receiver.hpp
----------------------------------------------------------------------
diff --git 
a/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Receiver.hpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Receiver.hpp
new file mode 100644
index 0000000..ef9fb78
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Receiver.hpp
@@ -0,0 +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.
+ *
+ */
+
+#ifndef SRC_QPIDIT_JMS_LARGE_CONTENT_TEST_RECEIVER_HPP_
+#define SRC_QPIDIT_JMS_LARGE_CONTENT_TEST_RECEIVER_HPP_
+
+#include "qpidit/JmsTestBase.hpp"
+
+namespace qpidit
+{
+    namespace jms_large_content_test
+    {
+
+        class Receiver : public qpidit::JmsTestBase
+        {
+        };
+
+    } /* namespace jms_large_content_test */
+} /* namespace qpidit */
+
+#endif /* SRC_QPIDIT_JMS_LARGE_CONTENT_TEST_RECEIVER_HPP_ */

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Sender.cpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Sender.cpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Sender.cpp
new file mode 100644
index 0000000..c151006
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Sender.cpp
@@ -0,0 +1,43 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "qpidit/jms_large_content_test/Sender.hpp"
+
+#include <stdlib.h> // exit()
+
+namespace qpidit
+{
+    namespace jms_large_content_test
+    {
+    } /* namespace jms_large_content_test */
+} /* namespace qpidit */
+
+
+/*
+ * --- main ---
+ * Args: 1: Broker address (ip-addr:port)
+ *       2: Queue name
+ *       ...
+ */
+
+int main(int argc, char** argv) {
+    exit(0);
+}

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Sender.hpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Sender.hpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Sender.hpp
new file mode 100644
index 0000000..a4e2d16
--- /dev/null
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_large_content_test/Sender.hpp
@@ -0,0 +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.
+ *
+ */
+
+#ifndef SRC_QPIDIT_JMS_LARGE_CONTENT_TEST_SENDER_HPP_
+#define SRC_QPIDIT_JMS_LARGE_CONTENT_TEST_SENDER_HPP_
+
+#include "qpidit/JmsTestBase.hpp"
+
+namespace qpidit
+{
+    namespace jms_large_content_test
+    {
+
+        class Sender : public qpidit::JmsTestBase
+        {
+        };
+
+    } /* namespace jms_large_content_test */
+} /* namespace qpidit */
+
+#endif /* SRC_QPIDIT_JMS_LARGE_CONTENT_TEST_SENDER_HPP_ */

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Receiver.hpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Receiver.hpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Receiver.hpp
index d7c183b..c26d789 100644
--- a/shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Receiver.hpp
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Receiver.hpp
@@ -24,7 +24,6 @@
 
 #include <iomanip>
 #include <json/value.h>
-#include "proton/messaging_handler.hpp"
 #include "proton/types.hpp"
 #include "qpidit/JmsTestBase.hpp"
 #include <sstream>

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Sender.hpp
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Sender.hpp 
b/shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Sender.hpp
index 551edbf..28aae1f 100644
--- a/shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Sender.hpp
+++ b/shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Sender.hpp
@@ -24,7 +24,6 @@
 
 #include "json/value.h"
 #include "proton/message.hpp"
-#include "proton/messaging_handler.hpp"
 #include "qpidit/JmsTestBase.hpp"
 #include "qpidit/QpidItErrors.hpp"
 #include <typeinfo>

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/amqp_dtx_test/Receiver.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_dtx_test/Receiver.py 
b/shims/qpid-proton-python/src/amqp_dtx_test/Receiver.py
new file mode 100755
index 0000000..0982511
--- /dev/null
+++ b/shims/qpid-proton-python/src/amqp_dtx_test/Receiver.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+
+"""
+AMQP distributed transactions (DTX) test receiver shim for qpid-interop-test
+"""
+
+#
+# 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.
+#
+
+import os.path
+import sys
+from traceback import format_exc
+
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class AmqpDtxTestReceiver(MessagingHandler):
+    """
+    Receiver shim for AMQP dtx test
+    ...
+    """
+    def __init__(self, broker_url, queue_name):
+        super(AmqpDtxTestReceiver, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
+        self.received_value_list = []
+        self.expected = int('0')
+        self.received = 0
+
+    def get_received_value_list(self):
+        """Return the received list of AMQP values"""
+        return self.received_value_list
+
+    def on_start(self, event):
+        """Event callback for when the client starts"""
+        event.container.create_receiver('%s/%s' % (self.broker_url, 
self.queue_name))
+
+    def on_message(self, event):
+        """Event callback when a message is received by the client"""
+        if event.message.id and event.message.id < self.received:
+            return # ignore duplicate message
+        if self.expected == 0 or self.received < self.expected:
+            # do something here
+            if self.received >= self.expected:
+                event.receiver.close()
+                event.connection.close()
+
+# --- main ---
+# Args: 1: Broker address (ip-addr:port)
+#       2: Queue name
+#       ...
+try:
+    RECEIVER = AmqpDtxTestReceiver(sys.argv[1], sys.argv[2])
+    Container(RECEIVER).run()
+except KeyboardInterrupt:
+    pass
+except Exception as exc:
+    print os.path.basename(sys.argv[0]), 'EXCEPTION', exc
+    print format_exc()

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/amqp_dtx_test/Sender.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_dtx_test/Sender.py 
b/shims/qpid-proton-python/src/amqp_dtx_test/Sender.py
new file mode 100755
index 0000000..e31935f
--- /dev/null
+++ b/shims/qpid-proton-python/src/amqp_dtx_test/Sender.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+
+"""
+AMQP distributed transactions (DTX) test sender shim for qpid-interop-test
+"""
+
+#
+# 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.
+#
+
+import os.path
+import sys
+from traceback import format_exc
+
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class AmqpDtxTestSender(MessagingHandler):
+    """
+    Sender shim for AMQP dtx test
+    ...
+    """
+    def __init__(self, broker_url, queue_name):
+        super(AmqpDtxTestSender, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
+        self.test_value_list = []
+        self.sent = 0
+        self.confirmed = 0
+        self.total = len(self.test_value_list)
+
+    def on_start(self, event):
+        """Event callback for when the client starts"""
+        event.container.create_sender('%s/%s' % (self.broker_url, 
self.queue_name))
+
+    def on_sendable(self, event):
+        """Event callback for when send credit is received, allowing the 
sending of messages"""
+        if self.sent == 0:
+            for test_value in self.test_value_list:
+                if event.sender.credit:
+                    message = self.create_message(test_value)
+                    if message is not None:
+                        event.sender.send(message)
+                        self.sent += 1
+                    else:
+                        event.connection.close()
+                        return
+
+    def create_message(self, test_value):
+        """
+        Creates a single message with the test value translated from its 
string representation to the appropriate
+        AMQP value (set in self.amqp_type).
+        """
+        return None
+
+    def on_accepted(self, event):
+        """Event callback for when a sent message is accepted by the broker"""
+        self.confirmed += 1
+        if self.confirmed == self.total:
+            event.connection.close()
+
+    def on_disconnected(self, event):
+        """Event callback for when the broker disconnects with the client"""
+        self.sent = self.confirmed
+
+
+# --- main ---
+# Args: 1: Broker address (ip-addr:port)
+#       2: Queue name
+#       ...
+try:
+    SENDER = AmqpDtxTestSender(sys.argv[1], sys.argv[2])
+    Container(SENDER).run()
+except KeyboardInterrupt:
+    pass
+except Exception as exc:
+    print os.path.basename(sys.argv[0]), 'EXCEPTION:', exc
+    print format_exc()
+        
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/amqp_features_test/Receiver.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_features_test/Receiver.py 
b/shims/qpid-proton-python/src/amqp_features_test/Receiver.py
new file mode 100755
index 0000000..c37739c
--- /dev/null
+++ b/shims/qpid-proton-python/src/amqp_features_test/Receiver.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+
+"""
+AMQP features test receiver shim for qpid-interop-test
+"""
+
+#
+# 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.
+#
+
+import os.path
+import sys
+from traceback import format_exc
+
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class AmqpFeaturesTestReceiver(MessagingHandler):
+    """
+    Reciver shim for AMQP dtx test
+    ...
+    """
+    def __init__(self, broker_url, queue_name):
+        super(AmqpFeaturesTestReceiver, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
+        self.received_value_list = []
+        self.expected = int('0')
+        self.received = 0
+
+    def get_received_value_list(self):
+        """Return the received list of AMQP values"""
+        return self.received_value_list
+
+    def on_start(self, event):
+        """Event callback for when the client starts"""
+        event.container.create_receiver('%s/%s' % (self.broker_url, 
self.queue_name))
+
+    def on_message(self, event):
+        """Event callback when a message is received by the client"""
+        if event.message.id and event.message.id < self.received:
+            return # ignore duplicate message
+        if self.expected == 0 or self.received < self.expected:
+            # do something here
+            if self.received == self.expected:
+                event.receiver.close()
+                event.connection.close()
+
+# --- main ---
+# Args: 1: Broker address (ip-addr:port)
+#       2: Queue name
+#       ...
+try:
+    RECEIVER = AmqpFeaturesTestReceiver(sys.argv[1], sys.argv[2])
+    Container(RECEIVER).run()
+except KeyboardInterrupt:
+    pass
+except Exception as exc:
+    print os.path.basename(sys.argv[0]), 'EXCEPTION', exc
+    print format_exc()

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/amqp_features_test/Sender.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_features_test/Sender.py 
b/shims/qpid-proton-python/src/amqp_features_test/Sender.py
new file mode 100755
index 0000000..3bf19e0
--- /dev/null
+++ b/shims/qpid-proton-python/src/amqp_features_test/Sender.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+
+"""
+AMQP features test sender shim for qpid-interop-test
+"""
+
+#
+# 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.
+#
+
+import os.path
+import sys
+from traceback import format_exc
+
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class AmqpFeaturesTestSender(MessagingHandler):
+    """
+    Sender shim for AMQP dtx test
+    ...
+    """
+    def __init__(self, broker_url, queue_name):
+        super(AmqpFeaturesTestSender, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
+        self.test_value_list = []
+        self.sent = 0
+        self.confirmed = 0
+        self.total = len(self.test_value_list)
+
+    def on_start(self, event):
+        """Event callback for when the client starts"""
+        event.container.create_sender('%s/%s' % (self.broker_url, 
self.queue_name))
+
+    def on_sendable(self, event):
+        """Event callback for when send credit is received, allowing the 
sending of messages"""
+        if self.sent == 0:
+            for test_value in self.test_value_list:
+                if event.sender.credit:
+                    message = self.create_message(test_value)
+                    if message is not None:
+                        event.sender.send(message)
+                        self.sent += 1
+                    else:
+                        event.connection.close()
+                        return
+
+    def create_message(self, test_value):
+        """
+        Creates a single message with the test value translated from its 
string representation to the appropriate
+        AMQP value (set in self.amqp_type).
+        """
+        return None
+
+    def on_accepted(self, event):
+        """Event callback for when a sent message is accepted by the broker"""
+        self.confirmed += 1
+        if self.confirmed == self.total:
+            event.connection.close()
+
+    def on_disconnected(self, event):
+        """Event callback for when the broker disconnects with the client"""
+        self.sent = self.confirmed
+
+
+# --- main ---
+# Args: 1: Broker address (ip-addr:port)
+#       2: Queue name
+#       ...
+try:
+    SENDER = AmqpFeaturesTestSender(sys.argv[1], sys.argv[2])
+    Container(SENDER).run()
+except KeyboardInterrupt:
+    pass
+except Exception as exc:
+    print os.path.basename(sys.argv[0]), 'EXCEPTION:', exc
+    print format_exc()
+        
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/amqp_large_content_test/Receiver.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_large_content_test/Receiver.py 
b/shims/qpid-proton-python/src/amqp_large_content_test/Receiver.py
new file mode 100755
index 0000000..d7407d3
--- /dev/null
+++ b/shims/qpid-proton-python/src/amqp_large_content_test/Receiver.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+
+"""
+AMQP large content test receiver shim for qpid-interop-test
+"""
+
+#
+# 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.
+#
+
+import os.path
+import sys
+from traceback import format_exc
+
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class AmqpLargeContentTestReceiver(MessagingHandler):
+    """
+    Reciver shim for AMQP dtx test
+    ...
+    """
+    def __init__(self, broker_url, queue_name):
+        super(AmqpLargeContentTestReceiver, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
+        self.received_value_list = []
+        self.expected = int('0')
+        self.received = 0
+
+    def get_received_value_list(self):
+        """Return the received list of AMQP values"""
+        return self.received_value_list
+
+    def on_start(self, event):
+        """Event callback for when the client starts"""
+        event.container.create_receiver('%s/%s' % (self.broker_url, 
self.queue_name))
+
+    def on_message(self, event):
+        """Event callback when a message is received by the client"""
+        if event.message.id and event.message.id < self.received:
+            return # ignore duplicate message
+        if self.expected == 0 or self.received < self.expected:
+            # do something here
+            if self.received == self.expected:
+                event.receiver.close()
+                event.connection.close()
+
+# --- main ---
+# Args: 1: Broker address (ip-addr:port)
+#       2: Queue name
+#       ...
+try:
+    RECEIVER = AmqpLargeContentTestReceiver(sys.argv[1], sys.argv[2])
+    Container(RECEIVER).run()
+except KeyboardInterrupt:
+    pass
+except Exception as exc:
+    print os.path.basename(sys.argv[0]), 'EXCEPTION', exc
+    print format_exc()

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/amqp_large_content_test/Sender.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_large_content_test/Sender.py 
b/shims/qpid-proton-python/src/amqp_large_content_test/Sender.py
new file mode 100755
index 0000000..0d09336
--- /dev/null
+++ b/shims/qpid-proton-python/src/amqp_large_content_test/Sender.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+
+"""
+AMQP large content test sender shim for qpid-interop-test
+"""
+
+#
+# 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.
+#
+
+import os.path
+import sys
+from traceback import format_exc
+
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class AmqpLargeContentTestSender(MessagingHandler):
+    """
+    Sender shim for AMQP dtx test
+    ...
+    """
+    def __init__(self, broker_url, queue_name):
+        super(AmqpLargeContentTestSender, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
+        self.test_value_list = []
+        self.sent = 0
+        self.confirmed = 0
+        self.total = len(self.test_value_list)
+
+    def on_start(self, event):
+        """Event callback for when the client starts"""
+        event.container.create_sender('%s/%s' % (self.broker_url, 
self.queue_name))
+
+    def on_sendable(self, event):
+        """Event callback for when send credit is received, allowing the 
sending of messages"""
+        if self.sent == 0:
+            for test_value in self.test_value_list:
+                if event.sender.credit:
+                    message = self.create_message(test_value)
+                    if message is not None:
+                        event.sender.send(message)
+                        self.sent += 1
+                    else:
+                        event.connection.close()
+                        return
+
+    def create_message(self, test_value):
+        """
+        Creates a single message with the test value translated from its 
string representation to the appropriate
+        AMQP value (set in self.amqp_type).
+        """
+        return None
+
+    def on_accepted(self, event):
+        """Event callback for when a sent message is accepted by the broker"""
+        self.confirmed += 1
+        if self.confirmed == self.total:
+            event.connection.close()
+
+    def on_disconnected(self, event):
+        """Event callback for when the broker disconnects with the client"""
+        self.sent = self.confirmed
+
+
+# --- main ---
+# Args: 1: Broker address (ip-addr:port)
+#       2: Queue name
+#       ...
+try:
+    SENDER = AmqpLargeContentTestSender(sys.argv[1], sys.argv[2])
+    Container(SENDER).run()
+except KeyboardInterrupt:
+    pass
+except Exception as exc:
+    print os.path.basename(sys.argv[0]), 'EXCEPTION:', exc
+    print format_exc()
+        
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/amqp_types_test/Receiver.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_types_test/Receiver.py 
b/shims/qpid-proton-python/src/amqp_types_test/Receiver.py
index 7bb6355..d26d404 100755
--- a/shims/qpid-proton-python/src/amqp_types_test/Receiver.py
+++ b/shims/qpid-proton-python/src/amqp_types_test/Receiver.py
@@ -27,6 +27,7 @@ AMQP type test receiver shim for qpid-interop-test
 # * Capturing errors from client or broker
 
 from json import dumps
+import os.path
 from string import digits, letters, punctuation
 from struct import pack, unpack
 import sys
@@ -35,15 +36,16 @@ from traceback import format_exc
 from proton.handlers import MessagingHandler
 from proton.reactor import Container
 
-class AmqpTypesReceiverShim(MessagingHandler):
+class AmqpTypesTestReceiver(MessagingHandler):
     """
     Reciver shim for AMQP types test
     This shim receives the number of messages supplied on the command-line and 
checks that they contain message
     bodies of the exptected AMQP type. The values are then aggregated and 
returned.
     """
-    def __init__(self, url, amqp_type, num_expected_messages_str):
-        super(AmqpTypesReceiverShim, self).__init__()
-        self.url = url
+    def __init__(self, broker_url, queue_name, amqp_type, 
num_expected_messages_str):
+        super(AmqpTypesTestReceiver, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
         self.received_value_list = []
         self.amqp_type = amqp_type
         self.expected = int(num_expected_messages_str)
@@ -55,7 +57,7 @@ class AmqpTypesReceiverShim(MessagingHandler):
 
     def on_start(self, event):
         """Event callback for when the client starts"""
-        event.container.create_receiver(self.url)
+        event.container.create_receiver('%s/%s' % (self.broker_url, 
self.queue_name))
 
     def on_message(self, event):
         """Event callback when a message is received by the client"""
@@ -117,12 +119,12 @@ class AmqpTypesReceiverShim(MessagingHandler):
 #       3: AMQP type
 #       4: Expected number of test values to receive
 try:
-    RECEIVER = AmqpTypesReceiverShim('%s/%s' % (sys.argv[1], sys.argv[2]), 
sys.argv[3], sys.argv[4])
+    RECEIVER = AmqpTypesTestReceiver(sys.argv[1], sys.argv[2], sys.argv[3], 
sys.argv[4])
     Container(RECEIVER).run()
     print sys.argv[3]
     print dumps(RECEIVER.get_received_value_list())
 except KeyboardInterrupt:
     pass
 except Exception as exc:
-    print 'proton-python-receive EXCEPTION:', exc
+    print os.path.basename(sys.argv[0]), 'EXCEPTION', exc
     print format_exc()

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/amqp_types_test/Sender.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_types_test/Sender.py 
b/shims/qpid-proton-python/src/amqp_types_test/Sender.py
index b760467..984c555 100755
--- a/shims/qpid-proton-python/src/amqp_types_test/Sender.py
+++ b/shims/qpid-proton-python/src/amqp_types_test/Sender.py
@@ -38,15 +38,16 @@ from proton import byte, char, decimal32, decimal64, 
decimal128, float32, int32,
 from proton.handlers import MessagingHandler
 from proton.reactor import Container
 
-class AmqpTypesSenderShim(MessagingHandler):
+class AmqpTypesTestSender(MessagingHandler):
     """
     Sender shim for AMQP types test
     This shim receives the AMQP type and a list of test values. Each value is 
sent in a message body of the appropriate
     AMQP type. There is no returned value.
     """
-    def __init__(self, url, amqp_type, test_value_list):
-        super(AmqpTypesSenderShim, self).__init__()
-        self.url = url
+    def __init__(self, broker_url, queue_name, amqp_type, test_value_list):
+        super(AmqpTypesTestSender, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
         self.amqp_type = amqp_type
         self.test_value_list = test_value_list
         self.sent = 0
@@ -55,7 +56,7 @@ class AmqpTypesSenderShim(MessagingHandler):
 
     def on_start(self, event):
         """Event callback for when the client starts"""
-        event.container.create_sender(self.url)
+        event.container.create_sender('%s/%s' % (self.broker_url, 
self.queue_name))
 
     def on_sendable(self, event):
         """Event callback for when send credit is received, allowing the 
sending of messages"""
@@ -147,7 +148,8 @@ class AmqpTypesSenderShim(MessagingHandler):
 #       3: AMQP type
 #       4...n: Test value(s) as strings
 try:
-    Container(AmqpTypesSenderShim('%s/%s' % (sys.argv[1], sys.argv[2]), 
sys.argv[3], loads(sys.argv[4]))).run()
+    SENDER = AmqpTypesTestSender(sys.argv[1], sys.argv[2], sys.argv[3], 
loads(sys.argv[4]))
+    Container(SENDER).run()
 except KeyboardInterrupt:
     pass
 except Exception as exc:

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/jms_dtx_test/Receiver.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_dtx_test/Receiver.py 
b/shims/qpid-proton-python/src/jms_dtx_test/Receiver.py
new file mode 100755
index 0000000..88a1046
--- /dev/null
+++ b/shims/qpid-proton-python/src/jms_dtx_test/Receiver.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+
+"""
+JMS distributed transactions (DTX) test receiver shim for qpid-interop-test
+"""
+
+#
+# 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.
+#
+
+import os.path
+import sys
+from traceback import format_exc
+
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class JmsDtxTestReceiver(MessagingHandler):
+    """
+    Receiver shim for JMS dtx test
+    ...
+    """
+    def __init__(self, broker_url, queue_name):
+        super(JmsDtxTestReceiver, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
+        self.expected = int('0')
+        self.received = 0
+        self.received_value_list = []
+
+    def get_received_value_list(self):
+        """"Return the received list of values"""
+        return self.received_value_list
+
+    def on_start(self, event):
+        """Event callback for when the client starts"""
+        event.container.create_receiver('%s/%s' % (self.broker_url, 
self.queue_name))
+
+    def on_message(self, event):
+        """Event callback when a message is received by the client"""
+        if event.message.id and event.message.id < self.received:
+            return # ignore duplicate message
+        if self.expected == 0 or self.received < self.expected:
+            # do something here
+            if self.received >= self.expected:
+                event.receiver.close()
+                event.connection.close()
+
+
+# --- main ---
+# Args: 1: Broker address (ip-addr:port)
+#       2: Queue name
+#       ...
+try:
+    RECEIVER = JmsDtxTestReceiver(sys.argv[1], sys.argv[2])
+    Container(RECEIVER).run()
+except KeyboardInterrupt:
+    pass
+except Exception as exc:
+    print os.path.basename(sys.argv[0]), 'EXCEPTION', exc
+    print format_exc()

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/jms_dtx_test/Sender.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_dtx_test/Sender.py 
b/shims/qpid-proton-python/src/jms_dtx_test/Sender.py
new file mode 100755
index 0000000..2e3146f
--- /dev/null
+++ b/shims/qpid-proton-python/src/jms_dtx_test/Sender.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+
+"""
+JMS distributed transactions (DTX) test sender shim for qpid-interop-test
+"""
+
+#
+# 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.
+#
+
+import os.path
+import sys
+from traceback import format_exc
+
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class JmsDtxTestSender(MessagingHandler):
+    """
+    Sender shim for JMS dtx test
+    ...
+    """
+    def __init__(self, broker_url, queue_name):
+        super(JmsDtxTestSender, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
+        self.test_value_list = []
+        self.sent = 0
+        self.confirmed = 0
+        self.total = 0
+
+    def on_start(self, event):
+        """Event callback for when the client starts"""
+        event.container.create_sender('%s/%s' % (self.broker_url, 
self.queue_name))
+
+    def on_sendable(self, event):
+        """Event callback for when send credit is received, allowing the 
sending of messages"""
+        if self.sent == 0:
+            for test_value in self.test_value_list:
+                if event.sender.credit:
+                    message = self.create_message(test_value)
+                    if message is not None:
+                        event.sender.send(message)
+                        self.sent += 1
+                    else:
+                        event.connection.close()
+                        return
+
+    def create_message(self, test_value):
+        """
+        Creates a single JMS message with the test value translated from its 
string representation to the appropriate
+        value (set in self.amqp_type).
+        """
+        return None
+
+    def on_accepted(self, event):
+        """Event callback for when a sent message is accepted by the broker"""
+        self.confirmed += 1
+        if self.confirmed == self.total:
+            event.connection.close()
+
+    def on_disconnected(self, event):
+        """Event callback for when the broker disconnects with the client"""
+        self.sent = self.confirmed
+
+
+
+
+# --- main ---
+# Args: 1: Broker address (ip-addr:port)
+#       2: Queue name
+#       ...
+try:
+    SENDER = JmsDtxTestSender(sys.argv[1], sys.argv[2])
+    Container(SENDER).run()
+except KeyboardInterrupt:
+    pass
+except Exception as exc:
+    print os.path.basename(sys.argv[0]), 'EXCEPTION:', exc
+    print format_exc()

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/jms_hdrs_props_test/Receiver.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_hdrs_props_test/Receiver.py 
b/shims/qpid-proton-python/src/jms_hdrs_props_test/Receiver.py
index 5c43474..582d339 100755
--- a/shims/qpid-proton-python/src/jms_hdrs_props_test/Receiver.py
+++ b/shims/qpid-proton-python/src/jms_hdrs_props_test/Receiver.py
@@ -30,26 +30,24 @@ import sys
 from time import strftime, time
 from traceback import format_exc
 
+from qpid_interop_test.jms_types import QPID_JMS_TYPE_ANNOTATION_NAME
 from qpid_interop_test.interop_test_errors import InteropTestError
 from proton import byte, symbol
 from proton.handlers import MessagingHandler
 from proton.reactor import Container
 
-# These values must tie in with the Qpid-JMS client values found in
-# org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport
-QPID_JMS_TYPE_ANNOTATION_NAME = symbol(u'x-opt-jms-msg-type')
 
-class JmsReceiverShim(MessagingHandler):
+class JmsHdrsPropsTestReceiver(MessagingHandler):
     """
     Receiver shim: This shim receives JMS messages sent by the Sender shim and 
prints the contents of the received
     messages onto the terminal in JSON format for retrieval by the test 
harness. The JMS messages type and, where
     applicable, body values, as well as the combinations of JMS headers and 
properties which may be attached to
     the message are received on the command-line in JSON format when this 
program is launched.
     """
-    def __init__(self, url, queue, jms_msg_type, test_parameters_list):
-        super(JmsReceiverShim, self).__init__()
-        self.url = url
-        self.queue = queue
+    def __init__(self, broker_url, queue_name, jms_msg_type, 
test_parameters_list):
+        super(JmsHdrsPropsTestReceiver, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
         self.jms_msg_type = jms_msg_type
         self.expteced_msg_map = test_parameters_list[0]
         self.flag_map = test_parameters_list[1]
@@ -76,7 +74,7 @@ class JmsReceiverShim(MessagingHandler):
 
     def on_start(self, event):
         """Event callback for when the client starts"""
-        event.container.create_receiver('%s/%s' % (self.url, self.queue))
+        event.container.create_receiver('%s/%s' % (self.broker_url, 
self.queue_name))
 
     def on_message(self, event):
         """Event callback when a message is received by the client"""
@@ -317,9 +315,9 @@ class JmsReceiverShim(MessagingHandler):
             # See: 
https://docs.oracle.com/cd/E19798-01/821-1841/bnces/index.html
             # 1. Destination
             destination = message.address
-            if destination != self.queue:
+            if destination != self.queue_name:
                 raise InteropTestError('JMS_DESTINATION header invalid: found 
"' + destination +
-                                       '"; expected "' + self.queue + '"')
+                                       '"; expected "' + self.queue_name + '"')
             # 2. Delivery Mode (persistence)
             if message.durable:
                 raise InteropTestError('JMS_DELIVERY_MODE header invalid: 
expected NON_PERSISTENT; found PERSISTENT')
@@ -382,7 +380,7 @@ class JmsReceiverShim(MessagingHandler):
 #       4: JSON Test parameters containing 2 maps: [testValuesMap, flagMap]
 #print '#### sys.argv=%s' % sys.argv
 try:
-    RECEIVER = JmsReceiverShim(sys.argv[1], sys.argv[2], sys.argv[3], 
loads(sys.argv[4]))
+    RECEIVER = JmsHdrsPropsTestReceiver(sys.argv[1], sys.argv[2], sys.argv[3], 
loads(sys.argv[4]))
     Container(RECEIVER).run()
     print sys.argv[3]
     print dumps([RECEIVER.get_received_value_map(), 
RECEIVER.get_jms_header_map(), RECEIVER.get_jms_property_map()])

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/jms_hdrs_props_test/Sender.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_hdrs_props_test/Sender.py 
b/shims/qpid-proton-python/src/jms_hdrs_props_test/Sender.py
index 89abf25..9641435 100755
--- a/shims/qpid-proton-python/src/jms_hdrs_props_test/Sender.py
+++ b/shims/qpid-proton-python/src/jms_hdrs_props_test/Sender.py
@@ -24,33 +24,21 @@ JMS message headers and properties test sender shim for 
qpid-interop-test
 #
 
 from json import loads
+import os.path
 from struct import pack, unpack
 from subprocess import check_output
 import sys
 from traceback import format_exc
 
+from qpid_interop_test.jms_types import create_annotation
 from proton import byte, char, float32, int32, Message, short, symbol
 from proton.handlers import MessagingHandler
 from proton.reactor import Container
 from qpid_interop_test.interop_test_errors import InteropTestError
 from qpid_interop_test.test_type_map import TestTypeMap
 
-# These values must tie in with the Qpid-JMS client values found in
-# org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport
-QPID_JMS_TYPE_ANNOTATION_NAME = symbol(u'x-opt-jms-msg-type')
-QPID_JMS_TYPE_ANNOTATIONS = {
-    'JMS_MESSAGE_TYPE': byte(0),
-    'JMS_BYTESMESSAGE_TYPE': byte(3),
-    'JMS_MAPMESSAGE_TYPE': byte(2),
-    'JMS_OBJECTMESSAGE_TYPE': byte(1),
-    'JMS_STREAMMESSAGE_TYPE': byte(4),
-    'JMS_TEXTMESSAGE_TYPE': byte(5)
-    }
-def create_annotation(jms_msg_type):
-    """Function which creates a message annotation for JMS message type as 
used by the Qpid JMS client"""
-    return {QPID_JMS_TYPE_ANNOTATION_NAME: 
QPID_JMS_TYPE_ANNOTATIONS[jms_msg_type]}
 
-class JmsSenderShim(MessagingHandler):
+class JmsHdrsPropsTestSender(MessagingHandler):
     """
     This shim sends JMS messages of a particular JMS message type according to 
the test parameters list. This list
     contains three maps:
@@ -61,9 +49,9 @@ class JmsSenderShim(MessagingHandler):
     This shim takes the combinations of the above map and creates test cases, 
each of which sends a single message
     with (or without) JMS headers and properties.
     """
-    def __init__(self, broker_ip_addr, queue_name, jms_msg_type, 
test_parameters_list):
-        super(JmsSenderShim, self).__init__()
-        self.broker_ip_addr = broker_ip_addr
+    def __init__(self, broker_url, queue_name, jms_msg_type, 
test_parameters_list):
+        super(JmsHdrsPropsTestSender, self).__init__()
+        self.broker_url = broker_url
         self.queue_name = queue_name
         self.jms_msg_type = jms_msg_type
         self.test_value_map = test_parameters_list[0]
@@ -75,7 +63,7 @@ class JmsSenderShim(MessagingHandler):
 
     def on_start(self, event):
         """Event callback for when the client starts"""
-        event.container.create_sender('%s/%s' % (self.broker_ip_addr, 
self.queue_name))
+        event.container.create_sender('%s/%s' % (self.broker_url, 
self.queue_name))
 
     def on_sendable(self, event):
         """Event callback for when send credit is received, allowing the 
sending of messages"""
@@ -380,9 +368,10 @@ class JmsSenderShim(MessagingHandler):
 #print '#### sys.argv=%s' % sys.argv
 #print '>>> test_values=%s' % loads(sys.argv[4])
 try:
-    Container(JmsSenderShim(sys.argv[1], sys.argv[2], sys.argv[3], 
loads(sys.argv[4]))).run()
+    SENDER = JmsHdrsPropsTestSender(sys.argv[1], sys.argv[2], sys.argv[3], 
loads(sys.argv[4]))
+    Container(SENDER).run()
 except KeyboardInterrupt:
     pass
 except Exception as exc:
-    print 'jms-sender-shim EXCEPTION:', exc
+    print os.path.basename(sys.argv[0]), 'EXCEPTION:', exc
     print format_exc()

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/jms_large_content_test/Receiver.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_large_content_test/Receiver.py 
b/shims/qpid-proton-python/src/jms_large_content_test/Receiver.py
new file mode 100755
index 0000000..f673500
--- /dev/null
+++ b/shims/qpid-proton-python/src/jms_large_content_test/Receiver.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+
+"""
+JMS large content test receiver shim for qpid-interop-test
+"""
+
+#
+# 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.
+#
+
+import os.path
+import sys
+from traceback import format_exc
+
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class JmsLargeContentTestReceiver(MessagingHandler):
+    """
+    Receiver shim for JMS large content test
+    ...
+    """
+    def __init__(self, broker_url, queue_name):
+        super(JmsLargeContentTestReceiver, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
+        self.expected = int('0')
+        self.received = 0
+        self.received_value_list = []
+
+    def get_received_value_list(self):
+        """"Return the received list of values"""
+        return self.received_value_list
+
+    def on_start(self, event):
+        """Event callback for when the client starts"""
+        event.container.create_receiver('%s/%s' % (self.broker_url, 
self.queue_name))
+
+    def on_message(self, event):
+        """Event callback when a message is received by the client"""
+        if event.message.id and event.message.id < self.received:
+            return # ignore duplicate message
+        if self.expected == 0 or self.received < self.expected:
+            # do something here
+            if self.received >= self.expected:
+                event.receiver.close()
+                event.connection.close()
+
+
+# --- main ---
+# Args: 1: Broker address (ip-addr:port)
+#       2: Queue name
+#       ...
+try:
+    RECEIVER = JmsLargeContentTestReceiver(sys.argv[1], sys.argv[2])
+    Container(RECEIVER).run()
+except KeyboardInterrupt:
+    pass
+except Exception as exc:
+    print os.path.basename(sys.argv[0]), 'EXCEPTION', exc
+    print format_exc()

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/jms_large_content_test/Sender.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_large_content_test/Sender.py 
b/shims/qpid-proton-python/src/jms_large_content_test/Sender.py
new file mode 100755
index 0000000..0887628
--- /dev/null
+++ b/shims/qpid-proton-python/src/jms_large_content_test/Sender.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+
+"""
+JMS large content test sender shim for qpid-interop-test
+"""
+
+#
+# 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.
+#
+
+import os.path
+import sys
+from traceback import format_exc
+
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class JmsLargeContentTestSender(MessagingHandler):
+    """
+    Sender shim for JMS dtx test
+    ...
+    """
+    def __init__(self, broker_url, queue_name):
+        super(JmsLargeContentTestSender, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
+        self.test_value_list = []
+        self.sent = 0
+        self.confirmed = 0
+        self.total = 0
+
+    def on_start(self, event):
+        """Event callback for when the client starts"""
+        event.container.create_sender('%s/%s' % (self.broker_url, 
self.queue_name))
+
+    def on_sendable(self, event):
+        """Event callback for when send credit is received, allowing the 
sending of messages"""
+        if self.sent == 0:
+            for test_value in self.test_value_list:
+                if event.sender.credit:
+                    message = self.create_message(test_value)
+                    if message is not None:
+                        event.sender.send(message)
+                        self.sent += 1
+                    else:
+                        event.connection.close()
+                        return
+
+    def create_message(self, test_value):
+        """
+        Creates a single JMS message with the test value translated from its 
string representation to the appropriate
+        value (set in self.amqp_type).
+        """
+        return None
+
+    def on_accepted(self, event):
+        """Event callback for when a sent message is accepted by the broker"""
+        self.confirmed += 1
+        if self.confirmed == self.total:
+            event.connection.close()
+
+    def on_disconnected(self, event):
+        """Event callback for when the broker disconnects with the client"""
+        self.sent = self.confirmed
+
+
+
+
+# --- main ---
+# Args: 1: Broker address (ip-addr:port)
+#       2: Queue name
+#       ...
+try:
+    SENDER = JmsLargeContentTestSender(sys.argv[1], sys.argv[2])
+    Container(SENDER).run()
+except KeyboardInterrupt:
+    pass
+except Exception as exc:
+    print os.path.basename(sys.argv[0]), 'EXCEPTION:', exc
+    print format_exc()

http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/138dc7d1/shims/qpid-proton-python/src/jms_messages_test/Receiver.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_messages_test/Receiver.py 
b/shims/qpid-proton-python/src/jms_messages_test/Receiver.py
index eff67c1..220ddb9 100755
--- a/shims/qpid-proton-python/src/jms_messages_test/Receiver.py
+++ b/shims/qpid-proton-python/src/jms_messages_test/Receiver.py
@@ -29,25 +29,23 @@ from subprocess import check_output
 import sys
 from traceback import format_exc
 
+from qpid_interop_test.jms_types import QPID_JMS_TYPE_ANNOTATION_NAME
 from proton import byte, symbol
 from proton.handlers import MessagingHandler
 from proton.reactor import Container
 from qpid_interop_test.interop_test_errors import InteropTestError
 
-# These values must tie in with the Qpid-JMS client values found in
-# org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport
-QPID_JMS_TYPE_ANNOTATION_NAME = symbol(u'x-opt-jms-msg-type')
-
-class JmsReceiverShim(MessagingHandler):
+class JmsMessagesTestReceiver(MessagingHandler):
     """
     Receiver shim: This shim receives JMS messages sent by the Sender shim and 
prints the contents of the received
     messages onto the terminal in JSON format for retrieval by the test 
harness. The JMS messages type and, where
     applicable, body values, as well as the combinations of JMS headers and 
properties which may be attached to
     the message are received on the command-line in JSON format when this 
program is launched.
     """
-    def __init__(self, url, jms_msg_type, test_parameters_list):
-        super(JmsReceiverShim, self).__init__()
-        self.url = url
+    def __init__(self, broker_url, queue_name, jms_msg_type, 
test_parameters_list):
+        super(JmsMessagesTestReceiver, self).__init__()
+        self.broker_url = broker_url
+        self.queue_name = queue_name
         self.jms_msg_type = jms_msg_type
         self.expteced_msg_map = test_parameters_list
         self.subtype_itr = iter(sorted(self.expteced_msg_map.keys()))
@@ -63,7 +61,7 @@ class JmsReceiverShim(MessagingHandler):
 
     def on_start(self, event):
         """Event callback for when the client starts"""
-        event.container.create_receiver(self.url)
+        event.container.create_receiver('%s/%s' % (self.broker_url, 
self.queue_name))
 
     def on_message(self, event):
         """Event callback when a message is received by the client"""
@@ -84,13 +82,13 @@ class JmsReceiverShim(MessagingHandler):
                 event.connection.close()
 
     def on_connection_error(self, event):
-        print 'JmsReceiverShim.on_connection_error'
+        print 'JmsMessagesTestReceiver.on_connection_error'
 
     def on_session_error(self, event):
-        print 'JmsReceiverShim.on_session_error'
+        print 'JmsMessagesTestReceiver.on_session_error'
 
     def on_link_error(self, event):
-        print 'JmsReceiverShim.on_link_error'
+        print 'JmsMessagesTestReceiver.on_link_error'
 
     def _handle_message(self, message):
         """Handles the analysis of a received message"""
@@ -277,7 +275,7 @@ class JmsReceiverShim(MessagingHandler):
 #       4: JSON Test parameters containing 2 maps: [testValuesMap, flagMap]
 #print '#### sys.argv=%s' % sys.argv
 try:
-    RECEIVER = JmsReceiverShim('%s/%s' % (sys.argv[1], sys.argv[2]), 
sys.argv[3], loads(sys.argv[4]))
+    RECEIVER = JmsMessagesTestReceiver(sys.argv[1], sys.argv[2], sys.argv[3], 
loads(sys.argv[4]))
     Container(RECEIVER).run()
     print sys.argv[3]
     print dumps(RECEIVER.get_received_value_map())


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to