surendralilhore commented on code in PR #7062:
URL: https://github.com/apache/hadoop/pull/7062#discussion_r1776440406
##########
hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azurebfs/ITestAzureBlobFileSystemE2E.java:
##########
@@ -259,6 +260,9 @@ public void testHttpReadTimeout() throws Exception {
public void testHttpTimeouts(int connectionTimeoutMs, int readTimeoutMs)
throws Exception {
+ // This is to make sure File System creation goes through before network
calls start failing.
+ assumeValidTestConfigPresent(this.getRawConfiguration(),
FS_AZURE_ACCOUNT_IS_HNS_ENABLED);
Review Comment:
Why this change is required?, is this failing without this change ?
##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/AbfsConfiguration.java:
##########
@@ -451,7 +451,9 @@ public AbfsConfiguration(final Configuration rawConfig,
String accountName)
}
public Trilean getIsNamespaceEnabledAccount() {
- return Trilean.getTrilean(isNamespaceEnabledAccount);
+ String isNamespaceEnabledAccountString
Review Comment:
Can you change the variable name to something simpler, like
isNamespaceEnabled?
##########
hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azurebfs/ITestGetNameSpaceEnabled.java:
##########
@@ -271,4 +275,52 @@ private void
ensureGetAclDetermineHnsStatusAccuratelyInternal(int statusCode,
Mockito.verify(mockClient, times(1))
.getAclStatus(anyString(), any(TracingContext.class));
}
+
+ @Test
+ public void testAccountSpecificConfig() throws Exception {
+ Configuration rawConfig = new Configuration();
+ rawConfig.addResource(TEST_CONFIGURATION_FILE_NAME);
+ rawConfig.unset(FS_AZURE_ACCOUNT_IS_HNS_ENABLED);
+ rawConfig.unset(accountProperty(FS_AZURE_ACCOUNT_IS_HNS_ENABLED,
+ this.getAccountName()));
+ String accountName1 = "account1.dfs.core.windows.net";
+ String accountName2 = "account2.dfs.core.windows.net";
+ String accountName3 = "account3.dfs.core.windows.net";
+ String defaultUri1 = this.getTestUrl().replace(this.getAccountName(),
accountName1);
+ String defaultUri2 = this.getTestUrl().replace(this.getAccountName(),
accountName2);
+ String defaultUri3 = this.getTestUrl().replace(this.getAccountName(),
accountName3);
+
+ // Set both account specific and account agnostic config for account 1
+ rawConfig.set(accountProperty(FS_AZURE_ACCOUNT_IS_HNS_ENABLED,
accountName1), FALSE_STR);
+ rawConfig.set(FS_AZURE_ACCOUNT_IS_HNS_ENABLED, TRUE_STR);
+ rawConfig.set(CommonConfigurationKeysPublic.FS_DEFAULT_NAME_KEY,
defaultUri1);
+ AzureBlobFileSystem fs1 = (AzureBlobFileSystem)
FileSystem.newInstance(rawConfig);
+ // Assert that account specific config takes precedence
+ Assertions.assertThat(getIsNamespaceEnabled(fs1)).describedAs(
+ "getIsNamespaceEnabled should return true when the "
+ + "account specific config is set as true").isFalse();
+
+ // Set only the account specific config for account 2
+ rawConfig.set(accountProperty(FS_AZURE_ACCOUNT_IS_HNS_ENABLED,
accountName2), FALSE_STR);
+ rawConfig.unset(FS_AZURE_ACCOUNT_IS_HNS_ENABLED);
+ rawConfig.set(CommonConfigurationKeysPublic.FS_DEFAULT_NAME_KEY,
defaultUri2);
+ AzureBlobFileSystem fs2 = (AzureBlobFileSystem)
FileSystem.newInstance(rawConfig);
+ // Assert that account specific config is enough.
+ Assertions.assertThat(getIsNamespaceEnabled(fs2)).describedAs(
+ "getIsNamespaceEnabled should return true when the "
+ + "account specific config is set as true").isFalse();
+
+ // Set only account agnostic config for account 3
+ rawConfig.set(FS_AZURE_ACCOUNT_IS_HNS_ENABLED, FALSE_STR);
+ rawConfig.unset(accountProperty(FS_AZURE_ACCOUNT_IS_HNS_ENABLED,
accountName3));
+ rawConfig.set(CommonConfigurationKeysPublic.FS_DEFAULT_NAME_KEY,
defaultUri3);
+ AzureBlobFileSystem fs3 = (AzureBlobFileSystem)
FileSystem.newInstance(rawConfig);
+ // Assert that account agnostic config is enough.
+ Assertions.assertThat(getIsNamespaceEnabled(fs3)).describedAs(
+ "getIsNamespaceEnabled should return true when the "
+ + "account specific config is not set").isFalse();
+ fs1.close();
+ fs2.close();
+ fs3.close();
Review Comment:
can you check one more condition where account level and common property is
not set? So it will call the *getAclStatus()* to check the namespace enabled or
not.
##########
hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azurebfs/ITestGetNameSpaceEnabled.java:
##########
@@ -271,4 +275,52 @@ private void
ensureGetAclDetermineHnsStatusAccuratelyInternal(int statusCode,
Mockito.verify(mockClient, times(1))
.getAclStatus(anyString(), any(TracingContext.class));
}
+
+ @Test
+ public void testAccountSpecificConfig() throws Exception {
+ Configuration rawConfig = new Configuration();
+ rawConfig.addResource(TEST_CONFIGURATION_FILE_NAME);
+ rawConfig.unset(FS_AZURE_ACCOUNT_IS_HNS_ENABLED);
+ rawConfig.unset(accountProperty(FS_AZURE_ACCOUNT_IS_HNS_ENABLED,
+ this.getAccountName()));
+ String accountName1 = "account1.dfs.core.windows.net";
+ String accountName2 = "account2.dfs.core.windows.net";
+ String accountName3 = "account3.dfs.core.windows.net";
+ String defaultUri1 = this.getTestUrl().replace(this.getAccountName(),
accountName1);
+ String defaultUri2 = this.getTestUrl().replace(this.getAccountName(),
accountName2);
+ String defaultUri3 = this.getTestUrl().replace(this.getAccountName(),
accountName3);
+
+ // Set both account specific and account agnostic config for account 1
+ rawConfig.set(accountProperty(FS_AZURE_ACCOUNT_IS_HNS_ENABLED,
accountName1), FALSE_STR);
+ rawConfig.set(FS_AZURE_ACCOUNT_IS_HNS_ENABLED, TRUE_STR);
+ rawConfig.set(CommonConfigurationKeysPublic.FS_DEFAULT_NAME_KEY,
defaultUri1);
+ AzureBlobFileSystem fs1 = (AzureBlobFileSystem)
FileSystem.newInstance(rawConfig);
Review Comment:
Can you use try-with-resources, so you don’t need to explicitly close the
filesystem object?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]