Esempio n. 1
0
 private static DataSource CreateTestSqlDataSource(
     HighWaterMarkChangeDetectionPolicy changeDetectionPolicy,
     DataDeletionDetectionPolicy deletionDetectionPolicy,
     bool useSqlVm = false)
 {
     // Test different overloads based on the given parameters.
     if (useSqlVm)
     {
         return(DataSource.SqlServerOnAzureVM(
                    name: SearchTestUtilities.GenerateName(),
                    sqlConnectionString: IndexerFixture.AzureSqlReadOnlyConnectionString,
                    tableOrViewName: IndexerFixture.AzureSqlTestTableName,
                    changeDetectionPolicy: changeDetectionPolicy,
                    deletionDetectionPolicy: deletionDetectionPolicy,
                    description: FakeDescription));
     }
     else
     {
         return(DataSource.AzureSql(
                    name: SearchTestUtilities.GenerateName(),
                    sqlConnectionString: IndexerFixture.AzureSqlReadOnlyConnectionString,
                    tableOrViewName: IndexerFixture.AzureSqlTestTableName,
                    changeDetectionPolicy: changeDetectionPolicy,
                    deletionDetectionPolicy: deletionDetectionPolicy,
                    description: FakeDescription));
     }
 }
Esempio n. 2
0
        private void TestAllDataSourceTypes(Action <SearchServiceClient, DataSource> testMethod)
        {
            SearchServiceClient searchClient = Data.GetSearchServiceClient();

            var deletionDetectionPolicy = new SoftDeleteColumnDeletionDetectionPolicy("isDeleted", "1");
            var changeDetectionPolicy   = new HighWaterMarkChangeDetectionPolicy("fakecolumn");

            // Test all combinations of data source types and configurations.

            // AzureSql
            testMethod(searchClient, CreateTestSqlDataSource());
            testMethod(searchClient, CreateTestSqlDataSource(deletionDetectionPolicy));
            testMethod(searchClient, CreateTestSqlDataSource(new SqlIntegratedChangeTrackingPolicy()));
            testMethod(searchClient, CreateTestSqlDataSource(changeDetectionPolicy, deletionDetectionPolicy));

            // SQL on VM
            testMethod(searchClient, CreateTestSqlDataSource(useSqlVm: true));
            testMethod(searchClient, CreateTestSqlDataSource(deletionDetectionPolicy, useSqlVm: true));
            testMethod(searchClient, CreateTestSqlDataSource(new SqlIntegratedChangeTrackingPolicy(), useSqlVm: true));
            testMethod(searchClient, CreateTestSqlDataSource(changeDetectionPolicy, deletionDetectionPolicy, useSqlVm: true));

            // CosmosDB
            testMethod(searchClient, CreateTestCosmosDbDataSource());
            testMethod(searchClient, CreateTestCosmosDbDataSource(useChangeDetection: true));
            testMethod(searchClient, CreateTestCosmosDbDataSource(deletionDetectionPolicy));
            testMethod(searchClient, CreateTestCosmosDbDataSource(deletionDetectionPolicy, useChangeDetection: true));

            // Azure Blob Storage
            testMethod(searchClient, CreateTestBlobDataSource());
            testMethod(searchClient, CreateTestBlobDataSource(deletionDetectionPolicy));

            // Azure Table Storage
            testMethod(searchClient, CreateTestTableDataSource());
            testMethod(searchClient, CreateTestTableDataSource(deletionDetectionPolicy));
        }
Esempio n. 3
0
        private static void AssertDataChangeDetectionPoliciesEqual(DataChangeDetectionPolicy expected, DataChangeDetectionPolicy actual)
        {
            if (expected == null)
            {
                Assert.Null(actual);
                return;
            }

            Assert.NotNull(actual);

            HighWaterMarkChangeDetectionPolicy expectedHwm = expected as HighWaterMarkChangeDetectionPolicy;

            if (expectedHwm != null)
            {
                HighWaterMarkChangeDetectionPolicy actualHwm = Assert.IsType <HighWaterMarkChangeDetectionPolicy>(actual);
                Assert.Equal(expectedHwm.HighWaterMarkColumnName, actualHwm.HighWaterMarkColumnName);
                return;
            }

            SqlIntegratedChangeTrackingPolicy expectedIct = expected as SqlIntegratedChangeTrackingPolicy;

            if (expectedIct != null)
            {
                Assert.IsType <SqlIntegratedChangeTrackingPolicy>(actual);
                return;
            }

            Assert.False(true, "Unexpected type of change detection policy (did you forget to add support for a new policy type to test code?):" + expected.GetType().Name);
        }
Esempio n. 4
0
 /// <summary>
 /// Creates a new DataSource to connect to a VM-hosted SQL Server database with change detection and deletion detection enabled.
 /// </summary>
 /// <param name="name">The name of the datasource.</param>
 /// <param name="sqlConnectionString">The connection string for the SQL Server database.</param>
 /// <param name="tableOrViewName">The name of the table or view from which to read rows.</param>
 /// <param name="changeDetectionPolicy">The change detection policy for the datasource. Note that only high watermark change detection is
 /// allowed for SQL Server when deletion detection is enabled.</param>
 /// <param name="deletionDetectionPolicy">The data deletion detection policy for the datasource.</param>
 /// <param name="description">Optional. Description of the datasource.</param>
 /// <returns>A new DataSource instance.</returns>
 public static DataSource SqlServerOnAzureVM(
     string name,
     string sqlConnectionString,
     string tableOrViewName,
     HighWaterMarkChangeDetectionPolicy changeDetectionPolicy,
     DataDeletionDetectionPolicy deletionDetectionPolicy,
     string description = null)
 {
     return(AzureSql(name, sqlConnectionString, tableOrViewName, changeDetectionPolicy, deletionDetectionPolicy, description));
 }
Esempio n. 5
0
        /// <summary>
        /// Creates a new DataSource to connect to an Azure SQL database with change detection and deletion detection enabled.
        /// </summary>
        /// <param name="name">The name of the datasource.</param>
        /// <param name="sqlConnectionString">The connection string for the Azure SQL database.</param>
        /// <param name="tableOrViewName">The name of the table or view from which to read rows.</param>
        /// <param name="changeDetectionPolicy">The change detection policy for the datasource. Note that only high watermark change detection is
        /// allowed for Azure SQL when deletion detection is enabled.</param>
        /// <param name="deletionDetectionPolicy">The data deletion detection policy for the datasource.</param>
        /// <param name="description">Optional. Description of the datasource.</param>
        /// <returns>A new DataSource instance.</returns>
        public static DataSource AzureSql(
            string name,
            string sqlConnectionString,
            string tableOrViewName,
            HighWaterMarkChangeDetectionPolicy changeDetectionPolicy,
            DataDeletionDetectionPolicy deletionDetectionPolicy,
            string description = null)
        {
            Throw.IfArgumentNull(changeDetectionPolicy, nameof(changeDetectionPolicy));
            Throw.IfArgumentNull(deletionDetectionPolicy, nameof(deletionDetectionPolicy));

            return(CreateSqlDataSource(name, sqlConnectionString, tableOrViewName, description, changeDetectionPolicy, deletionDetectionPolicy));
        }
        private async Task CreateDataSourceAsync()
        {
            var dataContainer             = new DataContainer("Package", null);
            var dataSourceCredentials     = new DataSourceCredentials(GetCosmosDBConnectionString());
            var dataChangeDetectionPolicy = new HighWaterMarkChangeDetectionPolicy("_ts");

            var dataDeletionDetectionPolicy = new SoftDeleteColumnDeletionDetectionPolicy("IsDeleted", true);

            var dataSource = new DataSource(
                DATASOURCE_NAME,
                DataSourceType.DocumentDb,
                dataSourceCredentials,
                dataContainer, "Strikes CosmosDB Settings",
                dataChangeDetectionPolicy,
                dataDeletionDetectionPolicy);

            await _client.DataSources.CreateOrUpdateWithHttpMessagesAsync(dataSource);
        }