public async Task TestFetchingDocumentUnderneathAPathAndSavingDocuments() { var testName = nameof(TestFetchingDocumentUnderneathAPathAndSavingDocuments); var testInputPath = TestHelper.GetInputFolderPath(testsSubpath, testName); CdmCorpusDefinition corpus = new CdmCorpusDefinition(); corpus.SetEventCallback(new EventCallback { Invoke = CommonDataModelLoader.ConsoleStatusReport }, CdmStatusLevel.Warning); LocalAdapter localAdapter = new LocalAdapter(testInputPath); corpus.Storage.Mount("local", localAdapter); corpus.Storage.DefaultNamespace = "local"; corpus.Storage.Unmount("cdm"); var manifestFromModelJson = await corpus.FetchObjectAsync <CdmManifestDefinition>("sub-folder/model.json"); // Swap out the adapter for a fake one so that we aren't actually saving files. ConcurrentDictionary <string, string> allDocs = new ConcurrentDictionary <string, string>(); var testAdapter = new TestStorageAdapter(allDocs); corpus.Storage.SetAdapter("local", testAdapter); var newManifestFromModelJsonName = "model.json"; await manifestFromModelJson.SaveAsAsync(newManifestFromModelJsonName, true); // Verify that model.json persistence was called by comparing the saved document to the original model.json. var serializedManifest = allDocs[$"/sub-folder/{newManifestFromModelJsonName}"]; var expectedOutputManifest = TestHelper.GetExpectedOutputFileContent(testsSubpath, testName, manifestFromModelJson.Name); TestHelper.AssertSameObjectWasSerialized(expectedOutputManifest, serializedManifest); }
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); }
public void TestCreateAdapterPath() { var adapter = new LocalAdapter("C:/some/dir"); string pathWithLeadingSlash = adapter.CreateAdapterPath("/folder"); string pathWithoutLeadingSlash = adapter.CreateAdapterPath("folder"); Assert.AreEqual(pathWithLeadingSlash, "C:\\some\\dir\\folder"); Assert.AreEqual(pathWithLeadingSlash, pathWithoutLeadingSlash); }
public async Task TestFetchingAndSavingDocumentsWithCaseInsensitiveCheck() { var testName = "TestFetchingAndSavingDocumentsWithCaseInsensitiveCheck"; var testInputPath = TestHelper.GetInputFolderPath(testsSubpath, testName); CdmCorpusDefinition corpus = new CdmCorpusDefinition(); corpus.SetEventCallback(new EventCallback { Invoke = CommonDataModelLoader.ConsoleStatusReport }, CdmStatusLevel.Warning); LocalAdapter localAdapter = new LocalAdapter(testInputPath); corpus.Storage.Mount("local", localAdapter); corpus.Storage.DefaultNamespace = "local"; corpus.Storage.Unmount("cdm"); var manifest = await corpus.FetchObjectAsync <CdmManifestDefinition>("empty.Manifest.cdm.json"); var manifestFromModelJson = await corpus.FetchObjectAsync <CdmManifestDefinition>("Model.json"); var manifestFromOdi = await corpus.FetchObjectAsync <CdmManifestDefinition>("Odi.json"); // Swap out the adapter for a fake one so that we aren't actually saving files. Dictionary <string, string> allDocs = new Dictionary <string, string>(); var testAdapter = new TestStorageAdapter(allDocs); corpus.Storage.SetAdapter("local", testAdapter); var newManifestName = "empty.MANIFEST.CDM.json"; await manifest.SaveAsAsync(newManifestName, true); // Verify that manifest persistence was called by comparing the saved document to the original manifest. var serializedManifest = allDocs[$"/{newManifestName}"]; var expectedOutputManifest = TestHelper.GetExpectedOutputFileContent(testsSubpath, testName, manifest.Name); TestHelper.AssertSameObjectWasSerialized(expectedOutputManifest, serializedManifest); var newManifestFromModelJsonName = "MODEL.json"; await manifestFromModelJson.SaveAsAsync(newManifestFromModelJsonName, true); // Verify that model.json persistence was called by comparing the saved document to the original model.json. serializedManifest = allDocs[$"/{newManifestFromModelJsonName}"]; expectedOutputManifest = TestHelper.GetExpectedOutputFileContent(testsSubpath, testName, manifestFromModelJson.Name); TestHelper.AssertSameObjectWasSerialized(expectedOutputManifest, serializedManifest); var newManifestFromOdiName = "ODI.json"; await manifestFromOdi.SaveAsAsync(newManifestFromOdiName, true); // Verify that ODI persistence was called by comparing the saved document to the original ODI document. serializedManifest = allDocs[$"/{newManifestFromOdiName}"]; expectedOutputManifest = TestHelper.GetExpectedOutputFileContent(testsSubpath, testName, manifestFromOdi.Name); TestHelper.AssertSameObjectWasSerialized(expectedOutputManifest, serializedManifest); // TODO: We need to check the odi.json for linked documents too, will add it when Bug 232672 is fixed }
public void TestCreateAdapterPath() { var adapter = new LocalAdapter("C:/some/dir"); string pathWithLeadingSlash = adapter.CreateAdapterPath("/folder"); string pathWithoutLeadingSlash = adapter.CreateAdapterPath("folder"); Assert.AreEqual(pathWithLeadingSlash, "C:\\some\\dir\\folder"); Assert.AreEqual(pathWithLeadingSlash, pathWithoutLeadingSlash); // A null corpus path should return a null adapter path Assert.IsNull(adapter.CreateAdapterPath(null)); }
static void ConfigureLocalAdapter() { string root = GetParameterValueFromUser("root path", "LocalAdapter", "../../../../../../example-public-standards" /* this is just to show what the value should look like. */); // Create a local adapter with the parameter values given by the user. // Note: You can also configure an adapter for a network drive (file system on a different machine instead of local fs) // using the local adapter. Just point the local adapter root to the network drive. var adapter = new LocalAdapter(root); // List the newly configured adapter's properties. Console.WriteLine("\nLocalAdapter configured. Properties of this LocalAdapter are:"); Console.WriteLine(" Root: " + adapter.Root); Console.WriteLine(); }
public async Task TestPatternWithDifferentNamespace() { string testName = "TestPatternWithDifferentNamespace"; var cdmCorpus = TestHelper.GetLocalCorpus(testsSubpath, testName); LocalAdapter localAdapter = (LocalAdapter)cdmCorpus.Storage.FetchAdapter("local"); var localPath = localAdapter.FullRoot; cdmCorpus.Storage.Mount("other", new LocalAdapter(Path.Combine(localPath, "other"))); var cdmManifest = await cdmCorpus.FetchObjectAsync <CdmManifestDefinition>("local:/patternManifest.manifest.cdm.json"); await cdmManifest.FileStatusCheckAsync(); Assert.AreEqual(1, cdmManifest.Entities[0].DataPartitions.Count); }