rabbitmq-amqp-python-client 0.6.0__tar.gz → 2.0.0a3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rabbitmq_amqp_python_client-2.0.0a3/.ci/certs/ca.p12 +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/certs/ca_certificate.pem +21 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/certs/ca_key.pem +28 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/certs/client_localhost.p12 +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/certs/client_localhost_certificate.pem +23 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/certs/client_localhost_key.pem +28 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/certs/server_localhost.p12 +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/certs/server_localhost_certificate.pem +23 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/certs/server_localhost_key.pem +28 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/ubuntu/advanced.config +13 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/ubuntu/enabled_plugins +1 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/ubuntu/gha-log-check.sh +16 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/ubuntu/gha-setup.sh +193 -0
- rabbitmq_amqp_python_client-2.0.0a3/.ci/ubuntu/rabbitmq.conf +33 -0
- rabbitmq_amqp_python_client-2.0.0a3/.github/release.yml +30 -0
- rabbitmq_amqp_python_client-2.0.0a3/.github/workflows/build-test.yaml +62 -0
- rabbitmq_amqp_python_client-2.0.0a3/.github/workflows/publish-pypi.yaml +40 -0
- rabbitmq_amqp_python_client-2.0.0a3/.github/workflows/publish_release.yaml +18 -0
- rabbitmq_amqp_python_client-2.0.0a3/.gitignore +135 -0
- rabbitmq_amqp_python_client-2.0.0a3/Makefile +40 -0
- rabbitmq_amqp_python_client-2.0.0a3/PKG-INFO +108 -0
- rabbitmq_amqp_python_client-2.0.0a3/README.md +92 -0
- rabbitmq_amqp_python_client-2.0.0a3/create_tag.sh +12 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/README.md +31 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/auto_reconnection.py +157 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/basic_connection.py +49 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/console_application.py +896 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/consumer_example.py +123 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/consumer_timeout_example.py +135 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/delayed_retry_context_example.py +101 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/delayed_retry_example.py +146 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/direct_reply_to_example.py +219 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/management_example.py +110 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/performance_test.py +1280 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/presettled_consumer_example.py +158 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/publisher_example.py +142 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/quorum_single_active_consumer.py +122 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/rejection_reason_example.py +118 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/stream_filtering.py +207 -0
- rabbitmq_amqp_python_client-2.0.0a3/docs/examples/tls_connection.py +91 -0
- rabbitmq_amqp_python_client-2.0.0a3/pyproject.toml +66 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/__init__.py +194 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/connection.py +1139 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/constants.py +57 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/consumer.py +1763 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/exceptions.py +47 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/link.py +999 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/logging_utils.py +26 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/management.py +1714 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/publisher.py +601 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/reconnection.py +465 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/session.py +543 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/wire/__init__.py +170 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/wire/delivery_state.py +270 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/wire/encoding.py +825 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/wire/frames.py +255 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/wire/message.py +586 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/wire/performatives.py +877 -0
- rabbitmq_amqp_python_client-2.0.0a3/rabbitmq_amqp_python_client/wire/sasl.py +317 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/__init__.py +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/conftest.py +99 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_client_interpolation_integration.py +234 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_client_stream_interpolation_integration.py +273 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_connection_integration.py +139 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_console_application_integration.py +164 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_consumer_integration.py +1159 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_management_integration.py +508 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_performance_test_integration.py +213 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_publisher_integration.py +307 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_reconnection_integration.py +370 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_session_link_integration.py +320 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/integration/test_tls_integration.py +89 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/__init__.py +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/conftest.py +109 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/fake_broker.py +476 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/empty_message.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/header_amqpvalue_message.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/message_body_250.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/message_body_700.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/message_from_version_1_0_0.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/message_random_application_properties_300.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/message_random_application_properties_500.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/message_random_application_properties_properties_900.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/message_unicode_message.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/nil_and_types.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/shovel_annotations.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/static_test_message_compare.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/resources/amqp10_validation/uuid_message.amqp +0 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_amqp10_validation.py +183 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_connection.py +378 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_console_application.py +805 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_consumer.py +1733 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_delivery_state.py +148 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_encoding.py +523 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_frames.py +298 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_link.py +608 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_management.py +524 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_management_builders.py +805 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_message.py +327 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_package_exports.py +50 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_performance_test.py +1111 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_performatives.py +457 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_publisher.py +576 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_reconnection.py +762 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_sasl.py +182 -0
- rabbitmq_amqp_python_client-2.0.0a3/tests/unit/test_session.py +391 -0
- rabbitmq_amqp_python_client-0.6.0/LICENSE +0 -201
- rabbitmq_amqp_python_client-0.6.0/PKG-INFO +0 -104
- rabbitmq_amqp_python_client-0.6.0/README.md +0 -82
- rabbitmq_amqp_python_client-0.6.0/pyproject.toml +0 -33
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/__init__.py +0 -120
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/address_helper.py +0 -178
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/amqp_consumer_handler.py +0 -39
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/asyncio/__init__.py +0 -13
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/asyncio/connection.py +0 -317
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/asyncio/consumer.py +0 -351
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/asyncio/environment.py +0 -158
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/asyncio/management.py +0 -375
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/asyncio/publisher.py +0 -157
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/common.py +0 -34
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/connection.py +0 -496
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/consumer.py +0 -262
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/delivery_context.py +0 -219
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/entities.py +0 -546
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/environment.py +0 -139
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/exceptions.py +0 -25
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/management.py +0 -598
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/options.py +0 -128
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/publisher.py +0 -138
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/__init__.py +0 -174
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_common.py +0 -36
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_condition.py +0 -110
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_data.py +0 -1772
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_delivery.py +0 -459
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_endpoints.py +0 -1583
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_events.py +0 -659
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_exceptions.py +0 -132
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_handler.py +0 -74
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_handlers.py +0 -1440
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_io.py +0 -170
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_message.py +0 -654
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_reactor.py +0 -1722
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_selectable.py +0 -108
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_tracing.py +0 -140
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_transport.py +0 -1278
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_url.py +0 -282
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_utils.py +0 -767
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/_wrapper.py +0 -141
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/handlers.py +0 -48
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/reactor.py +0 -58
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/tracing.py +0 -22
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/utils.py +0 -38
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/queues.py +0 -44
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/ssl_configuration.py +0 -57
- rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/utils.py +0 -38
- /rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/py.typed → /rabbitmq_amqp_python_client-2.0.0a3/.ci/ubuntu/log/.gitkeep +0 -0
- /rabbitmq_amqp_python_client-0.6.0/rabbitmq_amqp_python_client/qpid/proton/py.typed → /rabbitmq_amqp_python_client-2.0.0a3/tests/__init__.py +0 -0
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDhDCCAmygAwIBAgIUVSdILRBEvWFrrKJ3oVOjirCAtkkwDQYJKoZIhvcNAQEL
|
|
3
|
+
BQAwSzE6MDgGA1UEAwwxVExTR2VuU2VsZlNpZ25lZFJvb3RDQSAyMDI2LTA0LTEw
|
|
4
|
+
VDE0OjUxOjU0LjAxOTg3NzENMAsGA1UEBwwEJCQkJDAeFw0yNjA0MTAxMjUxNTRa
|
|
5
|
+
Fw0zNjA0MDcxMjUxNTRaMEsxOjA4BgNVBAMMMVRMU0dlblNlbGZTaWduZWRSb290
|
|
6
|
+
Q0EgMjAyNi0wNC0xMFQxNDo1MTo1NC4wMTk4NzcxDTALBgNVBAcMBCQkJCQwggEi
|
|
7
|
+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtAW2jodtF2pqlOISLoTDz+k/Z
|
|
8
|
+
8P+H/yoVmevY+DD0AOCoX5C7WTZ8e/ll8DkjCAX5bmN2HoIPptCQVa2RIuehkHcs
|
|
9
|
+
57/xaG+FPaS2gRA8DyI4iTxtDXXt0CSxw2lFoDEgRX9IC2O7Ejsxa8O15b5+4iBh
|
|
10
|
+
ugpCrshw6thw0tcZc38cQ1ox6n2OteAGIuVov0BAVJZShM/UH6LYPaxSbQ7ThoI1
|
|
11
|
+
hEf0G9DOg58+IEdhB8OSRpMXUgaomsANlMdSjQO6leK0ddz6akcCVZATJAqs2HOB
|
|
12
|
+
zfFHkq2re84V6678AQfdM3hnUgaScXCPFPCGJCiCprb+pwN9q1fqnNHtwYRnAgMB
|
|
13
|
+
AAGjYDBeMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBRv
|
|
14
|
+
SBP34DFLHDoIx9C3femVwp/eIzAfBgNVHSMEGDAWgBRvSBP34DFLHDoIx9C3femV
|
|
15
|
+
wp/eIzANBgkqhkiG9w0BAQsFAAOCAQEArfpyyiPpbcy8lAGeyFJWvTwuuXwhNrum
|
|
16
|
+
sBqjitkION3xSCPATCE4iMAL+DbRIBel+4mqTzOzTgiNTd8bW/fmFC7kh/T3joxB
|
|
17
|
+
G9VjZ+AThfn5ldyMgNatcksd5RCxg55/p8Told2NXvgZyvWXRh+eWumgRgYupPkq
|
|
18
|
+
4tui2AXdptWUkrRcuyKWlRuXoCKEgBb2buMWUc2GykxpvTk6ZKle8IM/x3rW7CSm
|
|
19
|
+
zc/GtO6QAg3zM/E2f9tzfW8n8RJ9OqpBh6KTtxVDD8wTMX+K1sn4Vq6VhGQ1C6Yt
|
|
20
|
+
KkNFS+8bqQ8L83HleM2SANDN1Ej98ZyBOFel9o9wvrt3AThXwMNOLA==
|
|
21
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDtAW2jodtF2pql
|
|
3
|
+
OISLoTDz+k/Z8P+H/yoVmevY+DD0AOCoX5C7WTZ8e/ll8DkjCAX5bmN2HoIPptCQ
|
|
4
|
+
Va2RIuehkHcs57/xaG+FPaS2gRA8DyI4iTxtDXXt0CSxw2lFoDEgRX9IC2O7Ejsx
|
|
5
|
+
a8O15b5+4iBhugpCrshw6thw0tcZc38cQ1ox6n2OteAGIuVov0BAVJZShM/UH6LY
|
|
6
|
+
PaxSbQ7ThoI1hEf0G9DOg58+IEdhB8OSRpMXUgaomsANlMdSjQO6leK0ddz6akcC
|
|
7
|
+
VZATJAqs2HOBzfFHkq2re84V6678AQfdM3hnUgaScXCPFPCGJCiCprb+pwN9q1fq
|
|
8
|
+
nNHtwYRnAgMBAAECggEABOk4qmFaN9JVzgKjzHjkmMmhCfUSdnD1IEl2N6K88PFr
|
|
9
|
+
tlF0oE0y8dVnz5LwvCcYaJi++t2a+FQOkk8UL6O3hQOHVKjgs1HkrbAfT6DRA02U
|
|
10
|
+
+fLuC5xxyyG7AOv5rHWrTu3hu05xHJk+HMIM5iICloJ9BUljmQoiISTco0nbJy3R
|
|
11
|
+
SQSjPg0i/0/T+sk5F+tDoAPU3gAjm4VAXB6NJnwaXi3U6zl5IMnLwj5LAjnIuUvL
|
|
12
|
+
jlSMGrRnDQewTBMjApgF+0Cf3uCAlyzoqA67Q/c1QbVr/sskc9zK3RsW+q8oHAX0
|
|
13
|
+
TG7gSBjul403Ah2pr/3KWUB/z+ZC7xgW9P39CJWPUQKBgQD48S7e+nYkyiIP1q38
|
|
14
|
+
cZrXKMDLlQiMuXRIYg0ejqsH41HGMRImTlz+UDTFWe/zTAGlvEPyc0AMtGJEOJnS
|
|
15
|
+
K8jR7mnjE1CsECH2cQiQtCATFXrIgMS1z7YtYmvraV0sUhuhh6Ccgw2HJqHj60nV
|
|
16
|
+
1Z53XPFSmGHAmqCSk5jqd54MwwKBgQDzuZwpRbXAXX501F3vKNeVVwUcNZESiDjC
|
|
17
|
+
o6NOmy4SkqqJTAG2JWH4kMXBSXWFpVOfgkqOr0kRb77U2r4NVPIVR7jLUSVKnRYz
|
|
18
|
+
u0QTmV13++dWgoSpXr4zxLwre4SO4g+Q3XVQ9oNUueQuIfhiY7UiDu1eSrvd9zVd
|
|
19
|
+
dD63GCW/jQKBgQCE3SSo+YBIzmEzlt6xV2jO4P9VKKuxf+GiKELcRkTeJuMkJliL
|
|
20
|
+
fVOAoAoqMoAwmCZg8IRLSFus7DFuO89NLvU1pkt5WHu7+bhGsblikeB0jwhDLwbO
|
|
21
|
+
CpguzNLQiCGkYAZDRgHgxslXkrTg0llL+YFkL4TVEmNJyr1cvc3lhgYixQKBgAEZ
|
|
22
|
+
zYLCNdfwlCmi6+mwnYinI/bEpysWQmteodYxDTw4PVzxYvCXqqGcxcfhtQ4tePs3
|
|
23
|
+
c27Bi+rwPkRn2IPm5lECSethKnHz063YIq6T+sAX+yuA22iIbQN+1/q6TBb5Hmjh
|
|
24
|
+
Fy6ObnlrfYRX0u9e0+qbdqb+X2rZOvx5Ee9xxHnhAoGBAM+yjMKeQxSvUb78lCrp
|
|
25
|
+
qiC2mwXQ5GBC6FMfDpekzvcUY+A/wOjFSOendWRLnhnCRmEw9z6VuMnxMSv8Rx5E
|
|
26
|
+
Ox0bKokbXYRTvnKV+oIHS7hp41vW3O6GNMDP+lKSt5rKL+3Y3JCUIIR4v0YScU6L
|
|
27
|
+
mrToTo0O6Aot8Y3BbQ4MQJ/w
|
|
28
|
+
-----END PRIVATE KEY-----
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDvjCCAqagAwIBAgIBAjANBgkqhkiG9w0BAQsFADBLMTowOAYDVQQDDDFUTFNH
|
|
3
|
+
ZW5TZWxmU2lnbmVkUm9vdENBIDIwMjYtMDQtMTBUMTQ6NTE6NTQuMDE5ODc3MQ0w
|
|
4
|
+
CwYDVQQHDAQkJCQkMB4XDTI2MDQxMDEyNTE1NFoXDTM2MDQwNzEyNTE1NFowJjET
|
|
5
|
+
MBEGA1UEAwwKRjIzTjA0OTJYVDEPMA0GA1UECgwGY2xpZW50MIIBIjANBgkqhkiG
|
|
6
|
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1wERRA07/NVx6PKgpJEWAIycgSjCn/Vtk1oy
|
|
7
|
+
TBiYpYtpTahVo+wAQTUowTaAMARKvMGgA6rYgW6u+ShMg7lJARo4SLeFZury7P/Q
|
|
8
|
+
XbSBKE2Kpq9+1yTkeBLEfelaXsMsz/Jpt1wbWfAhrmp7/XCAzVlPQruLxRkcXhQZ
|
|
9
|
+
gchqxn9C3MfTeXIYzM7mbqNJI4sBGDEpxxpZpjXNB8YQ7pAcUrDR4gfK5rGfhbTX
|
|
10
|
+
pXrdSYK+g1fOnOix6+W8+lf4JMRaHaG1ilM4uI1YcG0riSo8iIELgqiNnWkMyfG2
|
|
11
|
+
4j30Tgk5yqoN4NUzfLLkckrKjctF6YQ3ViKzWqJLO4mjWDEKVwIDAQABo4HRMIHO
|
|
12
|
+
MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMCwG
|
|
13
|
+
A1UdEQQlMCOCCkYyM04wNDkyWFSCCkYyM04wNDkyWFSCCWxvY2FsaG9zdDAxBgNV
|
|
14
|
+
HR8EKjAoMCagJKAihiBodHRwOi8vY3JsLXNlcnZlcjo4MDAwL2Jhc2ljLmNybDAd
|
|
15
|
+
BgNVHQ4EFgQUPMRAoK+FJRlJHSIATN6PU0IYHqQwHwYDVR0jBBgwFoAUb0gT9+Ax
|
|
16
|
+
Sxw6CMfQt33plcKf3iMwDQYJKoZIhvcNAQELBQADggEBAGQvhMBvRHB0ZizmSW8f
|
|
17
|
+
cRXBloE19ekk7pgGLHt4fyfO87XXCpVo6vVXCjr+am0fHdkeUNST+k5tXVBjLBQ7
|
|
18
|
+
vtFDzO25zF9FwX5tl6KXFoVvb04gH3DgsTSbSOsMYLyz79TYdxzlmYDLpyREjven
|
|
19
|
+
HSu40pNnH4zkWqaBwo0Ox4OVN8Rt0jF+xPB9xcQscw46P2J2EOTxn/eksoXDwBDL
|
|
20
|
+
nm+3HdNUrJ4TCDpJgkwm4rbhLkIPOepX2vNY5sI/4nC6Mph90zNqKV7GTwlfA4aG
|
|
21
|
+
XVZkIr4dqKbj8LqqNqN0U+DtU66IFcieQtteUyMmbAdnu03SMePgh0zeaPOeP/dn
|
|
22
|
+
Kqs=
|
|
23
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDXARFEDTv81XHo
|
|
3
|
+
8qCkkRYAjJyBKMKf9W2TWjJMGJili2lNqFWj7ABBNSjBNoAwBEq8waADqtiBbq75
|
|
4
|
+
KEyDuUkBGjhIt4Vm6vLs/9BdtIEoTYqmr37XJOR4EsR96VpewyzP8mm3XBtZ8CGu
|
|
5
|
+
anv9cIDNWU9Cu4vFGRxeFBmByGrGf0Lcx9N5chjMzuZuo0kjiwEYMSnHGlmmNc0H
|
|
6
|
+
xhDukBxSsNHiB8rmsZ+FtNelet1Jgr6DV86c6LHr5bz6V/gkxFodobWKUzi4jVhw
|
|
7
|
+
bSuJKjyIgQuCqI2daQzJ8bbiPfROCTnKqg3g1TN8suRySsqNy0XphDdWIrNaoks7
|
|
8
|
+
iaNYMQpXAgMBAAECggEAUCybOiOvP2h+qi2zvrpFmJ3WjIldDhYQrtZ/FAZGAdFb
|
|
9
|
+
SrSfftl1/NrsYCRJJ96p2fpgB44RXy6de9bNtX8F3K3g2CjrS4YIYV1BX3f8g8Fq
|
|
10
|
+
lx6xL1wYADiLYiJ+6wBf+Qk957ymjGKxxJ77rnXh6fFIT6utAqoK/IAFRPKt8md6
|
|
11
|
+
DM1+hKivjV4qSbRcFi0DGCzq6mlUAu44zTaMZm5Dk64mWkwgSN+54dD8EVDkAFGi
|
|
12
|
+
oNmDgbALhQ+70Fj3ATbDRzqKp+GzY3rBswM4euObKZiNlmQVlzNbE7j9RveACpa7
|
|
13
|
+
pYF+/jg32ZcnFRW0+f/+VFOsbXiF1ODx6Wt7rduhRQKBgQD4nTflSYyl0WhK0xYB
|
|
14
|
+
/sAeO+VljYJnlRIKKU1igKRvjIf43A88yrkxT5CH7gV4PHOwuzJBn6PLBard2d1K
|
|
15
|
+
XFo/kT7s8PJFn+5EV/TBm/40WRQ0XvEa/gvKQIVBxKuSzNiVwqFCRHcP0zIOeKy7
|
|
16
|
+
L+IKxIeN0bS37dNqU6K+ep3FKwKBgQDdZDxW8DBS/sbdDvo1DXPcKN1nPjSRRHip
|
|
17
|
+
LzCxr/nZDbrAlG9UAhX+ihTkm+oN9m5HpbviBodcM0nmUTps0Dc7CZv0H+y1N4Lv
|
|
18
|
+
TxAnSBdbxUWOYlNUm51dnVTLOQT0QHiLuesyjeeG7C8ATZxB9Huj95pRUGDlNT/m
|
|
19
|
+
AjzlHQVRhQKBgDOBFphYsVuU019U9aU6KoDY9cAhHdfpqRAT2GVEs0wst+qVZE66
|
|
20
|
+
zLzrd8zBQb7T/z+ouFOiB+PCa9CEFvUVxtiOdZPOotJLvKfJ9Pm7IGGl5qqm1Jo7
|
|
21
|
+
8SNYVIL4hHboGyKDbLb2yhesMB2RYG9zDwgeCNsXi7HjAj5vzzJY4qB7AoGBALSH
|
|
22
|
+
pRB7odw7t2vRZ8RVKPIRPKGQvwrqG75SJdHvHryZDn01TSbi4I6EiI72eMBUAA9a
|
|
23
|
+
nT+tdTmA9TTjbdIHY9I3fr1uPvZywslj3lc52RpTXenCUhM/Je6NefSRlXGbFPFT
|
|
24
|
+
dO/veSmzdIw5vT6nHx9Qq7y835ZoeqeTkZZ+uLSFAoGBALSmDq5C0eH2UVCGOTvK
|
|
25
|
+
LgINLoEqRCF/v2VVoglY/vxtjbk7SSswmmJABIBuiwgvZac+nNuwD0vRNlgPnPmA
|
|
26
|
+
jsWAYNVLKsZXtfJk/U9xEbs+gvaL/6jxRcgKJZT0P/vsUWaNoPrZhQIsIiZfRQm5
|
|
27
|
+
bin24Hpe2vdfx/0YVWbUnSVb
|
|
28
|
+
-----END PRIVATE KEY-----
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDvjCCAqagAwIBAgIBATANBgkqhkiG9w0BAQsFADBLMTowOAYDVQQDDDFUTFNH
|
|
3
|
+
ZW5TZWxmU2lnbmVkUm9vdENBIDIwMjYtMDQtMTBUMTQ6NTE6NTQuMDE5ODc3MQ0w
|
|
4
|
+
CwYDVQQHDAQkJCQkMB4XDTI2MDQxMDEyNTE1NFoXDTM2MDQwNzEyNTE1NFowJjET
|
|
5
|
+
MBEGA1UEAwwKRjIzTjA0OTJYVDEPMA0GA1UECgwGc2VydmVyMIIBIjANBgkqhkiG
|
|
6
|
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyrfV3aRuzlpd5PaRJiyLdyxvvaI4wTzWoYKD
|
|
7
|
+
BBCb3KlSOmelcDKhKg9EzvrLBX7Vy0tCtLK+BfMq8ZuhN3oDljlJJgybwoYfV5YG
|
|
8
|
+
4pnMnSeYkzsVWZztkD+LSzamFollR1ky0So8tqrWEZI0sFVzHYPediye8nQn5WHo
|
|
9
|
+
bvTJVlUYpX8Za45Wog0jXby0hE+GRylsToHrDE4nWGQc356HHfN7MKqoJTZmqgnt
|
|
10
|
+
Bn2ge/VH5pYYbEW2t0Xi53Z58i1DaZqzfj6z0oDd00RD8Kw5ktGg47bcGfe4M1id
|
|
11
|
+
ucgQExBDEvVu0NtxaJnEpWhC+vaqE1knr0QWH0Q+bEyqT6O2+QIDAQABo4HRMIHO
|
|
12
|
+
MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMCwG
|
|
13
|
+
A1UdEQQlMCOCCkYyM04wNDkyWFSCCkYyM04wNDkyWFSCCWxvY2FsaG9zdDAdBgNV
|
|
14
|
+
HQ4EFgQUcon+rS4kgJqLOPR0YJHySsytJoQwHwYDVR0jBBgwFoAUb0gT9+AxSxw6
|
|
15
|
+
CMfQt33plcKf3iMwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL2NybC1zZXJ2ZXI6
|
|
16
|
+
ODAwMC9iYXNpYy5jcmwwDQYJKoZIhvcNAQELBQADggEBAMupGt/VxwDrWR5ETNrR
|
|
17
|
+
Ig6IJATLil2pq8TEEsYr74EjLYk5GUuHCpFZkyoLG9TRHPmQlqceciqtqWIWyNLd
|
|
18
|
+
73PPL0TkIB+rXwfS/EsD8Foi2CDsSiU8nb9j4pRxKY107l0KciR0wtp7N6rT1GxP
|
|
19
|
+
mP2Eq7rCafwm2efKEFN6L9RMYYHWgU/H6KTc3v7r4842dsEHdWA6Pb1wxAlXZkd6
|
|
20
|
+
5EwsjhZhagrTBG854lRo+9DCk7N7ItD2d9+nRzogG3hqtwxblSPT645q5TNNv0BD
|
|
21
|
+
xPPM25ppjHeF1ulTZg7G+eWzOyFl2p8ueJgELOgmV0I6v3Mxrt33Zag+2OPt9JMr
|
|
22
|
+
rbA=
|
|
23
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDKt9XdpG7OWl3k
|
|
3
|
+
9pEmLIt3LG+9ojjBPNahgoMEEJvcqVI6Z6VwMqEqD0TO+ssFftXLS0K0sr4F8yrx
|
|
4
|
+
m6E3egOWOUkmDJvChh9XlgbimcydJ5iTOxVZnO2QP4tLNqYWiWVHWTLRKjy2qtYR
|
|
5
|
+
kjSwVXMdg952LJ7ydCflYehu9MlWVRilfxlrjlaiDSNdvLSET4ZHKWxOgesMTidY
|
|
6
|
+
ZBzfnocd83swqqglNmaqCe0GfaB79UfmlhhsRba3ReLndnnyLUNpmrN+PrPSgN3T
|
|
7
|
+
REPwrDmS0aDjttwZ97gzWJ25yBATEEMS9W7Q23FomcSlaEL69qoTWSevRBYfRD5s
|
|
8
|
+
TKpPo7b5AgMBAAECggEAAKwhLRfmZ7AQS2n/c4BWkpW+xaLf/BEY96Zsi5MIB1B2
|
|
9
|
+
9btiBrgeRXrRPDwD+B/ScvcMELgejfu/XteIrnvMvv7v5YzJZ/jkqfhVC8OdlIBc
|
|
10
|
+
/tEFejt9ZLr3Oe/Dl4PLZpQOyXeRxbvVk6+X1eVkqTqGnn75pH164+WCHTsZ31vN
|
|
11
|
+
oSavzOl+TGXB6K3HPPFe6QX8YPxBPoCTZvuZGA7fdRpNl/D2wkRdRpDm/wn+qfI7
|
|
12
|
+
aFwWCNZMMLfT3FBRlp3h1r5BSbiTa02BUSkNbJKmP6xDSkA5GFo4NNInT79C8S7l
|
|
13
|
+
TIyqOsMmXF+t7YUjaS166WcrWlke14b0mra+rEDEcQKBgQD8CQoKVKbvrpO2zXGa
|
|
14
|
+
Zav14TBvCebi5ZglXG6kKIxnbV+1gVdNZ/rnfeD3fR+d0YhD7cSRUemEvKnHDDEl
|
|
15
|
+
qPj/jYFmPXs4NjPv4ZELigZ2hgYSphkFQM9eUT+Ot/WsBZy3QSwNN3RZQAEi3TAo
|
|
16
|
+
iSDqFPrv6+PWjbpv5YJIzQNQ6QKBgQDN6DFmHz5NnLOBiuuo8soDDZ8C5VmMCz9S
|
|
17
|
+
JS138UIYpv8BT91/RRw83MA3/3Dorcl9Km+cGPBB2/gF5yGGaetyrCUKvef5LWR9
|
|
18
|
+
R62G3TaIhaRLPlZULufNsMzLaDHa6sDaWPgDUpbK/gE9AIXpfi6PZ4dIYKDx0H0j
|
|
19
|
+
j/Kz83XrkQKBgDzrbmra1VL/7qJz/C6mvq77FHryeMWFW4ZEVlYFmxJw5H552gFS
|
|
20
|
+
zdngml0X+GlsOTS6JxY9J2W3OI5tSv/gXPdgW9O7rqoCqAEmk6mnXjKN6K/fSBL1
|
|
21
|
+
/Gm+188GdjJzVNMSxLQZIF1mVB/6OObDZppOIe2WJgc5UMQ1RI2WSGPpAoGBAIVG
|
|
22
|
+
6dKkHnu2FiqfdPIiVMetJWOGeHPBQ/czwT6FlrbGQQDkZQZgAWsTqAeW+8pf0q+F
|
|
23
|
+
rEBpk/nNG7kWZgjOvmu3KTLOwTv0ObstjhBhV07+0d0yOEa9JaVp7uUqSDrfAH1U
|
|
24
|
+
YRQlfR1fVAXcNNFxr0l7RYF/qi1bOeSu4/W+fHFBAoGBAItMkrqZ4D23ZqpAArac
|
|
25
|
+
4X48IqJDjwpHv45SMzQkMkpJm7gYNuokZyplDNit3Hncbs2rcJbcjL6Xq9lB9Cz5
|
|
26
|
+
FMfxoFx0gXh52UrzzVXgEE5CEKChcOJPA21OWhJgWf5K5NJryQmTRkQZGNuCgHEe
|
|
27
|
+
DO9eSq2QFLlQW7VT+t6EdNV+
|
|
28
|
+
-----END PRIVATE KEY-----
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[
|
|
2
|
+
{rabbitmq_auth_backend_oauth2, [{key_config,
|
|
3
|
+
[{signing_keys,
|
|
4
|
+
#{<<"token-key">> =>
|
|
5
|
+
{map,
|
|
6
|
+
#{<<"alg">> => <<"HS256">>,
|
|
7
|
+
<<"k">> => <<"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGH">>,
|
|
8
|
+
<<"kid">> => <<"token-key">>,
|
|
9
|
+
<<"kty">> => <<"oct">>,
|
|
10
|
+
<<"use">> => <<"sig">>,
|
|
11
|
+
<<"value">> => <<"token-key">>}}}}]},
|
|
12
|
+
{resource_server_id,<<"rabbitmq">>}]}
|
|
13
|
+
].
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[rabbitmq_auth_mechanism_ssl,rabbitmq_management,rabbitmq_stream,rabbitmq_stream_management,rabbitmq_top,rabbitmq_auth_backend_oauth2].
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
set -o errexit
|
|
4
|
+
set -o pipefail
|
|
5
|
+
set -o xtrace
|
|
6
|
+
set -o nounset
|
|
7
|
+
|
|
8
|
+
readonly docker_name_prefix='rabbitmq-amqp-python-client'
|
|
9
|
+
|
|
10
|
+
declare -r rabbitmq_docker_name="$docker_name_prefix-rabbitmq"
|
|
11
|
+
|
|
12
|
+
if docker logs "$rabbitmq_docker_name" | grep -iF inet_error
|
|
13
|
+
then
|
|
14
|
+
echo '[ERROR] found inet_error in RabbitMQ logs' 1>&2
|
|
15
|
+
exit 1
|
|
16
|
+
fi
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -o errexit
|
|
4
|
+
set -o pipefail
|
|
5
|
+
set -o xtrace
|
|
6
|
+
|
|
7
|
+
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
8
|
+
readonly script_dir
|
|
9
|
+
echo "[INFO] script_dir: '$script_dir'"
|
|
10
|
+
readonly rabbitmq_image=rabbitmq:4.3-management
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
readonly docker_name_prefix='rabbitmq-amqp-python-client'
|
|
14
|
+
readonly docker_network_name="$docker_name_prefix-network"
|
|
15
|
+
|
|
16
|
+
readonly rabbitmq_docker_name="$docker_name_prefix-rabbitmq"
|
|
17
|
+
readonly toxiproxy_docker_name="$docker_name_prefix-toxiproxy"
|
|
18
|
+
|
|
19
|
+
if [[ ! -v GITHUB_ACTIONS ]]
|
|
20
|
+
then
|
|
21
|
+
GITHUB_ACTIONS='false'
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
if [[ -d $GITHUB_WORKSPACE ]]
|
|
25
|
+
then
|
|
26
|
+
echo "[INFO] GITHUB_WORKSPACE is set: '$GITHUB_WORKSPACE'"
|
|
27
|
+
else
|
|
28
|
+
GITHUB_WORKSPACE="$(cd "$script_dir/../.." && pwd)"
|
|
29
|
+
echo "[INFO] set GITHUB_WORKSPACE to: '$GITHUB_WORKSPACE'"
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
if [[ $1 == 'toxiproxy' ]]
|
|
33
|
+
then
|
|
34
|
+
readonly run_toxiproxy='true'
|
|
35
|
+
else
|
|
36
|
+
readonly run_toxiproxy='false'
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
if [[ $2 == 'pull' ]]
|
|
40
|
+
then
|
|
41
|
+
readonly docker_pull_args='--pull always'
|
|
42
|
+
else
|
|
43
|
+
readonly docker_pull_args=''
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
if [[ $1 == 'stop' ]]
|
|
47
|
+
then
|
|
48
|
+
docker stop "$rabbitmq_docker_name"
|
|
49
|
+
docker stop "$toxiproxy_docker_name"
|
|
50
|
+
exit 0
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
set -o nounset
|
|
54
|
+
|
|
55
|
+
function start_toxiproxy
|
|
56
|
+
{
|
|
57
|
+
if [[ $run_toxiproxy == 'true' ]]
|
|
58
|
+
then
|
|
59
|
+
# sudo ss -4nlp
|
|
60
|
+
echo "[INFO] starting Toxiproxy server docker container"
|
|
61
|
+
docker rm --force "$toxiproxy_docker_name" 2>/dev/null || echo "[INFO] $toxiproxy_docker_name was not running"
|
|
62
|
+
# shellcheck disable=SC2086
|
|
63
|
+
docker run --detach $docker_pull_args \
|
|
64
|
+
--name "$toxiproxy_docker_name" \
|
|
65
|
+
--hostname "$toxiproxy_docker_name" \
|
|
66
|
+
--publish 8474:8474 \
|
|
67
|
+
--publish 55670-55680:55670-55680 \
|
|
68
|
+
--network "$docker_network_name" \
|
|
69
|
+
'ghcr.io/shopify/toxiproxy:latest'
|
|
70
|
+
fi
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function start_rabbitmq
|
|
74
|
+
{
|
|
75
|
+
echo "[INFO] starting RabbitMQ server docker container"
|
|
76
|
+
chmod 0777 "$GITHUB_WORKSPACE/.ci/ubuntu/log"
|
|
77
|
+
docker rm --force "$rabbitmq_docker_name" 2>/dev/null || echo "[INFO] $rabbitmq_docker_name was not running"
|
|
78
|
+
# shellcheck disable=SC2086
|
|
79
|
+
docker run --detach $docker_pull_args \
|
|
80
|
+
--name "$rabbitmq_docker_name" \
|
|
81
|
+
--hostname "$rabbitmq_docker_name" \
|
|
82
|
+
--publish 5671:5671 \
|
|
83
|
+
--publish 5672:5672 \
|
|
84
|
+
--publish 5552:5552 \
|
|
85
|
+
--publish 15672:15672 \
|
|
86
|
+
--network "$docker_network_name" \
|
|
87
|
+
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/enabled_plugins:/etc/rabbitmq/enabled_plugins" \
|
|
88
|
+
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro" \
|
|
89
|
+
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/advanced.config:/etc/rabbitmq/advanced.config:ro" \
|
|
90
|
+
--volume "$GITHUB_WORKSPACE/.ci/certs:/etc/rabbitmq/certs:ro" \
|
|
91
|
+
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/log:/var/log/rabbitmq" \
|
|
92
|
+
"$rabbitmq_image"
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function wait_rabbitmq
|
|
96
|
+
{
|
|
97
|
+
set +o errexit
|
|
98
|
+
set +o xtrace
|
|
99
|
+
|
|
100
|
+
declare -i count=24
|
|
101
|
+
while (( count > 0 )) && [[ "$(docker inspect --format='{{.State.Running}}' "$rabbitmq_docker_name")" != 'true' ]]
|
|
102
|
+
do
|
|
103
|
+
echo '[WARNING] RabbitMQ container is not yet running...'
|
|
104
|
+
sleep 5
|
|
105
|
+
(( count-- ))
|
|
106
|
+
done
|
|
107
|
+
|
|
108
|
+
declare -i count=24
|
|
109
|
+
while (( count > 0 )) && ! docker exec "$rabbitmq_docker_name" epmd -names | grep -F 'name rabbit'
|
|
110
|
+
do
|
|
111
|
+
echo '[WARNING] epmd is not reporting rabbit name just yet...'
|
|
112
|
+
sleep 5
|
|
113
|
+
(( count-- ))
|
|
114
|
+
done
|
|
115
|
+
|
|
116
|
+
set -o xtrace
|
|
117
|
+
|
|
118
|
+
docker exec "$rabbitmq_docker_name" rabbitmqctl await_startup
|
|
119
|
+
docker exec "$rabbitmq_docker_name" rabbitmq-diagnostics erlang_version
|
|
120
|
+
docker exec "$rabbitmq_docker_name" rabbitmqctl version
|
|
121
|
+
|
|
122
|
+
set -o errexit
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function provision_tls_auth_user
|
|
126
|
+
{
|
|
127
|
+
# SASL EXTERNAL (006_tls_auth) maps a client certificate's Common Name to a
|
|
128
|
+
# RabbitMQ user via ssl_cert_login_from=common_name (rabbitmq.conf); create
|
|
129
|
+
# that user here rather than hardcoding it, since it is derived from
|
|
130
|
+
# whatever CN client_localhost_certificate.pem was generated with.
|
|
131
|
+
local client_cn
|
|
132
|
+
client_cn="$(openssl x509 -in "$GITHUB_WORKSPACE/.ci/certs/client_localhost_certificate.pem" -noout -subject -nameopt multiline \
|
|
133
|
+
| awk -F' *= *' '/commonName/ {print $2}')"
|
|
134
|
+
echo "[INFO] provisioning SASL EXTERNAL user '$client_cn' from the client certificate's CN"
|
|
135
|
+
docker exec "$rabbitmq_docker_name" rabbitmqctl add_user "$client_cn" 'unused-external-auth-password' \
|
|
136
|
+
|| echo "[INFO] user '$client_cn' already exists"
|
|
137
|
+
docker exec "$rabbitmq_docker_name" rabbitmqctl set_permissions -p / "$client_cn" '.*' '.*' '.*'
|
|
138
|
+
docker exec "$rabbitmq_docker_name" rabbitmqctl set_user_tags "$client_cn" ''
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function get_rabbitmq_id
|
|
142
|
+
{
|
|
143
|
+
local rabbitmq_docker_id
|
|
144
|
+
rabbitmq_docker_id="$(docker inspect --format='{{.Id}}' "$rabbitmq_docker_name")"
|
|
145
|
+
echo "[INFO] '$rabbitmq_docker_name' docker id is '$rabbitmq_docker_id'"
|
|
146
|
+
if [[ -v GITHUB_OUTPUT ]]
|
|
147
|
+
then
|
|
148
|
+
if [[ -f $GITHUB_OUTPUT ]]
|
|
149
|
+
then
|
|
150
|
+
echo "[INFO] GITHUB_OUTPUT file: '$GITHUB_OUTPUT'"
|
|
151
|
+
fi
|
|
152
|
+
echo "id=$rabbitmq_docker_id" >> "$GITHUB_OUTPUT"
|
|
153
|
+
fi
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function install_ca_certificate
|
|
157
|
+
{
|
|
158
|
+
set +o errexit
|
|
159
|
+
hostname
|
|
160
|
+
hostname -s
|
|
161
|
+
hostname -f
|
|
162
|
+
openssl version
|
|
163
|
+
openssl version -d
|
|
164
|
+
set -o errexit
|
|
165
|
+
|
|
166
|
+
if [[ $GITHUB_ACTIONS == 'true' ]]
|
|
167
|
+
then
|
|
168
|
+
readonly openssl_store_dir='/usr/lib/ssl/certs'
|
|
169
|
+
sudo cp -vf "$GITHUB_WORKSPACE/.ci/certs/ca_certificate.pem" "$openssl_store_dir"
|
|
170
|
+
sudo ln -vsf "$openssl_store_dir/ca_certificate.pem" "$openssl_store_dir/$(openssl x509 -hash -noout -in $openssl_store_dir/ca_certificate.pem).0"
|
|
171
|
+
else
|
|
172
|
+
echo "[WARNING] you must install '$GITHUB_WORKSPACE/.ci/certs/ca_certificate.pem' manually into your trusted root store"
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
openssl s_client -connect localhost:5671 \
|
|
176
|
+
-CAfile "$GITHUB_WORKSPACE/.ci/certs/ca_certificate.pem" \
|
|
177
|
+
-cert "$GITHUB_WORKSPACE/.ci/certs/client_localhost_certificate.pem" \
|
|
178
|
+
-key "$GITHUB_WORKSPACE/.ci/certs/client_localhost_key.pem"
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
docker network create "$docker_network_name" || echo "[INFO] network '$docker_network_name' is already created"
|
|
182
|
+
|
|
183
|
+
start_toxiproxy
|
|
184
|
+
|
|
185
|
+
start_rabbitmq
|
|
186
|
+
|
|
187
|
+
wait_rabbitmq
|
|
188
|
+
|
|
189
|
+
provision_tls_auth_user
|
|
190
|
+
|
|
191
|
+
get_rabbitmq_id
|
|
192
|
+
|
|
193
|
+
install_ca_certificate
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
loopback_users = none
|
|
2
|
+
loopback_users.guest = true
|
|
3
|
+
|
|
4
|
+
log.console = true
|
|
5
|
+
log.console.level = debug
|
|
6
|
+
log.file = /var/log/rabbitmq/rabbitmq.log
|
|
7
|
+
log.file.level = debug
|
|
8
|
+
log.exchange = false
|
|
9
|
+
|
|
10
|
+
listeners.tcp.default = 5672
|
|
11
|
+
listeners.ssl.default = 5671
|
|
12
|
+
reverse_dns_lookups = false
|
|
13
|
+
|
|
14
|
+
stream.listeners.tcp.1 = 5552
|
|
15
|
+
stream.advertised_host = localhost
|
|
16
|
+
|
|
17
|
+
# deprecated_features.permit.amqp_address_v1 = false
|
|
18
|
+
|
|
19
|
+
ssl_options.cacertfile = /etc/rabbitmq/certs/ca_certificate.pem
|
|
20
|
+
ssl_options.certfile = /etc/rabbitmq/certs/server_localhost_certificate.pem
|
|
21
|
+
ssl_options.keyfile = /etc/rabbitmq/certs/server_localhost_key.pem
|
|
22
|
+
ssl_options.verify = verify_peer
|
|
23
|
+
ssl_options.depth = 1
|
|
24
|
+
ssl_options.fail_if_no_peer_cert = false
|
|
25
|
+
ssl_cert_login_from = common_name
|
|
26
|
+
|
|
27
|
+
auth_mechanisms.1 = PLAIN
|
|
28
|
+
auth_mechanisms.2 = ANONYMOUS
|
|
29
|
+
auth_mechanisms.3 = EXTERNAL
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
auth_backends.1 = internal
|
|
33
|
+
auth_backends.2 = rabbit_auth_backend_oauth2
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# .github/release.yml
|
|
2
|
+
|
|
3
|
+
changelog:
|
|
4
|
+
exclude:
|
|
5
|
+
labels:
|
|
6
|
+
- ignore-for-release
|
|
7
|
+
- skip-changelog
|
|
8
|
+
categories:
|
|
9
|
+
- title: 🚨 Breaking Changes
|
|
10
|
+
labels:
|
|
11
|
+
- Semver-Major
|
|
12
|
+
- breaking-change
|
|
13
|
+
- title: ✨ Enhancements
|
|
14
|
+
labels:
|
|
15
|
+
- Semver-Minor
|
|
16
|
+
- enhancement
|
|
17
|
+
- title: 🐛 Bug Fixes
|
|
18
|
+
labels:
|
|
19
|
+
- Semver-Patch
|
|
20
|
+
- bug
|
|
21
|
+
- bug-fix
|
|
22
|
+
- title: 📚 Documentation
|
|
23
|
+
labels:
|
|
24
|
+
- documentation
|
|
25
|
+
- title: 🔄 Dependency Updates
|
|
26
|
+
labels:
|
|
27
|
+
- dependencies
|
|
28
|
+
- title: 🔧 Other Changes
|
|
29
|
+
labels:
|
|
30
|
+
- '*'
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
name: Test against a RabbitMQ broker
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- v2_main
|
|
7
|
+
pull_request:
|
|
8
|
+
branches:
|
|
9
|
+
- v2_main
|
|
10
|
+
types:
|
|
11
|
+
- opened
|
|
12
|
+
- synchronize
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
ci:
|
|
16
|
+
strategy:
|
|
17
|
+
fail-fast: false
|
|
18
|
+
matrix:
|
|
19
|
+
python-version: ["3.12"]
|
|
20
|
+
os: [ubuntu-24.04]
|
|
21
|
+
runs-on: ${{ matrix.os }}
|
|
22
|
+
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout
|
|
25
|
+
uses: actions/checkout@v6
|
|
26
|
+
|
|
27
|
+
- uses: actions/setup-python@v6
|
|
28
|
+
with:
|
|
29
|
+
python-version: ${{ matrix.python-version }}
|
|
30
|
+
cache: pip
|
|
31
|
+
cache-dependency-path: pyproject.toml
|
|
32
|
+
|
|
33
|
+
- name: Install dependencies
|
|
34
|
+
run: pip install -e ".[dev]"
|
|
35
|
+
|
|
36
|
+
- name: Check formatting and lint
|
|
37
|
+
run: make lint PYTHON=python
|
|
38
|
+
|
|
39
|
+
- name: Type check
|
|
40
|
+
run: make typecheck PYTHON=python
|
|
41
|
+
|
|
42
|
+
- name: Run unit tests
|
|
43
|
+
run: make test-unit PYTHON=python
|
|
44
|
+
|
|
45
|
+
- name: Start RabbitMQ
|
|
46
|
+
id: start-rabbitmq
|
|
47
|
+
run: ${{ github.workspace }}/.ci/ubuntu/gha-setup.sh
|
|
48
|
+
|
|
49
|
+
- name: Run integration tests
|
|
50
|
+
run: make test-integration PYTHON=python
|
|
51
|
+
|
|
52
|
+
- name: Check RabbitMQ logs for errors
|
|
53
|
+
if: always()
|
|
54
|
+
run: ${{ github.workspace }}/.ci/ubuntu/gha-log-check.sh
|
|
55
|
+
|
|
56
|
+
- name: Upload RabbitMQ logs
|
|
57
|
+
if: failure()
|
|
58
|
+
uses: actions/upload-artifact@v4
|
|
59
|
+
with:
|
|
60
|
+
name: rabbitmq-logs-${{ matrix.python-version }}-${{ matrix.os }}
|
|
61
|
+
path: .ci/ubuntu/log/rabbitmq.log
|
|
62
|
+
if-no-files-found: ignore
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
name: publish-pypi
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_call:
|
|
5
|
+
inputs:
|
|
6
|
+
pypi_repository_url:
|
|
7
|
+
required: true
|
|
8
|
+
type: string
|
|
9
|
+
secrets:
|
|
10
|
+
pypi_api_login:
|
|
11
|
+
required: true
|
|
12
|
+
pypi_api_password:
|
|
13
|
+
required: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
pypi-publish:
|
|
17
|
+
name: upload release to PyPI
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
# Specifying a GitHub environment is optional, but strongly encouraged
|
|
20
|
+
environment:
|
|
21
|
+
name: pypi
|
|
22
|
+
url: https://pypi.org/p/rabbitmq-amqp-python-client
|
|
23
|
+
permissions:
|
|
24
|
+
# IMPORTANT: this permission is mandatory for trusted publishing
|
|
25
|
+
id-token: write
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v3
|
|
28
|
+
- uses: actions/setup-python@v5
|
|
29
|
+
with:
|
|
30
|
+
python-version: "3.12"
|
|
31
|
+
- name: build
|
|
32
|
+
run: |
|
|
33
|
+
python3 -m pip install build
|
|
34
|
+
python3 -m build
|
|
35
|
+
# retrieve your distributions here
|
|
36
|
+
- name: Publish package distributions to PyPI
|
|
37
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
38
|
+
with:
|
|
39
|
+
verbose: true
|
|
40
|
+
attestations: false
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: publish-release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types:
|
|
6
|
+
- released
|
|
7
|
+
- prereleased
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
call-publish-pypi:
|
|
11
|
+
permissions:
|
|
12
|
+
id-token: write
|
|
13
|
+
uses: ./.github/workflows/publish-pypi.yaml
|
|
14
|
+
with:
|
|
15
|
+
pypi_repository_url: https://upload.pypi.org/legacy/
|
|
16
|
+
secrets:
|
|
17
|
+
pypi_api_login: __token__
|
|
18
|
+
pypi_api_password: ${{ secrets.PYPI_TOKEN }}
|