-
Notifications
You must be signed in to change notification settings - Fork 0
Comparing changes
Open a pull request
base repository: CodeShayk/SourceFlow.Net
base: master
head repository: CodeShayk/SourceFlow.Net
compare: azure-cloud
- 12 commits
- 85 files changed
- 1 contributor
Commits on Jun 25, 2026
-
Add SourceFlow.Cloud.Azure project (v2.0.0) with Service Bus integration
Pulls the Azure Service Bus cloud extension and its test suite from the cloud-support branch onto azure-cloud (branched from the released v2.0.0 master) and wires them into the solution. - src/SourceFlow.Cloud.Azure: builds clean against master's v2.0.0 core - tests/SourceFlow.Cloud.Azure.Tests: 31 unit tests passing - Fix idempotency DI: register InMemoryIdempotencyService as Singleton (+ cleanup hosted service) to match AWS. Scoped registration recreated the in-memory dedup store per message scope, defeating deduplication and acting as a captive dependency for the singleton listeners. - CI: Azure-Build.yml runs build + unit tests + pack, and an integration job against the Azure Service Bus emulator (+ SQL Edge), the Azure equivalent of the AWS LocalStack pipeline.
Configuration menu - View commit details
-
Copy full SHA for ec64222 - Browse repository at this point
Copy the full SHA ec64222View commit details -
Wire Azure integration tests to the Service Bus emulator
- AzureTestEnvironment.GetServiceBusConnectionString now falls back to AZURE_SERVICEBUS_CONNECTION_STRING (set by CI) and then to the local Service Bus emulator default, instead of returning an empty string that threw on ServiceBusClient construction. - Config.json: add test-commands.fifo (session), test-commands-dedup (duplicate detection), and test-events / test-events-fanout topics so the deterministic dispatching, event-publishing and session suites have their entities pre-declared (the emulator does not create entities at runtime). - Azure-Build.yml: scope the emulator integration step to the deterministic Service Bus messaging suites; align the emulator connection string.
Configuration menu - View commit details
-
Copy full SHA for 9ccab54 - Browse repository at this point
Copy the full SHA 9ccab54View commit details -
Make admin entity-ensure helpers tolerant of the emulator
The Service Bus emulator exposes only the AMQP endpoint (5672) and has no HTTP management endpoint, so ServiceBusAdministrationClient calls fail with "Connection refused (localhost:443)". Wrap the session/dedup queue-ensure helpers in try/catch (entities are pre-declared in Config.json) and scope the CI emulator step to ServiceBusCommandDispatchingTests, which uses pre-declared entities + AMQP send/receive.
Configuration menu - View commit details
-
Copy full SHA for c432086 - Browse repository at this point
Copy the full SHA c432086View commit details -
Wait for emulator readiness log instead of TCP port check
Docker's port proxy accepts TCP on 5672 before the Service Bus emulator app binds (while SQL Edge is still initialising), so the previous TCP check passed prematurely and tests hit a not-yet-ready emulator (AMQP ConnectionRefused). Wait for the emulator's "Successfully Up" log line.
Configuration menu - View commit details
-
Copy full SHA for 87e24d3 - Browse repository at this point
Copy the full SHA 87e24d3View commit details -
Trim emulator Config.json to <=50 entities
The Service Bus emulator caps total queues+topics at 50 and refuses to start otherwise (the previous config declared 51, so the emulator never came up). The gated suite (ServiceBusCommandDispatchingTests) only needs the three test-commands* queues, so declare just those.
Configuration menu - View commit details
-
Copy full SHA for 2d35a33 - Browse repository at this point
Copy the full SHA 2d35a33View commit details -
Fix emulator dedup window (5m cap) and fail fast on config errors
The emulator caps DuplicateDetectionHistoryTimeWindow at 5m (PT10M was rejected). Lower test-commands-dedup to PT5M. Also make the readiness step fail immediately when the emulator logs a config rejection instead of waiting the full 5-minute timeout.
Configuration menu - View commit details
-
Copy full SHA for c170a40 - Browse repository at this point
Copy the full SHA c170a40View commit details -
Fix EntityId test helper; scope emulator gate to stable tests
- ServiceBusTestHelpers used command.Entity.ToString() (the EntityRef type name) for the SessionId and EntityId message properties; align with the production dispatcher by using command.Entity.Id. Fixes CommandRouting_PreservesMessageProperties against the emulator. - Scope the emulator integration gate to ServiceBusCommandDispatchingTests excluding three WIP cases (dead-letter resubmission reason mismatch and two long session-ordering tests) that remain to be fixed separately.
Configuration menu - View commit details
-
Copy full SHA for 3242a2c - Browse repository at this point
Copy the full SHA 3242a2cView commit details -
Add event-flow integration suites to the emulator CI gate
- Pre-declare the event topics/subscriptions (test-events, test-events-fanout + 6 session topics) in Config.json (11 entities total, under the 50 cap). - Make the event suites' admin helpers tolerant of the emulator's missing management endpoint: stop rethrowing in the session helper and wrap the fan-out topic helper in try/catch. - Run command-dispatching, event-publishing and event-session-handling as three separate emulator steps (per-class AND-only filters).
Configuration menu - View commit details
-
Copy full SHA for de6d718 - Browse repository at this point
Copy the full SHA de6d718View commit details -
Exclude two emulator-divergent session tests from the event gate
EventSessionHandling_SessionLockRenewal_MaintainsLock and EventSessionHandling_MultipleConcurrentSessions_ProcessIndependently rely on session lock-renewal / concurrent-session timing that the emulator handles differently from real Azure (same quirk already excluded in the command suite). The other 4 session tests, all 7 event-publishing tests and the command-dispatching suite pass against the emulator.
Configuration menu - View commit details
-
Copy full SHA for 8932944 - Browse repository at this point
Copy the full SHA 8932944View commit details -
Set up SourceFlow.Cloud.Azure for release (mirror AWS package metadata)
Bring the Azure csproj to parity with SourceFlow.Cloud.AWS for NuGet release: - Full package metadata: Title, Authors/Company (CodeShayk), Description, Copyright, RepositoryUrl/Type, PackageProjectUrl, tags, release notes, AssemblyVersion/FileVersion, EnableNETAnalyzers, GeneratePackageOnBuild. - Pack icon (event-icon.png), LICENSE, and a new packaged readme docs/SourceFlow.Cloud.Azure-README.md. - Multi-target net8.0;net9.0;net10.0 (netstandard2.1 omitted: AesGcm used by AzureKeyVaultMessageEncryption is unavailable there). - Align dependency versions with AWS (Azure SDK 7.18.1/1.12.1; Extensions Hosting/HealthChecks/Caching 9.0.0; Options.ConfigurationExtensions 10.0.0). Verified: builds across all three TFMs, package contains net8/9/10 libs + readme + icon + license, 31 unit tests pass.
Configuration menu - View commit details
-
Copy full SHA for 3e2bb48 - Browse repository at this point
Copy the full SHA 3e2bb48View commit details -
Mark SourceFlow.Cloud.Azure as 2.0.0-beta.1 prerelease
Ship the Azure provider as a prerelease alongside the GA v2.0.0 packages: core command + event messaging is proven on the Service Bus emulator, while Key Vault, Managed Identity, subscription SQL-filtering, and real-Azure behaviour are not yet validated. AssemblyVersion/FileVersion stay 2.0.0.
Configuration menu - View commit details
-
Copy full SHA for df2312d - Browse repository at this point
Copy the full SHA df2312dView commit details -
Fix DLQ test isolation; re-include SupportsResubmission in the gate
The three DeadLetterQueue tests shared the test-commands queue and its dead-letter sub-queue with no per-test teardown, so a message dead-lettered by one test leaked into the next test's DLQ assertions (GUID / reason mismatches) — environment-dependent: green in CI, red locally. Drain the shared non-session queues (main + dead-letter) in InitializeAsync via ReceiveAndDelete so every test starts clean. With isolation fixed all three DLQ tests pass, so DeadLetterQueue_SupportsResubmission is no longer excluded from the emulator gate. Verified locally against a fresh emulator: command gate 10/10 passing (DLQ trio included).
Configuration menu - View commit details
-
Copy full SHA for 1209821 - Browse repository at this point
Copy the full SHA 1209821View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff master...azure-cloud