mirror of https://github.com/apache/kafka.git
				
				
				
			KAFKA-13982: Move WorkerConfigTransformerTest to use Mockito (#12422)
This commit is contained in:
		
							parent
							
								
									348474e2ae
								
							
						
					
					
						commit
						25b914750d
					
				|  | @ -408,7 +408,7 @@ subprojects { | ||||||
|       "**/ConnectorsResourceTest.*", "**/DistributedHerderTest.*", "**/FileOffsetBakingStoreTest.*", |       "**/ConnectorsResourceTest.*", "**/DistributedHerderTest.*", "**/FileOffsetBakingStoreTest.*", | ||||||
|       "**/ErrorHandlingTaskTest.*", "**/KafkaConfigBackingStoreTest.*", "**/KafkaOffsetBackingStoreTest.*", |       "**/ErrorHandlingTaskTest.*", "**/KafkaConfigBackingStoreTest.*", "**/KafkaOffsetBackingStoreTest.*", | ||||||
|       "**/KafkaBasedLogTest.*", "**/OffsetStorageWriterTest.*", "**/StandaloneHerderTest.*", |       "**/KafkaBasedLogTest.*", "**/OffsetStorageWriterTest.*", "**/StandaloneHerderTest.*", | ||||||
|       "**/SourceTaskOffsetCommitterTest.*", "**/WorkerConfigTransformerTest.*", "**/WorkerGroupMemberTest.*", |       "**/SourceTaskOffsetCommitterTest.*", "**/WorkerGroupMemberTest.*", | ||||||
|       "**/WorkerTest.*", "**/WorkerSinkTaskTest.*", "**/WorkerSinkTaskThreadedTest.*", |       "**/WorkerTest.*", "**/WorkerSinkTaskTest.*", "**/WorkerSinkTaskThreadedTest.*", | ||||||
|       "**/WorkerSourceTaskTest.*", "**/AbstractWorkerSourceTaskTest.*", "**/ExactlyOnceWorkerSourceTaskTest.*", |       "**/WorkerSourceTaskTest.*", "**/AbstractWorkerSourceTaskTest.*", "**/ExactlyOnceWorkerSourceTaskTest.*", | ||||||
|       "**/WorkerTaskTest.*", |       "**/WorkerTaskTest.*", | ||||||
|  |  | ||||||
|  | @ -16,17 +16,13 @@ | ||||||
|  */ |  */ | ||||||
| package org.apache.kafka.connect.runtime; | package org.apache.kafka.connect.runtime; | ||||||
| 
 | 
 | ||||||
| import org.apache.kafka.common.config.ConfigChangeCallback; |  | ||||||
| import org.apache.kafka.common.config.ConfigData; | import org.apache.kafka.common.config.ConfigData; | ||||||
| import org.apache.kafka.common.config.provider.ConfigProvider; | import org.apache.kafka.common.config.provider.ConfigProvider; | ||||||
| import org.easymock.EasyMock; |  | ||||||
| import static org.easymock.EasyMock.eq; |  | ||||||
| import org.junit.Before; | import org.junit.Before; | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| import org.junit.runner.RunWith; | import org.junit.runner.RunWith; | ||||||
| import org.powermock.api.easymock.PowerMock; | import org.mockito.Mock; | ||||||
| import org.powermock.api.easymock.annotation.Mock; | import org.mockito.junit.MockitoJUnitRunner; | ||||||
| import org.powermock.modules.junit4.PowerMockRunner; |  | ||||||
| 
 | 
 | ||||||
| import java.util.Collections; | import java.util.Collections; | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
|  | @ -35,12 +31,15 @@ import java.util.Set; | ||||||
| 
 | 
 | ||||||
| import static org.apache.kafka.connect.runtime.ConnectorConfig.CONFIG_RELOAD_ACTION_CONFIG; | import static org.apache.kafka.connect.runtime.ConnectorConfig.CONFIG_RELOAD_ACTION_CONFIG; | ||||||
| import static org.apache.kafka.connect.runtime.ConnectorConfig.CONFIG_RELOAD_ACTION_NONE; | import static org.apache.kafka.connect.runtime.ConnectorConfig.CONFIG_RELOAD_ACTION_NONE; | ||||||
| import static org.easymock.EasyMock.notNull; |  | ||||||
| import static org.junit.Assert.assertEquals; | import static org.junit.Assert.assertEquals; | ||||||
| import static org.junit.Assert.assertNull; | import static org.junit.Assert.assertNull; | ||||||
| import static org.powermock.api.easymock.PowerMock.replayAll; | import static org.mockito.ArgumentMatchers.eq; | ||||||
|  | import static org.mockito.ArgumentMatchers.notNull; | ||||||
|  | import static org.mockito.Mockito.times; | ||||||
|  | import static org.mockito.Mockito.verify; | ||||||
|  | import static org.mockito.Mockito.when; | ||||||
| 
 | 
 | ||||||
| @RunWith(PowerMockRunner.class) | @RunWith(MockitoJUnitRunner.class) | ||||||
| public class WorkerConfigTransformerTest { | public class WorkerConfigTransformerTest { | ||||||
| 
 | 
 | ||||||
|     public static final String MY_KEY = "myKey"; |     public static final String MY_KEY = "myKey"; | ||||||
|  | @ -53,64 +52,78 @@ public class WorkerConfigTransformerTest { | ||||||
|     public static final String TEST_RESULT_WITH_TTL = "testResultWithTTL"; |     public static final String TEST_RESULT_WITH_TTL = "testResultWithTTL"; | ||||||
|     public static final String TEST_RESULT_WITH_LONGER_TTL = "testResultWithLongerTTL"; |     public static final String TEST_RESULT_WITH_LONGER_TTL = "testResultWithLongerTTL"; | ||||||
| 
 | 
 | ||||||
|     @Mock private Herder herder; |     @Mock | ||||||
|     @Mock private Worker worker; |     private Herder herder; | ||||||
|     @Mock private HerderRequest requestId; |     @Mock | ||||||
|  |     private Worker worker; | ||||||
|  |     @Mock | ||||||
|  |     private HerderRequest requestId; | ||||||
|     private WorkerConfigTransformer configTransformer; |     private WorkerConfigTransformer configTransformer; | ||||||
| 
 | 
 | ||||||
|     @Before |     @Before | ||||||
|     public void setup() { |     public void setup() { | ||||||
|         worker = PowerMock.createMock(Worker.class); |  | ||||||
|         herder = PowerMock.createMock(Herder.class); |  | ||||||
|         configTransformer = new WorkerConfigTransformer(worker, Collections.singletonMap("test", new TestConfigProvider())); |         configTransformer = new WorkerConfigTransformer(worker, Collections.singletonMap("test", new TestConfigProvider())); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     public void testReplaceVariable() { |     public void testReplaceVariable() { | ||||||
|  |         // Execution | ||||||
|         Map<String, String> result = configTransformer.transform(MY_CONNECTOR, Collections.singletonMap(MY_KEY, "${test:testPath:testKey}")); |         Map<String, String> result = configTransformer.transform(MY_CONNECTOR, Collections.singletonMap(MY_KEY, "${test:testPath:testKey}")); | ||||||
|  | 
 | ||||||
|  |         // Assertions | ||||||
|         assertEquals(TEST_RESULT, result.get(MY_KEY)); |         assertEquals(TEST_RESULT, result.get(MY_KEY)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     public void testReplaceVariableWithTTL() { |     public void testReplaceVariableWithTTL() { | ||||||
|         EasyMock.expect(worker.herder()).andReturn(herder); |         // Setup | ||||||
| 
 |         when(worker.herder()).thenReturn(herder); | ||||||
|         replayAll(); |  | ||||||
| 
 | 
 | ||||||
|  |         // Execution | ||||||
|         Map<String, String> props = new HashMap<>(); |         Map<String, String> props = new HashMap<>(); | ||||||
|         props.put(MY_KEY, "${test:testPath:testKeyWithTTL}"); |         props.put(MY_KEY, "${test:testPath:testKeyWithTTL}"); | ||||||
|         props.put(CONFIG_RELOAD_ACTION_CONFIG, CONFIG_RELOAD_ACTION_NONE); |         props.put(CONFIG_RELOAD_ACTION_CONFIG, CONFIG_RELOAD_ACTION_NONE); | ||||||
|         Map<String, String> result = configTransformer.transform(MY_CONNECTOR, props); |         Map<String, String> result = configTransformer.transform(MY_CONNECTOR, props); | ||||||
|  | 
 | ||||||
|  |         // Assertions | ||||||
|  |         assertEquals(TEST_RESULT_WITH_TTL, result.get(MY_KEY)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     public void testReplaceVariableWithTTLAndScheduleRestart() { |     public void testReplaceVariableWithTTLAndScheduleRestart() { | ||||||
|         EasyMock.expect(worker.herder()).andReturn(herder); |         // Setup | ||||||
|         EasyMock.expect(herder.restartConnector(eq(1L), eq(MY_CONNECTOR), notNull())).andReturn(requestId); |         when(worker.herder()).thenReturn(herder); | ||||||
|         replayAll(); |         when(herder.restartConnector(eq(1L), eq(MY_CONNECTOR), notNull())).thenReturn(requestId); | ||||||
| 
 | 
 | ||||||
|  |         // Execution | ||||||
|         Map<String, String> result = configTransformer.transform(MY_CONNECTOR, Collections.singletonMap(MY_KEY, "${test:testPath:testKeyWithTTL}")); |         Map<String, String> result = configTransformer.transform(MY_CONNECTOR, Collections.singletonMap(MY_KEY, "${test:testPath:testKeyWithTTL}")); | ||||||
|  | 
 | ||||||
|  |         // Assertions | ||||||
|         assertEquals(TEST_RESULT_WITH_TTL, result.get(MY_KEY)); |         assertEquals(TEST_RESULT_WITH_TTL, result.get(MY_KEY)); | ||||||
|  |         verify(herder).restartConnector(eq(1L), eq(MY_CONNECTOR), notNull()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     public void testReplaceVariableWithTTLFirstCancelThenScheduleRestart() { |     public void testReplaceVariableWithTTLFirstCancelThenScheduleRestart() { | ||||||
|         EasyMock.expect(worker.herder()).andReturn(herder); |         // Setup | ||||||
|         EasyMock.expect(herder.restartConnector(eq(1L), eq(MY_CONNECTOR), notNull())).andReturn(requestId); |         when(worker.herder()).thenReturn(herder); | ||||||
| 
 |         when(herder.restartConnector(eq(1L), eq(MY_CONNECTOR), notNull())).thenReturn(requestId); | ||||||
|         EasyMock.expect(worker.herder()).andReturn(herder); |         when(herder.restartConnector(eq(10L), eq(MY_CONNECTOR), notNull())).thenReturn(requestId); | ||||||
|         EasyMock.expectLastCall(); |  | ||||||
|         requestId.cancel(); |  | ||||||
|         EasyMock.expectLastCall(); |  | ||||||
|         EasyMock.expect(herder.restartConnector(eq(10L), eq(MY_CONNECTOR), notNull())).andReturn(requestId); |  | ||||||
| 
 |  | ||||||
|         replayAll(); |  | ||||||
| 
 | 
 | ||||||
|  |         // Execution | ||||||
|         Map<String, String> result = configTransformer.transform(MY_CONNECTOR, Collections.singletonMap(MY_KEY, "${test:testPath:testKeyWithTTL}")); |         Map<String, String> result = configTransformer.transform(MY_CONNECTOR, Collections.singletonMap(MY_KEY, "${test:testPath:testKeyWithTTL}")); | ||||||
|         assertEquals(TEST_RESULT_WITH_TTL, result.get(MY_KEY)); |  | ||||||
| 
 | 
 | ||||||
|  |         // Assertions | ||||||
|  |         assertEquals(TEST_RESULT_WITH_TTL, result.get(MY_KEY)); | ||||||
|  |         verify(herder).restartConnector(eq(1L), eq(MY_CONNECTOR), notNull()); | ||||||
|  | 
 | ||||||
|  |         // Execution | ||||||
|         result = configTransformer.transform(MY_CONNECTOR, Collections.singletonMap(MY_KEY, "${test:testPath:testKeyWithLongerTTL}")); |         result = configTransformer.transform(MY_CONNECTOR, Collections.singletonMap(MY_KEY, "${test:testPath:testKeyWithLongerTTL}")); | ||||||
|  | 
 | ||||||
|  |         // Assertions | ||||||
|         assertEquals(TEST_RESULT_WITH_LONGER_TTL, result.get(MY_KEY)); |         assertEquals(TEST_RESULT_WITH_LONGER_TTL, result.get(MY_KEY)); | ||||||
|  |         verify(requestId, times(1)).cancel(); | ||||||
|  |         verify(herder).restartConnector(eq(10L), eq(MY_CONNECTOR), notNull()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|  | @ -120,13 +133,16 @@ public class WorkerConfigTransformerTest { | ||||||
| 
 | 
 | ||||||
|     public static class TestConfigProvider implements ConfigProvider { |     public static class TestConfigProvider implements ConfigProvider { | ||||||
| 
 | 
 | ||||||
|  |         @Override | ||||||
|         public void configure(Map<String, ?> configs) { |         public void configure(Map<String, ?> configs) { | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         @Override | ||||||
|         public ConfigData get(String path) { |         public ConfigData get(String path) { | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         @Override | ||||||
|         public ConfigData get(String path, Set<String> keys) { |         public ConfigData get(String path, Set<String> keys) { | ||||||
|             if (path.equals(TEST_PATH)) { |             if (path.equals(TEST_PATH)) { | ||||||
|                 if (keys.contains(TEST_KEY)) { |                 if (keys.contains(TEST_KEY)) { | ||||||
|  | @ -140,14 +156,7 @@ public class WorkerConfigTransformerTest { | ||||||
|             return new ConfigData(Collections.emptyMap()); |             return new ConfigData(Collections.emptyMap()); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public void subscribe(String path, Set<String> keys, ConfigChangeCallback callback) { |         @Override | ||||||
|             throw new UnsupportedOperationException(); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         public void unsubscribe(String path, Set<String> keys) { |  | ||||||
|             throw new UnsupportedOperationException(); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         public void close() { |         public void close() { | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue