[
https://issues.apache.org/jira/browse/CAMEL-26613?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrea Cosentino updated CAMEL-26613:
-------------------------------------
Fix Version/s: (was: 4.24.0)
Description:
Floci AZ ([https://github.com/floci-io/floci-az], MIT) is the Azure emulator of
the Floci family that the AWS test-infra uses since
[#23404|https://github.com/apache/camel/pull/23404]. CAMEL-26615 adds a Floci
AZ container to {{camel-test-infra-azure-common}}, and the other Azure
components build on it.
The {{storage-blob}} and {{storage-queue}} local services stay on Azurite
({{mcr.microsoft.com/azure-storage/azurite:3.37.0}}) for now: run on Floci AZ
0.16.0, 12 camel-azure-storage-blob integration tests and 1
camel-azure-storage-queue integration test fail, and all of them pass on
Azurite.
* Page blobs: Put Page answers 501 NotImplemented, and Put Blob ignores
{{x-ms-blob-content-length}} for a page blob (the blob has size 0).
{{BlobOperationsIT}} ({{testCreateAndUploadPageBlob}},
{{testGetPageBlobRanges}}, {{testResizePageBlob}}, {{testClearPages}}) and
{{BlobProducerIT.testCreateAndUploadPageBlob}} fail.
* Put Blob answers without {{Content-MD5}}: {{BlobOperationsIT}}
({{testUploadBlockBlob}}, {{testUploadBlockBlobAsCachedStream}},
{{testUploadBlockBlobAsStreamWithBlobSizeHeader}}) fail, and the append blob
tests that come after them fail with {{InvalidBlobType}}, because the block
blob they leave behind has the same name.
* After Copy Blob, Get Blob Properties has no {{x-ms-copy-id}} or
{{x-ms-copy-status}}, so the copy poller of the SDK ends with
{{POLLING_FAILED}}: the {{moveAfterRead}} tests of {{BlobConsumerDeleteMoveIT}}
fail.
* Get Messages does not return the messages of one call in the order they were
sent: {{StorageQueueConsumerIT.testPollingMessages}} fails.
When a Floci AZ release covers them, move the two services to Floci AZ. Floci
AZ serves every service on one port, so the local Queue endpoint then becomes
{{http://<host>:<port>/devstoreaccount1-queue}} instead of
{{http://<host>:10001/devstoreaccount1}}: code that builds the Queue URL from
{{host()}} and {{port()}} (for example the camel-kafka-connector
{{itests-azure-storage-queue}} module) needs the new path.
_Claude Code on behalf of Andrea Cosentino_
was:
The AWS test-infra runs its local services on Floci
([https://github.com/floci-io/floci]) since
[#23404|https://github.com/apache/camel/pull/23404]:
{{camel-test-infra-aws-v2}} points {{aws.container}} at
{{mirror.gcr.io/floci/floci}}, and the AWS integration tests run against it.
Floci AZ ([https://github.com/floci-io/floci-az], MIT) is the Azure emulator of
the same family. One container answers on port 4577 for Blob (with the Data
Lake Gen2 DFS API), Queue, Table, Cosmos DB (NoSQL API), Key Vault, Event Hubs,
Service Bus, Event Grid, Functions and more, and reports its state on
{{/health}}. The image is mirrored as {{mirror.gcr.io/floci/floci-az}} (latest
release 0.16.0).
Today the Azure test-infra emulates only Blob and Queue, with Azurite
({{mcr.microsoft.com/azure-storage/azurite:3.37.0}}, {{AzuriteContainer}} in
{{camel-test-infra-azure-common}}). The integration tests of the other Azure
components run only against a real Azure subscription.
h4. Change
* Add a Floci AZ container to {{camel-test-infra-azure-common}}: image in
{{container.properties}} ({{mirror.gcr.io/floci/floci-az:0.16.0}}), a wait on
{{/health}}, the well-known {{devstoreaccount1}} account and key, and the
per-service endpoints ({{/devstoreaccount1}} for Blob,
{{/devstoreaccount1-queue}} for Queue).
* Run the {{storage-blob}} and {{storage-queue}} local services on it instead
of Azurite, and check the camel-azure-storage-blob and
camel-azure-storage-queue integration tests against it.
* Regenerate the test-infra metadata of the catalog ({{camel infra list}}).
Like Azurite, Floci AZ ships linux/amd64 and linux/arm64 images only, so the
ppc64le and s390x skips of these modules stay.
h4. Compatibility
Floci AZ serves every service on one port. The local Queue endpoint becomes
{{http://<host>:<port>/devstoreaccount1-queue}} instead of Azurite's
{{http://<host>:10001/devstoreaccount1}}, so code that builds the Queue URL
from {{host()}} and {{port()}} (for example the camel-kafka-connector
{{itests-azure-storage-queue}} module) needs the new path. {{camel infra run
azure storage-blob}} and {{camel infra run azure storage-queue}} start Floci AZ.
h4. Follow-ups
One issue for each Azure component without local integration tests:
* CAMEL-26615: camel-azure-storage-datalake - run the integration tests on
Floci AZ
* CAMEL-26616: camel-azure-cosmosdb - run the integration tests on Floci AZ
* CAMEL-26617: camel-azure-key-vault - run the integration tests on Floci AZ
* CAMEL-26618: camel-azure-eventhubs - run the integration tests on Floci AZ
* CAMEL-26619: camel-azure-servicebus - run the integration tests on Floci AZ
* CAMEL-26620: camel-azure-eventgrid - add integration tests on Floci AZ
* CAMEL-26621: camel-azure-functions - run the integration tests on Floci AZ
Floci AZ has no Azure Files or Schema Registry service, so camel-azure-files
and camel-azure-schema-registry are not covered.
_Claude Code on behalf of Andrea Cosentino_
Summary: camel-test-infra-azure - move the Blob and Queue services
from Azurite to Floci AZ (was: camel-test-infra-azure - use Floci AZ instead
of Azurite for the Blob and Queue services)
> camel-test-infra-azure - move the Blob and Queue services from Azurite to
> Floci AZ
> ----------------------------------------------------------------------------------
>
> Key: CAMEL-26613
> URL: https://issues.apache.org/jira/browse/CAMEL-26613
> Project: Camel
> Issue Type: Test
> Components: camel-azure, camel-test-infra
> Reporter: Andrea Cosentino
> Assignee: Andrea Cosentino
> Priority: Major
>
> Floci AZ ([https://github.com/floci-io/floci-az], MIT) is the Azure emulator
> of the Floci family that the AWS test-infra uses since
> [#23404|https://github.com/apache/camel/pull/23404]. CAMEL-26615 adds a Floci
> AZ container to {{camel-test-infra-azure-common}}, and the other Azure
> components build on it.
> The {{storage-blob}} and {{storage-queue}} local services stay on Azurite
> ({{mcr.microsoft.com/azure-storage/azurite:3.37.0}}) for now: run on Floci AZ
> 0.16.0, 12 camel-azure-storage-blob integration tests and 1
> camel-azure-storage-queue integration test fail, and all of them pass on
> Azurite.
> * Page blobs: Put Page answers 501 NotImplemented, and Put Blob ignores
> {{x-ms-blob-content-length}} for a page blob (the blob has size 0).
> {{BlobOperationsIT}} ({{testCreateAndUploadPageBlob}},
> {{testGetPageBlobRanges}}, {{testResizePageBlob}}, {{testClearPages}}) and
> {{BlobProducerIT.testCreateAndUploadPageBlob}} fail.
> * Put Blob answers without {{Content-MD5}}: {{BlobOperationsIT}}
> ({{testUploadBlockBlob}}, {{testUploadBlockBlobAsCachedStream}},
> {{testUploadBlockBlobAsStreamWithBlobSizeHeader}}) fail, and the append blob
> tests that come after them fail with {{InvalidBlobType}}, because the block
> blob they leave behind has the same name.
> * After Copy Blob, Get Blob Properties has no {{x-ms-copy-id}} or
> {{x-ms-copy-status}}, so the copy poller of the SDK ends with
> {{POLLING_FAILED}}: the {{moveAfterRead}} tests of
> {{BlobConsumerDeleteMoveIT}} fail.
> * Get Messages does not return the messages of one call in the order they
> were sent: {{StorageQueueConsumerIT.testPollingMessages}} fails.
> When a Floci AZ release covers them, move the two services to Floci AZ. Floci
> AZ serves every service on one port, so the local Queue endpoint then becomes
> {{http://<host>:<port>/devstoreaccount1-queue}} instead of
> {{http://<host>:10001/devstoreaccount1}}: code that builds the Queue URL from
> {{host()}} and {{port()}} (for example the camel-kafka-connector
> {{itests-azure-storage-queue}} module) needs the new path.
> _Claude Code on behalf of Andrea Cosentino_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)