Skip to content

Commit 576e80b

Browse files
committed
addendum - addressing comments
1 parent 5e2fcb5 commit 576e80b

File tree

5 files changed

+145
-6
lines changed

5 files changed

+145
-6
lines changed

hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2716,4 +2716,72 @@ public void testConcurrentModificationDuringIteration() throws InterruptedExcept
27162716

27172717
assertFalse("ConcurrentModificationException occurred", exceptionOccurred.get());
27182718
}
2719+
2720+
@Test
2721+
public void testStringCollectionSplitByEquals() {
2722+
Configuration conf = new Configuration();
2723+
conf.set("custom_key", "");
2724+
Map<String, String> splitMap =
2725+
conf.getTrimmedStringCollectionSplitByEquals("custom_key");
2726+
Assertions
2727+
.assertThat(splitMap.size())
2728+
.describedAs("Map of key value pairs derived from config, split by equals(=) and comma(,)")
2729+
.isEqualTo(0);
2730+
2731+
splitMap = conf.getTrimmedStringCollectionSplitByEquals("not_present");
2732+
Assertions
2733+
.assertThat(splitMap.size())
2734+
.describedAs("Map of key value pairs derived from config, split by equals(=) and comma(,)")
2735+
.isEqualTo(0);
2736+
2737+
conf.set("custom_key", "element.first.key1 = element.first.val1");
2738+
splitMap = conf.getTrimmedStringCollectionSplitByEquals(
2739+
"custom_key");
2740+
Assertions
2741+
.assertThat(splitMap.size())
2742+
.describedAs("Map of key value pairs derived from config, split by equals(=) and comma(,)")
2743+
.isEqualTo(1);
2744+
Assertions
2745+
.assertThat(splitMap)
2746+
.describedAs("Map of key value pairs derived from config, split by equals(=) and comma(,)")
2747+
.containsEntry("element.first.key1", "element.first.val1");
2748+
2749+
conf.set("custom_key",
2750+
"element.xyz.key1 =element.abc.val1 , element.xyz.key2= element.abc.val2");
2751+
splitMap = conf.getTrimmedStringCollectionSplitByEquals(
2752+
"custom_key");
2753+
Assertions
2754+
.assertThat(splitMap.size())
2755+
.describedAs("Map of key value pairs derived from config, split by equals(=) and comma(,)")
2756+
.isEqualTo(2);
2757+
Assertions
2758+
.assertThat(splitMap)
2759+
.describedAs("Map of key value pairs derived from config, split by equals(=) and comma(,)")
2760+
.containsEntry("element.xyz.key1", "element.abc.val1")
2761+
.containsEntry("element.xyz.key2", "element.abc.val2");
2762+
2763+
conf.set("custom_key",
2764+
"\nelement.xyz.key1 =element.abc.val1 \n"
2765+
+ ", element.xyz.key2=element.abc.val2,element.xyz.key3=element.abc.val3"
2766+
+ " , element.xyz.key4 =element.abc.val4,element.xyz.key5= "
2767+
+ "element.abc.val5 ,\n \n \n "
2768+
+ " element.xyz.key6 = element.abc.val6 \n , \n"
2769+
+ "element.xyz.key7=element.abc.val7,\n");
2770+
splitMap = conf.getTrimmedStringCollectionSplitByEquals(
2771+
"custom_key");
2772+
Assertions
2773+
.assertThat(splitMap.size())
2774+
.describedAs("Map of key value pairs derived from config, split by equals(=) and comma(,)")
2775+
.isEqualTo(7);
2776+
Assertions
2777+
.assertThat(splitMap)
2778+
.describedAs("Map of key value pairs derived from config, split by equals(=) and comma(,)")
2779+
.containsEntry("element.xyz.key1", "element.abc.val1")
2780+
.containsEntry("element.xyz.key2", "element.abc.val2")
2781+
.containsEntry("element.xyz.key3", "element.abc.val3")
2782+
.containsEntry("element.xyz.key4", "element.abc.val4")
2783+
.containsEntry("element.xyz.key5", "element.abc.val5")
2784+
.containsEntry("element.xyz.key6", "element.abc.val6")
2785+
.containsEntry("element.xyz.key7", "element.abc.val7");
2786+
}
27192787
}

hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestStringUtils.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import org.apache.commons.lang3.time.FastDateFormat;
4545
import org.apache.hadoop.test.UnitTestcaseTimeLimit;
4646
import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;
47+
48+
import org.assertj.core.api.Assertions;
4749
import org.junit.Test;
4850

4951
public class TestStringUtils extends UnitTestcaseTimeLimit {
@@ -512,6 +514,67 @@ public void testCreateStartupShutdownMessage() {
512514
assertTrue(msg.startsWith("STARTUP_MSG:"));
513515
}
514516

517+
@Test
518+
public void testStringCollectionSplitByEquals() {
519+
Map<String, String> splitMap =
520+
StringUtils.getTrimmedStringCollectionSplitByEquals("");
521+
Assertions
522+
.assertThat(splitMap.size())
523+
.describedAs("Map of key value pairs split by equals(=) and comma(,)")
524+
.isEqualTo(0);
525+
526+
splitMap = StringUtils.getTrimmedStringCollectionSplitByEquals(null);
527+
Assertions
528+
.assertThat(splitMap.size())
529+
.describedAs("Map of key value pairs split by equals(=) and comma(,)")
530+
.isEqualTo(0);
531+
532+
splitMap = StringUtils.getTrimmedStringCollectionSplitByEquals(
533+
"element.first.key1 = element.first.val1");
534+
Assertions
535+
.assertThat(splitMap.size())
536+
.describedAs("Map of key value pairs split by equals(=) and comma(,)")
537+
.isEqualTo(1);
538+
Assertions
539+
.assertThat(splitMap)
540+
.describedAs("Map of key value pairs split by equals(=) and comma(,)")
541+
.containsEntry("element.first.key1", "element.first.val1");
542+
543+
splitMap = StringUtils.getTrimmedStringCollectionSplitByEquals(
544+
"element.xyz.key1 =element.abc.val1 , element.xyz.key2= element.abc.val2");
545+
Assertions
546+
.assertThat(splitMap.size())
547+
.describedAs("Map of key value pairs split by equals(=) and comma(,)")
548+
.isEqualTo(2);
549+
Assertions
550+
.assertThat(splitMap)
551+
.describedAs("Map of key value pairs split by equals(=) and comma(,)")
552+
.containsEntry("element.xyz.key1", "element.abc.val1")
553+
.containsEntry("element.xyz.key2", "element.abc.val2");
554+
555+
splitMap = StringUtils.getTrimmedStringCollectionSplitByEquals(
556+
"\nelement.xyz.key1 =element.abc.val1 \n"
557+
+ ", element.xyz.key2=element.abc.val2,element.xyz.key3=element.abc.val3"
558+
+ " , element.xyz.key4 =element.abc.val4,element.xyz.key5= "
559+
+ "element.abc.val5 ,\n \n \n "
560+
+ " element.xyz.key6 = element.abc.val6 \n , \n"
561+
+ "element.xyz.key7=element.abc.val7,\n");
562+
Assertions
563+
.assertThat(splitMap.size())
564+
.describedAs("Map of key value pairs split by equals(=) and comma(,)")
565+
.isEqualTo(7);
566+
Assertions
567+
.assertThat(splitMap)
568+
.describedAs("Map of key value pairs split by equals(=) and comma(,)")
569+
.containsEntry("element.xyz.key1", "element.abc.val1")
570+
.containsEntry("element.xyz.key2", "element.abc.val2")
571+
.containsEntry("element.xyz.key3", "element.abc.val3")
572+
.containsEntry("element.xyz.key4", "element.abc.val4")
573+
.containsEntry("element.xyz.key5", "element.abc.val5")
574+
.containsEntry("element.xyz.key6", "element.abc.val6")
575+
.containsEntry("element.xyz.key7", "element.abc.val7");
576+
}
577+
515578
// Benchmark for StringUtils split
516579
public static void main(String []args) {
517580
final String TO_SPLIT = "foo,bar,baz,blah,blah";

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/Constants.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@ private Constants() {
6868
public static final String AWS_CREDENTIALS_PROVIDER =
6969
"fs.s3a.aws.credentials.provider";
7070

71-
// aws credentials providers mapping with key/value pairs
71+
/**
72+
* AWS credentials providers mapping with key/value pairs.
73+
* Value = {@value}
74+
*/
7275
public static final String AWS_CREDENTIALS_PROVIDER_MAPPING =
7376
"fs.s3a.aws.credentials.provider.mapping";
7477

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/auth/CredentialProviderListFactory.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,9 @@ public static AWSCredentialProviderList buildAWSProviderList(
235235
LOG_REMAPPED_ENTRY.warn("Credentials option {} contains AWS v1 SDK entry {}; mapping to {}",
236236
key, className, mapped);
237237
className = mapped;
238-
}
239-
if (awsCredsMappedClasses != null && awsCredsMappedClasses.containsKey(className)) {
238+
} else if (awsCredsMappedClasses != null && awsCredsMappedClasses.containsKey(className)) {
240239
final String mapped = awsCredsMappedClasses.get(className);
241-
LOG_REMAPPED_ENTRY.info("Credential entry {} is mapped to {}", className, mapped);
240+
LOG_REMAPPED_ENTRY.debug("Credential entry {} is mapped to {}", className, mapped);
242241
className = mapped;
243242
}
244243
// now scan the forbidden list. doing this after any mappings ensures the v1 names

hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AAWSCredentialsProvider.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,10 @@ public void testAssumedRoleWithRemap() throws Throwable {
229229
ASSUMED_ROLE_CREDENTIALS_PROVIDER,
230230
new ArrayList<>(),
231231
new HashSet<>());
232-
assertEquals("Credentials not matching", 3, credentials.size());
232+
Assertions
233+
.assertThat(credentials.size())
234+
.describedAs("List of Credentials providers")
235+
.isEqualTo(3);
233236
}
234237

235238
@Test
@@ -253,7 +256,10 @@ public void testAwsCredentialProvidersWithRemap() throws Throwable {
253256
AWS_CREDENTIALS_PROVIDER,
254257
new ArrayList<>(),
255258
new HashSet<>());
256-
assertEquals("Credentials not matching", 4, credentials.size());
259+
Assertions
260+
.assertThat(credentials.size())
261+
.describedAs("List of Credentials providers")
262+
.isEqualTo(4);
257263
}
258264

259265
@Test

0 commit comments

Comments
 (0)