private static async Task RunSpecialCharactersTest(ADLSAdapter adapter) { var corpus = new CdmCorpusDefinition(); corpus.Storage.Mount("adls", adapter); corpus.Storage.DefaultNamespace = "adls"; try { var manifest = await corpus.FetchObjectAsync <CdmManifestDefinition>("default.manifest.cdm.json"); await manifest.FileStatusCheckAsync(); Assert.AreEqual(1, manifest.Entities.Count); Assert.AreEqual(2, manifest.Entities[0].DataPartitions.Count); Assert.AreEqual( "TestEntity-With=Special Characters/year=2020/TestEntity-partition-With=Special Characters-0.csv", manifest.Entities[0].DataPartitions[0].Location); Assert.AreEqual( "TestEntity-With=Special Characters/year=2020/TestEntity-partition-With=Special Characters-1.csv", manifest.Entities[0].DataPartitions[1].Location); } catch (Exception e) { Assert.Fail(e.Message); } }
public void TestLoadingAndSavingEndpointInConfig() { // Mount from config var config = TestHelper.GetInputFileContent(testSubpath, nameof(TestLoadingAndSavingEndpointInConfig), "config.json"); var corpus = new CdmCorpusDefinition(); corpus.Storage.MountFromConfig(config); Assert.Null(((ADLSAdapter)corpus.Storage.FetchAdapter("adlsadapter1")).Endpoint); Assert.AreEqual(AzureCloudEndpoint.AzurePublic, ((ADLSAdapter)corpus.Storage.FetchAdapter("adlsadapter2")).Endpoint); Assert.AreEqual(AzureCloudEndpoint.AzureChina, ((ADLSAdapter)corpus.Storage.FetchAdapter("adlsadapter3")).Endpoint); Assert.AreEqual(AzureCloudEndpoint.AzureGermany, ((ADLSAdapter)corpus.Storage.FetchAdapter("adlsadapter4")).Endpoint); Assert.AreEqual(AzureCloudEndpoint.AzureUsGovernment, ((ADLSAdapter)corpus.Storage.FetchAdapter("adlsadapter5")).Endpoint); try { var configSnakeCase = TestHelper.GetInputFileContent(testSubpath, nameof(TestLoadingAndSavingEndpointInConfig), "config-SnakeCase.json"); var corpusSnakeCase = new CdmCorpusDefinition(); corpusSnakeCase.Storage.MountFromConfig(configSnakeCase); Assert.Fail("Expected RuntimeException for config.json using endpoint value in snake case."); } catch (Exception ex) { String message = "Endpoint value should be a string of an enumeration value from the class AzureCloudEndpoint in Pascal case."; Assert.AreEqual(message, ex.Message); } }
private static async Task TestRemoveRelationship(SymsAdapter adapter, string relationshipName) { await adapter.WriteAsync($"{databaseName}/{databaseName}.manifest.cdm.json/relationships/{relationshipName}", null); try { await adapter.ReadAsync($"{databaseName}/{databaseName}.manifest.cdm.json/relationships/{relationshipName}"); Assert.Fail(); } catch (Exception e) { if (!e.Message.Contains("Not Found")) { throw; } } }
private static async Task TestRemoveTable(SymsAdapter adapter, string tableName) { await adapter.WriteAsync($"{databaseName}/{tableName}.cdm.json", null); try { await adapter.ReadAsync($"{databaseName}/{tableName}.cdm.json"); Assert.Fail(); } catch (Exception e) { if (!e.Message.Contains("Not Found")) { throw; } } }
public async Task TestManifestFoundationImport() { var corpus = TestHelper.GetLocalCorpus(testsSubpath, nameof(TestManifestFoundationImport)); var callback = new EventCallback { Invoke = (CdmStatusLevel statusLevel, string message1) => { if (statusLevel >= CdmStatusLevel.Warning) { Assert.Fail(message1); } } }; corpus.SetEventCallback(callback); var cdmManifest = await corpus.FetchObjectAsync <CdmManifestDefinition>(PersistenceLayer.ModelJsonExtension, corpus.Storage.FetchRootFolder("local")); }
public async Task TestManifestFoundationImport() { var corpus = TestHelper.GetLocalCorpus(testsSubpath, "TestManifestFoundationImport"); var callback = new EventCallback { Invoke = (CdmStatusLevel statusLevel, string message1) => { if (statusLevel >= CdmStatusLevel.Error) { Assert.Fail(message1); } } }; corpus.SetEventCallback(callback); var cdmManifest = await corpus.FetchObjectAsync <CdmManifestDefinition>("model.json", corpus.Storage.FetchRootFolder("local")); }
public async Task TestHttpsHostname() { AdlsTestHelper.CheckADLSEnvironment(); string filename = $"HTTPSWriteTest/{Environment.GetEnvironmentVariable("USERNAME")}_{Environment.GetEnvironmentVariable("COMPUTERNAME")}_CSharp.txt"; var adlsAdapter = AdlsTestHelper.CreateAdapterWithSharedKey(null, false, true); try { await adlsAdapter.ReadAsync(filename); await adlsAdapter.ComputeLastModifiedTimeAsync(filename); } catch (UriFormatException ex) { Assert.Fail(ex.Message); } catch (Exception) { } }
public void TestHostnameWithLeadingProtocol() { var host1 = "https://storageaccount.dfs.core.windows.net"; var adlsAdapter1 = new ADLSAdapter(host1, "root-without-slash", string.Empty); var adapterPath = "https://storageaccount.dfs.core.windows.net/root-without-slash/a/1.csv"; var corpusPath1 = adlsAdapter1.CreateCorpusPath(adapterPath); Assert.AreEqual("https://storageaccount.dfs.core.windows.net", adlsAdapter1.Hostname); Assert.AreEqual("/a/1.csv", corpusPath1); Assert.AreEqual(adapterPath, adlsAdapter1.CreateAdapterPath(corpusPath1)); var host2 = "HttPs://storageaccount.dfs.core.windows.net"; var adlsAdapter2 = new ADLSAdapter(host2, "root-without-slash", string.Empty); var corpusPath2 = adlsAdapter2.CreateCorpusPath(adapterPath); Assert.AreEqual("HttPs://storageaccount.dfs.core.windows.net", adlsAdapter2.Hostname); Assert.AreEqual("/a/1.csv", corpusPath2); Assert.AreEqual(adapterPath, adlsAdapter2.CreateAdapterPath(corpusPath2)); try { var host3 = "http://storageaccount.dfs.core.windows.net"; var adlsAdapter3 = new ADLSAdapter(host3, "root-without-slash", string.Empty); Assert.Fail("Expected Exception for using a http:// hostname."); } catch (Exception ex) { Assert.IsTrue(ex is ArgumentException); } try { var host4 = "https://bar:baz::]/foo/"; var adlsAdapter4 = new ADLSAdapter(host4, "root-without-slash", string.Empty); Assert.Fail("Expected Exception for using and invalid hostname."); } catch (Exception ex) { Assert.IsTrue(ex is ArgumentException); } }
public void TestConfigAndUpdateConfigWithoutAuthenticationDetails() { var adlsAdapter = new ADLSAdapter(); try { var config = new JObject { { "root", "root" }, { "hostname", "hostname" }, { "tenant", "tenant" }, { "clientId", "clientId" } }; adlsAdapter.UpdateConfig(config.ToString()); adlsAdapter.Secret = "secret"; adlsAdapter.SharedKey = "sharedKey"; } catch { Assert.Fail("AdlsAdapter initialized without secret shouldn't throw exception when updating config."); } }
public void TestConfigAndUpdateConfigWithoutAuthenticationDetails() { var config = new JObject { { "root", "root" }, { "endpoint", "endpoint" }, { "tenant", "tenant" }, { "clientId", "clientId" } }; try { var SymsAdapter1 = new SymsAdapter(); SymsAdapter1.UpdateConfig(config.ToString()); SymsAdapter1.ClientId = "clientId"; SymsAdapter1.Secret = "secret"; SymsAdapter1.TokenProvider = new FakeTokenProvider(); } catch { Assert.Fail("SymsAdapter initialized without secret shouldn't throw exception when updating config."); } try { var SymsAdapter2 = new SymsAdapter(); SymsAdapter2.ClientId = "clientId"; SymsAdapter2.Secret = "secret"; SymsAdapter2.TokenProvider = new FakeTokenProvider(); SymsAdapter2.UpdateConfig(config.ToString()); } catch { Assert.Fail("SymsAdapter initialized without secret shouldn't throw exception when updating config."); } }