private async Task <GrainState <TestStoreGrainState> > Test_PersistenceProvider_WriteRead(string grainTypeName, IStorageProvider store, GrainState <TestStoreGrainState> grainState = null, GrainId grainId = null) { GrainReference reference = this.fixture.InternalGrainFactory.GetGrain(grainId ?? GrainId.NewId()); if (grainState == null) { grainState = TestStoreGrainState.NewRandomState(); } Stopwatch sw = new Stopwatch(); sw.Start(); await store.WriteStateAsync(grainTypeName, reference, grainState); TimeSpan writeTime = sw.Elapsed; sw.Restart(); var storedGrainState = new GrainState <TestStoreGrainState> { State = new TestStoreGrainState() }; await store.ReadStateAsync(grainTypeName, reference, storedGrainState); TimeSpan readTime = sw.Elapsed; output.WriteLine("{0} - Write time = {1} Read time = {2}", store.GetType().FullName, writeTime, readTime); Assert.Equal(grainState.State.A, storedGrainState.State.A); Assert.Equal(grainState.State.B, storedGrainState.State.B); Assert.Equal(grainState.State.C, storedGrainState.State.C); return(storedGrainState); }
public async Task PersistenceProvider_Memory_FixedLatency_WriteRead() { const string testName = nameof(PersistenceProvider_Memory_FixedLatency_WriteRead); TimeSpan expectedLatency = TimeSpan.FromMilliseconds(200); IStorageProvider store = new MemoryStorageWithLatency(); providerCfgProps.Add("Latency", expectedLatency.ToString()); providerCfgProps.Add("MockCalls", "true"); var cfg = new ProviderConfiguration(providerCfgProps, null); await store.Init(testName, storageProviderManager, cfg); GrainReference reference = this.fixture.InternalGrainFactory.GetGrain(GrainId.NewId()); var state = TestStoreGrainState.NewRandomState(); Stopwatch sw = new Stopwatch(); sw.Start(); await store.WriteStateAsync(testName, reference, state); TimeSpan writeTime = sw.Elapsed; output.WriteLine("{0} - Write time = {1}", store.GetType().FullName, writeTime); Assert.True(writeTime >= expectedLatency, $"Write: Expected minimum latency = {expectedLatency} Actual = {writeTime}"); sw.Restart(); var storedState = new GrainState <TestStoreGrainState>(); await store.ReadStateAsync(testName, reference, storedState); TimeSpan readTime = sw.Elapsed; output.WriteLine("{0} - Read time = {1}", store.GetType().FullName, readTime); Assert.True(readTime >= expectedLatency, $"Read: Expected minimum latency = {expectedLatency} Actual = {readTime}"); }
public async Task AzureTableStorage_ConvertToFromStorageFormat(int?stringLength, string useJson) { var testName = string.Format("{0}({1} = {2}, {3} = {4})", nameof(AzureTableStorage_ConvertToFromStorageFormat), nameof(stringLength), stringLength == null ? "default" : stringLength.ToString(), nameof(useJson), useJson); var state = TestStoreGrainState.NewRandomState(stringLength); EnsureEnvironmentSupportsState(state); var storage = await InitAzureTableStorageProvider(useJson, testName); var initialState = state.State; var entity = new DynamicTableEntity(); storage.ConvertToStorageFormat(initialState, entity); var convertedState = (TestStoreGrainState)storage.ConvertFromStorageFormat(entity); Assert.NotNull(convertedState); Assert.Equal(initialState.A, convertedState.A); Assert.Equal(initialState.B, convertedState.B); Assert.Equal(initialState.C, convertedState.C); }
public async Task PersistenceProvider_Azure_ChangeWriteFormat(int?stringLength, string useJsonForFirstWrite, string useJsonForSecondWrite) { var testName = string.Format("{0}({1}={2},{3}={4},{5}={6})", nameof(PersistenceProvider_Azure_ChangeWriteFormat), nameof(stringLength), stringLength == null ? "default" : stringLength.ToString(), "json1stW", useJsonForFirstWrite, "json2ndW", useJsonForSecondWrite); var grainState = TestStoreGrainState.NewRandomState(stringLength); EnsureEnvironmentSupportsState(grainState); var grainId = GrainId.NewId(); var store = await InitAzureTableStorageProvider(useJsonForFirstWrite, testName); await Test_PersistenceProvider_WriteRead(testName, store, grainState, grainId); grainState = TestStoreGrainState.NewRandomState(stringLength); grainState.ETag = "*"; store = await InitAzureTableStorageProvider(useJsonForSecondWrite, testName); await Test_PersistenceProvider_WriteRead(testName, store, grainState, grainId); }
public async Task DynamoDBStorage_ConvertToFromStorageFormat(int?stringLength, bool useJson) { var testName = string.Format("{0}({1} = {2}, {3} = {4})", nameof(DynamoDBStorage_ConvertToFromStorageFormat), nameof(stringLength), stringLength == null ? "default" : stringLength.ToString(), nameof(useJson), useJson); var state = TestStoreGrainState.NewRandomState(stringLength); EnsureEnvironmentSupportsState(state); var storage = await InitDynamoDBGrainStorage(useJson); var initialState = state.State; var entity = new GrainStateRecord(); storage.ConvertToStorageFormat(initialState, entity); var convertedState = storage.ConvertFromStorageFormat <TestStoreGrainState>(entity); Assert.NotNull(convertedState); Assert.Equal(initialState.A, convertedState.A); Assert.Equal(initialState.B, convertedState.B); Assert.Equal(initialState.C, convertedState.C); }
public async Task PersistenceProvider_Memory_FixedLatency_WriteRead() { const string testName = nameof(PersistenceProvider_Memory_FixedLatency_WriteRead); TimeSpan expectedLatency = TimeSpan.FromMilliseconds(200); MemoryGrainStorageWithLatency store = new MemoryGrainStorageWithLatency(testName, new MemoryStorageWithLatencyOptions() { Latency = expectedLatency, MockCallsOnly = true }, NullLoggerFactory.Instance, this.providerRuntime.ServiceProvider.GetService <IGrainFactory>()); GrainReference reference = this.fixture.InternalGrainFactory.GetGrain(GrainId.NewId()); var state = TestStoreGrainState.NewRandomState(); Stopwatch sw = new Stopwatch(); sw.Start(); await store.WriteStateAsync(testName, reference, state); TimeSpan writeTime = sw.Elapsed; this.output.WriteLine("{0} - Write time = {1}", store.GetType().FullName, writeTime); Assert.True(writeTime >= expectedLatency, $"Write: Expected minimum latency = {expectedLatency} Actual = {writeTime}"); sw.Restart(); var storedState = new GrainState <TestStoreGrainState>(); await store.ReadStateAsync(testName, reference, storedState); TimeSpan readTime = sw.Elapsed; this.output.WriteLine("{0} - Read time = {1}", store.GetType().FullName, readTime); Assert.True(readTime >= expectedLatency, $"Read: Expected minimum latency = {expectedLatency} Actual = {readTime}"); }
public async Task PersistenceProvider_Azure_WriteClearRead(int?stringLength, string useJson) { var testName = string.Format("{0}({1} = {2}, {3} = {4})", nameof(PersistenceProvider_Azure_WriteClearRead), nameof(stringLength), stringLength == null ? "default" : stringLength.ToString(), nameof(useJson), useJson); var grainState = TestStoreGrainState.NewRandomState(stringLength); var store = await InitAzureTableStorageProvider(useJson, testName); await Test_PersistenceProvider_WriteClearRead(testName, store, grainState); }
public async Task PersistenceProvider_DynamoDB_WriteClearRead(int?stringLength, bool useJson) { var testName = string.Format("{0}({1} = {2}, {3} = {4})", nameof(PersistenceProvider_DynamoDB_WriteClearRead), nameof(stringLength), stringLength == null ? "default" : stringLength.ToString(), nameof(useJson), useJson); var grainState = TestStoreGrainState.NewRandomState(stringLength); EnsureEnvironmentSupportsState(grainState); var store = await InitDynamoDBGrainStorage(useJson); await Test_PersistenceProvider_WriteClearRead(testName, store, grainState); }
public async Task PersistenceProvider_Azure_ChangeReadFormat(int?stringLength, string useJsonForWrite, string useJsonForRead) { var testName = string.Format("{0}({1} = {2}, {3} = {4}, {5} = {6})", nameof(PersistenceProvider_Azure_ChangeReadFormat), nameof(stringLength), stringLength == null ? "default" : stringLength.ToString(), nameof(useJsonForWrite), useJsonForWrite, nameof(useJsonForRead), useJsonForRead); var grainState = TestStoreGrainState.NewRandomState(stringLength); var grainId = GrainId.NewId(); var store = await InitAzureTableStorageProvider(useJsonForWrite, testName); grainState = await Test_PersistenceProvider_WriteRead(testName, store, grainState, grainId); store = await InitAzureTableStorageProvider(useJsonForRead, testName); await Test_PersistenceProvider_Read(testName, store, grainState, grainId); }
public async Task PersistenceProvider_DynamoDB_ChangeReadFormat(int?stringLength, bool useJsonForWrite, bool useJsonForRead) { var testName = string.Format("{0}({1} = {2}, {3} = {4}, {5} = {6})", nameof(PersistenceProvider_DynamoDB_ChangeReadFormat), nameof(stringLength), stringLength == null ? "default" : stringLength.ToString(), nameof(useJsonForWrite), useJsonForWrite, nameof(useJsonForRead), useJsonForRead); var grainState = TestStoreGrainState.NewRandomState(stringLength); EnsureEnvironmentSupportsState(grainState); var grainId = GrainId.Create("test", Guid.NewGuid().ToString("N")); var store = await InitDynamoDBGrainStorage(useJsonForWrite); grainState = await Test_PersistenceProvider_WriteRead(testName, store, grainState, grainId); store = await InitDynamoDBGrainStorage(useJsonForRead); await Test_PersistenceProvider_Read(testName, store, grainState, grainId); }
private async Task <GrainState <TestStoreGrainState> > Test_PersistenceProvider_WriteClearRead(string grainTypeName, IGrainStorage store, GrainState <TestStoreGrainState> grainState = null, GrainId grainId = default) { GrainReference reference = (GrainReference)this.fixture.InternalGrainFactory.GetGrain(grainId.IsDefault ? (GrainId)LegacyGrainId.NewId() : grainId); if (grainState == null) { grainState = TestStoreGrainState.NewRandomState(); } Stopwatch sw = new Stopwatch(); sw.Start(); await store.WriteStateAsync(grainTypeName, reference, grainState); TimeSpan writeTime = sw.Elapsed; sw.Restart(); await store.ClearStateAsync(grainTypeName, reference, grainState); var storedGrainState = new GrainState <TestStoreGrainState> { State = new TestStoreGrainState() }; await store.ReadStateAsync(grainTypeName, reference, storedGrainState); TimeSpan readTime = sw.Elapsed; this.output.WriteLine("{0} - Write time = {1} Read time = {2}", store.GetType().FullName, writeTime, readTime); Assert.NotNull(storedGrainState.State); Assert.Equal(default(string), storedGrainState.State.A); Assert.Equal(default(int), storedGrainState.State.B); Assert.Equal(default(long), storedGrainState.State.C); return(storedGrainState); }