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]
