Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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));
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        /// <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}"));
        }
Exemple #7
0
 public async Task TestRunFetchAllFilesAsyncTestClientId()
 {
     SymsTestHelper.CheckSymsEnvironment();
     await RunFetchAllFilesAsyncTest(SymsTestHelper.CreateAdapterWithClientId());
 }
Exemple #8
0
 public void TestCreateAdapterPathClientId()
 {
     SymsTestHelper.CheckSymsEnvironment();
     RunSymsCreateAdapterPathTest(SymsTestHelper.CreateAdapterWithClientId());
 }
Exemple #9
0
 public async Task TestWriteReadClientId()
 {
     SymsTestHelper.CheckSymsEnvironment();
     await RunWriteReadTest(SymsTestHelper.CreateAdapterWithClientId());
 }