From 98fc994342e288311a98e00a5eb2cd6bd0da4ade Mon Sep 17 00:00:00 2001
From: Todd Anderson <127344469+tanderson-ld@users.noreply.github.com>
Date: Mon, 22 Apr 2024 13:02:10 -0500
Subject: [PATCH] ci: Adds LaunchDarkly.ServerSdk.Telemetry package and
associated GA reorganization (#195)
Adds LaunchDarkly.ServerSdk.Telemetry package and associated
reorganization of Github Actions and Release Please configuration to
support releasing multiple packages from this repository.
---
.github/actions/build-docs/action.yml | 24 +-
.github/actions/build-release/action.yml | 6 +-
.github/actions/ci/action.yml | 48 +---
.github/actions/contract-tests/action.yml | 36 +++
.github/actions/full-release/action.yml | 70 ++++++
.github/actions/publish-docs/action.yml | 5 +-
.github/actions/publish-package/action.yml | 5 +-
.github/workflows/manual-publish.yml | 42 ++++
.github/workflows/publish-docs.yml | 42 +++-
.github/workflows/publish.yml | 63 ------
.github/workflows/release-please.yml | 52 +++--
.github/workflows/sdk-server-ci.yml | 38 ++++
.../workflows/{ci.yml => telemetry-ci.yml} | 17 +-
.release-please-manifest.json | 3 +-
LaunchDarkly.ServerSdk.sln | 49 +++-
.../contract-tests}/BigSegmentStoreFixture.cs | 0
.../CallbackRepresentations.cs | 0
.../server/contract-tests}/CallbackService.cs | 0
.../sdk/server/contract-tests}/README.md | 0
.../server/contract-tests}/Representations.cs | 0
.../server/contract-tests}/SdkClientEntity.cs | 0
.../sdk/server/contract-tests}/TestHook.cs | 0
.../sdk/server/contract-tests}/TestService.cs | 0
.../server/contract-tests}/TestService.csproj | 2 +-
.../server/contract-tests}/TestService.sln | 0
docfx.json => pkgs/sdk/server/docfx.json | 0
.../sdk/server/docs-src}/README.md | 0
.../namespaces/LaunchDarkly.Sdk.Json.md | 0
.../LaunchDarkly.Sdk.Server.Integrations.md | 0
.../LaunchDarkly.Sdk.Server.Interfaces.md | 0
.../LaunchDarkly.Sdk.Server.Subsystems.md | 0
.../namespaces/LaunchDarkly.Sdk.Server.md | 0
.../docs-src}/namespaces/LaunchDarkly.Sdk.md | 0
.../sdk/server/src}/Components.cs | 0
.../sdk/server/src}/Configuration.cs | 0
.../sdk/server/src}/ConfigurationBuilder.cs | 0
.../sdk/server/src}/DataModel.cs | 0
.../sdk/server/src}/FeatureFlagsState.cs | 0
.../sdk/server/src}/FlagsStateOption.cs | 0
.../src}/Hooks/EvaluationSeriesContext.cs | 0
.../sdk/server/src}/Hooks/Hook.cs | 0
.../sdk/server/src}/Hooks/Method.cs | 0
.../server/src}/Hooks/SeriesDataBuilder.cs | 0
.../sdk/server/src}/ILdClientExtensions.cs | 0
.../BigSegmentsConfigurationBuilder.cs | 0
.../Integrations/EventProcessorBuilder.cs | 0
.../sdk/server/src}/Integrations/FileData.cs | 0
.../Integrations/FileDataSourceBuilder.cs | 0
.../server/src}/Integrations/FileDataTypes.cs | 0
.../Integrations/HookConfigurationBuilder.cs | 0
.../Integrations/HttpConfigurationBuilder.cs | 0
.../LoggingConfigurationBuilder.cs | 0
.../PersistentDataStoreBuilder.cs | 0
.../Integrations/PollingDataSourceBuilder.cs | 0
.../Integrations/ServiceEndpointsBuilder.cs | 0
.../StreamingDataSourceBuilder.cs | 0
.../sdk/server/src}/Integrations/TestData.cs | 0
.../src}/Integrations/WrapperInfoBuilder.cs | 0
.../src}/Interfaces/BigSegmentStoreStatus.cs | 0
.../src}/Interfaces/DataSourceStatus.cs | 0
.../server/src}/Interfaces/DataStoreStatus.cs | 0
.../IBigSegmentStoreStatusProvider.cs | 0
.../Interfaces/IDataSourceStatusProvider.cs | 0
.../Interfaces/IDataStoreStatusProvider.cs | 0
.../server/src}/Interfaces/IFlagTracker.cs | 0
.../sdk/server/src}/Interfaces/ILdClient.cs | 0
.../src}/Interfaces/ServiceEndpoints.cs | 0
.../sdk/server/src}/Interfaces/WrapperInfo.cs | 0
.../BigSegmentStoreStatusProviderImpl.cs | 0
.../BigSegments/BigSegmentStoreWrapper.cs | 0
.../BigSegments/BigSegmentsInternalTypes.cs | 0
.../Internal/BigSegments/MembershipBuilder.cs | 0
.../Internal/BigSegments/NamespaceReadme.md | 0
.../server/src}/Internal/ComponentsImpl.cs | 0
.../src}/Internal/DataModelDependencies.cs | 0
.../DataSources/DataSourceOutageTracker.cs | 0
.../DataSourceStatusProviderImpl.cs | 0
.../DataSources/DataSourceUpdatesImpl.cs | 0
.../Internal/DataSources/FeatureRequestor.cs | 0
.../Internal/DataSources/FileDataSource.cs | 0
.../Internal/DataSources/FlagFileParser.cs | 0
.../Internal/DataSources/FlagFileReader.cs | 0
.../Internal/DataSources/IFeatureRequestor.cs | 0
.../Internal/DataSources/NamespaceReadme.md | 0
.../Internal/DataSources/PollingDataSource.cs | 0
.../DataSources/StreamProcessorEvents.cs | 0
.../DataSources/StreamingDataSource.cs | 0
.../DataStores/DataStoreCacheConfig.cs | 0
.../Internal/DataStores/DataStoreSorter.cs | 0
.../DataStores/DataStoreStatusProviderImpl.cs | 0
.../DataStores/DataStoreUpdatesImpl.cs | 0
.../Internal/DataStores/InMemoryDataStore.cs | 0
.../Internal/DataStores/NamespaceReadme.md | 0
.../PersistentDataStoreStatusManager.cs | 0
.../DataStores/PersistentStoreAsyncAdapter.cs | 0
.../DataStores/PersistentStoreWrapper.cs | 0
.../src}/Internal/Evaluation/Bucketing.cs | 0
.../src}/Internal/Evaluation/Evaluator.cs | 0
.../Internal/Evaluation/EvaluatorClause.cs | 0
.../Internal/Evaluation/EvaluatorSegment.cs | 0
.../Internal/Evaluation/EvaluatorTarget.cs | 0
.../Internal/Evaluation/EvaluatorTypes.cs | 0
.../Internal/Evaluation/NamespaceReadme.md | 0
.../Events/DefaultContextDeduplicator.cs | 0
.../Events/DefaultEventProcessorWrapper.cs | 0
.../src}/Internal/Events/EventFactory.cs | 0
.../src}/Internal/Events/NamespaceReadme.md | 0
.../Internal/Events/ServerDiagnosticStore.cs | 0
.../server/src}/Internal/FlagTrackerImpl.cs | 0
.../src}/Internal/Hooks/Executor/Executor.cs | 0
.../Internal/Hooks/Executor/NoopExecutor.cs | 0
.../Hooks/Interfaces/IHookExecutor.cs | 0
.../Hooks/Interfaces/IStageExecutor.cs | 0
.../Internal/Hooks/Series/EvaluationSeries.cs | 0
.../sdk/server/src}/Internal/LRUCacheSet.cs | 0
.../sdk/server/src}/Internal/LogNames.cs | 0
.../sdk/server/src}/Internal/Model/Clause.cs | 0
.../server/src}/Internal/Model/FeatureFlag.cs | 0
.../src}/Internal/Model/NamespaceReadme.md | 0
.../server/src}/Internal/Model/Operator.cs | 0
.../sdk/server/src}/Internal/Model/Segment.cs | 0
.../src}/Internal/Model/SemanticVersion.cs | 0
.../src}/Internal/Model/Serialization.cs | 0
.../server/src}/Internal/NamespaceReadme.md | 0
.../server/src}/Internal/StandardEndpoints.cs | 0
.../server/src}/LaunchDarkly.ServerSdk.csproj | 3 +-
.../sdk/server/src}/LdClient.cs | 0
.../sdk/server/src}/Migrations/IMigration.cs | 0
.../sdk/server/src}/Migrations/Migration.cs | 0
.../src}/Migrations/MigrationBuilder.cs | 0
.../src}/Migrations/MigrationExecution.cs | 0
.../src}/Migrations/MigrationExecutionMode.cs | 0
.../server/src}/Migrations/MigrationMethod.cs | 0
.../src}/Migrations/MigrationOpTracker.cs | 0
.../src}/Migrations/MigrationOperation.cs | 0
.../server/src}/Migrations/MigrationOrigin.cs | 0
.../server/src}/Migrations/MigrationResult.cs | 0
.../src}/Migrations/MigrationSerialOrder.cs | 0
.../server/src}/Migrations/MigrationStage.cs | 0
.../src}/Migrations/MigrationVariation.cs | 0
.../src}/Migrations/MigrationWriteResult.cs | 0
.../sdk/server/src}/NuGet/config.install.xdt | 0
.../server/src}/NuGet/config.uninstall.xdt | 0
.../server/src}/Properties/AssemblyInfo.cs | 0
.../src}/Subsystems/BigSegmentStoreTypes.cs | 0
.../Subsystems/BigSegmentsConfiguration.cs | 0
.../server/src}/Subsystems/DataStoreTypes.cs | 0
.../src}/Subsystems/EventProcessorTypes.cs | 0
.../src}/Subsystems/HookConfiguration.cs | 0
.../src}/Subsystems/HttpConfiguration.cs | 0
.../src}/Subsystems/IBigSegmentStore.cs | 0
.../src}/Subsystems/IComponentConfigurer.cs | 0
.../sdk/server/src}/Subsystems/IDataSource.cs | 0
.../src}/Subsystems/IDataSourceUpdates.cs | 0
.../sdk/server/src}/Subsystems/IDataStore.cs | 0
.../src}/Subsystems/IDataStoreUpdates.cs | 0
.../src}/Subsystems/IDiagnosticDescription.cs | 0
.../server/src}/Subsystems/IEventProcessor.cs | 0
.../src}/Subsystems/IPersistentDataStore.cs | 0
.../Subsystems/IPersistentDataStoreAsync.cs | 0
.../server/src}/Subsystems/LdClientContext.cs | 0
.../src}/Subsystems/LoggingConfiguration.cs | 0
.../sdk/server/src}/app.config | 0
.../sdk/server/test}/AssertHelpers.cs | 0
.../sdk/server/test}/BaseTest.cs | 0
.../sdk/server/test}/ConfigurationTest.cs | 0
.../sdk/server/test}/DataModelTest.cs | 0
.../sdk/server/test}/FeatureFlagsStateTest.cs | 0
.../test}/Hooks/EvaluationSeriesTest.cs | 0
.../sdk/server/test}/Hooks/HookTest.cs | 0
.../server/test}/ILdClientExtensionsTests.cs | 0
.../BigSegmentsConfigurationBuilderTest.cs | 0
.../Integrations/EventProcessorBuilderTest.cs | 0
.../Integrations/FileDataSourceBuilderTest.cs | 0
.../HttpConfigurationBuilderTest.cs | 0
.../LoggingConfigurationBuilderTest.cs | 0
.../PollingDataSourceBuilderTest.cs | 0
.../ServiceEndpointsBuilderTest.cs | 0
.../StreamingDataSourceBuilderTest.cs | 0
.../server/test}/Integrations/TestDataTest.cs | 0
.../Integrations/TestDataWithClientTest.cs | 0
.../BigSegmentsStatusProviderImplTest.cs | 0
.../BigSegmentsStoreWrapperTest.cs | 0
.../BigSegments/MembershipBuilderTest.cs | 0
.../DataSources/DataModelDependenciesTest.cs | 0
.../DataSourceStatusProviderImplTest.cs | 0
.../DataSources/DataSourceUpdatesImplTest.cs | 0
.../DataSources/FileDataSourceTest.cs | 0
.../DataSources/FlagFileDataMergerTest.cs | 0
.../DataSources/PollingDataSourceTest.cs | 0
.../DataSources/StreamProcessorEventsTest.cs | 0
.../DataSources/StreamingDataSourceTest.cs | 0
.../DataStores/DataStoreSorterTest.cs | 0
.../DataStoreStatusProviderImplTest.cs | 0
.../Internal/DataStores/DataStoreTestBase.cs | 0
.../Internal/DataStores/DataStoreTestTypes.cs | 0
.../DataStores/DataStoreUpdatesImplTest.cs | 0
.../DataStores/InMemoryDataStoreTest.cs | 0
.../PersistentStoreWrapperTestAsync.cs | 0
.../PersistentStoreWrapperTestBase.cs | 0
.../PersistentStoreWrapperTestSync.cs | 0
.../Internal/Evaluation/BucketingTest.cs | 0
.../Evaluation/EvaluatorBigSegmentTest.cs | 0
.../Evaluation/EvaluatorClauseTest.cs | 0
.../Internal/Evaluation/EvaluatorFlagTest.cs | 0
.../Evaluation/EvaluatorPrerequisitesTest.cs | 0
.../Internal/Evaluation/EvaluatorRuleTest.cs | 0
.../Evaluation/EvaluatorSegmentMatchTest.cs | 0
.../Evaluation/EvaluatorTargetTest.cs | 0
.../Internal/Evaluation/EvaluatorTestUtil.cs | 0
.../RolloutRandomizationConsistencyTest.cs | 0
.../Events/ServerDiagnosticStoreTest.cs | 0
.../test}/Internal/FlagTrackerImplTest.cs | 0
.../server/test}/Internal/LRUCacheSetTest.cs | 0
.../test}/Internal/Model/DataSetBuilder.cs | 0
.../Internal/Model/FeatureFlagBuilder.cs | 0
.../test}/Internal/Model/OperatorTest.cs | 0
.../test}/Internal/Model/SegmentBuilder.cs | 0
.../Internal/Model/SemanticVersionTest.cs | 0
.../test}/LaunchDarkly.ServerSdk.Tests.csproj | 6 +-
.../server/test}/LdClientBigSegmentsTest.cs | 0
.../test}/LdClientDiagnosticEventTest.cs | 0
.../sdk/server/test}/LdClientEndToEndTest.cs | 0
.../server/test}/LdClientEvaluationTest.cs | 0
.../sdk/server/test}/LdClientEventTest.cs | 0
.../test}/LdClientExternalUpdatesOnlyTest.cs | 0
.../sdk/server/test}/LdClientHooksTest.cs | 162 --------------
.../sdk/server/test}/LdClientListenersTest.cs | 0
.../sdk/server/test}/LdClientOfflineTest.cs | 0
.../test}/LdClientServiceEndpointsTest.cs | 0
.../sdk/server/test}/LdClientTest.cs | 0
.../Migrations/BasicMigrationExecutor.cs | 0
.../test}/Migrations/MigrationBuilderTest.cs | 0
.../Migrations/MigrationOpTrackerTest.cs | 0
.../test}/Migrations/MigrationStageTest.cs | 0
.../server/test}/Migrations/MigrationTest.cs | 0
.../sdk/server/test}/MockComponents.cs | 0
.../sdk/server/test}/MockResponses.cs | 0
.../test}/TestFiles/all-properties.json | 0
.../server/test}/TestFiles/all-properties.yml | 0
.../sdk/server/test}/TestFiles/bad-file.txt | 0
.../sdk/server/test}/TestFiles/flag-only.json | 0
.../server/test}/TestFiles/segment-only.json | 0
.../sdk/server/test}/TestHttpUtils.cs | 0
.../sdk/server/test}/TestLoggingHelpers.cs | 0
.../sdk/server/test}/TestUtils.cs | 0
.../sdk/server/test}/VariationMethodsDesc.cs | 0
pkgs/telemetry/docfx.json | 48 ++++
.../LaunchDarkly.ServerSdk.Telemetry.csproj | 56 +++++
.../telemetry/src/Telemetry}/TracingHook.cs | 2 +-
...nchDarkly.ServerSdk.Telemetry.Tests.csproj | 44 ++++
.../test/Telemetry/TracingHookTests.cs | 211 ++++++++++++++++++
release-please-config.json | 14 +-
.../Integrations/OpenTelemetry/TracingHook.cs | 45 ----
254 files changed, 726 insertions(+), 367 deletions(-)
create mode 100644 .github/actions/contract-tests/action.yml
create mode 100644 .github/actions/full-release/action.yml
create mode 100644 .github/workflows/manual-publish.yml
delete mode 100644 .github/workflows/publish.yml
create mode 100644 .github/workflows/sdk-server-ci.yml
rename .github/workflows/{ci.yml => telemetry-ci.yml} (61%)
rename {contract-tests => pkgs/sdk/server/contract-tests}/BigSegmentStoreFixture.cs (100%)
rename {contract-tests => pkgs/sdk/server/contract-tests}/CallbackRepresentations.cs (100%)
rename {contract-tests => pkgs/sdk/server/contract-tests}/CallbackService.cs (100%)
rename {contract-tests => pkgs/sdk/server/contract-tests}/README.md (100%)
rename {contract-tests => pkgs/sdk/server/contract-tests}/Representations.cs (100%)
rename {contract-tests => pkgs/sdk/server/contract-tests}/SdkClientEntity.cs (100%)
rename {contract-tests => pkgs/sdk/server/contract-tests}/TestHook.cs (100%)
rename {contract-tests => pkgs/sdk/server/contract-tests}/TestService.cs (100%)
rename {contract-tests => pkgs/sdk/server/contract-tests}/TestService.csproj (91%)
rename {contract-tests => pkgs/sdk/server/contract-tests}/TestService.sln (100%)
rename docfx.json => pkgs/sdk/server/docfx.json (100%)
rename {docs-src => pkgs/sdk/server/docs-src}/README.md (100%)
rename {docs-src => pkgs/sdk/server/docs-src}/namespaces/LaunchDarkly.Sdk.Json.md (100%)
rename {docs-src => pkgs/sdk/server/docs-src}/namespaces/LaunchDarkly.Sdk.Server.Integrations.md (100%)
rename {docs-src => pkgs/sdk/server/docs-src}/namespaces/LaunchDarkly.Sdk.Server.Interfaces.md (100%)
rename {docs-src => pkgs/sdk/server/docs-src}/namespaces/LaunchDarkly.Sdk.Server.Subsystems.md (100%)
rename {docs-src => pkgs/sdk/server/docs-src}/namespaces/LaunchDarkly.Sdk.Server.md (100%)
rename {docs-src => pkgs/sdk/server/docs-src}/namespaces/LaunchDarkly.Sdk.md (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Components.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Configuration.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/ConfigurationBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/DataModel.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/FeatureFlagsState.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/FlagsStateOption.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Hooks/EvaluationSeriesContext.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Hooks/Hook.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Hooks/Method.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Hooks/SeriesDataBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/ILdClientExtensions.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/BigSegmentsConfigurationBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/EventProcessorBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/FileData.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/FileDataSourceBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/FileDataTypes.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/HookConfigurationBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/HttpConfigurationBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/LoggingConfigurationBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/PersistentDataStoreBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/PollingDataSourceBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/ServiceEndpointsBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/StreamingDataSourceBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/TestData.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Integrations/WrapperInfoBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Interfaces/BigSegmentStoreStatus.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Interfaces/DataSourceStatus.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Interfaces/DataStoreStatus.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Interfaces/IBigSegmentStoreStatusProvider.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Interfaces/IDataSourceStatusProvider.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Interfaces/IDataStoreStatusProvider.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Interfaces/IFlagTracker.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Interfaces/ILdClient.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Interfaces/ServiceEndpoints.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Interfaces/WrapperInfo.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/BigSegments/BigSegmentStoreStatusProviderImpl.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/BigSegments/BigSegmentStoreWrapper.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/BigSegments/BigSegmentsInternalTypes.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/BigSegments/MembershipBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/BigSegments/NamespaceReadme.md (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/ComponentsImpl.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataModelDependencies.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/DataSourceOutageTracker.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/DataSourceStatusProviderImpl.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/DataSourceUpdatesImpl.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/FeatureRequestor.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/FileDataSource.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/FlagFileParser.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/FlagFileReader.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/IFeatureRequestor.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/NamespaceReadme.md (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/PollingDataSource.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/StreamProcessorEvents.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataSources/StreamingDataSource.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataStores/DataStoreCacheConfig.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataStores/DataStoreSorter.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataStores/DataStoreStatusProviderImpl.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataStores/DataStoreUpdatesImpl.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataStores/InMemoryDataStore.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataStores/NamespaceReadme.md (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataStores/PersistentDataStoreStatusManager.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataStores/PersistentStoreAsyncAdapter.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/DataStores/PersistentStoreWrapper.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Evaluation/Bucketing.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Evaluation/Evaluator.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Evaluation/EvaluatorClause.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Evaluation/EvaluatorSegment.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Evaluation/EvaluatorTarget.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Evaluation/EvaluatorTypes.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Evaluation/NamespaceReadme.md (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Events/DefaultContextDeduplicator.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Events/DefaultEventProcessorWrapper.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Events/EventFactory.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Events/NamespaceReadme.md (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Events/ServerDiagnosticStore.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/FlagTrackerImpl.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Hooks/Executor/Executor.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Hooks/Executor/NoopExecutor.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Hooks/Interfaces/IHookExecutor.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Hooks/Interfaces/IStageExecutor.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Hooks/Series/EvaluationSeries.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/LRUCacheSet.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/LogNames.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Model/Clause.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Model/FeatureFlag.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Model/NamespaceReadme.md (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Model/Operator.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Model/Segment.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Model/SemanticVersion.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/Model/Serialization.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/NamespaceReadme.md (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Internal/StandardEndpoints.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/LaunchDarkly.ServerSdk.csproj (97%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/LdClient.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/IMigration.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/Migration.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationBuilder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationExecution.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationExecutionMode.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationMethod.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationOpTracker.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationOperation.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationOrigin.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationResult.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationSerialOrder.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationStage.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationVariation.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Migrations/MigrationWriteResult.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/NuGet/config.install.xdt (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/NuGet/config.uninstall.xdt (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Properties/AssemblyInfo.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/BigSegmentStoreTypes.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/BigSegmentsConfiguration.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/DataStoreTypes.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/EventProcessorTypes.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/HookConfiguration.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/HttpConfiguration.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/IBigSegmentStore.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/IComponentConfigurer.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/IDataSource.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/IDataSourceUpdates.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/IDataStore.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/IDataStoreUpdates.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/IDiagnosticDescription.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/IEventProcessor.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/IPersistentDataStore.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/IPersistentDataStoreAsync.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/LdClientContext.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/Subsystems/LoggingConfiguration.cs (100%)
rename {src/LaunchDarkly.ServerSdk => pkgs/sdk/server/src}/app.config (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/AssertHelpers.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/BaseTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/ConfigurationTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/DataModelTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/FeatureFlagsStateTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Hooks/EvaluationSeriesTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Hooks/HookTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/ILdClientExtensionsTests.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Integrations/BigSegmentsConfigurationBuilderTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Integrations/EventProcessorBuilderTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Integrations/FileDataSourceBuilderTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Integrations/HttpConfigurationBuilderTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Integrations/LoggingConfigurationBuilderTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Integrations/PollingDataSourceBuilderTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Integrations/ServiceEndpointsBuilderTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Integrations/StreamingDataSourceBuilderTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Integrations/TestDataTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Integrations/TestDataWithClientTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/BigSegments/BigSegmentsStatusProviderImplTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/BigSegments/BigSegmentsStoreWrapperTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/BigSegments/MembershipBuilderTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataSources/DataModelDependenciesTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataSources/DataSourceStatusProviderImplTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataSources/DataSourceUpdatesImplTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataSources/FileDataSourceTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataSources/FlagFileDataMergerTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataSources/PollingDataSourceTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataSources/StreamProcessorEventsTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataSources/StreamingDataSourceTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataStores/DataStoreSorterTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataStores/DataStoreStatusProviderImplTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataStores/DataStoreTestBase.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataStores/DataStoreTestTypes.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataStores/DataStoreUpdatesImplTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataStores/InMemoryDataStoreTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataStores/PersistentStoreWrapperTestAsync.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataStores/PersistentStoreWrapperTestBase.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/DataStores/PersistentStoreWrapperTestSync.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Evaluation/BucketingTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Evaluation/EvaluatorBigSegmentTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Evaluation/EvaluatorClauseTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Evaluation/EvaluatorFlagTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Evaluation/EvaluatorPrerequisitesTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Evaluation/EvaluatorRuleTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Evaluation/EvaluatorSegmentMatchTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Evaluation/EvaluatorTargetTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Evaluation/EvaluatorTestUtil.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Evaluation/RolloutRandomizationConsistencyTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Events/ServerDiagnosticStoreTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/FlagTrackerImplTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/LRUCacheSetTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Model/DataSetBuilder.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Model/FeatureFlagBuilder.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Model/OperatorTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Model/SegmentBuilder.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Internal/Model/SemanticVersionTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LaunchDarkly.ServerSdk.Tests.csproj (88%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientBigSegmentsTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientDiagnosticEventTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientEndToEndTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientEvaluationTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientEventTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientExternalUpdatesOnlyTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientHooksTest.cs (61%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientListenersTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientOfflineTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientServiceEndpointsTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/LdClientTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Migrations/BasicMigrationExecutor.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Migrations/MigrationBuilderTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Migrations/MigrationOpTrackerTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Migrations/MigrationStageTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/Migrations/MigrationTest.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/MockComponents.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/MockResponses.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/TestFiles/all-properties.json (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/TestFiles/all-properties.yml (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/TestFiles/bad-file.txt (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/TestFiles/flag-only.json (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/TestFiles/segment-only.json (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/TestHttpUtils.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/TestLoggingHelpers.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/TestUtils.cs (100%)
rename {test/LaunchDarkly.ServerSdk.Tests => pkgs/sdk/server/test}/VariationMethodsDesc.cs (100%)
create mode 100644 pkgs/telemetry/docfx.json
create mode 100644 pkgs/telemetry/src/LaunchDarkly.ServerSdk.Telemetry.csproj
rename {src/LaunchDarkly.ServerSdk/Integrations/OpenTelemetry => pkgs/telemetry/src/Telemetry}/TracingHook.cs (99%)
create mode 100644 pkgs/telemetry/test/LaunchDarkly.ServerSdk.Telemetry.Tests.csproj
create mode 100644 pkgs/telemetry/test/Telemetry/TracingHookTests.cs
delete mode 100644 test/LaunchDarkly.ServerSdk.Tests/Integrations/OpenTelemetry/TracingHook.cs
diff --git a/.github/actions/build-docs/action.yml b/.github/actions/build-docs/action.yml
index 30d8e44e..5ab732f2 100644
--- a/.github/actions/build-docs/action.yml
+++ b/.github/actions/build-docs/action.yml
@@ -1,17 +1,27 @@
name: Build Documentation
description: 'Build Documentation.'
+inputs:
+ workspace_path:
+ description: 'Path to the workspace.'
+ required: true
runs:
using: composite
steps:
+ - name: Setup dotnet build tools
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 6.0
- name: Install docfx
shell: bash
run: dotnet tool update -g docfx
- - name: Run docfx metadata
- shell: bash
- run: docfx metadata
- - name: Run docfx build
+
+ # Note: in the docfx.json file, the 'Configuration' property is set to Debug so that we don't require
+ # signing to happen just to build docs.
+ - name: Build docs
shell: bash
- # Note: in the docfx.json file, the 'Configuration' property is set to Debug so that we don't require
- # signing to happen just to build docs.
- run: docfx build
+ run: |
+ pushd ${{ inputs.workspace_path }}
+ docfx metadata
+ docfx build
+ popd
diff --git a/.github/actions/build-release/action.yml b/.github/actions/build-release/action.yml
index bf47cbb0..4400e1a5 100644
--- a/.github/actions/build-release/action.yml
+++ b/.github/actions/build-release/action.yml
@@ -1,5 +1,9 @@
name: Build Action
description: 'Dotnet Server SDK Build action.'
+inputs:
+ project_file:
+ description: 'Path to the project file.'
+ required: true
runs:
using: composite
@@ -15,4 +19,4 @@ runs:
- name: Build
shell: bash
- run: dotnet build /p:Configuration=Release src/LaunchDarkly.ServerSdk/LaunchDarkly.ServerSdk.csproj
+ run: dotnet build /p:Configuration=Release ${{ inputs.project_file }}
diff --git a/.github/actions/ci/action.yml b/.github/actions/ci/action.yml
index 1236f2cd..bbd175d2 100644
--- a/.github/actions/ci/action.yml
+++ b/.github/actions/ci/action.yml
@@ -1,22 +1,16 @@
name: CI
description: Runs CI for the .NET Server SDK
inputs:
- run_tests:
- description: 'If true, run unit tests, otherwise skip them.'
+ project_file:
+ description: 'Path to the project file.'
+ required: true
+ test_project_file:
+ description: 'Path to the test project file. If provided, run unit tests, otherwise skip them.'
required: false
- default: 'true'
- run_contract_tests:
- description: 'If true, run contract tests, otherwise skip them.'
- required: false
- default: 'true'
aws_role_arn:
description: 'The ARN of the role to assume for downloading secrets, used for building docs.'
required: false
default: ''
- token:
- description: 'Github token, used for contract tests'
- required: false
- default: ''
runs:
using: composite
@@ -28,41 +22,23 @@ runs:
- name: Restore Dependencies
shell: bash
- run: dotnet restore src/LaunchDarkly.ServerSdk/LaunchDarkly.ServerSdk.csproj
+ run: dotnet restore ${{ inputs.project_file }}
- name: Build for NetStandard2.0
shell: bash
- run: dotnet build -p:Configuration=debug -p:TargetFramework=netstandard2.0 src/LaunchDarkly.ServerSdk/LaunchDarkly.ServerSdk.csproj
+ run: dotnet build -p:Configuration=debug -p:TargetFramework=netstandard2.0 ${{ inputs.project_file }}
- name: Build for Net6
shell: bash
- run: dotnet build -p:Configuration=debug -p:TargetFramework=net6.0 src/LaunchDarkly.ServerSdk/LaunchDarkly.ServerSdk.csproj
+ run: dotnet build -p:Configuration=debug -p:TargetFramework=net6.0 ${{ inputs.project_file }}
- name: Build for Net462
shell: bash
- run: dotnet build -p:Configuration=debug -p:TargetFramework=net462 src/LaunchDarkly.ServerSdk/LaunchDarkly.ServerSdk.csproj
+ run: dotnet build -p:Configuration=debug -p:TargetFramework=net462 ${{ inputs.project_file }}
- name: Run Unit Tests for Net6
- if: ${{ inputs.run_tests == 'true' }}
+ if: ${{ inputs.test_project_file != '' }}
shell: bash
run: |
- dotnet restore test/LaunchDarkly.ServerSdk.Tests
- dotnet test --framework=net6.0 test/LaunchDarkly.ServerSdk.Tests/LaunchDarkly.ServerSdk.Tests.csproj
-
- - name: Build Contract Tests
- if: ${{ inputs.run_contract_tests == 'true' }}
- shell: bash
- run: dotnet build /p:Configuration=debug contract-tests/TestService.csproj
-
- - name: Launch Contract Tests
- if: ${{ inputs.run_contract_tests == 'true' }}
- id: launch-contract-tests
- shell: bash
- run: dotnet contract-tests/bin/debug/net6.0/ContractTestService.dll > test-service.log 2>&1 & disown
-
- - name: Run Contract Tests
- if: ${{ inputs.run_contract_tests == 'true' }}
- uses: launchdarkly/gh-actions/actions/contract-tests@contract-tests-v1.0.0
- with:
- test_service_port: 8000
- token: ${{ inputs.token }}
+ dotnet restore ${{ inputs.test_project_file }}
+ dotnet test --framework=net6.0 ${{ inputs.test_project_file }}
diff --git a/.github/actions/contract-tests/action.yml b/.github/actions/contract-tests/action.yml
new file mode 100644
index 00000000..7750a2cc
--- /dev/null
+++ b/.github/actions/contract-tests/action.yml
@@ -0,0 +1,36 @@
+name: Contract Tests
+description: Runs CI for the .NET Server SDK
+inputs:
+ service_project_file:
+ description: 'Path to the contract test service project file.'
+ required: true
+ service_dll_file:
+ description: 'Path where compiled dll will be found.'
+ required: true
+ token:
+ description: 'Github token, used for contract tests'
+ required: false
+ default: ''
+
+runs:
+ using: composite
+ steps:
+ - name: Setup dotnet build tools
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 6.0
+
+ - name: Build Contract Tests
+ shell: bash
+ run: dotnet build /p:Configuration=debug ${{ inputs.service_project_file }}
+
+ - name: Launch Contract Tests
+ id: launch-contract-tests
+ shell: bash
+ run: dotnet ${{ inputs.service_dll_file }} > test-service.log 2>&1 & disown
+
+ - name: Run Contract Tests
+ uses: launchdarkly/gh-actions/actions/contract-tests@contract-tests-v1.0.0
+ with:
+ test_service_port: 8000
+ token: ${{ inputs.token }}
diff --git a/.github/actions/full-release/action.yml b/.github/actions/full-release/action.yml
new file mode 100644
index 00000000..598df255
--- /dev/null
+++ b/.github/actions/full-release/action.yml
@@ -0,0 +1,70 @@
+name: Build, Test, and Publish
+description: 'Execute the full release process for a workspace.'
+inputs:
+ workspace_path:
+ description: 'Path to the workspace being released.'
+ required: true
+ project_file:
+ description: 'Path to the project file.'
+ required: true
+ test_project_file:
+ description: 'Path to the test project file. If provided, run unit tests, otherwise skip them.'
+ required: false
+ build_output_path:
+ description: 'Build output path.'
+ required: true
+ dll_name:
+ description: 'Build output dll name.'
+ required: true
+ dry_run:
+ description: 'Is this a dry run. If so no package will be published.'
+ type: boolean
+ required: true
+
+runs:
+ using: composite
+ steps:
+ - name: CI check
+ uses: ./.github/actions/ci
+ with:
+ project_file: ${{ inputs.project_file }}
+ test_project_file: ${{ inputs.test_project_file }}
+ run_contract_tests: false
+
+ - uses: launchdarkly/gh-actions/actions/release-secrets@release-secrets-v1.1.0
+ name: Get secrets
+ with:
+ aws_assume_role: ${{ vars.AWS_ROLE_ARN }}
+ ssm_parameter_pairs: '/production/common/releasing/digicert/host = DIGICERT_HOST,
+ /production/common/releasing/digicert/api_key = DIGICERT_API_KEY,
+ /production/common/releasing/digicert/client_cert_file_b64 = DIGICERT_CLIENT_CERT_FILE_B64,
+ /production/common/releasing/digicert/client_cert_password = DIGICERT_CLIENT_CERT_PASSWORD,
+ /production/common/releasing/digicert/code_signing_cert_sha1_hash = DIGICERT_CODE_SIGNING_CERT_SHA1_HASH'
+ s3_path_pairs: 'launchdarkly-releaser/dotnet/LaunchDarkly.snk = LaunchDarkly.snk'
+
+ - name: Release build
+ uses: ./.github/actions/build-release
+ with:
+ project_file: pkgs/sdk/server/src/LaunchDarkly.ServerSdk.csproj
+
+ - name: Sign DLLs
+ uses: launchdarkly/gh-actions/actions/sign-dlls@sign-dlls-v1.0.0
+ with:
+ build_output_path: ${{ inputs.build_output_path }}
+ dll_name: ${{ inputs.dll_name }}
+
+ - name: Publish Nupkg
+ uses: ./.github/actions/publish-package
+ with:
+ dry_run: ${{ inputs.dry_run }}
+
+ - name: Build Documentation
+ uses: ./.github/actions/build-docs
+ with:
+ workspace_path: ${{ inputs.workspace_path }}
+
+ - name: Publish Documentation
+ uses: ./.github/actions/publish-docs
+ with:
+ workspace_path: ${{ inputs.workspace_path }}
+ token: ${{secrets.GITHUB_TOKEN}}
diff --git a/.github/actions/publish-docs/action.yml b/.github/actions/publish-docs/action.yml
index c5f24ba4..b6896c33 100644
--- a/.github/actions/publish-docs/action.yml
+++ b/.github/actions/publish-docs/action.yml
@@ -1,6 +1,9 @@
name: Publish Documentation
description: 'Publish the documentation to Github pages'
inputs:
+ workspace_path:
+ description: 'Path to the workspace being released.'
+ required: true
token:
description: 'Token to use for publishing.'
required: true
@@ -11,5 +14,5 @@ runs:
- uses: launchdarkly/gh-actions/actions/publish-pages@publish-pages-v1.0.1
name: 'Publish to Github pages'
with:
- docs_path: docs
+ docs_path: ${{ inputs.workspace_path }}/docs
github_token: ${{ inputs.token }}
diff --git a/.github/actions/publish-package/action.yml b/.github/actions/publish-package/action.yml
index 150d354e..92ea6b11 100644
--- a/.github/actions/publish-package/action.yml
+++ b/.github/actions/publish-package/action.yml
@@ -1,6 +1,9 @@
name: Publish Package
description: 'Packs DLLs into unsigned Nuget package and publishes to Nuget.'
inputs:
+ project_file:
+ description: 'Path to the project file.'
+ required: true
dry_run:
description: 'Is this a dry run. If so no package will be published.'
required: true
@@ -12,7 +15,7 @@ runs:
shell: bash
run: |
dotnet restore
- dotnet pack --no-build --output nupkgs --configuration Release src/LaunchDarkly.ServerSdk/LaunchDarkly.ServerSdk.csproj
+ dotnet pack --no-build --output nupkgs --configuration Release ${{ inputs.project_file }}
- name: Publish Package
if: ${{ inputs.dry_run == 'false' }}
diff --git a/.github/workflows/manual-publish.yml b/.github/workflows/manual-publish.yml
new file mode 100644
index 00000000..e1423510
--- /dev/null
+++ b/.github/workflows/manual-publish.yml
@@ -0,0 +1,42 @@
+name: Manual Publish Package
+on:
+ workflow_dispatch:
+ inputs:
+ pkg_name:
+ description: 'The package to publish'
+ required: true
+ type: choice
+ options:
+ - LaunchDarkly.ServerSdk
+ - LaunchDarkly.ServerSdk.Telemetry
+ dry_run:
+ description: 'Is this a dry run. If so no package will be published.'
+ type: boolean
+ required: true
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: write
+ steps:
+ - uses: ./.github/workflows/full-release.yml
+ if: ${{ inputs.pkg_name == 'LaunchDarkly.ServerSdk' }}
+ with:
+ workspace_path: 'pkgs/sdk/server'
+ project_file: 'pkgs/sdk/server/src/LaunchDarkly.ServerSdk.csproj'
+ test_project_file: 'pkgs/sdk/server/test/LaunchDarkly.ServerSdk.Tests.csproj'
+ build_output_path: 'pkgs/sdk/server/src/bin/Release/'
+ dll_name: 'LaunchDarkly.ServerSdk.dll'
+ dry_run: false
+
+ - uses: ./.github/workflows/full-release.yml
+ if: ${{ inputs.pkg_name == 'LaunchDarkly.ServerSdk.Telemetry' }}
+ with:
+ workspace_path: 'pkgs/telemetry'
+ project_file: 'pkgs/telemetry/src/LaunchDarkly.ServerSdk.Telemetry.csproj'
+ test_project_file: 'pkgs/telemetry/test/LaunchDarkly.ServerSdk.Telemetry.Tests.csproj'
+ build_output_path: 'pkgs/telemetry/src/bin/Release/'
+ dll_name: 'LaunchDarkly.ServerSdk.Telemetry.dll'
+ dry_run: false
diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
index e92242d8..82368f1f 100644
--- a/.github/workflows/publish-docs.yml
+++ b/.github/workflows/publish-docs.yml
@@ -1,6 +1,40 @@
on:
workflow_dispatch:
+ inputs:
+ workspace_path:
+ description: 'Path to the workspace being released.'
+ required: true
+ type: string
+ project_file:
+ description: 'Path to the project file.'
+ required: true
+ type: string
+ test_project_file:
+ description: 'Path to the test project file. If provided, run unit tests, otherwise skip them.'
+ required: false
+ type: string
+ dry_run:
+ description: 'Is this a dry run. If so no package will be published.'
+ type: boolean
+ required: true
workflow_call:
+ inputs:
+ workspace_path:
+ description: 'Path to the workspace being released.'
+ required: true
+ type: string
+ project_file:
+ description: 'Path to the project file.'
+ required: true
+ type: string
+ test_project_file:
+ description: 'Path to the test project file. If provided, run unit tests, otherwise skip them.'
+ required: false
+ type: string
+ dry_run:
+ description: 'Is this a dry run. If so no package will be published.'
+ type: boolean
+ required: true
name: Publish Docs
jobs:
@@ -14,15 +48,19 @@ jobs:
name: Build and Test
uses: ./.github/actions/ci
with:
- run_tests: true
- run_contract_tests: false
+ project_file: pkgs/sdk/server/src/LaunchDarkly.ServerSdk.csproj
+ test_project_file: pkgs/sdk/server/test/LaunchDarkly.ServerSdk.Tests.csproj
+ token: ${{ secrets.GITHUB_TOKEN }}
- id: build-docs
name: Build Documentation
uses: ./.github/actions/build-docs
+ with:
+ workspace_path: ${{ inputs.workspace_path }}
- id: publish
name: Publish Documentation
uses: ./.github/actions/publish-docs
with:
+ workspace_path: ${{ inputs.workspace_path }}
token: ${{secrets.GITHUB_TOKEN}}
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
deleted file mode 100644
index 90253edf..00000000
--- a/.github/workflows/publish.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-name: Publish Package
-on:
- workflow_dispatch:
- inputs:
- run_tests:
- description: 'If true, run unit tests, otherwise skip them.'
- required: false
- type: boolean
- default: true
- dry_run:
- description: 'Is this a dry run. If so no package will be published.'
- type: boolean
- required: true
- workflow_call:
- inputs:
- run_tests:
- description: 'If true, run unit tests, otherwise skip them.'
- required: false
- type: boolean
- default: true
- dry_run:
- description: 'Is this a dry run. If so no package will be published.'
- type: boolean
- required: true
-
-jobs:
- build:
- runs-on: ubuntu-latest
- permissions:
- id-token: write
- contents: read
- steps:
- - uses: actions/checkout@v4
- - name: CI check
- uses: ./.github/actions/ci
- with:
- run_tests: ${{ inputs.run_tests }}
- run_contract_tests: false
-
- - uses: launchdarkly/gh-actions/actions/release-secrets@release-secrets-v1.1.0
- name: Get secrets
- with:
- aws_assume_role: ${{ vars.AWS_ROLE_ARN }}
- ssm_parameter_pairs: '/production/common/releasing/digicert/host = DIGICERT_HOST,
- /production/common/releasing/digicert/api_key = DIGICERT_API_KEY,
- /production/common/releasing/digicert/client_cert_file_b64 = DIGICERT_CLIENT_CERT_FILE_B64,
- /production/common/releasing/digicert/client_cert_password = DIGICERT_CLIENT_CERT_PASSWORD,
- /production/common/releasing/digicert/code_signing_cert_sha1_hash = DIGICERT_CODE_SIGNING_CERT_SHA1_HASH'
- s3_path_pairs: 'launchdarkly-releaser/dotnet/LaunchDarkly.snk = LaunchDarkly.snk'
-
- - name: Release build
- uses: ./.github/actions/build-release
-
- - name: Sign DLLs
- uses: launchdarkly/gh-actions/actions/sign-dlls@sign-dlls-v1.0.0
- with:
- build_configuration_path: 'src/LaunchDarkly.ServerSdk/bin/Release/'
- dll_name: 'LaunchDarkly.ServerSdk.dll'
-
- - name: Publish Nupkg
- uses: ./.github/actions/publish-package
- with:
- dry_run: ${{ inputs.dry_run }}
diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml
index b5f5dc25..9364734e 100644
--- a/.github/workflows/release-please.yml
+++ b/.github/workflows/release-please.yml
@@ -9,13 +9,9 @@ jobs:
release-please:
runs-on: ubuntu-latest
- permissions:
- id-token: write # Needed if using OIDC to get release secrets.
- contents: write # Contents and pull-requests are for release-please to make releases.
- pull-requests: write
-
outputs:
- releases_created: ${{ steps.release.outputs.releases_created }}
+ package-sdk-server-released: ${{ steps.release.outputs['pkgs/sdk/server--release_created'] }}
+ package-sdk-server-telemetry-released: ${{ steps.release.outputs['pkgs/telemetry--release_created'] }}
steps:
- uses: google-github-actions/release-please-action@v4
@@ -24,15 +20,41 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
target-branch: ${{ github.ref_name }}
- publish-sdk:
+ release-sdk-server:
+ runs-on: ubuntu-latest
needs: release-please
- uses: ./.github/workflows/publish.yml
- if: ${{ needs.release-please.outputs.releases_created == 'true' }}
- with:
- run_tests: true
- dry_run: false
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ if: ${{ needs.release-please.outputs.package-sdk-server-released == 'true'}}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: ./.github/actions/full-release
+ with:
+ workspace_path: 'pkgs/sdk/server'
+ project_file: 'pkgs/sdk/server/src/LaunchDarkly.ServerSdk.csproj'
+ test_project_file: 'pkgs/sdk/server/test/LaunchDarkly.ServerSdk.Tests.csproj'
+ build_output_path: 'pkgs/sdk/server/src/bin/Release/'
+ dll_name: 'LaunchDarkly.ServerSdk.dll'
+ dry_run: false
- publish-docs:
+ release-telemetry:
+ runs-on: ubuntu-latest
needs: release-please
- uses: ./.github/workflows/publish-docs.yml
- if: ${{ needs.release-please.outputs.releases_created == 'true' }}
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ if: ${{ needs.release-please.outputs.package-sdk-server-telemetry-released == 'true'}}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: ./.github/actions/full-release
+ with:
+ workspace_path: 'pkgs/telemetry'
+ name: 'LaunchDarkly.ServerSdk.Telemetry'
+ project_file: 'pkgs/telemetry/src/LaunchDarkly.ServerSdk.Telemetry.csproj'
+ test_project_file: 'pkgs/telemetry/test/LaunchDarkly.ServerSdk.Telemetry.Tests.csproj'
+ build_output_path: 'pkgs/telemetry/src/bin/Release/'
+ dll_name: 'LaunchDarkly.ServerSdk.Telemetry.dll'
+ dry_run: false
diff --git a/.github/workflows/sdk-server-ci.yml b/.github/workflows/sdk-server-ci.yml
new file mode 100644
index 00000000..155571fd
--- /dev/null
+++ b/.github/workflows/sdk-server-ci.yml
@@ -0,0 +1,38 @@
+name: LaunchDarkly.ServerSdk CI
+on:
+ push:
+ branches: [main, 'feat/**']
+ paths-ignore:
+ - '**.md' # Do not need to run CI for markdown changes.
+ pull_request:
+ branches: [main, 'feat/**']
+ paths-ignore:
+ - '**.md'
+
+jobs:
+ build-and-test:
+ strategy:
+ matrix:
+ os: [ubuntu-latest, windows-latest, macos-latest]
+ fail-fast: false
+ runs-on: ${{ matrix.os }}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: ./.github/actions/ci
+ with:
+ project_file: pkgs/sdk/server/src/LaunchDarkly.ServerSdk.csproj
+ test_project_file: pkgs/sdk/server/test/LaunchDarkly.ServerSdk.Tests.csproj
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ # Running contract tests on windows is currently cumbersome.
+ # Once that has been addressed, then running contract tests on windows should be considered.
+ - uses: ./.github/actions/contract-tests
+ if: ${{ matrix.os != 'windows-latest' }}
+ with:
+ service_project_file: pkgs/sdk/server/contract-tests/TestService.csproj
+ service_dll_file: pkgs/sdk/server/contract-tests/bin/debug/net6.0/ContractTestService.dll
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - uses: ./.github/actions/build-docs
+ with:
+ workspace_path: pkgs/sdk/server
diff --git a/.github/workflows/ci.yml b/.github/workflows/telemetry-ci.yml
similarity index 61%
rename from .github/workflows/ci.yml
rename to .github/workflows/telemetry-ci.yml
index 0db96126..44845669 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/telemetry-ci.yml
@@ -1,4 +1,4 @@
-name: CI
+name: LaunchDarkly.ServerSdk.Telemetry CI
on:
push:
branches: [main, 'feat/**']
@@ -20,15 +20,10 @@ jobs:
- uses: actions/checkout@v4
- uses: ./.github/actions/ci
with:
- run_tests: true
- run_contract_tests: ${{ matrix.os != 'windows-latest' }}
+ project_file: pkgs/telemetry/src/LaunchDarkly.ServerSdk.Telemetry.csproj
+ test_project_file: pkgs/telemetry/test/LaunchDarkly.ServerSdk.Telemetry.Tests.csproj
token: ${{ secrets.GITHUB_TOKEN }}
- build-docs:
- runs-on: ubuntu-latest
- permissions:
- id-token: write
- contents: read
- steps:
- - uses: actions/checkout@v4
- - uses: ./.github/actions/build-docs
+ - uses: ./.github/actions/build-docs
+ with:
+ workspace_path: pkgs/telemetry
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 8d48393b..0242b38c 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,4 @@
{
- ".": "8.3.0"
+ "pkgs/sdk/server": "8.3.0",
+ "pkgs/telemetry": "0.1.0"
}
diff --git a/LaunchDarkly.ServerSdk.sln b/LaunchDarkly.ServerSdk.sln
index 50e0d23e..03982709 100644
--- a/LaunchDarkly.ServerSdk.sln
+++ b/LaunchDarkly.ServerSdk.sln
@@ -3,9 +3,21 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26730.16
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaunchDarkly.ServerSdk", "src\LaunchDarkly.ServerSdk\LaunchDarkly.ServerSdk.csproj", "{38F73E78-9CEB-4285-B569-034FBD9273D4}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "pkgs", "pkgs", "{2E4B6BA2-5003-4461-B138-BF3F98B89AE7}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LaunchDarkly.ServerSdk.Tests", "test\LaunchDarkly.ServerSdk.Tests\LaunchDarkly.ServerSdk.Tests.csproj", "{A8D5ACCF-AADD-4D7C-A768-B98EF014A951}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sdk", "sdk", "{0A3F3CFA-1CBB-49BD-BCD3-4A53E3D08665}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "server", "server", "{FDA973CE-26F2-4745-AF19-0873F170C4CF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaunchDarkly.ServerSdk", "pkgs\sdk\server\src\LaunchDarkly.ServerSdk.csproj", "{25B32139-B47A-42C9-9277-E65FAD6A448A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaunchDarkly.ServerSdk.Tests", "pkgs\sdk\server\test\LaunchDarkly.ServerSdk.Tests.csproj", "{978CC958-FE5A-43A3-A228-03C2DBC94117}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "telemetry", "telemetry", "{7A984A5D-0C83-42FA-8BF7-DCA2441F62DA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaunchDarkly.ServerSdk.Telemetry", "pkgs\telemetry\src\LaunchDarkly.ServerSdk.Telemetry.csproj", "{35014C04-26CE-43B0-933D-35D80CF0E6B8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaunchDarkly.ServerSdk.Telemetry.Tests", "pkgs\telemetry\test\LaunchDarkly.ServerSdk.Telemetry.Tests.csproj", "{71299584-BF0D-48A4-B2E1-D6292036D48D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -13,14 +25,22 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {38F73E78-9CEB-4285-B569-034FBD9273D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {38F73E78-9CEB-4285-B569-034FBD9273D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {38F73E78-9CEB-4285-B569-034FBD9273D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {38F73E78-9CEB-4285-B569-034FBD9273D4}.Release|Any CPU.Build.0 = Release|Any CPU
- {A8D5ACCF-AADD-4D7C-A768-B98EF014A951}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A8D5ACCF-AADD-4D7C-A768-B98EF014A951}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A8D5ACCF-AADD-4D7C-A768-B98EF014A951}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A8D5ACCF-AADD-4D7C-A768-B98EF014A951}.Release|Any CPU.Build.0 = Release|Any CPU
+ {25B32139-B47A-42C9-9277-E65FAD6A448A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {25B32139-B47A-42C9-9277-E65FAD6A448A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {25B32139-B47A-42C9-9277-E65FAD6A448A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {25B32139-B47A-42C9-9277-E65FAD6A448A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {978CC958-FE5A-43A3-A228-03C2DBC94117}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {978CC958-FE5A-43A3-A228-03C2DBC94117}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {978CC958-FE5A-43A3-A228-03C2DBC94117}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {978CC958-FE5A-43A3-A228-03C2DBC94117}.Release|Any CPU.Build.0 = Release|Any CPU
+ {35014C04-26CE-43B0-933D-35D80CF0E6B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {35014C04-26CE-43B0-933D-35D80CF0E6B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {35014C04-26CE-43B0-933D-35D80CF0E6B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {35014C04-26CE-43B0-933D-35D80CF0E6B8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {71299584-BF0D-48A4-B2E1-D6292036D48D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {71299584-BF0D-48A4-B2E1-D6292036D48D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {71299584-BF0D-48A4-B2E1-D6292036D48D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {71299584-BF0D-48A4-B2E1-D6292036D48D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -28,4 +48,13 @@ Global
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D7F58FE1-D8E9-46EB-AE7F-4B5A388418AC}
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {0A3F3CFA-1CBB-49BD-BCD3-4A53E3D08665} = {2E4B6BA2-5003-4461-B138-BF3F98B89AE7}
+ {FDA973CE-26F2-4745-AF19-0873F170C4CF} = {0A3F3CFA-1CBB-49BD-BCD3-4A53E3D08665}
+ {25B32139-B47A-42C9-9277-E65FAD6A448A} = {FDA973CE-26F2-4745-AF19-0873F170C4CF}
+ {978CC958-FE5A-43A3-A228-03C2DBC94117} = {FDA973CE-26F2-4745-AF19-0873F170C4CF}
+ {7A984A5D-0C83-42FA-8BF7-DCA2441F62DA} = {2E4B6BA2-5003-4461-B138-BF3F98B89AE7}
+ {35014C04-26CE-43B0-933D-35D80CF0E6B8} = {7A984A5D-0C83-42FA-8BF7-DCA2441F62DA}
+ {71299584-BF0D-48A4-B2E1-D6292036D48D} = {7A984A5D-0C83-42FA-8BF7-DCA2441F62DA}
+ EndGlobalSection
EndGlobal
diff --git a/contract-tests/BigSegmentStoreFixture.cs b/pkgs/sdk/server/contract-tests/BigSegmentStoreFixture.cs
similarity index 100%
rename from contract-tests/BigSegmentStoreFixture.cs
rename to pkgs/sdk/server/contract-tests/BigSegmentStoreFixture.cs
diff --git a/contract-tests/CallbackRepresentations.cs b/pkgs/sdk/server/contract-tests/CallbackRepresentations.cs
similarity index 100%
rename from contract-tests/CallbackRepresentations.cs
rename to pkgs/sdk/server/contract-tests/CallbackRepresentations.cs
diff --git a/contract-tests/CallbackService.cs b/pkgs/sdk/server/contract-tests/CallbackService.cs
similarity index 100%
rename from contract-tests/CallbackService.cs
rename to pkgs/sdk/server/contract-tests/CallbackService.cs
diff --git a/contract-tests/README.md b/pkgs/sdk/server/contract-tests/README.md
similarity index 100%
rename from contract-tests/README.md
rename to pkgs/sdk/server/contract-tests/README.md
diff --git a/contract-tests/Representations.cs b/pkgs/sdk/server/contract-tests/Representations.cs
similarity index 100%
rename from contract-tests/Representations.cs
rename to pkgs/sdk/server/contract-tests/Representations.cs
diff --git a/contract-tests/SdkClientEntity.cs b/pkgs/sdk/server/contract-tests/SdkClientEntity.cs
similarity index 100%
rename from contract-tests/SdkClientEntity.cs
rename to pkgs/sdk/server/contract-tests/SdkClientEntity.cs
diff --git a/contract-tests/TestHook.cs b/pkgs/sdk/server/contract-tests/TestHook.cs
similarity index 100%
rename from contract-tests/TestHook.cs
rename to pkgs/sdk/server/contract-tests/TestHook.cs
diff --git a/contract-tests/TestService.cs b/pkgs/sdk/server/contract-tests/TestService.cs
similarity index 100%
rename from contract-tests/TestService.cs
rename to pkgs/sdk/server/contract-tests/TestService.cs
diff --git a/contract-tests/TestService.csproj b/pkgs/sdk/server/contract-tests/TestService.csproj
similarity index 91%
rename from contract-tests/TestService.csproj
rename to pkgs/sdk/server/contract-tests/TestService.csproj
index fa0b556c..ee910a50 100644
--- a/contract-tests/TestService.csproj
+++ b/pkgs/sdk/server/contract-tests/TestService.csproj
@@ -20,7 +20,7 @@
-
+
diff --git a/contract-tests/TestService.sln b/pkgs/sdk/server/contract-tests/TestService.sln
similarity index 100%
rename from contract-tests/TestService.sln
rename to pkgs/sdk/server/contract-tests/TestService.sln
diff --git a/docfx.json b/pkgs/sdk/server/docfx.json
similarity index 100%
rename from docfx.json
rename to pkgs/sdk/server/docfx.json
diff --git a/docs-src/README.md b/pkgs/sdk/server/docs-src/README.md
similarity index 100%
rename from docs-src/README.md
rename to pkgs/sdk/server/docs-src/README.md
diff --git a/docs-src/namespaces/LaunchDarkly.Sdk.Json.md b/pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.Json.md
similarity index 100%
rename from docs-src/namespaces/LaunchDarkly.Sdk.Json.md
rename to pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.Json.md
diff --git a/docs-src/namespaces/LaunchDarkly.Sdk.Server.Integrations.md b/pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.Server.Integrations.md
similarity index 100%
rename from docs-src/namespaces/LaunchDarkly.Sdk.Server.Integrations.md
rename to pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.Server.Integrations.md
diff --git a/docs-src/namespaces/LaunchDarkly.Sdk.Server.Interfaces.md b/pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.Server.Interfaces.md
similarity index 100%
rename from docs-src/namespaces/LaunchDarkly.Sdk.Server.Interfaces.md
rename to pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.Server.Interfaces.md
diff --git a/docs-src/namespaces/LaunchDarkly.Sdk.Server.Subsystems.md b/pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.Server.Subsystems.md
similarity index 100%
rename from docs-src/namespaces/LaunchDarkly.Sdk.Server.Subsystems.md
rename to pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.Server.Subsystems.md
diff --git a/docs-src/namespaces/LaunchDarkly.Sdk.Server.md b/pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.Server.md
similarity index 100%
rename from docs-src/namespaces/LaunchDarkly.Sdk.Server.md
rename to pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.Server.md
diff --git a/docs-src/namespaces/LaunchDarkly.Sdk.md b/pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.md
similarity index 100%
rename from docs-src/namespaces/LaunchDarkly.Sdk.md
rename to pkgs/sdk/server/docs-src/namespaces/LaunchDarkly.Sdk.md
diff --git a/src/LaunchDarkly.ServerSdk/Components.cs b/pkgs/sdk/server/src/Components.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Components.cs
rename to pkgs/sdk/server/src/Components.cs
diff --git a/src/LaunchDarkly.ServerSdk/Configuration.cs b/pkgs/sdk/server/src/Configuration.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Configuration.cs
rename to pkgs/sdk/server/src/Configuration.cs
diff --git a/src/LaunchDarkly.ServerSdk/ConfigurationBuilder.cs b/pkgs/sdk/server/src/ConfigurationBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/ConfigurationBuilder.cs
rename to pkgs/sdk/server/src/ConfigurationBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/DataModel.cs b/pkgs/sdk/server/src/DataModel.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/DataModel.cs
rename to pkgs/sdk/server/src/DataModel.cs
diff --git a/src/LaunchDarkly.ServerSdk/FeatureFlagsState.cs b/pkgs/sdk/server/src/FeatureFlagsState.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/FeatureFlagsState.cs
rename to pkgs/sdk/server/src/FeatureFlagsState.cs
diff --git a/src/LaunchDarkly.ServerSdk/FlagsStateOption.cs b/pkgs/sdk/server/src/FlagsStateOption.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/FlagsStateOption.cs
rename to pkgs/sdk/server/src/FlagsStateOption.cs
diff --git a/src/LaunchDarkly.ServerSdk/Hooks/EvaluationSeriesContext.cs b/pkgs/sdk/server/src/Hooks/EvaluationSeriesContext.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Hooks/EvaluationSeriesContext.cs
rename to pkgs/sdk/server/src/Hooks/EvaluationSeriesContext.cs
diff --git a/src/LaunchDarkly.ServerSdk/Hooks/Hook.cs b/pkgs/sdk/server/src/Hooks/Hook.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Hooks/Hook.cs
rename to pkgs/sdk/server/src/Hooks/Hook.cs
diff --git a/src/LaunchDarkly.ServerSdk/Hooks/Method.cs b/pkgs/sdk/server/src/Hooks/Method.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Hooks/Method.cs
rename to pkgs/sdk/server/src/Hooks/Method.cs
diff --git a/src/LaunchDarkly.ServerSdk/Hooks/SeriesDataBuilder.cs b/pkgs/sdk/server/src/Hooks/SeriesDataBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Hooks/SeriesDataBuilder.cs
rename to pkgs/sdk/server/src/Hooks/SeriesDataBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/ILdClientExtensions.cs b/pkgs/sdk/server/src/ILdClientExtensions.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/ILdClientExtensions.cs
rename to pkgs/sdk/server/src/ILdClientExtensions.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/BigSegmentsConfigurationBuilder.cs b/pkgs/sdk/server/src/Integrations/BigSegmentsConfigurationBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/BigSegmentsConfigurationBuilder.cs
rename to pkgs/sdk/server/src/Integrations/BigSegmentsConfigurationBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/EventProcessorBuilder.cs b/pkgs/sdk/server/src/Integrations/EventProcessorBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/EventProcessorBuilder.cs
rename to pkgs/sdk/server/src/Integrations/EventProcessorBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/FileData.cs b/pkgs/sdk/server/src/Integrations/FileData.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/FileData.cs
rename to pkgs/sdk/server/src/Integrations/FileData.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/FileDataSourceBuilder.cs b/pkgs/sdk/server/src/Integrations/FileDataSourceBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/FileDataSourceBuilder.cs
rename to pkgs/sdk/server/src/Integrations/FileDataSourceBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/FileDataTypes.cs b/pkgs/sdk/server/src/Integrations/FileDataTypes.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/FileDataTypes.cs
rename to pkgs/sdk/server/src/Integrations/FileDataTypes.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/HookConfigurationBuilder.cs b/pkgs/sdk/server/src/Integrations/HookConfigurationBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/HookConfigurationBuilder.cs
rename to pkgs/sdk/server/src/Integrations/HookConfigurationBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/HttpConfigurationBuilder.cs b/pkgs/sdk/server/src/Integrations/HttpConfigurationBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/HttpConfigurationBuilder.cs
rename to pkgs/sdk/server/src/Integrations/HttpConfigurationBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/LoggingConfigurationBuilder.cs b/pkgs/sdk/server/src/Integrations/LoggingConfigurationBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/LoggingConfigurationBuilder.cs
rename to pkgs/sdk/server/src/Integrations/LoggingConfigurationBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/PersistentDataStoreBuilder.cs b/pkgs/sdk/server/src/Integrations/PersistentDataStoreBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/PersistentDataStoreBuilder.cs
rename to pkgs/sdk/server/src/Integrations/PersistentDataStoreBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/PollingDataSourceBuilder.cs b/pkgs/sdk/server/src/Integrations/PollingDataSourceBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/PollingDataSourceBuilder.cs
rename to pkgs/sdk/server/src/Integrations/PollingDataSourceBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/ServiceEndpointsBuilder.cs b/pkgs/sdk/server/src/Integrations/ServiceEndpointsBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/ServiceEndpointsBuilder.cs
rename to pkgs/sdk/server/src/Integrations/ServiceEndpointsBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/StreamingDataSourceBuilder.cs b/pkgs/sdk/server/src/Integrations/StreamingDataSourceBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/StreamingDataSourceBuilder.cs
rename to pkgs/sdk/server/src/Integrations/StreamingDataSourceBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/TestData.cs b/pkgs/sdk/server/src/Integrations/TestData.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/TestData.cs
rename to pkgs/sdk/server/src/Integrations/TestData.cs
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/WrapperInfoBuilder.cs b/pkgs/sdk/server/src/Integrations/WrapperInfoBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Integrations/WrapperInfoBuilder.cs
rename to pkgs/sdk/server/src/Integrations/WrapperInfoBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Interfaces/BigSegmentStoreStatus.cs b/pkgs/sdk/server/src/Interfaces/BigSegmentStoreStatus.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Interfaces/BigSegmentStoreStatus.cs
rename to pkgs/sdk/server/src/Interfaces/BigSegmentStoreStatus.cs
diff --git a/src/LaunchDarkly.ServerSdk/Interfaces/DataSourceStatus.cs b/pkgs/sdk/server/src/Interfaces/DataSourceStatus.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Interfaces/DataSourceStatus.cs
rename to pkgs/sdk/server/src/Interfaces/DataSourceStatus.cs
diff --git a/src/LaunchDarkly.ServerSdk/Interfaces/DataStoreStatus.cs b/pkgs/sdk/server/src/Interfaces/DataStoreStatus.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Interfaces/DataStoreStatus.cs
rename to pkgs/sdk/server/src/Interfaces/DataStoreStatus.cs
diff --git a/src/LaunchDarkly.ServerSdk/Interfaces/IBigSegmentStoreStatusProvider.cs b/pkgs/sdk/server/src/Interfaces/IBigSegmentStoreStatusProvider.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Interfaces/IBigSegmentStoreStatusProvider.cs
rename to pkgs/sdk/server/src/Interfaces/IBigSegmentStoreStatusProvider.cs
diff --git a/src/LaunchDarkly.ServerSdk/Interfaces/IDataSourceStatusProvider.cs b/pkgs/sdk/server/src/Interfaces/IDataSourceStatusProvider.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Interfaces/IDataSourceStatusProvider.cs
rename to pkgs/sdk/server/src/Interfaces/IDataSourceStatusProvider.cs
diff --git a/src/LaunchDarkly.ServerSdk/Interfaces/IDataStoreStatusProvider.cs b/pkgs/sdk/server/src/Interfaces/IDataStoreStatusProvider.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Interfaces/IDataStoreStatusProvider.cs
rename to pkgs/sdk/server/src/Interfaces/IDataStoreStatusProvider.cs
diff --git a/src/LaunchDarkly.ServerSdk/Interfaces/IFlagTracker.cs b/pkgs/sdk/server/src/Interfaces/IFlagTracker.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Interfaces/IFlagTracker.cs
rename to pkgs/sdk/server/src/Interfaces/IFlagTracker.cs
diff --git a/src/LaunchDarkly.ServerSdk/Interfaces/ILdClient.cs b/pkgs/sdk/server/src/Interfaces/ILdClient.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Interfaces/ILdClient.cs
rename to pkgs/sdk/server/src/Interfaces/ILdClient.cs
diff --git a/src/LaunchDarkly.ServerSdk/Interfaces/ServiceEndpoints.cs b/pkgs/sdk/server/src/Interfaces/ServiceEndpoints.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Interfaces/ServiceEndpoints.cs
rename to pkgs/sdk/server/src/Interfaces/ServiceEndpoints.cs
diff --git a/src/LaunchDarkly.ServerSdk/Interfaces/WrapperInfo.cs b/pkgs/sdk/server/src/Interfaces/WrapperInfo.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Interfaces/WrapperInfo.cs
rename to pkgs/sdk/server/src/Interfaces/WrapperInfo.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/BigSegments/BigSegmentStoreStatusProviderImpl.cs b/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreStatusProviderImpl.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/BigSegments/BigSegmentStoreStatusProviderImpl.cs
rename to pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreStatusProviderImpl.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/BigSegments/BigSegmentStoreWrapper.cs b/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/BigSegments/BigSegmentStoreWrapper.cs
rename to pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/BigSegments/BigSegmentsInternalTypes.cs b/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentsInternalTypes.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/BigSegments/BigSegmentsInternalTypes.cs
rename to pkgs/sdk/server/src/Internal/BigSegments/BigSegmentsInternalTypes.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/BigSegments/MembershipBuilder.cs b/pkgs/sdk/server/src/Internal/BigSegments/MembershipBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/BigSegments/MembershipBuilder.cs
rename to pkgs/sdk/server/src/Internal/BigSegments/MembershipBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/BigSegments/NamespaceReadme.md b/pkgs/sdk/server/src/Internal/BigSegments/NamespaceReadme.md
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/BigSegments/NamespaceReadme.md
rename to pkgs/sdk/server/src/Internal/BigSegments/NamespaceReadme.md
diff --git a/src/LaunchDarkly.ServerSdk/Internal/ComponentsImpl.cs b/pkgs/sdk/server/src/Internal/ComponentsImpl.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/ComponentsImpl.cs
rename to pkgs/sdk/server/src/Internal/ComponentsImpl.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataModelDependencies.cs b/pkgs/sdk/server/src/Internal/DataModelDependencies.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataModelDependencies.cs
rename to pkgs/sdk/server/src/Internal/DataModelDependencies.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/DataSourceOutageTracker.cs b/pkgs/sdk/server/src/Internal/DataSources/DataSourceOutageTracker.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/DataSourceOutageTracker.cs
rename to pkgs/sdk/server/src/Internal/DataSources/DataSourceOutageTracker.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/DataSourceStatusProviderImpl.cs b/pkgs/sdk/server/src/Internal/DataSources/DataSourceStatusProviderImpl.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/DataSourceStatusProviderImpl.cs
rename to pkgs/sdk/server/src/Internal/DataSources/DataSourceStatusProviderImpl.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/DataSourceUpdatesImpl.cs b/pkgs/sdk/server/src/Internal/DataSources/DataSourceUpdatesImpl.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/DataSourceUpdatesImpl.cs
rename to pkgs/sdk/server/src/Internal/DataSources/DataSourceUpdatesImpl.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/FeatureRequestor.cs b/pkgs/sdk/server/src/Internal/DataSources/FeatureRequestor.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/FeatureRequestor.cs
rename to pkgs/sdk/server/src/Internal/DataSources/FeatureRequestor.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/FileDataSource.cs b/pkgs/sdk/server/src/Internal/DataSources/FileDataSource.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/FileDataSource.cs
rename to pkgs/sdk/server/src/Internal/DataSources/FileDataSource.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/FlagFileParser.cs b/pkgs/sdk/server/src/Internal/DataSources/FlagFileParser.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/FlagFileParser.cs
rename to pkgs/sdk/server/src/Internal/DataSources/FlagFileParser.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/FlagFileReader.cs b/pkgs/sdk/server/src/Internal/DataSources/FlagFileReader.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/FlagFileReader.cs
rename to pkgs/sdk/server/src/Internal/DataSources/FlagFileReader.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/IFeatureRequestor.cs b/pkgs/sdk/server/src/Internal/DataSources/IFeatureRequestor.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/IFeatureRequestor.cs
rename to pkgs/sdk/server/src/Internal/DataSources/IFeatureRequestor.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/NamespaceReadme.md b/pkgs/sdk/server/src/Internal/DataSources/NamespaceReadme.md
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/NamespaceReadme.md
rename to pkgs/sdk/server/src/Internal/DataSources/NamespaceReadme.md
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/PollingDataSource.cs b/pkgs/sdk/server/src/Internal/DataSources/PollingDataSource.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/PollingDataSource.cs
rename to pkgs/sdk/server/src/Internal/DataSources/PollingDataSource.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/StreamProcessorEvents.cs b/pkgs/sdk/server/src/Internal/DataSources/StreamProcessorEvents.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/StreamProcessorEvents.cs
rename to pkgs/sdk/server/src/Internal/DataSources/StreamProcessorEvents.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataSources/StreamingDataSource.cs b/pkgs/sdk/server/src/Internal/DataSources/StreamingDataSource.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataSources/StreamingDataSource.cs
rename to pkgs/sdk/server/src/Internal/DataSources/StreamingDataSource.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataStores/DataStoreCacheConfig.cs b/pkgs/sdk/server/src/Internal/DataStores/DataStoreCacheConfig.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataStores/DataStoreCacheConfig.cs
rename to pkgs/sdk/server/src/Internal/DataStores/DataStoreCacheConfig.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataStores/DataStoreSorter.cs b/pkgs/sdk/server/src/Internal/DataStores/DataStoreSorter.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataStores/DataStoreSorter.cs
rename to pkgs/sdk/server/src/Internal/DataStores/DataStoreSorter.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataStores/DataStoreStatusProviderImpl.cs b/pkgs/sdk/server/src/Internal/DataStores/DataStoreStatusProviderImpl.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataStores/DataStoreStatusProviderImpl.cs
rename to pkgs/sdk/server/src/Internal/DataStores/DataStoreStatusProviderImpl.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataStores/DataStoreUpdatesImpl.cs b/pkgs/sdk/server/src/Internal/DataStores/DataStoreUpdatesImpl.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataStores/DataStoreUpdatesImpl.cs
rename to pkgs/sdk/server/src/Internal/DataStores/DataStoreUpdatesImpl.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataStores/InMemoryDataStore.cs b/pkgs/sdk/server/src/Internal/DataStores/InMemoryDataStore.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataStores/InMemoryDataStore.cs
rename to pkgs/sdk/server/src/Internal/DataStores/InMemoryDataStore.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataStores/NamespaceReadme.md b/pkgs/sdk/server/src/Internal/DataStores/NamespaceReadme.md
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataStores/NamespaceReadme.md
rename to pkgs/sdk/server/src/Internal/DataStores/NamespaceReadme.md
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataStores/PersistentDataStoreStatusManager.cs b/pkgs/sdk/server/src/Internal/DataStores/PersistentDataStoreStatusManager.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataStores/PersistentDataStoreStatusManager.cs
rename to pkgs/sdk/server/src/Internal/DataStores/PersistentDataStoreStatusManager.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataStores/PersistentStoreAsyncAdapter.cs b/pkgs/sdk/server/src/Internal/DataStores/PersistentStoreAsyncAdapter.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataStores/PersistentStoreAsyncAdapter.cs
rename to pkgs/sdk/server/src/Internal/DataStores/PersistentStoreAsyncAdapter.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/DataStores/PersistentStoreWrapper.cs b/pkgs/sdk/server/src/Internal/DataStores/PersistentStoreWrapper.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/DataStores/PersistentStoreWrapper.cs
rename to pkgs/sdk/server/src/Internal/DataStores/PersistentStoreWrapper.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Evaluation/Bucketing.cs b/pkgs/sdk/server/src/Internal/Evaluation/Bucketing.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Evaluation/Bucketing.cs
rename to pkgs/sdk/server/src/Internal/Evaluation/Bucketing.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Evaluation/Evaluator.cs b/pkgs/sdk/server/src/Internal/Evaluation/Evaluator.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Evaluation/Evaluator.cs
rename to pkgs/sdk/server/src/Internal/Evaluation/Evaluator.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Evaluation/EvaluatorClause.cs b/pkgs/sdk/server/src/Internal/Evaluation/EvaluatorClause.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Evaluation/EvaluatorClause.cs
rename to pkgs/sdk/server/src/Internal/Evaluation/EvaluatorClause.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Evaluation/EvaluatorSegment.cs b/pkgs/sdk/server/src/Internal/Evaluation/EvaluatorSegment.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Evaluation/EvaluatorSegment.cs
rename to pkgs/sdk/server/src/Internal/Evaluation/EvaluatorSegment.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Evaluation/EvaluatorTarget.cs b/pkgs/sdk/server/src/Internal/Evaluation/EvaluatorTarget.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Evaluation/EvaluatorTarget.cs
rename to pkgs/sdk/server/src/Internal/Evaluation/EvaluatorTarget.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Evaluation/EvaluatorTypes.cs b/pkgs/sdk/server/src/Internal/Evaluation/EvaluatorTypes.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Evaluation/EvaluatorTypes.cs
rename to pkgs/sdk/server/src/Internal/Evaluation/EvaluatorTypes.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Evaluation/NamespaceReadme.md b/pkgs/sdk/server/src/Internal/Evaluation/NamespaceReadme.md
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Evaluation/NamespaceReadme.md
rename to pkgs/sdk/server/src/Internal/Evaluation/NamespaceReadme.md
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Events/DefaultContextDeduplicator.cs b/pkgs/sdk/server/src/Internal/Events/DefaultContextDeduplicator.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Events/DefaultContextDeduplicator.cs
rename to pkgs/sdk/server/src/Internal/Events/DefaultContextDeduplicator.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Events/DefaultEventProcessorWrapper.cs b/pkgs/sdk/server/src/Internal/Events/DefaultEventProcessorWrapper.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Events/DefaultEventProcessorWrapper.cs
rename to pkgs/sdk/server/src/Internal/Events/DefaultEventProcessorWrapper.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Events/EventFactory.cs b/pkgs/sdk/server/src/Internal/Events/EventFactory.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Events/EventFactory.cs
rename to pkgs/sdk/server/src/Internal/Events/EventFactory.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Events/NamespaceReadme.md b/pkgs/sdk/server/src/Internal/Events/NamespaceReadme.md
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Events/NamespaceReadme.md
rename to pkgs/sdk/server/src/Internal/Events/NamespaceReadme.md
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Events/ServerDiagnosticStore.cs b/pkgs/sdk/server/src/Internal/Events/ServerDiagnosticStore.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Events/ServerDiagnosticStore.cs
rename to pkgs/sdk/server/src/Internal/Events/ServerDiagnosticStore.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/FlagTrackerImpl.cs b/pkgs/sdk/server/src/Internal/FlagTrackerImpl.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/FlagTrackerImpl.cs
rename to pkgs/sdk/server/src/Internal/FlagTrackerImpl.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Hooks/Executor/Executor.cs b/pkgs/sdk/server/src/Internal/Hooks/Executor/Executor.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Hooks/Executor/Executor.cs
rename to pkgs/sdk/server/src/Internal/Hooks/Executor/Executor.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Hooks/Executor/NoopExecutor.cs b/pkgs/sdk/server/src/Internal/Hooks/Executor/NoopExecutor.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Hooks/Executor/NoopExecutor.cs
rename to pkgs/sdk/server/src/Internal/Hooks/Executor/NoopExecutor.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Hooks/Interfaces/IHookExecutor.cs b/pkgs/sdk/server/src/Internal/Hooks/Interfaces/IHookExecutor.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Hooks/Interfaces/IHookExecutor.cs
rename to pkgs/sdk/server/src/Internal/Hooks/Interfaces/IHookExecutor.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Hooks/Interfaces/IStageExecutor.cs b/pkgs/sdk/server/src/Internal/Hooks/Interfaces/IStageExecutor.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Hooks/Interfaces/IStageExecutor.cs
rename to pkgs/sdk/server/src/Internal/Hooks/Interfaces/IStageExecutor.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Hooks/Series/EvaluationSeries.cs b/pkgs/sdk/server/src/Internal/Hooks/Series/EvaluationSeries.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Hooks/Series/EvaluationSeries.cs
rename to pkgs/sdk/server/src/Internal/Hooks/Series/EvaluationSeries.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/LRUCacheSet.cs b/pkgs/sdk/server/src/Internal/LRUCacheSet.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/LRUCacheSet.cs
rename to pkgs/sdk/server/src/Internal/LRUCacheSet.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/LogNames.cs b/pkgs/sdk/server/src/Internal/LogNames.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/LogNames.cs
rename to pkgs/sdk/server/src/Internal/LogNames.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Model/Clause.cs b/pkgs/sdk/server/src/Internal/Model/Clause.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Model/Clause.cs
rename to pkgs/sdk/server/src/Internal/Model/Clause.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Model/FeatureFlag.cs b/pkgs/sdk/server/src/Internal/Model/FeatureFlag.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Model/FeatureFlag.cs
rename to pkgs/sdk/server/src/Internal/Model/FeatureFlag.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Model/NamespaceReadme.md b/pkgs/sdk/server/src/Internal/Model/NamespaceReadme.md
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Model/NamespaceReadme.md
rename to pkgs/sdk/server/src/Internal/Model/NamespaceReadme.md
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Model/Operator.cs b/pkgs/sdk/server/src/Internal/Model/Operator.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Model/Operator.cs
rename to pkgs/sdk/server/src/Internal/Model/Operator.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Model/Segment.cs b/pkgs/sdk/server/src/Internal/Model/Segment.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Model/Segment.cs
rename to pkgs/sdk/server/src/Internal/Model/Segment.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Model/SemanticVersion.cs b/pkgs/sdk/server/src/Internal/Model/SemanticVersion.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Model/SemanticVersion.cs
rename to pkgs/sdk/server/src/Internal/Model/SemanticVersion.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/Model/Serialization.cs b/pkgs/sdk/server/src/Internal/Model/Serialization.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/Model/Serialization.cs
rename to pkgs/sdk/server/src/Internal/Model/Serialization.cs
diff --git a/src/LaunchDarkly.ServerSdk/Internal/NamespaceReadme.md b/pkgs/sdk/server/src/Internal/NamespaceReadme.md
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/NamespaceReadme.md
rename to pkgs/sdk/server/src/Internal/NamespaceReadme.md
diff --git a/src/LaunchDarkly.ServerSdk/Internal/StandardEndpoints.cs b/pkgs/sdk/server/src/Internal/StandardEndpoints.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Internal/StandardEndpoints.cs
rename to pkgs/sdk/server/src/Internal/StandardEndpoints.cs
diff --git a/src/LaunchDarkly.ServerSdk/LaunchDarkly.ServerSdk.csproj b/pkgs/sdk/server/src/LaunchDarkly.ServerSdk.csproj
similarity index 97%
rename from src/LaunchDarkly.ServerSdk/LaunchDarkly.ServerSdk.csproj
rename to pkgs/sdk/server/src/LaunchDarkly.ServerSdk.csproj
index f4ac1c5d..211d3bbf 100644
--- a/src/LaunchDarkly.ServerSdk/LaunchDarkly.ServerSdk.csproj
+++ b/pkgs/sdk/server/src/LaunchDarkly.ServerSdk.csproj
@@ -48,11 +48,10 @@
-
-
+
../../LaunchDarkly.snk
true
diff --git a/src/LaunchDarkly.ServerSdk/LdClient.cs b/pkgs/sdk/server/src/LdClient.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/LdClient.cs
rename to pkgs/sdk/server/src/LdClient.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/IMigration.cs b/pkgs/sdk/server/src/Migrations/IMigration.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/IMigration.cs
rename to pkgs/sdk/server/src/Migrations/IMigration.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/Migration.cs b/pkgs/sdk/server/src/Migrations/Migration.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/Migration.cs
rename to pkgs/sdk/server/src/Migrations/Migration.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationBuilder.cs b/pkgs/sdk/server/src/Migrations/MigrationBuilder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationBuilder.cs
rename to pkgs/sdk/server/src/Migrations/MigrationBuilder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationExecution.cs b/pkgs/sdk/server/src/Migrations/MigrationExecution.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationExecution.cs
rename to pkgs/sdk/server/src/Migrations/MigrationExecution.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationExecutionMode.cs b/pkgs/sdk/server/src/Migrations/MigrationExecutionMode.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationExecutionMode.cs
rename to pkgs/sdk/server/src/Migrations/MigrationExecutionMode.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationMethod.cs b/pkgs/sdk/server/src/Migrations/MigrationMethod.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationMethod.cs
rename to pkgs/sdk/server/src/Migrations/MigrationMethod.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationOpTracker.cs b/pkgs/sdk/server/src/Migrations/MigrationOpTracker.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationOpTracker.cs
rename to pkgs/sdk/server/src/Migrations/MigrationOpTracker.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationOperation.cs b/pkgs/sdk/server/src/Migrations/MigrationOperation.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationOperation.cs
rename to pkgs/sdk/server/src/Migrations/MigrationOperation.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationOrigin.cs b/pkgs/sdk/server/src/Migrations/MigrationOrigin.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationOrigin.cs
rename to pkgs/sdk/server/src/Migrations/MigrationOrigin.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationResult.cs b/pkgs/sdk/server/src/Migrations/MigrationResult.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationResult.cs
rename to pkgs/sdk/server/src/Migrations/MigrationResult.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationSerialOrder.cs b/pkgs/sdk/server/src/Migrations/MigrationSerialOrder.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationSerialOrder.cs
rename to pkgs/sdk/server/src/Migrations/MigrationSerialOrder.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationStage.cs b/pkgs/sdk/server/src/Migrations/MigrationStage.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationStage.cs
rename to pkgs/sdk/server/src/Migrations/MigrationStage.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationVariation.cs b/pkgs/sdk/server/src/Migrations/MigrationVariation.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationVariation.cs
rename to pkgs/sdk/server/src/Migrations/MigrationVariation.cs
diff --git a/src/LaunchDarkly.ServerSdk/Migrations/MigrationWriteResult.cs b/pkgs/sdk/server/src/Migrations/MigrationWriteResult.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Migrations/MigrationWriteResult.cs
rename to pkgs/sdk/server/src/Migrations/MigrationWriteResult.cs
diff --git a/src/LaunchDarkly.ServerSdk/NuGet/config.install.xdt b/pkgs/sdk/server/src/NuGet/config.install.xdt
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/NuGet/config.install.xdt
rename to pkgs/sdk/server/src/NuGet/config.install.xdt
diff --git a/src/LaunchDarkly.ServerSdk/NuGet/config.uninstall.xdt b/pkgs/sdk/server/src/NuGet/config.uninstall.xdt
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/NuGet/config.uninstall.xdt
rename to pkgs/sdk/server/src/NuGet/config.uninstall.xdt
diff --git a/src/LaunchDarkly.ServerSdk/Properties/AssemblyInfo.cs b/pkgs/sdk/server/src/Properties/AssemblyInfo.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Properties/AssemblyInfo.cs
rename to pkgs/sdk/server/src/Properties/AssemblyInfo.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/BigSegmentStoreTypes.cs b/pkgs/sdk/server/src/Subsystems/BigSegmentStoreTypes.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/BigSegmentStoreTypes.cs
rename to pkgs/sdk/server/src/Subsystems/BigSegmentStoreTypes.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/BigSegmentsConfiguration.cs b/pkgs/sdk/server/src/Subsystems/BigSegmentsConfiguration.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/BigSegmentsConfiguration.cs
rename to pkgs/sdk/server/src/Subsystems/BigSegmentsConfiguration.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/DataStoreTypes.cs b/pkgs/sdk/server/src/Subsystems/DataStoreTypes.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/DataStoreTypes.cs
rename to pkgs/sdk/server/src/Subsystems/DataStoreTypes.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/EventProcessorTypes.cs b/pkgs/sdk/server/src/Subsystems/EventProcessorTypes.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/EventProcessorTypes.cs
rename to pkgs/sdk/server/src/Subsystems/EventProcessorTypes.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/HookConfiguration.cs b/pkgs/sdk/server/src/Subsystems/HookConfiguration.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/HookConfiguration.cs
rename to pkgs/sdk/server/src/Subsystems/HookConfiguration.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/HttpConfiguration.cs b/pkgs/sdk/server/src/Subsystems/HttpConfiguration.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/HttpConfiguration.cs
rename to pkgs/sdk/server/src/Subsystems/HttpConfiguration.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/IBigSegmentStore.cs b/pkgs/sdk/server/src/Subsystems/IBigSegmentStore.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/IBigSegmentStore.cs
rename to pkgs/sdk/server/src/Subsystems/IBigSegmentStore.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/IComponentConfigurer.cs b/pkgs/sdk/server/src/Subsystems/IComponentConfigurer.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/IComponentConfigurer.cs
rename to pkgs/sdk/server/src/Subsystems/IComponentConfigurer.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/IDataSource.cs b/pkgs/sdk/server/src/Subsystems/IDataSource.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/IDataSource.cs
rename to pkgs/sdk/server/src/Subsystems/IDataSource.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/IDataSourceUpdates.cs b/pkgs/sdk/server/src/Subsystems/IDataSourceUpdates.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/IDataSourceUpdates.cs
rename to pkgs/sdk/server/src/Subsystems/IDataSourceUpdates.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/IDataStore.cs b/pkgs/sdk/server/src/Subsystems/IDataStore.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/IDataStore.cs
rename to pkgs/sdk/server/src/Subsystems/IDataStore.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/IDataStoreUpdates.cs b/pkgs/sdk/server/src/Subsystems/IDataStoreUpdates.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/IDataStoreUpdates.cs
rename to pkgs/sdk/server/src/Subsystems/IDataStoreUpdates.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/IDiagnosticDescription.cs b/pkgs/sdk/server/src/Subsystems/IDiagnosticDescription.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/IDiagnosticDescription.cs
rename to pkgs/sdk/server/src/Subsystems/IDiagnosticDescription.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/IEventProcessor.cs b/pkgs/sdk/server/src/Subsystems/IEventProcessor.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/IEventProcessor.cs
rename to pkgs/sdk/server/src/Subsystems/IEventProcessor.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/IPersistentDataStore.cs b/pkgs/sdk/server/src/Subsystems/IPersistentDataStore.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/IPersistentDataStore.cs
rename to pkgs/sdk/server/src/Subsystems/IPersistentDataStore.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/IPersistentDataStoreAsync.cs b/pkgs/sdk/server/src/Subsystems/IPersistentDataStoreAsync.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/IPersistentDataStoreAsync.cs
rename to pkgs/sdk/server/src/Subsystems/IPersistentDataStoreAsync.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/LdClientContext.cs b/pkgs/sdk/server/src/Subsystems/LdClientContext.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/LdClientContext.cs
rename to pkgs/sdk/server/src/Subsystems/LdClientContext.cs
diff --git a/src/LaunchDarkly.ServerSdk/Subsystems/LoggingConfiguration.cs b/pkgs/sdk/server/src/Subsystems/LoggingConfiguration.cs
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/Subsystems/LoggingConfiguration.cs
rename to pkgs/sdk/server/src/Subsystems/LoggingConfiguration.cs
diff --git a/src/LaunchDarkly.ServerSdk/app.config b/pkgs/sdk/server/src/app.config
similarity index 100%
rename from src/LaunchDarkly.ServerSdk/app.config
rename to pkgs/sdk/server/src/app.config
diff --git a/test/LaunchDarkly.ServerSdk.Tests/AssertHelpers.cs b/pkgs/sdk/server/test/AssertHelpers.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/AssertHelpers.cs
rename to pkgs/sdk/server/test/AssertHelpers.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/BaseTest.cs b/pkgs/sdk/server/test/BaseTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/BaseTest.cs
rename to pkgs/sdk/server/test/BaseTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/ConfigurationTest.cs b/pkgs/sdk/server/test/ConfigurationTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/ConfigurationTest.cs
rename to pkgs/sdk/server/test/ConfigurationTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/DataModelTest.cs b/pkgs/sdk/server/test/DataModelTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/DataModelTest.cs
rename to pkgs/sdk/server/test/DataModelTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/FeatureFlagsStateTest.cs b/pkgs/sdk/server/test/FeatureFlagsStateTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/FeatureFlagsStateTest.cs
rename to pkgs/sdk/server/test/FeatureFlagsStateTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Hooks/EvaluationSeriesTest.cs b/pkgs/sdk/server/test/Hooks/EvaluationSeriesTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Hooks/EvaluationSeriesTest.cs
rename to pkgs/sdk/server/test/Hooks/EvaluationSeriesTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Hooks/HookTest.cs b/pkgs/sdk/server/test/Hooks/HookTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Hooks/HookTest.cs
rename to pkgs/sdk/server/test/Hooks/HookTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/ILdClientExtensionsTests.cs b/pkgs/sdk/server/test/ILdClientExtensionsTests.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/ILdClientExtensionsTests.cs
rename to pkgs/sdk/server/test/ILdClientExtensionsTests.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/BigSegmentsConfigurationBuilderTest.cs b/pkgs/sdk/server/test/Integrations/BigSegmentsConfigurationBuilderTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Integrations/BigSegmentsConfigurationBuilderTest.cs
rename to pkgs/sdk/server/test/Integrations/BigSegmentsConfigurationBuilderTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/EventProcessorBuilderTest.cs b/pkgs/sdk/server/test/Integrations/EventProcessorBuilderTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Integrations/EventProcessorBuilderTest.cs
rename to pkgs/sdk/server/test/Integrations/EventProcessorBuilderTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/FileDataSourceBuilderTest.cs b/pkgs/sdk/server/test/Integrations/FileDataSourceBuilderTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Integrations/FileDataSourceBuilderTest.cs
rename to pkgs/sdk/server/test/Integrations/FileDataSourceBuilderTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/HttpConfigurationBuilderTest.cs b/pkgs/sdk/server/test/Integrations/HttpConfigurationBuilderTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Integrations/HttpConfigurationBuilderTest.cs
rename to pkgs/sdk/server/test/Integrations/HttpConfigurationBuilderTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/LoggingConfigurationBuilderTest.cs b/pkgs/sdk/server/test/Integrations/LoggingConfigurationBuilderTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Integrations/LoggingConfigurationBuilderTest.cs
rename to pkgs/sdk/server/test/Integrations/LoggingConfigurationBuilderTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/PollingDataSourceBuilderTest.cs b/pkgs/sdk/server/test/Integrations/PollingDataSourceBuilderTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Integrations/PollingDataSourceBuilderTest.cs
rename to pkgs/sdk/server/test/Integrations/PollingDataSourceBuilderTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/ServiceEndpointsBuilderTest.cs b/pkgs/sdk/server/test/Integrations/ServiceEndpointsBuilderTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Integrations/ServiceEndpointsBuilderTest.cs
rename to pkgs/sdk/server/test/Integrations/ServiceEndpointsBuilderTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/StreamingDataSourceBuilderTest.cs b/pkgs/sdk/server/test/Integrations/StreamingDataSourceBuilderTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Integrations/StreamingDataSourceBuilderTest.cs
rename to pkgs/sdk/server/test/Integrations/StreamingDataSourceBuilderTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/TestDataTest.cs b/pkgs/sdk/server/test/Integrations/TestDataTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Integrations/TestDataTest.cs
rename to pkgs/sdk/server/test/Integrations/TestDataTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/TestDataWithClientTest.cs b/pkgs/sdk/server/test/Integrations/TestDataWithClientTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Integrations/TestDataWithClientTest.cs
rename to pkgs/sdk/server/test/Integrations/TestDataWithClientTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/BigSegments/BigSegmentsStatusProviderImplTest.cs b/pkgs/sdk/server/test/Internal/BigSegments/BigSegmentsStatusProviderImplTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/BigSegments/BigSegmentsStatusProviderImplTest.cs
rename to pkgs/sdk/server/test/Internal/BigSegments/BigSegmentsStatusProviderImplTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/BigSegments/BigSegmentsStoreWrapperTest.cs b/pkgs/sdk/server/test/Internal/BigSegments/BigSegmentsStoreWrapperTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/BigSegments/BigSegmentsStoreWrapperTest.cs
rename to pkgs/sdk/server/test/Internal/BigSegments/BigSegmentsStoreWrapperTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/BigSegments/MembershipBuilderTest.cs b/pkgs/sdk/server/test/Internal/BigSegments/MembershipBuilderTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/BigSegments/MembershipBuilderTest.cs
rename to pkgs/sdk/server/test/Internal/BigSegments/MembershipBuilderTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/DataModelDependenciesTest.cs b/pkgs/sdk/server/test/Internal/DataSources/DataModelDependenciesTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/DataModelDependenciesTest.cs
rename to pkgs/sdk/server/test/Internal/DataSources/DataModelDependenciesTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/DataSourceStatusProviderImplTest.cs b/pkgs/sdk/server/test/Internal/DataSources/DataSourceStatusProviderImplTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/DataSourceStatusProviderImplTest.cs
rename to pkgs/sdk/server/test/Internal/DataSources/DataSourceStatusProviderImplTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/DataSourceUpdatesImplTest.cs b/pkgs/sdk/server/test/Internal/DataSources/DataSourceUpdatesImplTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/DataSourceUpdatesImplTest.cs
rename to pkgs/sdk/server/test/Internal/DataSources/DataSourceUpdatesImplTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/FileDataSourceTest.cs b/pkgs/sdk/server/test/Internal/DataSources/FileDataSourceTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/FileDataSourceTest.cs
rename to pkgs/sdk/server/test/Internal/DataSources/FileDataSourceTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/FlagFileDataMergerTest.cs b/pkgs/sdk/server/test/Internal/DataSources/FlagFileDataMergerTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/FlagFileDataMergerTest.cs
rename to pkgs/sdk/server/test/Internal/DataSources/FlagFileDataMergerTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/PollingDataSourceTest.cs b/pkgs/sdk/server/test/Internal/DataSources/PollingDataSourceTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/PollingDataSourceTest.cs
rename to pkgs/sdk/server/test/Internal/DataSources/PollingDataSourceTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/StreamProcessorEventsTest.cs b/pkgs/sdk/server/test/Internal/DataSources/StreamProcessorEventsTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/StreamProcessorEventsTest.cs
rename to pkgs/sdk/server/test/Internal/DataSources/StreamProcessorEventsTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/StreamingDataSourceTest.cs b/pkgs/sdk/server/test/Internal/DataSources/StreamingDataSourceTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataSources/StreamingDataSourceTest.cs
rename to pkgs/sdk/server/test/Internal/DataSources/StreamingDataSourceTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/DataStoreSorterTest.cs b/pkgs/sdk/server/test/Internal/DataStores/DataStoreSorterTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/DataStoreSorterTest.cs
rename to pkgs/sdk/server/test/Internal/DataStores/DataStoreSorterTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/DataStoreStatusProviderImplTest.cs b/pkgs/sdk/server/test/Internal/DataStores/DataStoreStatusProviderImplTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/DataStoreStatusProviderImplTest.cs
rename to pkgs/sdk/server/test/Internal/DataStores/DataStoreStatusProviderImplTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/DataStoreTestBase.cs b/pkgs/sdk/server/test/Internal/DataStores/DataStoreTestBase.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/DataStoreTestBase.cs
rename to pkgs/sdk/server/test/Internal/DataStores/DataStoreTestBase.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/DataStoreTestTypes.cs b/pkgs/sdk/server/test/Internal/DataStores/DataStoreTestTypes.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/DataStoreTestTypes.cs
rename to pkgs/sdk/server/test/Internal/DataStores/DataStoreTestTypes.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/DataStoreUpdatesImplTest.cs b/pkgs/sdk/server/test/Internal/DataStores/DataStoreUpdatesImplTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/DataStoreUpdatesImplTest.cs
rename to pkgs/sdk/server/test/Internal/DataStores/DataStoreUpdatesImplTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/InMemoryDataStoreTest.cs b/pkgs/sdk/server/test/Internal/DataStores/InMemoryDataStoreTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/InMemoryDataStoreTest.cs
rename to pkgs/sdk/server/test/Internal/DataStores/InMemoryDataStoreTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/PersistentStoreWrapperTestAsync.cs b/pkgs/sdk/server/test/Internal/DataStores/PersistentStoreWrapperTestAsync.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/PersistentStoreWrapperTestAsync.cs
rename to pkgs/sdk/server/test/Internal/DataStores/PersistentStoreWrapperTestAsync.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/PersistentStoreWrapperTestBase.cs b/pkgs/sdk/server/test/Internal/DataStores/PersistentStoreWrapperTestBase.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/PersistentStoreWrapperTestBase.cs
rename to pkgs/sdk/server/test/Internal/DataStores/PersistentStoreWrapperTestBase.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/PersistentStoreWrapperTestSync.cs b/pkgs/sdk/server/test/Internal/DataStores/PersistentStoreWrapperTestSync.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/DataStores/PersistentStoreWrapperTestSync.cs
rename to pkgs/sdk/server/test/Internal/DataStores/PersistentStoreWrapperTestSync.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/BucketingTest.cs b/pkgs/sdk/server/test/Internal/Evaluation/BucketingTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/BucketingTest.cs
rename to pkgs/sdk/server/test/Internal/Evaluation/BucketingTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorBigSegmentTest.cs b/pkgs/sdk/server/test/Internal/Evaluation/EvaluatorBigSegmentTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorBigSegmentTest.cs
rename to pkgs/sdk/server/test/Internal/Evaluation/EvaluatorBigSegmentTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorClauseTest.cs b/pkgs/sdk/server/test/Internal/Evaluation/EvaluatorClauseTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorClauseTest.cs
rename to pkgs/sdk/server/test/Internal/Evaluation/EvaluatorClauseTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorFlagTest.cs b/pkgs/sdk/server/test/Internal/Evaluation/EvaluatorFlagTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorFlagTest.cs
rename to pkgs/sdk/server/test/Internal/Evaluation/EvaluatorFlagTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorPrerequisitesTest.cs b/pkgs/sdk/server/test/Internal/Evaluation/EvaluatorPrerequisitesTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorPrerequisitesTest.cs
rename to pkgs/sdk/server/test/Internal/Evaluation/EvaluatorPrerequisitesTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorRuleTest.cs b/pkgs/sdk/server/test/Internal/Evaluation/EvaluatorRuleTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorRuleTest.cs
rename to pkgs/sdk/server/test/Internal/Evaluation/EvaluatorRuleTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorSegmentMatchTest.cs b/pkgs/sdk/server/test/Internal/Evaluation/EvaluatorSegmentMatchTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorSegmentMatchTest.cs
rename to pkgs/sdk/server/test/Internal/Evaluation/EvaluatorSegmentMatchTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorTargetTest.cs b/pkgs/sdk/server/test/Internal/Evaluation/EvaluatorTargetTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorTargetTest.cs
rename to pkgs/sdk/server/test/Internal/Evaluation/EvaluatorTargetTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorTestUtil.cs b/pkgs/sdk/server/test/Internal/Evaluation/EvaluatorTestUtil.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/EvaluatorTestUtil.cs
rename to pkgs/sdk/server/test/Internal/Evaluation/EvaluatorTestUtil.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/RolloutRandomizationConsistencyTest.cs b/pkgs/sdk/server/test/Internal/Evaluation/RolloutRandomizationConsistencyTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Evaluation/RolloutRandomizationConsistencyTest.cs
rename to pkgs/sdk/server/test/Internal/Evaluation/RolloutRandomizationConsistencyTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Events/ServerDiagnosticStoreTest.cs b/pkgs/sdk/server/test/Internal/Events/ServerDiagnosticStoreTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Events/ServerDiagnosticStoreTest.cs
rename to pkgs/sdk/server/test/Internal/Events/ServerDiagnosticStoreTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/FlagTrackerImplTest.cs b/pkgs/sdk/server/test/Internal/FlagTrackerImplTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/FlagTrackerImplTest.cs
rename to pkgs/sdk/server/test/Internal/FlagTrackerImplTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/LRUCacheSetTest.cs b/pkgs/sdk/server/test/Internal/LRUCacheSetTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/LRUCacheSetTest.cs
rename to pkgs/sdk/server/test/Internal/LRUCacheSetTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Model/DataSetBuilder.cs b/pkgs/sdk/server/test/Internal/Model/DataSetBuilder.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Model/DataSetBuilder.cs
rename to pkgs/sdk/server/test/Internal/Model/DataSetBuilder.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Model/FeatureFlagBuilder.cs b/pkgs/sdk/server/test/Internal/Model/FeatureFlagBuilder.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Model/FeatureFlagBuilder.cs
rename to pkgs/sdk/server/test/Internal/Model/FeatureFlagBuilder.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Model/OperatorTest.cs b/pkgs/sdk/server/test/Internal/Model/OperatorTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Model/OperatorTest.cs
rename to pkgs/sdk/server/test/Internal/Model/OperatorTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Model/SegmentBuilder.cs b/pkgs/sdk/server/test/Internal/Model/SegmentBuilder.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Model/SegmentBuilder.cs
rename to pkgs/sdk/server/test/Internal/Model/SegmentBuilder.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Internal/Model/SemanticVersionTest.cs b/pkgs/sdk/server/test/Internal/Model/SemanticVersionTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Internal/Model/SemanticVersionTest.cs
rename to pkgs/sdk/server/test/Internal/Model/SemanticVersionTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LaunchDarkly.ServerSdk.Tests.csproj b/pkgs/sdk/server/test/LaunchDarkly.ServerSdk.Tests.csproj
similarity index 88%
rename from test/LaunchDarkly.ServerSdk.Tests/LaunchDarkly.ServerSdk.Tests.csproj
rename to pkgs/sdk/server/test/LaunchDarkly.ServerSdk.Tests.csproj
index 35ab3856..08e77baa 100644
--- a/test/LaunchDarkly.ServerSdk.Tests/LaunchDarkly.ServerSdk.Tests.csproj
+++ b/pkgs/sdk/server/test/LaunchDarkly.ServerSdk.Tests.csproj
@@ -14,7 +14,7 @@
-
+
@@ -24,10 +24,6 @@
-
-
-
-
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientBigSegmentsTest.cs b/pkgs/sdk/server/test/LdClientBigSegmentsTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientBigSegmentsTest.cs
rename to pkgs/sdk/server/test/LdClientBigSegmentsTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientDiagnosticEventTest.cs b/pkgs/sdk/server/test/LdClientDiagnosticEventTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientDiagnosticEventTest.cs
rename to pkgs/sdk/server/test/LdClientDiagnosticEventTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientEndToEndTest.cs b/pkgs/sdk/server/test/LdClientEndToEndTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientEndToEndTest.cs
rename to pkgs/sdk/server/test/LdClientEndToEndTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientEvaluationTest.cs b/pkgs/sdk/server/test/LdClientEvaluationTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientEvaluationTest.cs
rename to pkgs/sdk/server/test/LdClientEvaluationTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientEventTest.cs b/pkgs/sdk/server/test/LdClientEventTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientEventTest.cs
rename to pkgs/sdk/server/test/LdClientEventTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientExternalUpdatesOnlyTest.cs b/pkgs/sdk/server/test/LdClientExternalUpdatesOnlyTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientExternalUpdatesOnlyTest.cs
rename to pkgs/sdk/server/test/LdClientExternalUpdatesOnlyTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientHooksTest.cs b/pkgs/sdk/server/test/LdClientHooksTest.cs
similarity index 61%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientHooksTest.cs
rename to pkgs/sdk/server/test/LdClientHooksTest.cs
index 7064faa5..9600bced 100644
--- a/test/LaunchDarkly.ServerSdk.Tests/LdClientHooksTest.cs
+++ b/pkgs/sdk/server/test/LdClientHooksTest.cs
@@ -1,17 +1,8 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
-using System.Collections.ObjectModel;
-using System.Diagnostics;
using System.Linq;
using LaunchDarkly.Sdk.Server.Hooks;
-using LaunchDarkly.Sdk.Server.Integrations;
-using LaunchDarkly.Sdk.Server.Integrations.OpenTelemetry;
-using LaunchDarkly.Sdk.Server.Interfaces;
-using LaunchDarkly.Sdk.Server.Subsystems;
-using OpenTelemetry.Trace;
-using OpenTelemetry.Resources;
-using LaunchDarkly.TestHelpers;
using Xunit;
using Xunit.Abstractions;
@@ -192,7 +183,6 @@ private Dictionary GenerateVariationMethods(Context context, strin
};
}
-
[Fact]
public void ClientExecutesConfiguredHooks()
{
@@ -269,157 +259,5 @@ public void ClientExecutesConfiguredHooks()
}
}
}
-
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public void TracingHookCreatesRootSpans(bool createSpans)
- {
-
- ICollection exportedItems = new Collection();
-
- var tracerProvider = OpenTelemetry.Sdk.CreateTracerProviderBuilder()
- .AddSource(TracingHook.ActivitySourceName)
- .AddInMemoryExporter(exportedItems)
- .Build();
-
- var config = BasicConfig()
- .Hooks(Components.Hooks(new[] { TracingHook.Builder().CreateActivities(createSpans).Build() }))
- .Build();
-
-
- using (var client = new LdClient(config))
- {
- client.BoolVariation("feature-key", Context.New("foo"), true);
- client.StringVariation("feature-key", Context.New("foo"), "default");
- }
-
- var items = exportedItems.ToList();
-
- if (createSpans)
- {
- // If we're creating spans, then we should have two Activities, with the correct operation names.
- // To check that they are root spans, check that the parent is null.
- Assert.Equal(2, items.Count);
- Assert.Equal("LdClient.BoolVariation", items[0].OperationName);
- Assert.Equal("LdClient.StringVariation", items[1].OperationName);
- Assert.True(items.All(i => i.Parent == null));
- }
- else
- {
- // Otherwise, there should be no Activities.
- Assert.Empty(exportedItems);
- }
- }
-
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public void TracingHookCreatesChildSpans(bool createSpans)
- {
-
- ICollection exportedItems = new Collection();
-
- var testSource = new ActivitySource("test-source", "1.0.0");
-
- var tracerProvider = OpenTelemetry.Sdk.CreateTracerProviderBuilder()
- .AddSource("test-source")
- .AddSource(TracingHook.ActivitySourceName)
- .SetResourceBuilder(
- ResourceBuilder.CreateDefault()
- .AddService(serviceName: "test-source", serviceVersion: "1.0.0"))
-
- .AddInMemoryExporter(exportedItems)
- .Build();
-
- var config = BasicConfig()
- .Hooks(Components.Hooks(new[] { TracingHook.Builder().CreateActivities(createSpans).Build() }))
- .Build();
-
-
- var rootActivity = testSource.StartActivity("root-activity");
- using (var client = new LdClient(config))
- {
- client.BoolVariation("feature-key", Context.New("foo"), true);
- client.StringVariation("feature-key", Context.New("foo"), "default");
- }
-
- rootActivity.Stop();
-
- var items = exportedItems.ToList();
-
- if (createSpans)
- {
- // If we're creating spans, since there is an existing root span, we should see the children parented
- // to it.
- Assert.Equal(3, items.Count);
- Assert.Equal("LdClient.BoolVariation", items[0].OperationName);
- Assert.Equal("LdClient.StringVariation", items[1].OperationName);
- Assert.Equal("root-activity", items[2].OperationName);
- Assert.Equal(items[2].SpanId, items[0].ParentSpanId);
- }
- else
- {
- // Otherwise, there should only be the root span that was already created.
- Assert.Single(items);
- Assert.Equal("root-activity", items[0].OperationName);
- Assert.Null(items[0].Parent);
- }
- }
-
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public void TracingHookIncludesVariant(bool includeVariant)
- {
- ICollection exportedItems = new Collection();
-
- var testSource = new ActivitySource("test-source", "1.0.0");
-
- var tracerProvider = OpenTelemetry.Sdk.CreateTracerProviderBuilder()
- .AddSource("test-source")
- .SetResourceBuilder(
- ResourceBuilder.CreateDefault()
- .AddService(serviceName: "test-source", serviceVersion: "1.0.0"))
-
- .AddInMemoryExporter(exportedItems)
- .Build();
-
- var config = BasicConfig()
- .Hooks(Components.Hooks(new[] { TracingHook.Builder().IncludeVariant(includeVariant).Build() }))
- .Build();
-
-
- var rootActivity = testSource.StartActivity("root-activity");
- using (var client = new LdClient(config))
- {
- client.BoolVariation("feature-key", Context.New("foo"), true);
- client.StringVariation("feature-key", Context.New("foo"), "default");
- }
-
- rootActivity.Stop();
-
- var items = exportedItems.ToList();
-
- Assert.Single(items);
- Assert.Equal("root-activity", items[0].OperationName);
-
- if (includeVariant)
- {
- // The idea is to check that the span has two events attached to it, and those events contain the feature
- // flag variants. It's awkward to check because we don't know the exact order of the events or those
- // events' tags.
- var events = items[0].Events;
- Assert.Single(events.Where(e =>
- e.Tags.Contains(new KeyValuePair("feature_flag.variant", "true"))));
- Assert.Single(events.Where(e =>
- e.Tags.Contains(new KeyValuePair("feature_flag.variant", "\"default\""))));
- }
- else
- {
- // If not including the variant, then we shouldn't see any variant tag on any events.
- Assert.All(items, i => i.Events.All(e => e.Tags.All(kvp => kvp.Key != "feature_flag.variant")));
- }
- }
}
}
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientListenersTest.cs b/pkgs/sdk/server/test/LdClientListenersTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientListenersTest.cs
rename to pkgs/sdk/server/test/LdClientListenersTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientOfflineTest.cs b/pkgs/sdk/server/test/LdClientOfflineTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientOfflineTest.cs
rename to pkgs/sdk/server/test/LdClientOfflineTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientServiceEndpointsTest.cs b/pkgs/sdk/server/test/LdClientServiceEndpointsTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientServiceEndpointsTest.cs
rename to pkgs/sdk/server/test/LdClientServiceEndpointsTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/LdClientTest.cs b/pkgs/sdk/server/test/LdClientTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/LdClientTest.cs
rename to pkgs/sdk/server/test/LdClientTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Migrations/BasicMigrationExecutor.cs b/pkgs/sdk/server/test/Migrations/BasicMigrationExecutor.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Migrations/BasicMigrationExecutor.cs
rename to pkgs/sdk/server/test/Migrations/BasicMigrationExecutor.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Migrations/MigrationBuilderTest.cs b/pkgs/sdk/server/test/Migrations/MigrationBuilderTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Migrations/MigrationBuilderTest.cs
rename to pkgs/sdk/server/test/Migrations/MigrationBuilderTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Migrations/MigrationOpTrackerTest.cs b/pkgs/sdk/server/test/Migrations/MigrationOpTrackerTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Migrations/MigrationOpTrackerTest.cs
rename to pkgs/sdk/server/test/Migrations/MigrationOpTrackerTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Migrations/MigrationStageTest.cs b/pkgs/sdk/server/test/Migrations/MigrationStageTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Migrations/MigrationStageTest.cs
rename to pkgs/sdk/server/test/Migrations/MigrationStageTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Migrations/MigrationTest.cs b/pkgs/sdk/server/test/Migrations/MigrationTest.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/Migrations/MigrationTest.cs
rename to pkgs/sdk/server/test/Migrations/MigrationTest.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/MockComponents.cs b/pkgs/sdk/server/test/MockComponents.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/MockComponents.cs
rename to pkgs/sdk/server/test/MockComponents.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/MockResponses.cs b/pkgs/sdk/server/test/MockResponses.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/MockResponses.cs
rename to pkgs/sdk/server/test/MockResponses.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/TestFiles/all-properties.json b/pkgs/sdk/server/test/TestFiles/all-properties.json
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/TestFiles/all-properties.json
rename to pkgs/sdk/server/test/TestFiles/all-properties.json
diff --git a/test/LaunchDarkly.ServerSdk.Tests/TestFiles/all-properties.yml b/pkgs/sdk/server/test/TestFiles/all-properties.yml
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/TestFiles/all-properties.yml
rename to pkgs/sdk/server/test/TestFiles/all-properties.yml
diff --git a/test/LaunchDarkly.ServerSdk.Tests/TestFiles/bad-file.txt b/pkgs/sdk/server/test/TestFiles/bad-file.txt
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/TestFiles/bad-file.txt
rename to pkgs/sdk/server/test/TestFiles/bad-file.txt
diff --git a/test/LaunchDarkly.ServerSdk.Tests/TestFiles/flag-only.json b/pkgs/sdk/server/test/TestFiles/flag-only.json
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/TestFiles/flag-only.json
rename to pkgs/sdk/server/test/TestFiles/flag-only.json
diff --git a/test/LaunchDarkly.ServerSdk.Tests/TestFiles/segment-only.json b/pkgs/sdk/server/test/TestFiles/segment-only.json
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/TestFiles/segment-only.json
rename to pkgs/sdk/server/test/TestFiles/segment-only.json
diff --git a/test/LaunchDarkly.ServerSdk.Tests/TestHttpUtils.cs b/pkgs/sdk/server/test/TestHttpUtils.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/TestHttpUtils.cs
rename to pkgs/sdk/server/test/TestHttpUtils.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/TestLoggingHelpers.cs b/pkgs/sdk/server/test/TestLoggingHelpers.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/TestLoggingHelpers.cs
rename to pkgs/sdk/server/test/TestLoggingHelpers.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/TestUtils.cs b/pkgs/sdk/server/test/TestUtils.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/TestUtils.cs
rename to pkgs/sdk/server/test/TestUtils.cs
diff --git a/test/LaunchDarkly.ServerSdk.Tests/VariationMethodsDesc.cs b/pkgs/sdk/server/test/VariationMethodsDesc.cs
similarity index 100%
rename from test/LaunchDarkly.ServerSdk.Tests/VariationMethodsDesc.cs
rename to pkgs/sdk/server/test/VariationMethodsDesc.cs
diff --git a/pkgs/telemetry/docfx.json b/pkgs/telemetry/docfx.json
new file mode 100644
index 00000000..293c9287
--- /dev/null
+++ b/pkgs/telemetry/docfx.json
@@ -0,0 +1,48 @@
+{
+ "metadata": [
+ {
+ "src": [
+ {
+ "src": "./src",
+ "files": [
+ "**/*.csproj",
+ "**/bin/**/**LaunchDarkly**.dll"
+ ]
+ }
+ ],
+ "dest": "./api",
+ "properties" : {
+ "Configuration": "Debug"
+ },
+ }
+ ],
+ "build": {
+ "content": [
+ {
+ "files": [
+ "**/*.{md,yml}"
+ ],
+ "exclude": [
+ "docs/**"
+ ]
+ }
+ ],
+ "resource": [
+ {
+ "files": [
+ "images/**"
+ ]
+ }
+ ],
+ "output": "docs",
+ "template": [
+ "default"
+ ],
+ "globalMetadata": {
+ "_appName": "LaunchDarkly Dotnet Server SDK Telemetry Integration",
+ "_appTitle": "LaunchDarkly Dotnet Server SDK Telemetry Integration",
+ "_enableSearch": true,
+ "pdf": false
+ }
+ }
+}
diff --git a/pkgs/telemetry/src/LaunchDarkly.ServerSdk.Telemetry.csproj b/pkgs/telemetry/src/LaunchDarkly.ServerSdk.Telemetry.csproj
new file mode 100644
index 00000000..06ed48f0
--- /dev/null
+++ b/pkgs/telemetry/src/LaunchDarkly.ServerSdk.Telemetry.csproj
@@ -0,0 +1,56 @@
+
+
+
+ 0.1.0
+
+
+ netstandard2.0;net462;net6.0
+ $(BUILDFRAMEWORKS)
+ portable
+ LaunchDarkly.ServerSdk.Telemetry
+ Library
+ LaunchDarkly.ServerSdk.Telemetry
+ LaunchDarkly.Sdk.Server.Telemetry
+ 7.3
+ LaunchDarkly Server-Side .NET SDK Telemetry Integrations
+ LaunchDarkly
+ LaunchDarkly
+ LaunchDarkly
+ Copyright 2024 LaunchDarkly
+ Apache-2.0
+ https://github.com/launchdarkly/dotnet-server-sdk
+ https://github.com/launchdarkly/dotnet-server-sdk
+ main
+ true
+ snupkg
+
+
+ true
+
+
+ 1570,1571,1572,1573,1574,1580,1581,1584,1591,1710,1711,1712
+
+
+
+
+
+
+
+
+
+
+
+
+ ../../LaunchDarkly.snk
+ true
+
+
+
+ bin\$(Configuration)\$(TargetFramework)\LaunchDarkly.ServerSdk.Telemetry.xml
+
+
diff --git a/src/LaunchDarkly.ServerSdk/Integrations/OpenTelemetry/TracingHook.cs b/pkgs/telemetry/src/Telemetry/TracingHook.cs
similarity index 99%
rename from src/LaunchDarkly.ServerSdk/Integrations/OpenTelemetry/TracingHook.cs
rename to pkgs/telemetry/src/Telemetry/TracingHook.cs
index a1270dc1..e459ef90 100644
--- a/src/LaunchDarkly.ServerSdk/Integrations/OpenTelemetry/TracingHook.cs
+++ b/pkgs/telemetry/src/Telemetry/TracingHook.cs
@@ -3,7 +3,7 @@
using LaunchDarkly.Sdk.Internal;
using LaunchDarkly.Sdk.Server.Hooks;
-namespace LaunchDarkly.Sdk.Server.Integrations.OpenTelemetry
+namespace LaunchDarkly.Sdk.Server.Telemetry
{
using SeriesData = ImmutableDictionary;
diff --git a/pkgs/telemetry/test/LaunchDarkly.ServerSdk.Telemetry.Tests.csproj b/pkgs/telemetry/test/LaunchDarkly.ServerSdk.Telemetry.Tests.csproj
new file mode 100644
index 00000000..d57fe06e
--- /dev/null
+++ b/pkgs/telemetry/test/LaunchDarkly.ServerSdk.Telemetry.Tests.csproj
@@ -0,0 +1,44 @@
+
+
+
+ netstandard2.0;net462;net6.0
+ $(TESTFRAMEWORK)
+ LaunchDarkly.ServerSdk.Telemetry.Tests
+ LaunchDarkly.ServerSdk.Telemetry.Tests
+ false
+ true
+ LaunchDarkly.Sdk.Server.Telemetry
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+
diff --git a/pkgs/telemetry/test/Telemetry/TracingHookTests.cs b/pkgs/telemetry/test/Telemetry/TracingHookTests.cs
new file mode 100644
index 00000000..db1d82e5
--- /dev/null
+++ b/pkgs/telemetry/test/Telemetry/TracingHookTests.cs
@@ -0,0 +1,211 @@
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Diagnostics;
+using System.Linq;
+using LaunchDarkly.Sdk.Server.Hooks;
+using OpenTelemetry.Resources;
+using OpenTelemetry.Trace;
+using Xunit;
+
+namespace LaunchDarkly.Sdk.Server.Telemetry
+{
+ public class TestTracingHook
+ {
+ [Fact]
+ public void CanConstructTracingHook()
+ {
+ var hook = TracingHook.Default();
+ Assert.NotNull(hook);
+ Assert.Equal("LaunchDarkly Tracing Hook", hook.Metadata.Name);
+ }
+
+ [Fact]
+ public void CanRetrieveActivitySourceName()
+ {
+ Assert.NotEmpty(TracingHook.ActivitySourceName);
+ }
+
+ [Theory]
+ [InlineData(false, false)]
+ [InlineData(false, true)]
+ [InlineData(true, false)]
+ [InlineData(true, true)]
+ public void ConfigurationOptionsDoNotThrowExceptions(bool includeVariant, bool createSpans)
+ {
+ var hook = TracingHook.Builder()
+ .IncludeVariant(includeVariant)
+ .CreateActivities(createSpans)
+ .Build();
+ var context = new EvaluationSeriesContext("foo", Context.New("bar"), LdValue.Null, "testMethod");
+ var data = hook.BeforeEvaluation(context, new SeriesDataBuilder().Build());
+ hook.AfterEvaluation(context, data, new EvaluationDetail());
+ }
+
+ [Fact]
+ public void CallingDisposeDoesNotThrowException()
+ {
+ var hook = TracingHook.Default();
+ hook.Dispose();
+ }
+
+ [Theory]
+ [InlineData(true)]
+ [InlineData(false)]
+ public void TracingHookCreatesRootSpans(bool createSpans)
+ {
+ ICollection exportedItems = new Collection();
+
+ var tracerProvider = OpenTelemetry.Sdk.CreateTracerProviderBuilder()
+ .AddSource(TracingHook.ActivitySourceName)
+ .AddInMemoryExporter(exportedItems)
+ .Build();
+
+ var hookUnderTest = TracingHook.Builder().CreateActivities(createSpans).Build();
+ var featureKey = "feature-key";
+ var context = Context.New("foo");
+
+ var evalContext1 = new EvaluationSeriesContext(featureKey, context, LdValue.Of(true), "LdClient.BoolVariation");
+ var data1 = hookUnderTest.BeforeEvaluation(evalContext1, new SeriesDataBuilder().Build());
+ hookUnderTest.AfterEvaluation(evalContext1, data1,
+ new EvaluationDetail(LdValue.Of(true), 0, EvaluationReason.FallthroughReason));
+
+ var evalContext2 = new EvaluationSeriesContext(featureKey, context, LdValue.Of("default"), "LdClient.StringVariation");
+ var data2 = hookUnderTest.BeforeEvaluation(evalContext2, new SeriesDataBuilder().Build());
+ hookUnderTest.AfterEvaluation(evalContext2, data2,
+ new EvaluationDetail(LdValue.Of("default"), 0, EvaluationReason.FallthroughReason));
+
+ var items = exportedItems.ToList();
+
+ if (createSpans)
+ {
+ // If we're creating spans, then we should have two Activities, with the correct operation names.
+ // To check that they are root spans, check that the parent is null.
+ Assert.Equal(2, items.Count);
+ Assert.Equal("LdClient.BoolVariation", items[0].OperationName);
+ Assert.Equal("LdClient.StringVariation", items[1].OperationName);
+ Assert.True(items.All(i => i.Parent == null));
+ }
+ else
+ {
+ // Otherwise, there should be no Activities.
+ Assert.Empty(exportedItems);
+ }
+ }
+
+
+ [Theory]
+ [InlineData(true)]
+ [InlineData(false)]
+ public void TracingHookCreatesChildSpans(bool createSpans)
+ {
+ ICollection exportedItems = new Collection();
+
+ var testSource = new ActivitySource("test-source", "1.0.0");
+
+ var tracerProvider = OpenTelemetry.Sdk.CreateTracerProviderBuilder()
+ .AddSource("test-source")
+ .AddSource(TracingHook.ActivitySourceName)
+ .SetResourceBuilder(
+ ResourceBuilder.CreateDefault()
+ .AddService(serviceName: "test-source", serviceVersion: "1.0.0"))
+ .AddInMemoryExporter(exportedItems)
+ .Build();
+
+ var hookUnderTest = TracingHook.Builder().CreateActivities(createSpans).Build();
+ var featureKey = "feature-key";
+ var context = Context.New("foo");
+
+ var rootActivity = testSource.StartActivity("root-activity");
+
+ var evalContext1 = new EvaluationSeriesContext(featureKey, context, LdValue.Of(true), "LdClient.BoolVariation");
+ var data1 = hookUnderTest.BeforeEvaluation(evalContext1, new SeriesDataBuilder().Build());
+ hookUnderTest.AfterEvaluation(evalContext1, data1,
+ new EvaluationDetail(LdValue.Of(true), 0, EvaluationReason.FallthroughReason));
+
+ var evalContext2 = new EvaluationSeriesContext(featureKey, context, LdValue.Of("default"), "LdClient.StringVariation");
+ var data2 = hookUnderTest.BeforeEvaluation(evalContext2, new SeriesDataBuilder().Build());
+ hookUnderTest.AfterEvaluation(evalContext2, data2,
+ new EvaluationDetail(LdValue.Of("default"), 0, EvaluationReason.FallthroughReason));
+
+ rootActivity.Stop();
+
+ var items = exportedItems.ToList();
+
+ if (createSpans)
+ {
+ // If we're creating spans, since there is an existing root span, we should see the children parented
+ // to it.
+ Assert.Equal(3, items.Count);
+ Assert.Equal("LdClient.BoolVariation", items[0].OperationName);
+ Assert.Equal("LdClient.StringVariation", items[1].OperationName);
+ Assert.Equal("root-activity", items[2].OperationName);
+ Assert.Equal(items[2].SpanId, items[0].ParentSpanId);
+ }
+ else
+ {
+ // Otherwise, there should only be the root span that was already created.
+ Assert.Single(items);
+ Assert.Equal("root-activity", items[0].OperationName);
+ Assert.Null(items[0].Parent);
+ }
+ }
+
+ [Theory]
+ [InlineData(true)]
+ [InlineData(false)]
+ public void TracingHookIncludesVariant(bool includeVariant)
+ {
+ ICollection exportedItems = new Collection();
+
+ var testSource = new ActivitySource("test-source", "1.0.0");
+
+ var tracerProvider = OpenTelemetry.Sdk.CreateTracerProviderBuilder()
+ .AddSource("test-source")
+ .SetResourceBuilder(
+ ResourceBuilder.CreateDefault()
+ .AddService(serviceName: "test-source", serviceVersion: "1.0.0"))
+ .AddInMemoryExporter(exportedItems)
+ .Build();
+
+ var hookUnderTest = TracingHook.Builder().IncludeVariant(includeVariant).Build();
+ var featureKey = "feature-key";
+ var context = Context.New("foo");
+
+ var rootActivity = testSource.StartActivity("root-activity");
+
+ var evalContext1 = new EvaluationSeriesContext(featureKey, context, LdValue.Of(true), "LdClient.BoolVariation");
+ var data1 = hookUnderTest.BeforeEvaluation(evalContext1, new SeriesDataBuilder().Build());
+ hookUnderTest.AfterEvaluation(evalContext1, data1,
+ new EvaluationDetail(LdValue.Of(true), 0, EvaluationReason.FallthroughReason));
+
+ var evalContext2 = new EvaluationSeriesContext(featureKey, context, LdValue.Of("default"), "LdClient.StringVariation");
+ var data2 = hookUnderTest.BeforeEvaluation(evalContext2, new SeriesDataBuilder().Build());
+ hookUnderTest.AfterEvaluation(evalContext2, data2,
+ new EvaluationDetail(LdValue.Of("default"), 0, EvaluationReason.FallthroughReason));
+
+ rootActivity.Stop();
+
+ var items = exportedItems.ToList();
+
+ Assert.Single(items);
+ Assert.Equal("root-activity", items[0].OperationName);
+
+ if (includeVariant)
+ {
+ // The idea is to check that the span has two events attached to it, and those events contain the feature
+ // flag variants. It's awkward to check because we don't know the exact order of the events or those
+ // events' tags.
+ var events = items[0].Events;
+ Assert.Single(events.Where(e =>
+ e.Tags.Contains(new KeyValuePair("feature_flag.variant", "true"))));
+ Assert.Single(events.Where(e =>
+ e.Tags.Contains(new KeyValuePair("feature_flag.variant", "\"default\""))));
+ }
+ else
+ {
+ // If not including the variant, then we shouldn't see any variant tag on any events.
+ Assert.All(items, i => i.Events.All(e => e.Tags.All(kvp => kvp.Key != "feature_flag.variant")));
+ }
+ }
+ }
+}
diff --git a/release-please-config.json b/release-please-config.json
index 20cbfc44..ff5d1c0a 100644
--- a/release-please-config.json
+++ b/release-please-config.json
@@ -1,14 +1,22 @@
{
"bootstrap-sha": "e3bc4e0889e63e488476cacf726b3b541d174b94",
+ "include-component-in-tag": true,
"packages": {
- ".": {
+ "pkgs/sdk/server": {
"release-type": "simple",
"bump-minor-pre-major": true,
- "versioning": "default",
"include-v-in-tag": false,
"include-component-in-tag": false,
"extra-files": [
- "src/LaunchDarkly.ServerSdk/LaunchDarkly.ServerSdk.csproj"
+ "pkgs/sdk/server/src/LaunchDarkly.ServerSdk.csproj"
+ ]
+ },
+ "pkgs/telemetry": {
+ "release-type": "simple",
+ "bump-minor-pre-major": true,
+ "include-v-in-tag": false,
+ "extra-files": [
+ "pkgs/sdk/server/src/LaunchDarkly.ServerSdk.Telemetry.csproj"
]
}
}
diff --git a/test/LaunchDarkly.ServerSdk.Tests/Integrations/OpenTelemetry/TracingHook.cs b/test/LaunchDarkly.ServerSdk.Tests/Integrations/OpenTelemetry/TracingHook.cs
deleted file mode 100644
index 7a275a29..00000000
--- a/test/LaunchDarkly.ServerSdk.Tests/Integrations/OpenTelemetry/TracingHook.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using LaunchDarkly.Sdk.Server.Hooks;
-using Xunit;
-
-namespace LaunchDarkly.Sdk.Server.Integrations.OpenTelemetry
-{
- public class TestTracingHook
- {
- [Fact]
- public void CanConstructTracingHook()
- {
- var hook = TracingHook.Default();
- Assert.NotNull(hook);
- Assert.Equal("LaunchDarkly Tracing Hook", hook.Metadata.Name);
- }
-
- [Fact]
- public void CanRetrieveActivitySourceName()
- {
- Assert.NotEmpty(TracingHook.ActivitySourceName);
- }
-
- [Theory]
- [InlineData(false, false)]
- [InlineData(false, true)]
- [InlineData(true, false)]
- [InlineData(true, true)]
- public void ConfigurationOptionsDoNotThrowExceptions(bool includeVariant, bool createSpans)
- {
- var hook = TracingHook.Builder()
- .IncludeVariant(includeVariant)
- .CreateActivities(createSpans)
- .Build();
- var context = new EvaluationSeriesContext("foo", Context.New("bar"), LdValue.Null, "testMethod");
- var data = hook.BeforeEvaluation(context, new SeriesDataBuilder().Build());
- hook.AfterEvaluation(context, data, new EvaluationDetail());
- }
-
- [Fact]
- public void CallingDisposeDoesNotThrowException()
- {
- var hook = TracingHook.Default();
- hook.Dispose();
- }
- }
-}