Browse Source

KAFKA-14133: Move RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest to Mockito (#14586)

Reviewers: Divij Vaidya <diviv@amazon.com>
pull/11052/merge
Christo Lolov 11 months ago committed by GitHub
parent
commit
b5ec6e8a0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 31
      streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest.java

31
streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest.java

@ -17,9 +17,10 @@ @@ -17,9 +17,10 @@
package org.apache.kafka.streams.state.internals;
import org.apache.kafka.common.utils.LogCaptureAppender;
import org.easymock.EasyMockRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.invocation.Invocation;
import org.mockito.junit.MockitoJUnitRunner;
import org.rocksdb.AbstractCompactionFilter;
import org.rocksdb.AbstractCompactionFilter.Context;
import org.rocksdb.AbstractCompactionFilterFactory;
@ -56,28 +57,26 @@ import java.lang.reflect.Method; @@ -56,28 +57,26 @@ import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Set;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static org.easymock.EasyMock.mock;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.reset;
import static org.easymock.EasyMock.resetToNice;
import static org.easymock.EasyMock.verify;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.matchesPattern;
import static org.junit.Assert.fail;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockingDetails;
/**
* The purpose of this test is, to catch interface changes if we upgrade {@link RocksDB}.
* Using reflections, we make sure the {@link RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapter} maps all
* methods from {@link DBOptions} and {@link ColumnFamilyOptions} to/from {@link Options} correctly.
*/
@RunWith(EasyMockRunner.class)
@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest {
private final List<String> walRelatedMethods = new LinkedList<String>() {
@ -140,17 +139,15 @@ public class RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest { @@ -140,17 +139,15 @@ public class RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest {
final Object[] parameters = getDBOptionsParameters(method.getParameterTypes());
try {
reset(mockedDbOptions);
replay(mockedDbOptions);
method.invoke(optionsFacadeDbOptions, parameters);
verify();
fail("Should have called DBOptions." + method.getName() + "()");
final Collection<Invocation> invocations = mockingDetails(mockedDbOptions).getInvocations();
final Set<String> invokedMethodNames = invocations.stream().map(invocation -> invocation.getMethod().getName()).collect(Collectors.toSet());
assertTrue(invokedMethodNames.contains(method.getName()), "Should have called DBOptions." + method.getName() + "()");
} catch (final InvocationTargetException undeclaredMockMethodCall) {
assertThat(undeclaredMockMethodCall.getCause(), instanceOf(AssertionError.class));
assertThat(undeclaredMockMethodCall.getCause().getMessage().trim(),
matchesPattern("Unexpected method call DBOptions\\." + method.getName() + "((.*\n*)*):"));
} finally {
resetToNice(mockedDbOptions);
optionsFacadeDbOptions.close();
}
}
@ -248,17 +245,15 @@ public class RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest { @@ -248,17 +245,15 @@ public class RocksDBGenericOptionsToDbOptionsColumnFamilyOptionsAdapterTest {
final Object[] parameters = getColumnFamilyOptionsParameters(method.getParameterTypes());
try {
reset(mockedColumnFamilyOptions);
replay(mockedColumnFamilyOptions);
method.invoke(optionsFacadeColumnFamilyOptions, parameters);
verify();
fail("Should have called ColumnFamilyOptions." + method.getName() + "()");
final Collection<Invocation> invocations = mockingDetails(mockedColumnFamilyOptions).getInvocations();
final Set<String> invokedMethodNames = invocations.stream().map(invocation -> invocation.getMethod().getName()).collect(Collectors.toSet());
assertTrue(invokedMethodNames.contains(method.getName()), "Should have called ColumnFamilyOptions." + method.getName() + "()");
} catch (final InvocationTargetException undeclaredMockMethodCall) {
assertThat(undeclaredMockMethodCall.getCause(), instanceOf(AssertionError.class));
assertThat(undeclaredMockMethodCall.getCause().getMessage().trim(),
matchesPattern("Unexpected method call ColumnFamilyOptions\\." + method.getName() + "(.*)"));
} finally {
resetToNice(mockedColumnFamilyOptions);
optionsFacadeColumnFamilyOptions.close();
}
}

Loading…
Cancel
Save