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 <[email protected]>
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 <[email protected]>
---
 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to