You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kp...@apache.org on 2026/08/10 21:12:39 UTC
(qpid-interop-test) 39/41: Add ASF license headers, LICENSE/NOTICE files, and shim authoring guide
This is an automated email from the ASF dual-hosted git repository.
kpvdr pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-interop-test.git
commit d5288c840abc4ea9230c81dbf1b48d5dd27f56b6
Author: QIT Development Team <qi...@example.com>
AuthorDate: Mon Aug 10 14:26:02 2026 -0400
Add ASF license headers, LICENSE/NOTICE files, and shim authoring guide
Prepare QIT 2.0 for migration to apache/qpid-interop-test repository:
- Add Apache License 2.0 full text (LICENSE) and NOTICE file
- Add ASF license headers to all 55 source files (Python, Shell, C++,
C#, Java, JavaScript, XML, CMake, TOML)
- Add docs/SHIM_HOWTO.md: comprehensive guide for writing new language
shims covering CLI contract, JSON I/O, type encoding, JMS emulation,
AMQP headers, large content LCG algorithm, and registration
- Update README.md with SHIM_HOWTO and LICENSE/NOTICE references
Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
---
LICENSE | 201 ++++++++++
NOTICE | 5 +
README.md | 3 +-
docs/SHIM_HOWTO.md | 430 +++++++++++++++++++++
pyproject.toml | 19 +
scripts/debug_message_encoding.py | 19 +
scripts/run-ci-locally.sh | 19 +
scripts/setup-local-broker.sh | 19 +
scripts/test_manual.py | 19 +
scripts/test_python_jms_mode.py | 19 +
shims/cpp-proton/CMakeLists.txt | 19 +
shims/cpp-proton/include/qit_shim.hpp | 19 +
shims/cpp-proton/shim.sh | 19 +
shims/cpp-proton/src/main.cpp | 19 +
shims/cpp-proton/src/receiver.cpp | 19 +
shims/cpp-proton/src/sender.cpp | 19 +
shims/cpp-proton/src/type_codec.cpp | 19 +
shims/dotnet-proton/QitShim.csproj | 17 +
shims/dotnet-proton/shim.sh | 19 +
shims/dotnet-proton/src/Program.cs | 19 +
shims/dotnet-proton/src/Receiver.cs | 19 +
shims/dotnet-proton/src/Sender.cs | 19 +
shims/dotnet-proton/src/TypeCodec.cs | 19 +
shims/java-protonj2/pom.xml | 16 +
shims/java-protonj2/shim.sh | 19 +
.../main/java/org/apache/qpid/qit/Receiver.java | 17 +
.../src/main/java/org/apache/qpid/qit/Sender.java | 17 +
.../main/java/org/apache/qpid/qit/ShimMain.java | 17 +
.../main/java/org/apache/qpid/qit/TypeCodec.java | 17 +
shims/java-qpid-jms/pom.xml | 16 +
shims/java-qpid-jms/receiver.sh | 19 +
shims/java-qpid-jms/sender.sh | 19 +
.../main/java/org/apache/qpid/qit/JmsReceiver.java | 17 +
.../main/java/org/apache/qpid/qit/JmsSender.java | 17 +
shims/javascript-rhea/shim.js | 19 +
shims/javascript-rhea/shim.sh | 19 +
shims/python-proton/shim.py | 19 +
shims/python-proton/shim.sh | 19 +
src/qit/__init__.py | 19 +
src/qit/cli/__init__.py | 19 +
src/qit/cli/main.py | 19 +
src/qit/core/__init__.py | 19 +
src/qit/core/broker.py | 19 +
src/qit/core/comparison.py | 19 +
src/qit/core/orchestrator.py | 19 +
src/qit/core/shim.py | 19 +
src/qit/core/xfail.py | 19 +
src/qit/types/__init__.py | 19 +
src/qit/types/composites.py | 19 +
src/qit/types/primitives.py | 19 +
tests/__init__.py | 19 +
tests/conftest.py | 19 +
tests/test_amqp_headers.py | 19 +
tests/test_comparison.py | 19 +
tests/test_jms.py | 19 +
tests/test_jms_interop.py | 19 +
tests/test_jms_unified.py | 19 +
tests/test_large_content.py | 19 +
tests/test_types.py | 19 +
59 files changed, 1663 insertions(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..368ee6e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to the Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by the Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding any notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. Please also get an approval
+ for your license configuration from the ASF Licensing Committee
+ before using this license.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..764c8bb
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,5 @@
+Apache Qpid Interop Test
+Copyright 2015-2026 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/README.md b/README.md
index 51c8409..d68e38a 100644
--- a/README.md
+++ b/README.md
@@ -54,6 +54,7 @@ pytest tests/test_large_content.py -v
## Architecture
See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for detailed design documentation.
+To add a shim for a new language or client library, see [docs/SHIM_HOWTO.md](docs/SHIM_HOWTO.md).
```
qit/
@@ -75,4 +76,4 @@ Jenkins pipeline runs weekly, with extended tier (10MB content) enabled during t
## License
-Apache License 2.0
+Apache License 2.0 — see [LICENSE](LICENSE) and [NOTICE](NOTICE).
diff --git a/docs/SHIM_HOWTO.md b/docs/SHIM_HOWTO.md
new file mode 100644
index 0000000..b38c1c9
--- /dev/null
+++ b/docs/SHIM_HOWTO.md
@@ -0,0 +1,430 @@
+# How to Write a QIT Shim
+
+This guide explains how to add support for a new AMQP client library to the
+Qpid Interoperability Test suite (QIT 2.0). A **shim** is a command-line
+program that sends and receives AMQP messages using a specific client library,
+communicating results as JSON on stdout.
+
+QIT currently ships shims for six client libraries in five languages:
+Python (Proton), C++ (Proton), Java (ProtonJ2), Java (Qpid JMS),
+.NET (Proton), and JavaScript (Rhea). The Python Proton shim
+(`shims/python-proton/shim.py`) is the reference implementation.
+
+## Architecture
+
+```
+QIT Test Framework
+ │
+ ├── pytest test files (tests/*.py)
+ │ │
+ │ ├── run_sender(client, ...) ──→ shim send ──→ broker
+ │ │ │
+ │ └── run_receiver(client, ...) ──→ shim receive ←┘
+ │
+ └── orchestrator (src/qit/core/) ──→ shim send/receive (same pattern)
+```
+
+The test framework spawns shim processes, passes arguments via CLI flags, and
+reads JSON results from stdout. Shims are black boxes — any language works as
+long as the CLI contract is honored.
+
+## CLI Contract
+
+A shim must accept two subcommands: `send` and `receive`.
+
+### `send` Arguments
+
+| Argument | Type | Required | Description |
+|---|---|---|---|
+| `--broker` | string | yes | Broker URL, e.g. `amqp://localhost:5672` |
+| `--queue` | string | yes | Queue/address name |
+| `--type` | string | no | AMQP type name (see Type Table) |
+| `--count` | int | no | Number of messages |
+| `--data` | string | no | JSON array of message objects |
+| `--jms-mode` | flag | no | Enable JMS emulation |
+| `--headers` | string | no | JSON: JMS headers |
+| `--properties` | string | no | JSON: application properties |
+| `--message-header` | string | no | JSON: AMQP Header section fields |
+| `--large-content` | string | no | Large content type (see below) |
+| `--size` | int | no | Large content size in bytes |
+| `--seed` | int | no | PRNG seed for large content |
+| `--elements` | int | no | Collection element count |
+| `--element-size` | int | no | Size of each collection element |
+
+### `receive` Arguments
+
+| Argument | Type | Required | Default | Description |
+|---|---|---|---|---|
+| `--broker` | string | yes | — | Broker URL |
+| `--queue` | string | yes | — | Queue/address name |
+| `--count` | int | no | 1 | Messages to receive |
+| `--timeout` | int | no | 30 | Timeout in seconds |
+| `--large-content` | string | no | — | Expected large content type |
+| `--size` | int | no | — | Expected size |
+| `--seed` | int | no | — | PRNG seed for verification |
+| `--elements` | int | no | — | Expected element count |
+| `--element-size` | int | no | — | Expected element size |
+
+## JSON `--data` Input Format
+
+The `--data` argument is a JSON array of message objects:
+
+```json
+[
+ {"index": 0, "type": "string", "value": "hello"},
+ {"index": 1, "type": "int", "value": 42},
+ {"index": 2, "type": "binary", "value": "48656c6c6f"}
+]
+```
+
+Each object has:
+- `index` (int): zero-based ordinal, used as the AMQP `message-id`
+- `type` (string): AMQP type name
+- `value`: the value in type-specific encoding (see below)
+
+### Complex Type Values
+
+**array** (homogeneous):
+```json
+{"element_type": "string", "elements": ["a", "b", "c"]}
+```
+
+**list** (heterogeneous — array of `[type, value]` pairs):
+```json
+[["string", "hello"], ["int", 42], ["boolean", true]]
+```
+
+**map** (array of `[[key_type, key_val], [val_type, val_val]]` pairs):
+```json
+[[["string", "key1"], ["int", 42]], [["string", "key2"], ["boolean", true]]]
+```
+
+**described** (descriptor + value, each as `[type, value]`):
+```json
+{"descriptor": ["ulong", 123], "value": ["string", "hello"]}
+```
+
+## Sender Output (stdout)
+
+### Normal Mode
+
+```json
+{
+ "messages": [
+ {"index": 0, "type": "string", "value": "hello"}
+ ],
+ "stats": {"sent": 1}
+}
+```
+
+Echo the sent data in `messages`. Report count in `stats.sent`.
+
+### Large Content Mode
+
+For binary/string:
+```json
+{"sent": true, "size": 1048576}
+```
+
+For collections (list, array, map, described):
+```json
+{"sent": true, "elements": 24, "element_size": 43690}
+```
+
+## Receiver Output (stdout)
+
+### Normal Mode
+
+```json
+{
+ "messages": [
+ {
+ "index": 0,
+ "type": "string",
+ "value": "hello",
+ "message_header": {
+ "durable": false,
+ "priority": 4,
+ "ttl": 0,
+ "first_acquirer": false,
+ "delivery_count": 0
+ }
+ }
+ ],
+ "stats": {"received": 1}
+}
+```
+
+Each message must include the `message_header` object with all five AMQP
+Header section fields. If JMS headers or application properties are present on
+the wire, include `headers` and/or `properties` objects (see JMS section).
+
+### Large Content Mode
+
+Verification result for binary/string:
+```json
+{"match": true, "size": 1048576, "expected_size": 1048576}
+```
+
+On mismatch, include `first_mismatch_offset`:
+```json
+{"match": false, "size": 1048576, "expected_size": 1048576, "first_mismatch_offset": 42}
+```
+
+For collections:
+```json
+{"match": true, "elements": 24, "element_size": 43690}
+```
+
+On collection mismatch:
+```json
+{"match": false, "elements": 24, "element_size": 43690, "first_mismatch_element": 3, "first_mismatch_offset": 100}
+```
+
+Exit code: 0 on match, 1 on mismatch or error.
+
+## AMQP Type Table
+
+| Type | JSON value encoding | Notes |
+|---|---|---|
+| `null` | `null` | |
+| `boolean` | `true` / `false` | |
+| `ubyte` | integer | 0–255 |
+| `ushort` | integer | 0–65535 |
+| `uint` | integer | 0–4294967295 |
+| `ulong` | integer | 0–2^64−1 |
+| `byte` | integer | −128 to 127 |
+| `short` | integer | −32768 to 32767 |
+| `int` | integer | −2^31 to 2^31−1 |
+| `long` | integer | −2^63 to 2^63−1 |
+| `float` | hex string `"0xNNNNNNNN"` | IEEE 754 single, 8 hex digits |
+| `double` | hex string `"0xNNNNNNNNNNNNNNNN"` | IEEE 754 double, 16 hex digits |
+| `char` | single character or integer | UTF-32 code point |
+| `timestamp` | integer | Milliseconds since Unix epoch |
+| `uuid` | string | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` |
+| `binary` | hex string (no `0x` prefix) | e.g. `"48656c6c6f"` |
+| `string` | string | UTF-8 |
+| `symbol` | string | ASCII |
+| `array` | object | See complex types above |
+| `list` | array | See complex types above |
+| `map` | array | See complex types above |
+| `described` | object | See complex types above |
+
+**Important**: floats and doubles use hex-encoded IEEE 754 bit patterns to
+avoid precision loss in JSON. Binary values use raw hex (no `0x` prefix).
+
+## JMS Emulation (`--jms-mode`)
+
+When `--jms-mode` is set on the sender:
+
+1. Add message annotation `x-opt-jms-msg-type` (symbol key, byte value):
+ - `0` = JMS_MESSAGE (null body)
+ - `2` = JMS_MAP_MESSAGE (map body)
+ - `3` = JMS_BYTES_MESSAGE (binary body)
+ - `4` = JMS_STREAM_MESSAGE (list body)
+ - `5` = JMS_TEXT_MESSAGE (string body)
+
+2. Wrap body for map/list types:
+ - Map: body becomes `{"{subtype}_{index:03d}": encoded_value}`
+ - List: body becomes `[encoded_value]`
+
+The **receiver does not need** `--jms-mode`. It auto-detects JMS messages by
+checking for the `x-opt-jms-msg-type` annotation and adjusts decoding. JMS
+messages use type names `text`, `bytes`, `null` instead of `string`, `binary`,
+`null`.
+
+### JMS Headers (`--headers`)
+
+```json
+{
+ "JMSCorrelationID": {"type": "string", "value": "corr-123"},
+ "JMSReplyTo": {"type": "queue", "value": "reply-queue"},
+ "JMSType": {"value": "my-type"}
+}
+```
+
+- **JMSCorrelationID**: `type` is `"string"` or `"bytes"`. String maps to AMQP
+ `correlation-id`. Bytes maps to `correlation-id` as `bytes.fromhex(value)`.
+- **JMSReplyTo**: `type` is `"queue"` or `"topic"`. Sets AMQP `reply-to` and
+ adds annotation `x-opt-jms-reply-to` (`byte(0)` for queue, `byte(1)` for
+ topic).
+- **JMSType**: sets AMQP `subject`.
+
+### Application Properties (`--properties`)
+
+```json
+{
+ "prop_name": {"type": "string", "value": "hello"},
+ "int_prop": {"type": "int", "value": "0x0000002a"},
+ "bool_prop": {"type": "boolean", "value": true}
+}
+```
+
+Supported types: `boolean`, `byte`, `short`, `int`, `long`, `float`, `double`,
+`string`. Numeric values may be integers or hex strings. Output values are
+always hex strings with appropriate width.
+
+## AMQP Message Header (`--message-header`)
+
+```json
+{
+ "durable": true,
+ "priority": 9,
+ "ttl": 60000,
+ "first_acquirer": true
+}
+```
+
+- `durable` (bool): message durability
+- `priority` (int, 0–9): message priority
+- `ttl` (int): time-to-live in **milliseconds**
+- `first_acquirer` (bool): first-acquirer flag
+
+All fields are optional; omitted fields use AMQP defaults.
+
+Receiver output always includes `message_header` with all five fields
+(`delivery_count` is added by the broker).
+
+## Large Content Mode
+
+For testing with large payloads (default: 10 MB), the shim generates content
+deterministically using a Linear Congruential Generator (LCG) so that both
+sender and receiver can independently produce and verify the same data without
+transmitting it on the command line.
+
+### LCG Algorithm
+
+All shims must implement this exact PRNG (glibc-style LCG):
+
+```
+state = seed & 0x7FFFFFFF
+for each byte i in 0..size-1:
+ state = (state * 1103515245 + 12345) & 0x7FFFFFFF
+ result[i] = (state >> 16) & 0xFF
+```
+
+Constants: a=1103515245, c=12345, m=0x7FFFFFFF (mask, not modulus).
+
+### Content Types
+
+- **binary**: raw bytes from LCG
+- **string**: each LCG byte `b` mapped to `chr(32 + (b % 95))` (printable ASCII)
+- **list/array/map/described**: generate `elements × element_size` characters
+ via LCG string generation, then slice into `elements` equal chunks.
+ Map keys are `"key_0000"`, `"key_0001"`, etc.
+
+### Verification Protocol
+
+The receiver regenerates the expected content from the seed and compares
+byte-by-byte. On mismatch, it reports the offset of the first differing byte
+and exits with code 1. On match, it exits with code 0.
+
+## The `shim.sh` Wrapper
+
+Each shim has a `shim.sh` shell script that the test framework calls. This
+wrapper handles language-specific setup (activating virtual environments,
+setting library paths, etc.) and delegates to the actual shim executable.
+
+Pattern for interpreted languages:
+
+```bash
+#!/bin/bash
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+exec python3 "${SCRIPT_DIR}/shim.py" "$@"
+```
+
+Pattern for compiled languages:
+
+```bash
+#!/bin/bash
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+BUILD_DIR="${SCRIPT_DIR}/build"
+
+if [ ! -f "${BUILD_DIR}/qit_shim" ]; then
+ echo "Error: shim not built. Run: cd ${BUILD_DIR} && cmake .. && make" >&2
+ exit 1
+fi
+
+exec "${BUILD_DIR}/qit_shim" "$@"
+```
+
+For Java (requires classpath setup):
+
+```bash
+#!/bin/bash
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+JAR_DIR="${SCRIPT_DIR}/target"
+
+JAR=$(find "${JAR_DIR}" -name "*.jar" -not -name "*-sources*" | head -1)
+DEPS="${JAR_DIR}/dependency/*"
+
+exec java -cp "${JAR}:${DEPS}" org.apache.qpid.qit.ShimMain "$@"
+```
+
+## Registering a Shim
+
+Shims are registered in the `CLIENT_INFO` dictionary in each test file. The
+standard pattern uses lambdas for the command construction:
+
+```python
+CLIENT_INFO = {
+ "my-client": {
+ "name": "My Client Library",
+ "send_cmd": lambda path: ["my-shim", str(path / "shims/my-client/shim.sh"), "send"],
+ "recv_cmd": lambda path: ["my-shim", str(path / "shims/my-client/shim.sh"), "receive"],
+ "broker_prefix": "amqp://",
+ },
+}
+```
+
+- `name`: display name for test output
+- `send_cmd`/`recv_cmd`: lambdas taking the project root `Path`, returning the
+ base command list. The framework appends `--broker`, `--queue`, `--type`,
+ `--data`, etc.
+- `broker_prefix`: prepended to the raw broker URL (`"amqp://"` for most
+ clients, `""` for JMS clients that use their own URL format)
+
+Add the new client key to each test file where the shim should participate.
+
+## Directory Layout
+
+```
+shims/my-client/
+├── shim.sh # wrapper script (entry point)
+├── shim.py # or src/, pom.xml, etc.
+└── README.md # optional: build/setup instructions
+```
+
+## Testing Incrementally
+
+Start with a single sender-receiver pair to verify basic connectivity:
+
+```bash
+# Send one string message
+./shims/my-client/shim.sh send \
+ --broker amqp://localhost:5672 \
+ --queue test.smoke \
+ --type string \
+ --data '[{"index": 0, "type": "string", "value": "hello"}]'
+
+# Receive it
+./shims/my-client/shim.sh receive \
+ --broker amqp://localhost:5672 \
+ --queue test.smoke \
+ --count 1
+```
+
+Then test cross-client interoperability (send with your shim, receive with
+the Python reference shim, and vice versa).
+
+Run the full matrix for a single test file:
+
+```bash
+pytest tests/test_types.py -v -k "my-client"
+```
+
+## Reference Implementation
+
+The Python Proton shim at `shims/python-proton/shim.py` is the canonical
+implementation. When in doubt about encoding, output format, or edge case
+handling, consult this file.
diff --git a/pyproject.toml b/pyproject.toml
index 7d629eb..503f607 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
[project]
name = "qit"
version = "2.0.0"
diff --git a/scripts/debug_message_encoding.py b/scripts/debug_message_encoding.py
index 44001ed..d7af7bf 100644
--- a/scripts/debug_message_encoding.py
+++ b/scripts/debug_message_encoding.py
@@ -1,4 +1,23 @@
#!/usr/bin/env python3
+#
+# 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.
+#
+
"""
Debug script to see how Python Proton actually encodes messages.
This will help us understand why JMS receiver isn't getting messages.
diff --git a/scripts/run-ci-locally.sh b/scripts/run-ci-locally.sh
old mode 100755
new mode 100644
index cfd618e..9b890df
--- a/scripts/run-ci-locally.sh
+++ b/scripts/run-ci-locally.sh
@@ -1,4 +1,23 @@
#!/bin/bash
+#
+# 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.
+#
+
set -e
##
diff --git a/scripts/setup-local-broker.sh b/scripts/setup-local-broker.sh
old mode 100755
new mode 100644
index d6508ad..cb49590
--- a/scripts/setup-local-broker.sh
+++ b/scripts/setup-local-broker.sh
@@ -1,4 +1,23 @@
#!/bin/bash
+#
+# 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.
+#
+
# Setup local Artemis broker for QIT testing
# Based on the original Jenkins qit-test-artemis setup
diff --git a/scripts/test_manual.py b/scripts/test_manual.py
old mode 100755
new mode 100644
index 90641e5..fdb6ad6
--- a/scripts/test_manual.py
+++ b/scripts/test_manual.py
@@ -1,4 +1,23 @@
#!/usr/bin/env python3
+#
+# 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.
+#
+
"""Manual test to verify broker is working"""
from proton import Message
diff --git a/scripts/test_python_jms_mode.py b/scripts/test_python_jms_mode.py
old mode 100755
new mode 100644
index b997765..0994647
--- a/scripts/test_python_jms_mode.py
+++ b/scripts/test_python_jms_mode.py
@@ -1,4 +1,23 @@
#!/usr/bin/env python3
+#
+# 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.
+#
+
"""
Quick test to verify Python shim JMS mode works correctly.
This script tests Python shim in JMS mode sending/receiving TextMessage.
diff --git a/shims/cpp-proton/CMakeLists.txt b/shims/cpp-proton/CMakeLists.txt
index 6d5b575..1a2c518 100644
--- a/shims/cpp-proton/CMakeLists.txt
+++ b/shims/cpp-proton/CMakeLists.txt
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
cmake_minimum_required(VERSION 3.16)
project(qit-cpp-proton-shim VERSION 2.0.0 LANGUAGES CXX)
diff --git a/shims/cpp-proton/include/qit_shim.hpp b/shims/cpp-proton/include/qit_shim.hpp
index bd12625..32614b4 100644
--- a/shims/cpp-proton/include/qit_shim.hpp
+++ b/shims/cpp-proton/include/qit_shim.hpp
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
/*
* QIT C++ Proton Shim
*
diff --git a/shims/cpp-proton/shim.sh b/shims/cpp-proton/shim.sh
old mode 100755
new mode 100644
index db2c185..d9a1384
--- a/shims/cpp-proton/shim.sh
+++ b/shims/cpp-proton/shim.sh
@@ -1,4 +1,23 @@
#!/bin/bash
+#
+# 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.
+#
+
# Wrapper script to run C++ Proton shim
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
diff --git a/shims/cpp-proton/src/main.cpp b/shims/cpp-proton/src/main.cpp
index 8b4af79..5d0334c 100644
--- a/shims/cpp-proton/src/main.cpp
+++ b/shims/cpp-proton/src/main.cpp
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
/*
* QIT C++ Proton Shim - Main Entry Point
*
diff --git a/shims/cpp-proton/src/receiver.cpp b/shims/cpp-proton/src/receiver.cpp
index 39edcfa..65749fb 100644
--- a/shims/cpp-proton/src/receiver.cpp
+++ b/shims/cpp-proton/src/receiver.cpp
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
/*
* QIT C++ Proton Shim - Receiver Implementation
*/
diff --git a/shims/cpp-proton/src/sender.cpp b/shims/cpp-proton/src/sender.cpp
index 59c8ba9..18fe23e 100644
--- a/shims/cpp-proton/src/sender.cpp
+++ b/shims/cpp-proton/src/sender.cpp
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
/*
* QIT C++ Proton Shim - Sender Implementation
*/
diff --git a/shims/cpp-proton/src/type_codec.cpp b/shims/cpp-proton/src/type_codec.cpp
index 2e7e8e9..c6a52a6 100644
--- a/shims/cpp-proton/src/type_codec.cpp
+++ b/shims/cpp-proton/src/type_codec.cpp
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
/*
* QIT C++ Proton Shim - Type Codec Implementation
*
diff --git a/shims/dotnet-proton/QitShim.csproj b/shims/dotnet-proton/QitShim.csproj
index 581dbae..cc253c1 100644
--- a/shims/dotnet-proton/QitShim.csproj
+++ b/shims/dotnet-proton/QitShim.csproj
@@ -1,3 +1,20 @@
+<!--
+ 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.
+-->
+
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
diff --git a/shims/dotnet-proton/shim.sh b/shims/dotnet-proton/shim.sh
old mode 100755
new mode 100644
index fcfa32f..1f220b0
--- a/shims/dotnet-proton/shim.sh
+++ b/shims/dotnet-proton/shim.sh
@@ -1,4 +1,23 @@
#!/usr/bin/env bash
+#
+# 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.
+#
+
#
# QIT .NET Proton Shim Wrapper
#
diff --git a/shims/dotnet-proton/src/Program.cs b/shims/dotnet-proton/src/Program.cs
index dbc032f..f864e61 100644
--- a/shims/dotnet-proton/src/Program.cs
+++ b/shims/dotnet-proton/src/Program.cs
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
/*
* QIT .NET Apache Qpid Proton Shim - Main Entry Point
*
diff --git a/shims/dotnet-proton/src/Receiver.cs b/shims/dotnet-proton/src/Receiver.cs
index e6d34f6..e532d80 100644
--- a/shims/dotnet-proton/src/Receiver.cs
+++ b/shims/dotnet-proton/src/Receiver.cs
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
/*
* QIT .NET Apache Qpid Proton Shim - Receiver
*/
diff --git a/shims/dotnet-proton/src/Sender.cs b/shims/dotnet-proton/src/Sender.cs
index 74d0eb1..e3d760c 100644
--- a/shims/dotnet-proton/src/Sender.cs
+++ b/shims/dotnet-proton/src/Sender.cs
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
/*
* QIT .NET Apache Qpid Proton Shim - Sender
*/
diff --git a/shims/dotnet-proton/src/TypeCodec.cs b/shims/dotnet-proton/src/TypeCodec.cs
index 58e3879..ecd2161 100644
--- a/shims/dotnet-proton/src/TypeCodec.cs
+++ b/shims/dotnet-proton/src/TypeCodec.cs
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
/*
* QIT .NET Apache Qpid Proton Shim - Type Codec
*
diff --git a/shims/java-protonj2/pom.xml b/shims/java-protonj2/pom.xml
index 2add93f..2dfcc44 100644
--- a/shims/java-protonj2/pom.xml
+++ b/shims/java-protonj2/pom.xml
@@ -1,4 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/shims/java-protonj2/shim.sh b/shims/java-protonj2/shim.sh
old mode 100755
new mode 100644
index eca13c9..88d8c68
--- a/shims/java-protonj2/shim.sh
+++ b/shims/java-protonj2/shim.sh
@@ -1,4 +1,23 @@
#!/usr/bin/env bash
+#
+# 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.
+#
+
#
# QIT ProtonJ2 Shim Wrapper
#
diff --git a/shims/java-protonj2/src/main/java/org/apache/qpid/qit/Receiver.java b/shims/java-protonj2/src/main/java/org/apache/qpid/qit/Receiver.java
index 841fb2d..69f94b6 100644
--- a/shims/java-protonj2/src/main/java/org/apache/qpid/qit/Receiver.java
+++ b/shims/java-protonj2/src/main/java/org/apache/qpid/qit/Receiver.java
@@ -1,3 +1,20 @@
+/**
+ * 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.
+ */
+
/*
* QIT ProtonJ2 Shim - Receiver
*/
diff --git a/shims/java-protonj2/src/main/java/org/apache/qpid/qit/Sender.java b/shims/java-protonj2/src/main/java/org/apache/qpid/qit/Sender.java
index dd413ee..851663a 100644
--- a/shims/java-protonj2/src/main/java/org/apache/qpid/qit/Sender.java
+++ b/shims/java-protonj2/src/main/java/org/apache/qpid/qit/Sender.java
@@ -1,3 +1,20 @@
+/**
+ * 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.
+ */
+
/*
* QIT ProtonJ2 Shim - Sender
*/
diff --git a/shims/java-protonj2/src/main/java/org/apache/qpid/qit/ShimMain.java b/shims/java-protonj2/src/main/java/org/apache/qpid/qit/ShimMain.java
index 5e302c6..993171c 100644
--- a/shims/java-protonj2/src/main/java/org/apache/qpid/qit/ShimMain.java
+++ b/shims/java-protonj2/src/main/java/org/apache/qpid/qit/ShimMain.java
@@ -1,3 +1,20 @@
+/**
+ * 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.
+ */
+
/*
* QIT ProtonJ2 Shim - Main Entry Point
*/
diff --git a/shims/java-protonj2/src/main/java/org/apache/qpid/qit/TypeCodec.java b/shims/java-protonj2/src/main/java/org/apache/qpid/qit/TypeCodec.java
index 6131f84..5cd6884 100644
--- a/shims/java-protonj2/src/main/java/org/apache/qpid/qit/TypeCodec.java
+++ b/shims/java-protonj2/src/main/java/org/apache/qpid/qit/TypeCodec.java
@@ -1,3 +1,20 @@
+/**
+ * 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.
+ */
+
/*
* QIT ProtonJ2 Shim - Type Codec
*
diff --git a/shims/java-qpid-jms/pom.xml b/shims/java-qpid-jms/pom.xml
index 35e6cc9..5962797 100644
--- a/shims/java-qpid-jms/pom.xml
+++ b/shims/java-qpid-jms/pom.xml
@@ -1,4 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/shims/java-qpid-jms/receiver.sh b/shims/java-qpid-jms/receiver.sh
old mode 100755
new mode 100644
index cce2528..3903678
--- a/shims/java-qpid-jms/receiver.sh
+++ b/shims/java-qpid-jms/receiver.sh
@@ -1,4 +1,23 @@
#!/bin/bash
+#
+# 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.
+#
+
# QIT 2.0 - JMS Receiver Shim Wrapper
set -e
diff --git a/shims/java-qpid-jms/sender.sh b/shims/java-qpid-jms/sender.sh
old mode 100755
new mode 100644
index d6c3646..e84a151
--- a/shims/java-qpid-jms/sender.sh
+++ b/shims/java-qpid-jms/sender.sh
@@ -1,4 +1,23 @@
#!/bin/bash
+#
+# 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.
+#
+
# QIT 2.0 - JMS Sender Shim Wrapper
set -e
diff --git a/shims/java-qpid-jms/src/main/java/org/apache/qpid/qit/JmsReceiver.java b/shims/java-qpid-jms/src/main/java/org/apache/qpid/qit/JmsReceiver.java
index dde352f..abeafb1 100644
--- a/shims/java-qpid-jms/src/main/java/org/apache/qpid/qit/JmsReceiver.java
+++ b/shims/java-qpid-jms/src/main/java/org/apache/qpid/qit/JmsReceiver.java
@@ -1,3 +1,20 @@
+/**
+ * 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.
+ */
+
package org.apache.qpid.qit;
import com.google.gson.Gson;
diff --git a/shims/java-qpid-jms/src/main/java/org/apache/qpid/qit/JmsSender.java b/shims/java-qpid-jms/src/main/java/org/apache/qpid/qit/JmsSender.java
index b241388..9be3fdd 100644
--- a/shims/java-qpid-jms/src/main/java/org/apache/qpid/qit/JmsSender.java
+++ b/shims/java-qpid-jms/src/main/java/org/apache/qpid/qit/JmsSender.java
@@ -1,3 +1,20 @@
+/**
+ * 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.
+ */
+
package org.apache.qpid.qit;
import com.google.gson.Gson;
diff --git a/shims/javascript-rhea/shim.js b/shims/javascript-rhea/shim.js
old mode 100755
new mode 100644
index eba813b..a8f2237
--- a/shims/javascript-rhea/shim.js
+++ b/shims/javascript-rhea/shim.js
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
#!/usr/bin/env node
/*
* QIT JavaScript/Rhea AMQP Shim
diff --git a/shims/javascript-rhea/shim.sh b/shims/javascript-rhea/shim.sh
old mode 100755
new mode 100644
index 8ce3d53..7415c05
--- a/shims/javascript-rhea/shim.sh
+++ b/shims/javascript-rhea/shim.sh
@@ -1,4 +1,23 @@
#!/bin/bash
+#
+# 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.
+#
+
# Wrapper to run JavaScript shim with node
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
diff --git a/shims/python-proton/shim.py b/shims/python-proton/shim.py
old mode 100755
new mode 100644
index e349664..c6ad93f
--- a/shims/python-proton/shim.py
+++ b/shims/python-proton/shim.py
@@ -1,4 +1,23 @@
#!/usr/bin/env python3
+#
+# 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.
+#
+
"""
Python Proton AMQP 1.0 Shim
diff --git a/shims/python-proton/shim.sh b/shims/python-proton/shim.sh
old mode 100755
new mode 100644
index f5d4575..f23be72
--- a/shims/python-proton/shim.sh
+++ b/shims/python-proton/shim.sh
@@ -1,4 +1,23 @@
#!/bin/bash
+#
+# 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.
+#
+
# Wrapper to run Python shim with correct Python interpreter
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
diff --git a/src/qit/__init__.py b/src/qit/__init__.py
index 5c00d39..d8cbebc 100644
--- a/src/qit/__init__.py
+++ b/src/qit/__init__.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
QIT - AMQP Interoperability Test Suite
diff --git a/src/qit/cli/__init__.py b/src/qit/cli/__init__.py
index 1e9626f..ccb06fa 100644
--- a/src/qit/cli/__init__.py
+++ b/src/qit/cli/__init__.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""CLI commands for QIT."""
from qit.cli.main import cli
diff --git a/src/qit/cli/main.py b/src/qit/cli/main.py
index 04a4dc9..1998ed8 100644
--- a/src/qit/cli/main.py
+++ b/src/qit/cli/main.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
QIT CLI - Main entry point.
diff --git a/src/qit/core/__init__.py b/src/qit/core/__init__.py
index 0f5855f..22f682b 100644
--- a/src/qit/core/__init__.py
+++ b/src/qit/core/__init__.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""Core orchestration and execution engine."""
from qit.core.broker import BrokerConfig, BrokerManager
diff --git a/src/qit/core/broker.py b/src/qit/core/broker.py
index 33ecbfa..f77c375 100644
--- a/src/qit/core/broker.py
+++ b/src/qit/core/broker.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
Broker lifecycle management using Docker Compose.
diff --git a/src/qit/core/comparison.py b/src/qit/core/comparison.py
index 08e47be..a97830c 100644
--- a/src/qit/core/comparison.py
+++ b/src/qit/core/comparison.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
Message comparison logic for validating interoperability.
diff --git a/src/qit/core/orchestrator.py b/src/qit/core/orchestrator.py
index fa8ca42..bb45ba9 100644
--- a/src/qit/core/orchestrator.py
+++ b/src/qit/core/orchestrator.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
Test orchestration engine.
diff --git a/src/qit/core/shim.py b/src/qit/core/shim.py
index 48b1186..d60a616 100644
--- a/src/qit/core/shim.py
+++ b/src/qit/core/shim.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
Shim interface for AMQP client implementations.
diff --git a/src/qit/core/xfail.py b/src/qit/core/xfail.py
index aac2c7c..df54c1e 100644
--- a/src/qit/core/xfail.py
+++ b/src/qit/core/xfail.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
Known failure registry for expected test failures.
diff --git a/src/qit/types/__init__.py b/src/qit/types/__init__.py
index ff5c840..2c854ac 100644
--- a/src/qit/types/__init__.py
+++ b/src/qit/types/__init__.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""AMQP type definitions and test values."""
from qit.types.composites import AmqpComplexTypes
diff --git a/src/qit/types/composites.py b/src/qit/types/composites.py
index a86d6d6..490e67d 100644
--- a/src/qit/types/composites.py
+++ b/src/qit/types/composites.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
AMQP 1.0 Complex Type Definitions
diff --git a/src/qit/types/primitives.py b/src/qit/types/primitives.py
index 529ff0d..9c153f6 100644
--- a/src/qit/types/primitives.py
+++ b/src/qit/types/primitives.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
AMQP 1.0 Primitive Type Definitions
diff --git a/tests/__init__.py b/tests/__init__.py
index 666fc46..22188cd 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1 +1,20 @@
+#
+# 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.
+#
+
"""QIT test suite."""
diff --git a/tests/conftest.py b/tests/conftest.py
index 36cf6ad..7d51638 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,3 +1,22 @@
+#
+# 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 pytest
diff --git a/tests/test_amqp_headers.py b/tests/test_amqp_headers.py
index f42a59c..cf76604 100644
--- a/tests/test_amqp_headers.py
+++ b/tests/test_amqp_headers.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
AMQP Message Header Section Interoperability Tests (Phase 2d)
diff --git a/tests/test_comparison.py b/tests/test_comparison.py
index 502a5a9..853ba82 100644
--- a/tests/test_comparison.py
+++ b/tests/test_comparison.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""Tests for message comparison logic."""
from qit.core.comparison import MessageComparator
diff --git a/tests/test_jms.py b/tests/test_jms.py
index 991902e..08965de 100644
--- a/tests/test_jms.py
+++ b/tests/test_jms.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
JMS Interoperability Tests
diff --git a/tests/test_jms_interop.py b/tests/test_jms_interop.py
index 8ec4c46..7c63605 100644
--- a/tests/test_jms_interop.py
+++ b/tests/test_jms_interop.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
JMS Cross-Client Interoperability Tests (Phase 2b)
diff --git a/tests/test_jms_unified.py b/tests/test_jms_unified.py
index 0605f4d..89b5e43 100644
--- a/tests/test_jms_unified.py
+++ b/tests/test_jms_unified.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
JMS Interoperability Tests - Star Configuration
diff --git a/tests/test_large_content.py b/tests/test_large_content.py
index 0cba2cf..f05b929 100644
--- a/tests/test_large_content.py
+++ b/tests/test_large_content.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""
Large Content Interoperability Tests (Phase 4 + 4b + 4c)
diff --git a/tests/test_types.py b/tests/test_types.py
index 60696d6..428d61d 100644
--- a/tests/test_types.py
+++ b/tests/test_types.py
@@ -1,3 +1,22 @@
+#
+# 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.
+#
+
"""Tests for AMQP type definitions."""
from qit.types import AmqpPrimitiveTypes
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org