private static async Task RunFetchAllFilesAsyncTest(SymsAdapter adapter) { await SymsTestHelper.CleanDatabase(adapter, databaseName); string createDatabaseRequest = TestHelper.GetInputFileContent(testSubpath, testName, "createDatabase.json"); await adapter.WriteAsync($"{databaseName}/{databaseName}.manifest.cdm.json", createDatabaseRequest); string tableName1 = "symsTestTable1"; string createTableRequest1 = TestHelper.GetInputFileContent(testSubpath, testName, "createTable1Request.json"); await adapter.WriteAsync($"{databaseName}/{tableName1}.cdm.json", createTableRequest1); string tableName2 = "symsTestTable2"; string createTableRequest2 = TestHelper.GetInputFileContent(testSubpath, testName, "createTable2Request.json"); await adapter.WriteAsync($"{databaseName}/{tableName2}.cdm.json", createTableRequest2); IList <string> databases = await adapter.FetchAllFilesAsync("/"); Assert.IsTrue(string.Equals(DatabasesManifest, databases[0])); IList <string> entities = await adapter.FetchAllFilesAsync($"{databaseName}/"); Assert.IsTrue(entities.Count == 2); Assert.IsTrue(string.Equals($"{tableName1}.cdm.json", entities[0])); Assert.IsTrue(string.Equals($"{tableName2}.cdm.json", entities[1])); await SymsTestHelper.CleanDatabase(adapter, databaseName); }
public async Task TestSymsSavingAndFetchingDocument() { SymsTestHelper.CheckSymsEnvironment(); var symsAdapter = SymsTestHelper.CreateAdapterWithClientId(); await SymsTestHelper.CleanDatabase(symsAdapter, SymsTestHelper.DatabaseName); var testInputPath = TestHelper.GetInputFolderPath(testsSubpath, nameof(TestSymsSavingAndFetchingDocument)); var testActOutputPath = TestHelper.GetActualOutputFolderPath(testsSubpath, nameof(TestSymsSavingAndFetchingDocument)); var testExpOutputPath = TestHelper.GetExpectedOutputFolderPath(testsSubpath, nameof(TestSymsSavingAndFetchingDocument)); CdmCorpusDefinition corpus = new CdmCorpusDefinition(); corpus.SetEventCallback(new EventCallback { Invoke = CommonDataModelLoader.ConsoleStatusReport }, CdmStatusLevel.Warning); var adlsAdapter1 = SymsTestHelper.CreateADLSAdapterWithClientIdWithSharedKey(1); var adlsAdapter2 = SymsTestHelper.CreateADLSAdapterWithClientIdWithSharedKey(2); var localInputAdapter = new LocalAdapter(testInputPath); var localActOutputAdapter = new LocalAdapter(testActOutputPath); var localExpOutputAdapter = new LocalAdapter(testExpOutputPath); corpus.Storage.Mount("adls1", adlsAdapter1); corpus.Storage.Mount("adls2", adlsAdapter2); corpus.Storage.Mount("syms", symsAdapter); corpus.Storage.Mount("localInput", localInputAdapter); corpus.Storage.Mount("localActOutput", localActOutputAdapter); corpus.Storage.Mount("localExpOutput", localExpOutputAdapter); corpus.Storage.Unmount("cdm"); corpus.Storage.DefaultNamespace = "localInput"; var manifest = await corpus.FetchObjectAsync <CdmManifestDefinition>("default.manifest.cdm.json"); manifest.ManifestName = SymsTestHelper.DatabaseName; await TestSymsSaveManifest(manifest); await TestSymsFetchManifest(corpus, manifest, "default.manifest.cdm.json"); await TestSymsFetchDocument(corpus, manifest); var manifestModified = await corpus.FetchObjectAsync <CdmManifestDefinition>("defaultmodified.manifest.cdm.json"); manifestModified.ManifestName = SymsTestHelper.DatabaseName; manifestModified.Entities[0].LastFileModifiedTime = DateTimeOffset.UtcNow; await TestSymsSaveManifest(manifestModified); await TestSymsFetchManifest(corpus, manifestModified, "defaultmodified.manifest.cdm.json"); await TestSymsFetchDocument(corpus, manifestModified); var tasks = new List <Func <Task> > { TestSymsSmartADLSAdapterMountLogic, TestSymsSmartADLSAdapterMountLogic, TestSymsSmartADLSAdapterMountLogic, TestSymsSmartADLSAdapterMountLogic }; await Task.WhenAll(tasks.AsParallel().Select(async task => await task())); await SymsTestHelper.CleanDatabase(symsAdapter, SymsTestHelper.DatabaseName); }
private static async Task TestCreateorUpdateRelationshipTable(SymsAdapter adapter, string relationshipName, string request, string expectedResponse) { await adapter.WriteAsync($"{databaseName}/{databaseName}.manifest.cdm.json/relationships/{relationshipName}", request); string actualResponse = await adapter.ReadAsync($"{databaseName}/{databaseName}.manifest.cdm.json/relationships/{relationshipName}"); Assert.IsTrue(SymsTestHelper.JsonObjectShouldBeEqualAsExpected(expectedResponse, actualResponse)); }
private static async Task TestCreateorUpdateTable(SymsAdapter adapter, string tableName, string request, string expectedResponse) { // Create Table Test case await adapter.WriteAsync($"{databaseName}/{tableName}.cdm.json", request); string actualResponse = await adapter.ReadAsync($"{databaseName}/{tableName}.cdm.json"); Assert.IsTrue(SymsTestHelper.JsonObjectShouldBeEqualAsExpected(expectedResponse, actualResponse)); }
private static async Task RunWriteReadTest(SymsAdapter adapter) { await SymsTestHelper.CleanDatabase(adapter, SymsTestHelper.DatabaseName); string createDatabaseRequest = TestHelper.GetInputFileContent(testSubpath, testName, "createDatabase.json"); string getDatabaseExpectedResponse = TestHelper.GetExpectedOutputFileContent(testSubpath, testName, "expectedDatabaseResponse.json"); await TestCreateDatabase(adapter, createDatabaseRequest, getDatabaseExpectedResponse); string tableName = "symsTestTable"; string createTableRequest = TestHelper.GetInputFileContent(testSubpath, testName, "createTableRequest.json"); string getTableExpectedResponse = TestHelper.GetExpectedOutputFileContent(testSubpath, testName, "expectedTableResponse.json"); await TestCreateorUpdateTable(adapter, tableName, createTableRequest, getTableExpectedResponse); string updatedTableRequest = TestHelper.GetInputFileContent(testSubpath, testName, "updatedTableRequest.json"); string updatedTableExpectedResponse = TestHelper.GetExpectedOutputFileContent(testSubpath, testName, "expectedUpdatedTableResponse.json"); await TestCreateorUpdateTable(adapter, tableName, updatedTableRequest, updatedTableExpectedResponse); await TestRemoveTable(adapter, tableName); string relationshipTableName = "E1_E2_relationship"; string createRelationshipTableRequest = TestHelper.GetInputFileContent(testSubpath, testName, "createRelationship.json"); string getRelationshipTableExpectedResponse = TestHelper.GetExpectedOutputFileContent(testSubpath, testName, "expectedRelationshipResponse.json"); await TestCreateorUpdateRelationshipTable(adapter, relationshipTableName, createRelationshipTableRequest, getRelationshipTableExpectedResponse); string updatedRelationshipTableRequest = TestHelper.GetInputFileContent(testSubpath, testName, "updateRelationship.json"); string updatedRelationshipTableExpectedResponse = TestHelper.GetExpectedOutputFileContent(testSubpath, testName, "expectedUpdatedRelationshipResponse.json"); await TestCreateorUpdateRelationshipTable(adapter, relationshipTableName, updatedRelationshipTableRequest, updatedRelationshipTableExpectedResponse); await TestRemoveRelationship(adapter, relationshipTableName); await SymsTestHelper.CleanDatabase(adapter, databaseName); }
/// <summary> /// Test automatic mounting of adls adapter in syms if does not exist. /// </summary> internal async Task TestSymsSmartADLSAdapterMountLogic() { var symsAdapter = SymsTestHelper.CreateAdapterWithClientId(); var corpus = new CdmCorpusDefinition(); corpus.SetEventCallback(new EventCallback { Invoke = CommonDataModelLoader.ConsoleStatusReport }, CdmStatusLevel.Warning); corpus.Storage.Mount("syms", symsAdapter); var adlsAdapter1 = SymsTestHelper.CreateADLSAdapterWithClientIdWithSharedKey(1); var adlsAdapter2 = SymsTestHelper.CreateADLSAdapterWithClientIdWithSharedKey(2); int countAdapterCountBefore = corpus.Storage.NamespaceAdapters.Count; var manifestReadDatabases = await corpus.FetchObjectAsync <CdmManifestDefinition>($"syms:/databases.manifest.cdm.json"); var manifest = await corpus.FetchObjectAsync <CdmManifestDefinition>($"syms:/{manifestReadDatabases.SubManifests[0].ManifestName}/{manifestReadDatabases.SubManifests[0].ManifestName}.manifest.cdm.json", manifestReadDatabases, null, true); int countAdapterCountAfter = corpus.Storage.NamespaceAdapters.Count; Assert.AreEqual(countAdapterCountBefore + 2, countAdapterCountAfter); Assert.IsNotNull(corpus.Storage.AdapterPathToCorpusPath($"https://{adlsAdapter1.Hostname}{adlsAdapter1.Root}")); Assert.IsNotNull(corpus.Storage.AdapterPathToCorpusPath($"https://{adlsAdapter2.Hostname}{adlsAdapter2.Root}")); }
public async Task TestRunFetchAllFilesAsyncTestClientId() { SymsTestHelper.CheckSymsEnvironment(); await RunFetchAllFilesAsyncTest(SymsTestHelper.CreateAdapterWithClientId()); }
public void TestCreateAdapterPathClientId() { SymsTestHelper.CheckSymsEnvironment(); RunSymsCreateAdapterPathTest(SymsTestHelper.CreateAdapterWithClientId()); }
public async Task TestWriteReadClientId() { SymsTestHelper.CheckSymsEnvironment(); await RunWriteReadTest(SymsTestHelper.CreateAdapterWithClientId()); }