예제 #1
0
        public void AWSDynamoDBStore_ConvertToFromStorageFormat_GrainReference_List()
        {
            // NOTE: This test requires Silo to be running & Client init so that grain references can be resolved before serialization.
            Guid[]  ids    = { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid() };
            IUser[] grains = new IUser[3];
            grains[0] = GrainClient.GrainFactory.GetGrain <IUser>(ids[0]);
            grains[1] = GrainClient.GrainFactory.GetGrain <IUser>(ids[1]);
            grains[2] = GrainClient.GrainFactory.GetGrain <IUser>(ids[2]);

            var initialState = new GrainStateContainingGrainReferences();

            foreach (var g in grains)
            {
                initialState.GrainList.Add(g);
                initialState.GrainDict.Add(g.GetPrimaryKey().ToString(), g);
            }
            var entity  = new GrainStateRecord();
            var storage = new DynamoDBStorageProvider();

            storage.InitLogger(logger);
            storage.ConvertToStorageFormat(initialState, entity);
            var convertedState = (GrainStateContainingGrainReferences)storage.ConvertFromStorageFormat(entity);

            Assert.NotNull(convertedState);
            Assert.Equal(initialState.GrainList.Count, convertedState.GrainList.Count);  // "GrainList size"
            Assert.Equal(initialState.GrainDict.Count, convertedState.GrainDict.Count);  // "GrainDict size"
            for (int i = 0; i < grains.Length; i++)
            {
                string iStr = ids[i].ToString();
                Assert.Equal(initialState.GrainList[i], convertedState.GrainList[i]);       // "GrainList #{0}", i
                Assert.Equal(initialState.GrainDict[iStr], convertedState.GrainDict[iStr]); // "GrainDict #{0}", i
            }
            Assert.Equal(initialState.Grain, convertedState.Grain);                         // "Grain"
        }
        public DynamoDBStorageProviderTests()
        {
            if (!AWSTestConstants.IsDynamoDbAvailable)
            {
                throw new SkipException("Unable to connect to DynamoDB simulator");
            }

            var testEnvironment = new SerializationTestEnvironment();

            DefaultProviderRuntime = new StorageProviderManager(
                testEnvironment.GrainFactory,
                null,
                new ClientProviderRuntime(testEnvironment.GrainFactory, null));
            ((StorageProviderManager)DefaultProviderRuntime).LoadEmptyStorageProviders().WaitWithThrow(TestConstants.InitTimeout);
            testEnvironment.InitializeForTesting();

            var properties = new Dictionary <string, string>();

            properties["DataConnectionString"] = $"Service={AWSTestConstants.Service}";
            var config   = new ProviderConfiguration(properties, null);
            var provider = new DynamoDBStorageProvider();

            provider.Init("DynamoDBStorageProviderTests", DefaultProviderRuntime, config).Wait();
            PersistenceStorageTests = new CommonStorageTests(provider);
        }
예제 #3
0
        private async Task <DynamoDBStorageProvider> InitDynamoDBTableStorageProvider(IProviderRuntime runtime, string storageName)
        {
            Dictionary <string, string> providerCfgProps = new Dictionary <string, string>();
            var store = new DynamoDBStorageProvider();

            providerCfgProps["DataConnectionString"] = DataConnectionString;
            var cfg = new ProviderConfiguration(providerCfgProps, null);
            await store.Init(storageName, runtime, cfg);

            return(store);
        }
예제 #4
0
        public DynamoDBStorageProviderTests()
        {
            DefaultProviderRuntime = new StorageProviderManager(new GrainFactory(), null);
            ((StorageProviderManager)DefaultProviderRuntime).LoadEmptyStorageProviders(new ClientProviderRuntime(new GrainFactory(), null)).WaitWithThrow(TestConstants.InitTimeout);
            SerializationManager.InitializeForTesting();

            var properties = new Dictionary <string, string>();

            properties["DataConnectionString"] = $"Service={AWSTestConstants.Service}";
            var config   = new ProviderConfiguration(properties, null);
            var provider = new DynamoDBStorageProvider();

            provider.Init("DynamoDBStorageProviderTests", DefaultProviderRuntime, config).Wait();
            PersistenceStorageTests = new CommonStorageTests(provider);
        }
        public DynamoDBStorageProviderTests(TestEnvironmentFixture fixture)
        {
            if (!AWSTestConstants.IsDynamoDbAvailable)
            {
                throw new SkipException("Unable to connect to DynamoDB simulator");
            }

            DefaultProviderRuntime = new ClientProviderRuntime(fixture.InternalGrainFactory, fixture.Services, NullLoggerFactory.Instance);

            var properties = new Dictionary <string, string>();

            properties["DataConnectionString"] = $"Service={AWSTestConstants.Service}";
            var config   = new ProviderConfiguration(properties);
            var provider = new DynamoDBStorageProvider();

            provider.Init("DynamoDBStorageProviderTests", DefaultProviderRuntime, config).Wait();
            PersistenceStorageTests = new CommonStorageTests(fixture.InternalGrainFactory, provider);
        }
예제 #6
0
        public void AWSDynamoDBStore_ConvertToFromStorageFormat_GrainReference()
        {
            // NOTE: This test requires Silo to be running & Client init so that grain references can be resolved before serialization.
            Guid  id    = Guid.NewGuid();
            IUser grain = GrainClient.GrainFactory.GetGrain <IUser>(id);

            var initialState = new GrainStateContainingGrainReferences {
                Grain = grain
            };
            var entity  = new GrainStateRecord();
            var storage = new DynamoDBStorageProvider();

            storage.InitLogger(logger);
            storage.ConvertToStorageFormat(initialState, entity);
            var convertedState = new GrainStateContainingGrainReferences();

            convertedState = (GrainStateContainingGrainReferences)storage.ConvertFromStorageFormat(entity);
            Assert.NotNull(convertedState);                         // Converted state
            Assert.Equal(initialState.Grain, convertedState.Grain); // "Grain"
        }