diff --git a/.github/workflows/on-push-to-release-branch.yaml b/.github/workflows/on-push-to-release-branch.yaml index 48aa9790..170865b2 100644 --- a/.github/workflows/on-push-to-release-branch.yaml +++ b/.github/workflows/on-push-to-release-branch.yaml @@ -44,10 +44,7 @@ jobs: with: dotnet-version: "6.0.x" - - name: Build - run: make build - - - name: Pack and Publish + - name: Pack and Publish the standard SDK run: | set -x pushd src/Momento.Sdk @@ -57,6 +54,17 @@ jobs: dotnet pack -c Release -p:Version=${VERSION} dotnet nuget push ./bin/Release/Momento.Sdk.${VERSION}.nupkg --source https://api.nuget.org/v3/index.json --api-key=${{secrets.NUGET_API_KEY}} popd + + - name: Pack and Publish the web SDK + run: | + set -x + pushd src/Momento.Sdk + VERSION="${{ needs.release.outputs.version }}" + echo "version: ${VERSION}" + dotnet build -p:DefineConstants=USE_GRPC_WEB --configuration Release + dotnet pack -p:DefineConstants=USE_GRPC_WEB -c Release -p:Version=${VERSION} + dotnet nuget push ./bin/Release/Momento.Sdk.Web.${VERSION}.nupkg --source https://api.nuget.org/v3/index.json --api-key=${{secrets.NUGET_API_KEY}} + popd - name: Build for Unity run: | @@ -68,7 +76,7 @@ jobs: dotnet publish --configuration Release -f netstandard2.0 -p:DefineConstants=USE_GRPC_WEB -p:VersionPrefix=${VERSION} mkdir ./bin/Release/netstandard2.0/MomentoSdkUnity pushd ./bin/Release/netstandard2.0/publish/ - cp Google.Protobuf.dll Grpc.Core.Api.dll Grpc.Net.Client.dll Grpc.Net.Client.Web.dll Grpc.Net.Common.dll JWT.dll Microsoft.Bcl.AsyncInterfaces.dll Microsoft.Extensions.Logging.Abstractions.dll Momento.Protos.dll Momento.Sdk.dll Newtonsoft.Json.dll System.Diagnostics.DiagnosticSource.dll System.Runtime.CompilerServices.Unsafe.dll System.Threading.Channels.dll ../MomentoSdkUnity/ + cp Google.Protobuf.dll Grpc.Core.Api.dll Grpc.Net.Client.dll Grpc.Net.Client.Web.dll Grpc.Net.Common.dll JWT.dll Microsoft.Bcl.AsyncInterfaces.dll Microsoft.Extensions.Logging.Abstractions.dll Momento.Protos.dll Momento.Sdk.Web.dll Newtonsoft.Json.dll System.Diagnostics.DiagnosticSource.dll System.Runtime.CompilerServices.Unsafe.dll System.Threading.Channels.dll ../MomentoSdkUnity/ popd zip -jr MomentoSdkUnity.zip bin/Release/netstandard2.0/MomentoSdkUnity/ ZIP_FILE=./MomentoSdkUnity.zip diff --git a/Makefile b/Makefile index c7072aba..1fb3fa66 100644 --- a/Makefile +++ b/Makefile @@ -8,15 +8,15 @@ # - On other operating systems `make build` (test) we only runs the .NET 6.0 build (test) targets. # - We also have a GRPC_WEB flag that can be set to true to enable gRPC-Web support. # - The caller can run `make GRPC_WEB=true build` to enable gRPC-Web support. -# - We additionally group the integration tests by endpoint (cache, control, token). -# - This is to allow for more granular testing by endpoint. -# - Similar to `build` and `test` targets, we have `test-cache-endpoint`, `test-control-endpoint`, `test-token-endpoint`, and `test-storage-endpoint` targets +# - We additionally group the integration tests by service (auth, cache, topics). +# - This is to allow for more granular testing by service. +# - Similar to `build` and `test` targets, we have `test-cache-service`, `test-topics-service`, `test-auth-service` targets # that are conditionally run based on the operating system. .PHONY: all build build-dotnet6 build-dotnet-framework clean clean-build precommit restore test \ - test-dotnet6 test-dotnet6-integration test-dotnet6-cache-endpoint test-dotnet6-control-endpoint test-dotnet6-token-endpoint \ - test-dotnet-framework test-dotnet-framework-integration test-dotnet-framework-cache-endpoint test-dotnet-framework-control-endpoint test-dotnet-framework-token-endpoint \ - test-control-endpoint test-cache-endpoint test-token-endpoint test-storage-endpoint \ + test-dotnet6 test-dotnet6-integration test-dotnet6-cache-service test-dotnet6-topics-service test-dotnet6-auth-service \ + test-dotnet-framework test-dotnet-framework-integration test-dotnet-framework-cache-service test-dotnet-framework-topics-service test-dotnet-framework-auth-service \ + test-auth-service test-cache-service test-leaderboard-service test-storage-service test-topics-service \ run-examples help # Determine the operating system @@ -32,15 +32,15 @@ TEST_LOGGER_OPTIONS := --logger "console;verbosity=detailed" ifneq (,$(findstring NT,$(OS))) BUILD_TARGETS := build-dotnet6 build-dotnet-framework TEST_TARGETS := test-dotnet6 test-dotnet-framework - TEST_TARGETS_CACHE_ENDPOINT := test-dotnet6-cache-endpoint test-dotnet-framework-cache-endpoint - TEST_TARGETS_CONTROL_ENDPOINT := test-dotnet6-control-endpoint test-dotnet-framework-control-endpoint - TEST_TARGETS_TOKEN_ENDPOINT := test-dotnet6-token-endpoint test-dotnet-framework-token-endpoint + TEST_TARGETS_AUTH_SERVICE := test-dotnet6-auth-service test-dotnet-framework-auth-service + TEST_TARGETS_CACHE_SERVICE := test-dotnet6-cache-service test-dotnet-framework-cache-service + TEST_TARGETS_TOPICS_SERVICE := test-dotnet6-topics-service test-dotnet-framework-topics-service else BUILD_TARGETS := build-dotnet6 TEST_TARGETS := test-dotnet6 - TEST_TARGETS_CACHE_ENDPOINT := test-dotnet6-cache-endpoint - TEST_TARGETS_CONTROL_ENDPOINT := test-dotnet6-control-endpoint - TEST_TARGETS_TOKEN_ENDPOINT := test-dotnet6-token-endpoint + TEST_TARGETS_AUTH_SERVICE := test-dotnet6-auth-service + TEST_TARGETS_CACHE_SERVICE := test-dotnet6-cache-service + TEST_TARGETS_TOPICS_SERVICE := test-dotnet6-topics-service endif # Enable gRPC-Web if requested @@ -50,9 +50,9 @@ ifeq ($(GRPC_WEB), true) endif # Various test filters -CACHE_ENDPOINT_TESTS_FILTER := "FullyQualifiedName~Momento.Sdk.Tests.Integration.Cache.Data|FullyQualifiedName~Momento.Sdk.Tests.Integration.Topics.Data" -CONTROL_ENDPOINT_TESTS_FILTER := "FullyQualifiedName~Momento.Sdk.Tests.Integration.Cache.Control" -TOKEN_ENDPOINT_TESTS_FILTER := "FullyQualifiedName~Momento.Sdk.Tests.Integration.Auth" +CACHE_SERVICE_TESTS_FILTER := "FullyQualifiedName~Momento.Sdk.Tests.Integration.Cache" +TOPICS_SERVICE_TESTS_FILTER := "FullyQualifiedName~Momento.Sdk.Tests.Integration.Topics" +AUTH_SERVICE_TESTS_FILTER := "FullyQualifiedName~Momento.Sdk.Tests.Integration.Auth" ## Generate sync unit tests, format, lint, and test @@ -104,22 +104,22 @@ test-dotnet6: @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_VERSION} -## Run integration tests on the .NET 6.0 runtime against the cache endpoint -test-dotnet6-cache-endpoint: - @echo "Running integration tests on the .NET 6.0 runtime against the cache endpoint..." - @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_VERSION} --filter ${CACHE_ENDPOINT_TESTS_FILTER} +## Run integration tests on the .NET 6.0 runtime against the cache service +test-dotnet6-cache-service: + @echo "Running integration tests on the .NET 6.0 runtime against the cache service..." + @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_VERSION} --filter ${CACHE_SERVICE_TESTS_FILTER} -## Run integration tests on the .NET 6.0 runtime against the control endpoint -test-dotnet6-control-endpoint: - @echo "Running integration tests on the .NET 6.0 runtime against the control endpoint..." - @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_VERSION} --filter ${CONTROL_ENDPOINT_TESTS_FILTER} +## Run integration tests on the .NET 6.0 runtime against the topics service +test-dotnet6-topics-service: + @echo "Running integration tests on the .NET 6.0 runtime against the topics service..." + @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_VERSION} --filter ${TOPICS_SERVICE_TESTS_FILTER} -## Run integration tests on the .NET 6.0 runtime against the token endpoint -test-dotnet6-token-endpoint: - @echo "Running integration tests on the .NET 6.0 runtime against the token endpoint..." - @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_VERSION} --filter ${TOKEN_ENDPOINT_TESTS_FILTER} +## Run integration tests on the .NET 6.0 runtime against the auth service +test-dotnet6-auth-service: + @echo "Running integration tests on the .NET 6.0 runtime against the auth service..." + @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_VERSION} --filter ${AUTH_SERVICE_TESTS_FILTER} ## Run unit and integration tests on the .NET Framework runtime (Windows only) @@ -128,39 +128,44 @@ test-dotnet-framework: @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_FRAMEWORK_VERSION} -## Run integration tests on the .NET Framework runtime against the cache endpoint (Windows only) -test-dotnet-framework-cache-endpoint: - @echo "Running integration tests on the .NET Framework runtime against the cache endpoint..." - @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_FRAMEWORK_VERSION} --filter ${CACHE_ENDPOINT_TESTS_FILTER} +## Run integration tests on the .NET Framework runtime against the cache service (Windows only) +test-dotnet-framework-cache-service: + @echo "Running integration tests on the .NET Framework runtime against the cache service..." + @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_FRAMEWORK_VERSION} --filter ${CACHE_SERVICE_TESTS_FILTER} -## Run integration tests on the .NET Framework runtime against the control endpoint (Windows only) -test-dotnet-framework-control-endpoint: - @echo "Running integration tests on the .NET Framework runtime against the control endpoint..." - @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_FRAMEWORK_VERSION} --filter ${CONTROL_ENDPOINT_TESTS_FILTER} +## Run integration tests on the .NET Framework runtime against the topics service (Windows only) +test-dotnet-framework-topics-service: + @echo "Running integration tests on the .NET Framework runtime against the topics service..." + @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_FRAMEWORK_VERSION} --filter ${TOPICS_SERVICE_TESTS_FILTER} -## Run integration tests on the .NET Framework runtime against the token endpoint (Windows only) -test-dotnet-framework-token-endpoint: - @echo "Running integration tests on the .NET Framework runtime against the token endpoint..." - @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_FRAMEWORK_VERSION} --filter ${TOKEN_ENDPOINT_TESTS_FILTER} +## Run integration tests on the .NET Framework runtime against the auth service (Windows only) +test-dotnet-framework-auth-service: + @echo "Running integration tests on the .NET Framework runtime against the auth service..." + @dotnet test ${TEST_LOGGER_OPTIONS} -f ${DOTNET_FRAMEWORK_VERSION} --filter ${AUTH_SERVICE_TESTS_FILTER} -## Run cache endpoint tests -test-cache-endpoint: ${TEST_TARGETS_CACHE_ENDPOINT} +## Run auth service tests +test-auth-service: ${TEST_TARGETS_AUTH_SERVICE} -## Run control endpoint tests -test-control-endpoint: ${TEST_TARGETS_CONTROL_ENDPOINT} +## Run cache service tests +test-cache-service: ${TEST_TARGETS_CACHE_SERVICE} -## Run token endpoint tests -test-token-endpoint: ${TEST_TARGETS_TOKEN_ENDPOINT} +## Run leaderboard service tests +test-leaderboard-service: + @echo "Leaderboard client not implemented yet." -## Run storage endpoint tests -test-storage-endpoint: - @echo "Storage tests are not yet implemented." +## Run storage service tests +test-storage-service: + @echo "Storage client not implemented yet." + + +## Run topics service tests +test-topics-service: ${TEST_TARGETS_TOPICS_SERVICE} ## Run example applications and snippets diff --git a/src/Momento.Sdk/Momento.Sdk.csproj b/src/Momento.Sdk/Momento.Sdk.csproj index b0949add..14151f7e 100644 --- a/src/Momento.Sdk/Momento.Sdk.csproj +++ b/src/Momento.Sdk/Momento.Sdk.csproj @@ -13,16 +13,10 @@ true true - - Momento.Sdk + + Momento Momento Inc - - C# SDK for Momento, a serverless cache that automatically scales without any of the - operational overhead required by traditional caching solutions. - - Check out our SDK example here: https://github.com/momentohq/client-sdk-dotnet/tree/main/examples - caching, cache, serverless, key value, simple caching service, distributedcache Copyright (c) Momento Inc 2022 Apache-2.0 @@ -30,6 +24,32 @@ https://github.com/momentohq/client-sdk-dotnet + + + Momento.Sdk + Momento.Sdk + + C# SDK for Momento, a serverless cache that automatically scales without any of the + operational overhead required by traditional caching solutions. + + Check out our SDK example here: https://github.com/momentohq/client-sdk-dotnet/tree/main/examples + + + + + + Momento.Sdk.Web + Momento.Sdk.Web + + C# Web SDK for Momento, a serverless cache that automatically scales without any of the + operational overhead required by traditional caching solutions. + + This version of the SDK uses gRPC-Web and is for clients that don't have access to HTTP 2.0. + + Check out our SDK example here: https://github.com/momentohq/client-sdk-dotnet/tree/main/examples + + + @@ -60,7 +80,6 @@ - diff --git a/tests/Integration/Momento.Sdk.Tests/Cache/Control/CacheControlTest.cs b/tests/Integration/Momento.Sdk.Tests/Cache/CacheControlTest.cs similarity index 99% rename from tests/Integration/Momento.Sdk.Tests/Cache/Control/CacheControlTest.cs rename to tests/Integration/Momento.Sdk.Tests/Cache/CacheControlTest.cs index dc2db251..b0056567 100644 --- a/tests/Integration/Momento.Sdk.Tests/Cache/Control/CacheControlTest.cs +++ b/tests/Integration/Momento.Sdk.Tests/Cache/CacheControlTest.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using Momento.Sdk.Auth; -namespace Momento.Sdk.Tests.Integration.Cache.Control; +namespace Momento.Sdk.Tests.Integration.Cache; [Collection("CacheClient")] public class CacheControlTest : TestBase diff --git a/tests/Integration/Momento.Sdk.Tests/Cache/Data/CacheEagerConnectionTest.cs b/tests/Integration/Momento.Sdk.Tests/Cache/CacheEagerConnectionTest.cs similarity index 98% rename from tests/Integration/Momento.Sdk.Tests/Cache/Data/CacheEagerConnectionTest.cs rename to tests/Integration/Momento.Sdk.Tests/Cache/CacheEagerConnectionTest.cs index 3fec92e3..8b6ce3bf 100644 --- a/tests/Integration/Momento.Sdk.Tests/Cache/Data/CacheEagerConnectionTest.cs +++ b/tests/Integration/Momento.Sdk.Tests/Cache/CacheEagerConnectionTest.cs @@ -3,7 +3,7 @@ using Momento.Sdk.Config; using Momento.Sdk.Config.Transport; -namespace Momento.Sdk.Tests.Integration.Cache.Data; +namespace Momento.Sdk.Tests.Integration.Cache; public class CacheEagerConnectionTest { diff --git a/tests/Integration/Momento.Sdk.Tests/Cache/Data/CacheScalarTest.cs b/tests/Integration/Momento.Sdk.Tests/Cache/CacheScalarTest.cs similarity index 99% rename from tests/Integration/Momento.Sdk.Tests/Cache/Data/CacheScalarTest.cs rename to tests/Integration/Momento.Sdk.Tests/Cache/CacheScalarTest.cs index 03ee3569..5be58996 100644 --- a/tests/Integration/Momento.Sdk.Tests/Cache/Data/CacheScalarTest.cs +++ b/tests/Integration/Momento.Sdk.Tests/Cache/CacheScalarTest.cs @@ -4,13 +4,13 @@ using System.Threading.Tasks; using Momento.Sdk.Internal.ExtensionMethods; -namespace Momento.Sdk.Tests.Integration.Cache.Data; +namespace Momento.Sdk.Tests.Integration.Cache; [Collection("CacheClient")] -public class CacheDataTest : TestBase +public class CacheScalarTest : TestBase { // Test initialization - public CacheDataTest(CacheClientFixture fixture) : base(fixture) + public CacheScalarTest(CacheClientFixture fixture) : base(fixture) { } diff --git a/tests/Integration/Momento.Sdk.Tests/Cache/Data/DictionaryTest.cs b/tests/Integration/Momento.Sdk.Tests/Cache/DictionaryTest.cs similarity index 99% rename from tests/Integration/Momento.Sdk.Tests/Cache/Data/DictionaryTest.cs rename to tests/Integration/Momento.Sdk.Tests/Cache/DictionaryTest.cs index 83ead1e9..7d45cdf3 100644 --- a/tests/Integration/Momento.Sdk.Tests/Cache/Data/DictionaryTest.cs +++ b/tests/Integration/Momento.Sdk.Tests/Cache/DictionaryTest.cs @@ -3,7 +3,7 @@ using Momento.Sdk.Internal.ExtensionMethods; using Momento.Sdk.Requests; -namespace Momento.Sdk.Tests.Integration.Cache.Data; +namespace Momento.Sdk.Tests.Integration.Cache; [Collection("CacheClient")] public class DictionaryTest : TestBase diff --git a/tests/Integration/Momento.Sdk.Tests/Cache/Data/ListTest.cs b/tests/Integration/Momento.Sdk.Tests/Cache/ListTest.cs similarity index 99% rename from tests/Integration/Momento.Sdk.Tests/Cache/Data/ListTest.cs rename to tests/Integration/Momento.Sdk.Tests/Cache/ListTest.cs index 09125e9c..d797d95a 100644 --- a/tests/Integration/Momento.Sdk.Tests/Cache/Data/ListTest.cs +++ b/tests/Integration/Momento.Sdk.Tests/Cache/ListTest.cs @@ -6,7 +6,7 @@ using Momento.Sdk.Responses; using Momento.Sdk.Tests; -namespace Momento.Sdk.Tests.Integration.Cache.Data; +namespace Momento.Sdk.Tests.Integration.Cache; [Collection("CacheClient")] public class ListTest : TestBase diff --git a/tests/Integration/Momento.Sdk.Tests/Cache/Data/SetTest.cs b/tests/Integration/Momento.Sdk.Tests/Cache/SetTest.cs similarity index 99% rename from tests/Integration/Momento.Sdk.Tests/Cache/Data/SetTest.cs rename to tests/Integration/Momento.Sdk.Tests/Cache/SetTest.cs index 5d15f396..50e6ef4d 100644 --- a/tests/Integration/Momento.Sdk.Tests/Cache/Data/SetTest.cs +++ b/tests/Integration/Momento.Sdk.Tests/Cache/SetTest.cs @@ -6,7 +6,7 @@ using Momento.Sdk.Tests; using Xunit.Abstractions; -namespace Momento.Sdk.Tests.Integration.Cache.Data; +namespace Momento.Sdk.Tests.Integration.Cache; [Collection("CacheClient")] public class SetTest : TestBase diff --git a/tests/Integration/Momento.Sdk.Tests/Cache/Data/TtlTest.cs b/tests/Integration/Momento.Sdk.Tests/Cache/TtlTest.cs similarity index 99% rename from tests/Integration/Momento.Sdk.Tests/Cache/Data/TtlTest.cs rename to tests/Integration/Momento.Sdk.Tests/Cache/TtlTest.cs index d0ca1a0c..b0cfc9ec 100644 --- a/tests/Integration/Momento.Sdk.Tests/Cache/Data/TtlTest.cs +++ b/tests/Integration/Momento.Sdk.Tests/Cache/TtlTest.cs @@ -4,7 +4,7 @@ using System.Threading.Tasks; using Momento.Sdk.Internal.ExtensionMethods; -namespace Momento.Sdk.Tests.Integration.Cache.Data; +namespace Momento.Sdk.Tests.Integration.Cache; [Collection("CacheClient")] public class TtlTest : TestBase diff --git a/tests/Integration/Momento.Sdk.Tests/Topics/Data/TopicTest.cs b/tests/Integration/Momento.Sdk.Tests/Topics/TopicTest.cs similarity index 99% rename from tests/Integration/Momento.Sdk.Tests/Topics/Data/TopicTest.cs rename to tests/Integration/Momento.Sdk.Tests/Topics/TopicTest.cs index 6993ffaa..fe1bc0cf 100644 --- a/tests/Integration/Momento.Sdk.Tests/Topics/Data/TopicTest.cs +++ b/tests/Integration/Momento.Sdk.Tests/Topics/TopicTest.cs @@ -5,7 +5,7 @@ using System.Threading; using System.Threading.Tasks; -namespace Momento.Sdk.Tests.Integration.Topics.Data; +namespace Momento.Sdk.Tests.Integration.Topics; public class TopicTest : IClassFixture, IClassFixture {