public async Task GetShouldReturnDatabasesFromCacheIfGetCalledTwice()
        {
            Dictionary <string, List <string> > subscriptionToDatabaseMap = CreateSubscriptonMap(2);

            AddDatabases(subscriptionToDatabaseMap, 3);

            AzureDatabaseDiscoveryProvider         databaseDiscoveryProvider = FakeDataFactory.CreateAzureDatabaseDiscoveryProvider(subscriptionToDatabaseMap);
            ServiceResponse <DatabaseInstanceInfo> response = await databaseDiscoveryProvider.GetDatabaseInstancesAsync(serverName : null, cancellationToken : new CancellationToken());

            List <DatabaseInstanceInfo> list = response.Data.ToList();

            ValidateResult(subscriptionToDatabaseMap, list);

            Dictionary <string, List <string> > subscriptionToDatabaseMap2 = CopySubscriptonMap(subscriptionToDatabaseMap);

            AddDatabases(subscriptionToDatabaseMap2, 5);
            AzureTestContext testContext = new AzureTestContext(subscriptionToDatabaseMap2);

            databaseDiscoveryProvider.AccountManager       = testContext.AzureAccountManager;
            databaseDiscoveryProvider.AzureResourceManager = testContext.AzureResourceManager;
            response = await databaseDiscoveryProvider.GetDatabaseInstancesAsync(serverName : null, cancellationToken : new CancellationToken());

            list = response.Data.ToList();
            //the provider should get the databases from cache for the list should match the first created data
            ValidateResult(subscriptionToDatabaseMap, list);
        }
        public async Task GetShouldReturnDatabasesEvenIfFailsForOneServer()
        {
            string        databaseName1            = "server1/db1";
            string        databaseName2            = "server1/db2";
            string        databaseName3            = "error/db3";
            string        databaseName4            = "server2/db4";
            List <string> databasesForSubscription = new List <string>()
            {
                databaseName1,
                databaseName2
            };

            Dictionary <string, List <string> > subscriptionToDatabaseMap = new Dictionary <string, List <string> >();

            subscriptionToDatabaseMap.Add(Guid.NewGuid().ToString(), databasesForSubscription);
            subscriptionToDatabaseMap.Add(Guid.NewGuid().ToString(), new List <string>()
            {
                databaseName3,
                databaseName4,
            });

            AzureDatabaseDiscoveryProvider         databaseDiscoveryProvider = FakeDataFactory.CreateAzureDatabaseDiscoveryProvider(subscriptionToDatabaseMap);
            ServiceResponse <DatabaseInstanceInfo> response = await databaseDiscoveryProvider.GetDatabaseInstancesAsync(serverName : null, cancellationToken : new CancellationToken());

            List <DatabaseInstanceInfo> list = response.Data.ToList();

            Assert.NotNull(list);
            Assert.True(list.Any(x => x.Name == "db1" && x.ServerInstanceInfo.Name == "server1"));
            Assert.True(list.Any(x => x.Name == "db2" && x.ServerInstanceInfo.Name == "server1"));
            Assert.True(list.Any(x => x.Name == "db4" && x.ServerInstanceInfo.Name == "server2"));
            Assert.False(list.Any(x => x.Name == "db3" && x.ServerInstanceInfo.Name == "error"));
            Assert.True(list.Count() == 3);
            Assert.NotNull(response.Errors);
            Assert.True(response.Errors.Count() == 1);
        }
Пример #3
0
        //public static ExtensionProperties CreateServiceProperties(IList<Lazy<IServerDiscoveryProvider, IExportableMetadata>> exports)
        //{
        //    FakeExportProvider fakeProvider = new FakeExportProvider(f => ((FakeInstanceExportDefinition)f).Instance);
        //    foreach (var export in exports)
        //    {
        //        var metadata = new Dictionary<string, object>()
        //        {
        //            {"ServerType", export.Metadata.ServerType},
        //            {"Category", export.Metadata.Category},
        //            {"Id", export.Metadata.Id },
        //            {"Priority", export.Metadata.Priority}
        //        };

        //        var definition = new FakeInstanceExportDefinition(typeof(IServerDiscoveryProvider), export.Value, metadata);
        //        fakeProvider.AddExportDefinitions(definition);
        //    }
        //    var trace = new Mock<ITrace>();
        //    trace.Setup(x => x.TraceEvent(It.IsAny<TraceEventType>(), It.IsAny<int>(), It.IsAny<string>(), It.IsAny<object[]>()))
        //         .Returns(true);

        //    var metadata2 = new Dictionary<string, object>()
        //        {
        //            {"Id", Guid.NewGuid().ToString()},
        //            {"Priority", 0}
        //        };
        //    var traceDefinition = new FakeInstanceExportDefinition(typeof(ITrace), trace, metadata2);
        //    fakeProvider.AddExportDefinitions(traceDefinition);

        //    ExtensionProperties serviceProperties = new ExtensionProperties(false);
        //    serviceProperties.Providers = new ExportProvider[] { fakeProvider };
        //    TypeCatalog typeCatalog = new TypeCatalog(typeof(FakeTrace));
        //    serviceProperties.AddCatalog(typeCatalog);
        //    return serviceProperties;
        //}

        internal static AzureDatabaseDiscoveryProvider CreateAzureDatabaseDiscoveryProvider(
            Dictionary <string, List <string> > subscriptionToDatabaseMap)
        {
            AzureTestContext testContext = new AzureTestContext(subscriptionToDatabaseMap);

            AzureDatabaseDiscoveryProvider databaseDiscoveryProvider = new AzureDatabaseDiscoveryProvider();

            databaseDiscoveryProvider.AccountManager       = testContext.AzureAccountManager;
            databaseDiscoveryProvider.AzureResourceManager = testContext.AzureResourceManager;

            return(databaseDiscoveryProvider);
        }
        public async Task GetShouldReturnEmptyGivenNotSubscriptionFound()
        {
            Dictionary <string, List <string> > subscriptionToDatabaseMap = new Dictionary <string, List <string> >();

            AzureDatabaseDiscoveryProvider databaseDiscoveryProvider =
                FakeDataFactory.CreateAzureDatabaseDiscoveryProvider(subscriptionToDatabaseMap);
            ServiceResponse <DatabaseInstanceInfo> response =
                await databaseDiscoveryProvider.GetDatabaseInstancesAsync(serverName : null, cancellationToken : new CancellationToken());

            Assert.NotNull(response);
            Assert.NotNull(response.Data);
            Assert.False(response.Data.Any());
        }