// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System.Threading; using System.Threading.Tasks; using Orleans; using Orleans.TestingHost; using Xunit; namespace Squidex.Infrastructure.Orleans { [Trait("Category", "Dependencies")] public class AsyncLocalTests { public interface IAsyncLocalGrain : IGrainWithStringKey { public Task GetValueAsync(); } public class AsyncLocalGrain : Grain, IAsyncLocalGrain { private readonly AsyncLocal temp = new AsyncLocal(); public Task GetValueAsync() { temp.Value++; return Task.FromResult(temp.Value); } } [Fact] public async Task Should_use_async_local() { var cluster = new TestClusterBuilder(1) .Build(); await cluster.DeployAsync(); var grain = cluster.GrainFactory.GetGrain(SingleGrain.Id); var result1 = await grain.GetValueAsync(); var result2 = await grain.GetValueAsync(); Assert.Equal(1, result1); Assert.Equal(1, result2); } } }