Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: CodeShayk/SourceFlow.Net
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: CodeShayk/SourceFlow.Net
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: azure-cloud
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 12 commits
  • 85 files changed
  • 1 contributor

Commits on Jun 25, 2026

  1. 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.
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    ec64222 View commit details
    Browse the repository at this point in the history
  2. 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.
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    9ccab54 View commit details
    Browse the repository at this point in the history
  3. 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.
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    c432086 View commit details
    Browse the repository at this point in the history
  4. 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.
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    87e24d3 View commit details
    Browse the repository at this point in the history
  5. 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.
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    2d35a33 View commit details
    Browse the repository at this point in the history
  6. 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.
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    c170a40 View commit details
    Browse the repository at this point in the history
  7. 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.
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    3242a2c View commit details
    Browse the repository at this point in the history
  8. 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).
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    de6d718 View commit details
    Browse the repository at this point in the history
  9. 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.
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    8932944 View commit details
    Browse the repository at this point in the history
  10. 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.
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    3e2bb48 View commit details
    Browse the repository at this point in the history
  11. 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.
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    df2312d View commit details
    Browse the repository at this point in the history
  12. 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).
    NinjaRocks committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    1209821 View commit details
    Browse the repository at this point in the history
Loading