This is an automated email from the ASF dual-hosted git repository.
chia7712 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new ec3c319c350 MINOR: Rewrite unchecked operations in Mock API (#19071)
ec3c319c350 is described below
commit ec3c319c35026cb641f9e2952361bf36f7cc01bb
Author: ClarkChen <[email protected]>
AuthorDate: Tue Mar 18 00:47:34 2025 +0800
MINOR: Rewrite unchecked operations in Mock API (#19071)
We encountered unchecked or unsafe operations in
`GroupMetadataManagerTest.java`, `KTableImplTest.java`, and
`ConfigCommandIntegrationTest.java`.
* Rewrite getArgument of invocation in InvocationOnMock API because the
implementation of InvocationOnMock discards type anyway in in
`GroupMetadataManagerTest.java`.
* Remove unchecked annotations for using mock API without variable
assignment in `KTableImplTest.java`.
<img width="1422" alt="Screenshot 2025-03-02 at 8 50 55 AM"
src="https://github.com/user-attachments/assets/10ff1799-ebaa-499c-9acd-ca3b30484e6d"
/>
* Follow-up: https://github.com/mockito/mockito/issues/1609
Update on March 2.
* Fix unchecked cast for KTableImpl in `KTableImplTest.java`.
<img width="1259" alt="Screenshot 2025-03-02 at 5 17 47 PM"
src="https://github.com/user-attachments/assets/a5ffa3d7-4897-43ee-9b5f-26337e2560c5"
/>
Update on March 10.
* Use anyMap instead any for unchecked map type issues.
<img width="1691" alt="Screenshot 2025-03-10 at 9 36 38 AM"
src="https://github.com/user-attachments/assets/9aabc595-e7ba-4e04-81f6-f238d42af5a6"
/>
Pass all testing.
<img width="946" alt="Screenshot 2025-03-10 at 10 10 56 AM"
src="https://github.com/user-attachments/assets/793f67ea-09dc-44af-9d6c-de15531e9e72"
/>
Reviewers: TengYao Chi <[email protected]>, Ken Huang
<[email protected]>, Chia-Ping Tsai <[email protected]>
---
.../group/GroupMetadataManagerTest.java | 2 +-
.../streams/kstream/internals/KTableImplTest.java | 41 +++++++---------------
.../kafka/tools/ConfigCommandIntegrationTest.java | 5 +--
3 files changed, 17 insertions(+), 31 deletions(-)
diff --git
a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTest.java
b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTest.java
index 6df8e237933..ef638f011f7 100644
---
a/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTest.java
+++
b/group-coordinator/src/test/java/org/apache/kafka/coordinator/group/GroupMetadataManagerTest.java
@@ -17017,7 +17017,7 @@ public class GroupMetadataManagerTest {
acls.put(fooTopicName, AuthorizationResult.ALLOWED);
acls.put(barTopicName, AuthorizationResult.DENIED);
when(authorizer.authorize(any(), any())).thenAnswer(invocation -> {
- List<Action> actions = invocation.getArgument(1, List.class);
+ List<Action> actions = invocation.getArgument(1);
return actions.stream()
.map(action ->
acls.getOrDefault(action.resourcePattern().name(), AuthorizationResult.DENIED))
.collect(Collectors.toList());
diff --git
a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableImplTest.java
b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableImplTest.java
index ab37fa6c9d3..2f6f29fdbda 100644
---
a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableImplTest.java
+++
b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/KTableImplTest.java
@@ -68,6 +68,7 @@ import static java.util.Arrays.asList;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -352,12 +353,10 @@ public class KTableImplTest {
final String topic1 = "topic1";
final String topic2 = "topic2";
- final KTableImpl<String, String, String> table1 =
- (KTableImpl<String, String, String>) builder.table(topic1,
consumed);
+ final var table1 = builder.table(topic1, consumed);
builder.table(topic2, consumed);
- final KTableImpl<String, String, Integer> table1Mapped =
- (KTableImpl<String, String, Integer>) table1.mapValues(s ->
Integer.valueOf(s));
+ final var table1Mapped = table1.mapValues(s -> Integer.valueOf(s));
table1Mapped.filter((key, value) -> (value % 2) == 0);
try (final TopologyTestDriver driver = new
TopologyTestDriver(builder.build(), props)) {
@@ -371,15 +370,11 @@ public class KTableImplTest {
final String topic1 = "topic1";
final String topic2 = "topic2";
- final KTableImpl<String, String, String> table1 =
- (KTableImpl<String, String, String>) builder.table(topic1,
consumed);
- final KTableImpl<String, String, String> table2 =
- (KTableImpl<String, String, String>) builder.table(topic2,
consumed);
+ final var table1 = builder.table(topic1, consumed);
+ final var table2 = builder.table(topic2, consumed);
- final KTableImpl<String, String, Integer> table1Mapped =
- (KTableImpl<String, String, Integer>) table1.mapValues(s ->
Integer.valueOf(s));
- final KTableImpl<String, Integer, Integer> table1MappedFiltered =
- (KTableImpl<String, Integer, Integer>) table1Mapped.filter((key,
value) -> (value % 2) == 0);
+ final var table1Mapped = table1.mapValues(s -> Integer.valueOf(s));
+ final var table1MappedFiltered = table1Mapped.filter((key, value) ->
(value % 2) == 0);
table2.join(table1MappedFiltered, (v1, v2) -> v1 + v2);
try (final TopologyTestDriver driver = new
TopologyTestDriver(builder.build(), props)) {
@@ -391,9 +386,7 @@ public class KTableImplTest {
public void
shouldNotEnableSendingOldValuesIfNotMaterializedAlreadyAndNotForcedToMaterialize()
{
final StreamsBuilder builder = new StreamsBuilder();
- final KTableImpl<String, String, String> table =
- (KTableImpl<String, String, String>) builder.table("topic1",
consumed);
-
+ final var table = assertInstanceOf(KTableImpl.class,
builder.table("topic1", consumed));
table.enableSendingOldValues(false);
assertThat(table.sendingOldValueEnabled(), is(false));
@@ -403,9 +396,7 @@ public class KTableImplTest {
public void
shouldEnableSendingOldValuesIfNotMaterializedAlreadyButForcedToMaterialize() {
final StreamsBuilder builder = new StreamsBuilder();
- final KTableImpl<String, String, String> table =
- (KTableImpl<String, String, String>) builder.table("topic1",
consumed);
-
+ final var table = assertInstanceOf(KTableImpl.class,
builder.table("topic1", consumed));
table.enableSendingOldValues(true);
assertThat(table.sendingOldValueEnabled(), is(true));
@@ -429,8 +420,7 @@ public class KTableImplTest {
final String topic1 = "topic1";
final String storeName1 = "storeName1";
- final KTableImpl<String, String, String> table1 =
- (KTableImpl<String, String, String>) builder.table(
+ final var table1 = builder.table(
topic1,
consumed,
Materialized.<String, String, KeyValueStore<Bytes,
byte[]>>as(storeName1)
@@ -587,19 +577,14 @@ public class KTableImplTest {
assertThrows(NullPointerException.class, () ->
table.transformValues(null));
}
- @SuppressWarnings("unchecked")
@Test
public void
shouldThrowNullPointerOnTransformValuesWithKeyWhenMaterializedIsNull() {
- final ValueTransformerWithKeySupplier<String, String, ?>
valueTransformerSupplier =
- mock(ValueTransformerWithKeySupplier.class);
- assertThrows(NullPointerException.class, () ->
table.transformValues(valueTransformerSupplier, (Materialized<String, Object,
KeyValueStore<Bytes, byte[]>>) null));
+ assertThrows(NullPointerException.class, () ->
table.transformValues(mock(), (Materialized<String, Object,
KeyValueStore<Bytes, byte[]>>) null));
}
- @SuppressWarnings("unchecked")
+
@Test
public void
shouldThrowNullPointerOnTransformValuesWithKeyWhenStoreNamesNull() {
- final ValueTransformerWithKeySupplier<String, String, ?>
valueTransformerSupplier =
- mock(ValueTransformerWithKeySupplier.class);
- assertThrows(NullPointerException.class, () ->
table.transformValues(valueTransformerSupplier, (String[]) null));
+ assertThrows(NullPointerException.class, () ->
table.transformValues(mock(), (String[]) null));
}
}
diff --git
a/tools/src/test/java/org/apache/kafka/tools/ConfigCommandIntegrationTest.java
b/tools/src/test/java/org/apache/kafka/tools/ConfigCommandIntegrationTest.java
index 8cb15c148ed..2587a6c150f 100644
---
a/tools/src/test/java/org/apache/kafka/tools/ConfigCommandIntegrationTest.java
+++
b/tools/src/test/java/org/apache/kafka/tools/ConfigCommandIntegrationTest.java
@@ -69,6 +69,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyMap;
public class ConfigCommandIntegrationTest {
private final String defaultBrokerId = "0";
@@ -413,7 +414,7 @@ public class ConfigCommandIntegrationTest {
AlterConfigsResult mockResult =
AdminClientTestUtils.alterConfigsResult(
new ConfigResource(ConfigResource.Type.BROKER, ""), new
UnsupportedVersionException("simulated error"));
Mockito.doReturn(mockResult).when(spyAdmin)
- .incrementalAlterConfigs(any(java.util.Map.class),
any(AlterConfigsOptions.class));
+ .incrementalAlterConfigs(anyMap(),
any(AlterConfigsOptions.class));
assertEquals(
"The INCREMENTAL_ALTER_CONFIGS API is not supported by the
cluster. The API is supported starting from version 2.3.0. You may want to use
an older version of this tool to interact with your cluster, or upgrade your
brokers to version 2.3.0 or newer to avoid this error.",
assertThrows(UnsupportedVersionException.class, () -> {
@@ -426,7 +427,7 @@ public class ConfigCommandIntegrationTest {
"--entity-default"))));
}).getMessage()
);
-
Mockito.verify(spyAdmin).incrementalAlterConfigs(any(java.util.Map.class),
any(AlterConfigsOptions.class));
+ Mockito.verify(spyAdmin).incrementalAlterConfigs(anyMap(),
any(AlterConfigsOptions.class));
}
}