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(); - } - } -}