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)); } }
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)); }
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); }
/// <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)); }
/// <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); }