private async Task <GrainState <TestStoreGrainState> > Test_PersistenceProvider_WriteRead(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();

            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.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 Task <string> CheckProviderType()
        {
            IGrainStorage grainStorage = this.GetGrainStorage(this.ServiceProvider);

            Assert.NotNull(grainStorage);
            return(Task.FromResult(grainStorage.GetType().FullName));
        }
Esempio n. 3
0
        private async Task Test_PersistenceProvider_Read(string grainTypeName, IGrainStorage store,
                                                         GrainState <TestStoreGrainState> grainState = null, GrainId grainId = default)
        {
            var reference = this.fixture.InternalGrainFactory.GetGrain(grainId.IsDefault ? (GrainId)LegacyGrainId.NewId() : grainId);

            if (grainState == null)
            {
                grainState = new GrainState <TestStoreGrainState>(new TestStoreGrainState());
            }
            var storedGrainState = new GrainState <TestStoreGrainState>(new TestStoreGrainState());

            Stopwatch sw = new Stopwatch();

            sw.Start();

            await store.ReadStateAsync(grainTypeName, reference, storedGrainState);

            TimeSpan readTime = sw.Elapsed;

            this.output.WriteLine("{0} - Read time = {1}", store.GetType().FullName, readTime);

            var storedState = storedGrainState.State;

            Assert.Equal(grainState.State.A, storedState.A);
            Assert.Equal(grainState.State.B, storedState.B);
            Assert.Equal(grainState.State.C, storedState.C);
        }
Esempio n. 4
0
        public StateStorageBridge(string name, GrainReference grainRef, IGrainStorage store, ILoggerFactory loggerFactory)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (grainRef == null)
            {
                throw new ArgumentNullException(nameof(grainRef));
            }
            if (store == null)
            {
                throw new ArgumentNullException(nameof(store));
            }
            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            this.logger     = loggerFactory.CreateLogger(store.GetType().FullName);
            this.name       = name;
            this.grainRef   = grainRef;
            this.store      = store;
            this.grainState = new GrainState <TState>(new TState());
        }