dajac commented on a change in pull request #9374:
URL: https://github.com/apache/kafka/pull/9374#discussion_r511746730
##########
File path:
clients/src/main/java/org/apache/kafka/clients/admin/KafkaAdminClient.java
##########
@@ -4166,10 +4167,22 @@ public DescribeUserScramCredentialsResult
describeUserScramCredentials(List<Stri
Call call = new Call("describeUserScramCredentials",
calcDeadlineMs(now, options.timeoutMs()),
new LeastLoadedNodeProvider()) {
@Override
- public DescribeUserScramCredentialsRequest.Builder
createRequest(int timeoutMs) {
- return new DescribeUserScramCredentialsRequest.Builder(
- new
DescribeUserScramCredentialsRequestData().setUsers(users.stream().map(user ->
- new
DescribeUserScramCredentialsRequestData.UserName().setName(user)).collect(Collectors.toList())));
+ public DescribeUserScramCredentialsRequest.Builder
createRequest(final int timeoutMs) {
+ final DescribeUserScramCredentialsRequestData requestData =
new DescribeUserScramCredentialsRequestData();
+
+ if (users != null && !users.isEmpty()) {
+ final List<UserName> userNames = new
ArrayList<>(users.size());
+
+ for (final String user : users) {
+ if (user != null) {
+ userNames.add(new UserName().setName(user));
+ }
+ }
+
+ requestData.setUsers(userNames);
Review comment:
nit: I suggest to continue using the stream api here. It keeps the code
smaller.
##########
File path:
clients/src/test/java/org/apache/kafka/clients/admin/KafkaAdminClientTest.java
##########
@@ -4505,50 +4505,57 @@ public void testDescribeUserScramCredentials() throws
Exception {
user0CredentialInfo1.setIterations(user0Iterations1);
final String user1Name = "user1";
- ScramMechanism user1ScramMechanism = ScramMechanism.SCRAM_SHA_256;
- int user1Iterations = 4096;
+ final ScramMechanism user1ScramMechanism =
ScramMechanism.SCRAM_SHA_256;
+ final int user1Iterations = 4096;
final CredentialInfo user1CredentialInfo = new CredentialInfo();
user1CredentialInfo.setMechanism(user1ScramMechanism.type());
user1CredentialInfo.setIterations(user1Iterations);
- DescribeUserScramCredentialsResponseData responseData = new
DescribeUserScramCredentialsResponseData();
+ final DescribeUserScramCredentialsResponseData responseData = new
DescribeUserScramCredentialsResponseData();
responseData.setResults(Arrays.asList(
new
DescribeUserScramCredentialsResponseData.DescribeUserScramCredentialsResult()
.setUser(user0Name)
.setCredentialInfos(Arrays.asList(user0CredentialInfo0, user0CredentialInfo1)),
new
DescribeUserScramCredentialsResponseData.DescribeUserScramCredentialsResult()
.setUser(user1Name)
-
.setCredentialInfos(Arrays.asList(user1CredentialInfo))));
-
- env.kafkaClient().prepareResponse(new
DescribeUserScramCredentialsResponse(responseData));
-
- List<String> usersRequestedList = asList(user0Name, user1Name);
- Set<String> usersRequestedSet =
usersRequestedList.stream().collect(Collectors.toSet());
- DescribeUserScramCredentialsResult result =
env.adminClient().describeUserScramCredentials(usersRequestedList);
- Map<String, UserScramCredentialsDescription> descriptionResults =
result.all().get();
- KafkaFuture<UserScramCredentialsDescription>
user0DescriptionFuture = result.description(user0Name);
- KafkaFuture<UserScramCredentialsDescription>
user1DescriptionFuture = result.description(user1Name);
- Set<String> usersDescribedFromUsersSet =
result.users().get().stream().collect(Collectors.toSet());
- assertEquals(usersRequestedSet, usersDescribedFromUsersSet);
- Set<String> usersDescribedFromMapKeySet =
descriptionResults.keySet();
- assertEquals(usersRequestedSet, usersDescribedFromMapKeySet);
-
- UserScramCredentialsDescription userScramCredentialsDescription0 =
descriptionResults.get(user0Name);
- assertEquals(user0Name, userScramCredentialsDescription0.name());
- assertEquals(2,
userScramCredentialsDescription0.credentialInfos().size());
- assertEquals(user0ScramMechanism0,
userScramCredentialsDescription0.credentialInfos().get(0).mechanism());
- assertEquals(user0Iterations0,
userScramCredentialsDescription0.credentialInfos().get(0).iterations());
- assertEquals(user0ScramMechanism1,
userScramCredentialsDescription0.credentialInfos().get(1).mechanism());
- assertEquals(user0Iterations1,
userScramCredentialsDescription0.credentialInfos().get(1).iterations());
- assertEquals(userScramCredentialsDescription0,
user0DescriptionFuture.get());
-
- UserScramCredentialsDescription userScramCredentialsDescription1 =
descriptionResults.get(user1Name);
- assertEquals(user1Name, userScramCredentialsDescription1.name());
- assertEquals(1,
userScramCredentialsDescription1.credentialInfos().size());
- assertEquals(user1ScramMechanism,
userScramCredentialsDescription1.credentialInfos().get(0).mechanism());
- assertEquals(user1Iterations,
userScramCredentialsDescription1.credentialInfos().get(0).iterations());
- assertEquals(userScramCredentialsDescription1,
user1DescriptionFuture.get());
+
.setCredentialInfos(singletonList(user1CredentialInfo))));
+ final DescribeUserScramCredentialsResponse response = new
DescribeUserScramCredentialsResponse(responseData);
+
+ final Set<String> usersRequestedSet = new HashSet<>();
+ usersRequestedSet.add(user0Name);
+ usersRequestedSet.add(user1Name);
+
+ for (final List<String> users : asList(null, new
ArrayList<String>(), asList(user0Name, null, user1Name))) {
Review comment:
Would it make sense to extract these into separate unit tests?
`testDescribeUserScramCredentials` could receive `users` as a argument such
that we could reuse the code logic.
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]