services - migrate to junit 5 (#5613)

* services to junit5

* removed some junit4 engine imports

* updated some plugins test since these extend from testutil KV storage

* one more form of EPL v2

Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com>

---------

Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com>
pull/5627/head
Sally MacFarlane 1 year ago committed by GitHub
parent 5bff76f107
commit db173ebd98
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      enclave/build.gradle
  2. 3
      gradle/check-licenses.gradle
  3. 2
      metrics/core/build.gradle
  4. 1
      plugins/rocksdb/build.gradle
  5. 6
      plugins/rocksdb/src/test/java/org/hyperledger/besu/plugin/services/storage/rocksdb/segmented/OptimisticTransactionDBRocksDBColumnarKeyValueStorageTest.java
  6. 19
      plugins/rocksdb/src/test/java/org/hyperledger/besu/plugin/services/storage/rocksdb/segmented/RocksDBColumnarKeyValueStorageTest.java
  7. 16
      plugins/rocksdb/src/test/java/org/hyperledger/besu/plugin/services/storage/rocksdb/segmented/RocksDBKeyValueStorageTest.java
  8. 2
      plugins/rocksdb/src/test/java/org/hyperledger/besu/plugin/services/storage/rocksdb/segmented/TransactionDBRocksDBColumnarKeyValueStorageTest.java
  9. 4
      services/kvstore/build.gradle
  10. 2
      services/kvstore/src/test/java/org/hyperledger/besu/services/kvstore/LimitedInMemoryKeyValueStorageTest.java
  11. 4
      services/pipeline/build.gradle
  12. 2
      services/pipeline/src/test/java/org/hyperledger/besu/services/pipeline/AsyncOperationProcessorTest.java
  13. 2
      services/pipeline/src/test/java/org/hyperledger/besu/services/pipeline/BatchingReadPipeTest.java
  14. 2
      services/pipeline/src/test/java/org/hyperledger/besu/services/pipeline/CompleterStageTest.java
  15. 2
      services/pipeline/src/test/java/org/hyperledger/besu/services/pipeline/FlatMapProcessorTest.java
  16. 2
      services/pipeline/src/test/java/org/hyperledger/besu/services/pipeline/IteratorSourceStageTest.java
  17. 2
      services/pipeline/src/test/java/org/hyperledger/besu/services/pipeline/MapProcessorTest.java
  18. 2
      services/pipeline/src/test/java/org/hyperledger/besu/services/pipeline/PipeTest.java
  19. 6
      services/pipeline/src/test/java/org/hyperledger/besu/services/pipeline/PipelineBuilderTest.java
  20. 17
      services/pipeline/src/test/java/org/hyperledger/besu/services/pipeline/ProcessingStageTest.java
  21. 2
      services/pipeline/src/test/java/org/hyperledger/besu/services/pipeline/SharedWritePipeTest.java
  22. 3
      services/tasks/build.gradle
  23. 2
      services/tasks/src/test/java/org/hyperledger/besu/services/tasks/AbstractTaskQueueTest.java
  24. 6
      services/tasks/src/test/java/org/hyperledger/besu/services/tasks/CachingTaskCollectionTest.java
  25. 2
      services/tasks/src/test/java/org/hyperledger/besu/services/tasks/InMemoryTasksPriorityQueuesTest.java
  26. 2
      testutil/build.gradle
  27. 67
      testutil/src/main/java/org/hyperledger/besu/kvstore/AbstractKeyValueStorageTest.java

@ -17,8 +17,6 @@ dependencies {
testImplementation 'org.assertj:assertj-core' testImplementation 'org.assertj:assertj-core'
testImplementation 'org.junit.jupiter:junit-jupiter' testImplementation 'org.junit.jupiter:junit-jupiter'
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
// integration test dependencies. // integration test dependencies.
integrationTestImplementation project(':testutil') integrationTestImplementation project(':testutil')
integrationTestImplementation 'org.assertj:assertj-core' integrationTestImplementation 'org.assertj:assertj-core'
@ -27,6 +25,4 @@ dependencies {
integrationTestImplementation 'org.junit.jupiter:junit-jupiter-api' integrationTestImplementation 'org.junit.jupiter:junit-jupiter-api'
integrationTestImplementation 'org.mockito:mockito-core' integrationTestImplementation 'org.mockito:mockito-core'
integrationTestImplementation 'org.testcontainers:testcontainers' integrationTestImplementation 'org.testcontainers:testcontainers'
integrationTestRuntimeOnly 'org.junit.jupiter:junit-jupiter'
} }

@ -126,7 +126,8 @@ downloadLicenses {
], ],
(epl2) : [ (epl2) : [
'Eclipse Public License - v 2.0', 'Eclipse Public License - v 2.0',
'Eclipse Public License version 2.0' 'Eclipse Public License version 2.0',
'Eclipse Public License v2.0'
], ],
(mit) : [ (mit) : [
'MIT', 'MIT',

@ -70,8 +70,6 @@ dependencies {
testImplementation 'org.mockito:mockito-core' testImplementation 'org.mockito:mockito-core'
testImplementation 'org.mockito:mockito-junit-jupiter' testImplementation 'org.mockito:mockito-junit-jupiter'
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
testSupportImplementation 'org.mockito:mockito-core' testSupportImplementation 'org.mockito:mockito-core'
annotationProcessor 'com.google.dagger:dagger-compiler' annotationProcessor 'com.google.dagger:dagger-compiler'

@ -55,6 +55,7 @@ dependencies {
testImplementation 'org.assertj:assertj-core' testImplementation 'org.assertj:assertj-core'
testImplementation 'org.junit.jupiter:junit-jupiter' testImplementation 'org.junit.jupiter:junit-jupiter'
testImplementation 'org.mockito:mockito-core' testImplementation 'org.mockito:mockito-core'
testImplementation 'org.mockito:mockito-junit-jupiter'
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
} }

@ -25,6 +25,8 @@ import java.nio.file.Path;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import org.apache.tuweni.bytes.Bytes;
public class OptimisticTransactionDBRocksDBColumnarKeyValueStorageTest public class OptimisticTransactionDBRocksDBColumnarKeyValueStorageTest
extends RocksDBColumnarKeyValueStorageTest { extends RocksDBColumnarKeyValueStorageTest {
@ -32,7 +34,9 @@ public class OptimisticTransactionDBRocksDBColumnarKeyValueStorageTest
protected SegmentedKeyValueStorage<RocksDbSegmentIdentifier> createSegmentedStore() protected SegmentedKeyValueStorage<RocksDbSegmentIdentifier> createSegmentedStore()
throws Exception { throws Exception {
return new OptimisticRocksDBColumnarKeyValueStorage( return new OptimisticRocksDBColumnarKeyValueStorage(
new RocksDBConfigurationBuilder().databaseDir(folder.newFolder().toPath()).build(), new RocksDBConfigurationBuilder()
.databaseDir(folder.resolve(Bytes.random(9).toString()))
.build(),
Arrays.asList(TestSegment.FOO, TestSegment.BAR), Arrays.asList(TestSegment.FOO, TestSegment.BAR),
List.of(), List.of(),
new NoOpMetricsSystem(), new NoOpMetricsSystem(),

@ -35,13 +35,12 @@ import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test; import org.junit.jupiter.api.io.TempDir;
import org.junit.rules.TemporaryFolder;
public abstract class RocksDBColumnarKeyValueStorageTest extends AbstractKeyValueStorageTest { public abstract class RocksDBColumnarKeyValueStorageTest extends AbstractKeyValueStorageTest {
@Rule public final TemporaryFolder folder = new TemporaryFolder(); @TempDir public Path folder;
@Test @Test
public void assertClear() throws Exception { public void assertClear() throws Exception {
@ -178,8 +177,8 @@ public abstract class RocksDBColumnarKeyValueStorageTest extends AbstractKeyValu
} }
@Test @Test
public void dbShouldIgnoreExperimentalSegmentsIfNotExisted() throws Exception { public void dbShouldIgnoreExperimentalSegmentsIfNotExisted(@TempDir final Path testPath)
final Path testPath = folder.newFolder().toPath(); throws Exception {
// Create new db should ignore experimental column family // Create new db should ignore experimental column family
SegmentedKeyValueStorage<RocksDbSegmentIdentifier> store = SegmentedKeyValueStorage<RocksDbSegmentIdentifier> store =
createSegmentedStore( createSegmentedStore(
@ -195,8 +194,8 @@ public abstract class RocksDBColumnarKeyValueStorageTest extends AbstractKeyValu
} }
@Test @Test
public void dbShouldNotIgnoreExperimentalSegmentsIfExisted() throws Exception { public void dbShouldNotIgnoreExperimentalSegmentsIfExisted(@TempDir final Path testPath)
final Path testPath = folder.newFolder().toPath(); throws Exception {
// Create new db with experimental column family // Create new db with experimental column family
SegmentedKeyValueStorage<RocksDbSegmentIdentifier> store = SegmentedKeyValueStorage<RocksDbSegmentIdentifier> store =
createSegmentedStore( createSegmentedStore(
@ -225,8 +224,8 @@ public abstract class RocksDBColumnarKeyValueStorageTest extends AbstractKeyValu
} }
@Test @Test
public void dbWillBeBackwardIncompatibleAfterExperimentalSegmentsAreAdded() throws Exception { public void dbWillBeBackwardIncompatibleAfterExperimentalSegmentsAreAdded(
final Path testPath = folder.newFolder().toPath(); @TempDir final Path testPath) throws Exception {
// Create new db should ignore experimental column family // Create new db should ignore experimental column family
SegmentedKeyValueStorage<RocksDbSegmentIdentifier> store = SegmentedKeyValueStorage<RocksDbSegmentIdentifier> store =
createSegmentedStore( createSegmentedStore(

@ -35,24 +35,24 @@ import org.hyperledger.besu.plugin.services.storage.rocksdb.configuration.RocksD
import org.hyperledger.besu.plugin.services.storage.rocksdb.configuration.RocksDBConfigurationBuilder; import org.hyperledger.besu.plugin.services.storage.rocksdb.configuration.RocksDBConfigurationBuilder;
import org.hyperledger.besu.plugin.services.storage.rocksdb.unsegmented.RocksDBKeyValueStorage; import org.hyperledger.besu.plugin.services.storage.rocksdb.unsegmented.RocksDBKeyValueStorage;
import java.nio.file.Path;
import java.util.function.LongSupplier; import java.util.function.LongSupplier;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test; import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.rules.TemporaryFolder; import org.junit.jupiter.api.io.TempDir;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.jupiter.MockitoExtension;
@RunWith(MockitoJUnitRunner.class) @ExtendWith(MockitoExtension.class)
public class RocksDBKeyValueStorageTest extends AbstractKeyValueStorageTest { public class RocksDBKeyValueStorageTest extends AbstractKeyValueStorageTest {
@Mock private ObservableMetricsSystem metricsSystemMock; @Mock private ObservableMetricsSystem metricsSystemMock;
@Mock private LabelledMetric<OperationTimer> labelledMetricOperationTimerMock; @Mock private LabelledMetric<OperationTimer> labelledMetricOperationTimerMock;
@Mock private LabelledMetric<Counter> labelledMetricCounterMock; @Mock private LabelledMetric<Counter> labelledMetricCounterMock;
@Mock private OperationTimer operationTimerMock; @Mock private OperationTimer operationTimerMock;
@Rule public final TemporaryFolder folder = new TemporaryFolder(); @TempDir static Path folder;
@Override @Override
protected KeyValueStorage createStore() throws Exception { protected KeyValueStorage createStore() throws Exception {
@ -131,6 +131,6 @@ public class RocksDBKeyValueStorageTest extends AbstractKeyValueStorageTest {
} }
private RocksDBConfiguration config() throws Exception { private RocksDBConfiguration config() throws Exception {
return new RocksDBConfigurationBuilder().databaseDir(folder.newFolder().toPath()).build(); return new RocksDBConfigurationBuilder().databaseDir(getTempSubFolder(folder)).build();
} }
} }

@ -32,7 +32,7 @@ public class TransactionDBRocksDBColumnarKeyValueStorageTest
protected SegmentedKeyValueStorage<RocksDbSegmentIdentifier> createSegmentedStore() protected SegmentedKeyValueStorage<RocksDbSegmentIdentifier> createSegmentedStore()
throws Exception { throws Exception {
return new TransactionDBRocksDBColumnarKeyValueStorage( return new TransactionDBRocksDBColumnarKeyValueStorage(
new RocksDBConfigurationBuilder().databaseDir(folder.newFolder().toPath()).build(), new RocksDBConfigurationBuilder().databaseDir(getTempSubFolder(folder)).build(),
Arrays.asList(TestSegment.FOO, TestSegment.BAR), Arrays.asList(TestSegment.FOO, TestSegment.BAR),
List.of(), List.of(),
new NoOpMetricsSystem(), new NoOpMetricsSystem(),

@ -33,8 +33,6 @@ dependencies {
implementation 'com.google.guava:guava' implementation 'com.google.guava:guava'
testImplementation project(':testutil') testImplementation project(':testutil')
testImplementation 'junit:junit' testImplementation 'org.junit.jupiter:junit-jupiter'
testImplementation 'org.assertj:assertj-core' testImplementation 'org.assertj:assertj-core'
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
} }

@ -20,7 +20,7 @@ import org.hyperledger.besu.kvstore.AbstractKeyValueStorageTest;
import org.hyperledger.besu.plugin.services.storage.KeyValueStorage; import org.hyperledger.besu.plugin.services.storage.KeyValueStorage;
import org.hyperledger.besu.plugin.services.storage.KeyValueStorageTransaction; import org.hyperledger.besu.plugin.services.storage.KeyValueStorageTransaction;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class LimitedInMemoryKeyValueStorageTest extends AbstractKeyValueStorageTest { public class LimitedInMemoryKeyValueStorageTest extends AbstractKeyValueStorageTest {

@ -37,11 +37,9 @@ dependencies {
implementation 'io.opentelemetry:opentelemetry-api' implementation 'io.opentelemetry:opentelemetry-api'
implementation 'com.google.guava:guava' implementation 'com.google.guava:guava'
testImplementation 'junit:junit'
testImplementation 'org.assertj:assertj-core' testImplementation 'org.assertj:assertj-core'
testImplementation 'org.awaitility:awaitility' testImplementation 'org.awaitility:awaitility'
testImplementation 'org.junit.jupiter:junit-jupiter' testImplementation 'org.junit.jupiter:junit-jupiter'
testImplementation 'org.mockito:mockito-core' testImplementation 'org.mockito:mockito-core'
testImplementation 'org.mockito:mockito-junit-jupiter'
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
} }

@ -26,7 +26,7 @@ import static org.mockito.Mockito.when;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.function.Function; import java.util.function.Function;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class AsyncOperationProcessorTest { public class AsyncOperationProcessorTest {

@ -27,7 +27,7 @@ import org.hyperledger.besu.plugin.services.metrics.Counter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class BatchingReadPipeTest { public class BatchingReadPipeTest {

@ -20,7 +20,7 @@ import static org.hyperledger.besu.metrics.noop.NoOpMetricsSystem.NO_OP_COUNTER;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class CompleterStageTest { public class CompleterStageTest {

@ -24,7 +24,7 @@ import static org.mockito.Mockito.when;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Stream; import java.util.stream.Stream;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class FlatMapProcessorTest { public class FlatMapProcessorTest {

@ -18,7 +18,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.hyperledger.besu.metrics.noop.NoOpMetricsSystem.NO_OP_COUNTER; import static org.hyperledger.besu.metrics.noop.NoOpMetricsSystem.NO_OP_COUNTER;
import com.google.common.collect.Iterators; import com.google.common.collect.Iterators;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class IteratorSourceStageTest { public class IteratorSourceStageTest {

@ -23,7 +23,7 @@ import static org.mockito.Mockito.when;
import java.util.function.Function; import java.util.function.Function;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class MapProcessorTest { public class MapProcessorTest {

@ -24,7 +24,7 @@ import org.hyperledger.besu.plugin.services.metrics.Counter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class PipeTest { public class PipeTest {
private final Counter inputCounter = mock(Counter.class); private final Counter inputCounter = mock(Counter.class);

@ -51,8 +51,8 @@ import java.util.function.Function;
import java.util.stream.Stream; import java.util.stream.Stream;
import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.junit.After; import org.junit.jupiter.api.AfterEach;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class PipelineBuilderTest { public class PipelineBuilderTest {
@ -66,7 +66,7 @@ public class PipelineBuilderTest {
private final ExecutorService executorService = Executors.newCachedThreadPool(THREAD_FACTORY); private final ExecutorService executorService = Executors.newCachedThreadPool(THREAD_FACTORY);
@After @AfterEach
public void afterClass() throws Exception { public void afterClass() throws Exception {
executorService.shutdownNow(); executorService.shutdownNow();
if (!executorService.awaitTermination(10, SECONDS)) { if (!executorService.awaitTermination(10, SECONDS)) {

@ -16,7 +16,7 @@ package org.hyperledger.besu.services.pipeline;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.hyperledger.besu.metrics.noop.NoOpMetricsSystem.NO_OP_COUNTER; import static org.hyperledger.besu.metrics.noop.NoOpMetricsSystem.NO_OP_COUNTER;
import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions;
@ -24,13 +24,13 @@ import static org.mockito.Mockito.when;
import java.util.Locale; import java.util.Locale;
import org.junit.Before; import org.junit.jupiter.api.BeforeEach;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.jupiter.MockitoExtension;
@RunWith(MockitoJUnitRunner.class) @ExtendWith(MockitoExtension.class)
public class ProcessingStageTest { public class ProcessingStageTest {
private final Pipe<String> inputPipe = private final Pipe<String> inputPipe =
@ -40,10 +40,11 @@ public class ProcessingStageTest {
@Mock private Processor<String, String> singleStep; @Mock private Processor<String, String> singleStep;
private ProcessingStage<String, String> stage; private ProcessingStage<String, String> stage;
@Before @BeforeEach
public void setUp() { public void setUp() {
stage = new ProcessingStage<>("name", inputPipe, outputPipe, singleStep); stage = new ProcessingStage<>("name", inputPipe, outputPipe, singleStep);
doAnswer( lenient()
.doAnswer(
invocation -> { invocation -> {
outputPipe.put(inputPipe.get().toLowerCase(Locale.UK)); outputPipe.put(inputPipe.get().toLowerCase(Locale.UK));
return 1; return 1;

@ -18,7 +18,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoInteractions;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class SharedWritePipeTest { public class SharedWritePipeTest {

@ -40,9 +40,6 @@ dependencies {
implementation 'io.vertx:vertx-core' implementation 'io.vertx:vertx-core'
implementation 'org.apache.tuweni:tuweni-bytes' implementation 'org.apache.tuweni:tuweni-bytes'
testImplementation 'junit:junit'
testImplementation 'org.assertj:assertj-core' testImplementation 'org.assertj:assertj-core'
testImplementation 'org.junit.jupiter:junit-jupiter' testImplementation 'org.junit.jupiter:junit-jupiter'
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
} }

@ -23,7 +23,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.function.Function; import java.util.function.Function;
import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes;
import org.junit.Test; import org.junit.jupiter.api.Test;
abstract class AbstractTaskQueueTest<T extends TaskCollection<Bytes>> { abstract class AbstractTaskQueueTest<T extends TaskCollection<Bytes>> {

@ -23,13 +23,13 @@ import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes;
import org.junit.Before; import org.junit.jupiter.api.BeforeEach;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class CachingTaskCollectionTest { public class CachingTaskCollectionTest {
private TaskCollection<Bytes> wrappedTaskCollection; private TaskCollection<Bytes> wrappedTaskCollection;
@Before @BeforeEach
public void setup() { public void setup() {
wrappedTaskCollection = new InMemoryTaskQueue<>(); wrappedTaskCollection = new InMemoryTaskQueue<>();
} }

@ -21,7 +21,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import org.junit.Test; import org.junit.jupiter.api.Test;
public class InMemoryTasksPriorityQueuesTest { public class InMemoryTasksPriorityQueuesTest {

@ -36,7 +36,7 @@ dependencies {
implementation 'com.google.guava:guava' implementation 'com.google.guava:guava'
implementation 'com.squareup.okhttp3:okhttp' implementation 'com.squareup.okhttp3:okhttp'
implementation 'io.vertx:vertx-core' implementation 'io.vertx:vertx-core'
implementation 'junit:junit' implementation 'org.junit.jupiter:junit-jupiter'
implementation 'org.apache.tuweni:tuweni-bytes' implementation 'org.apache.tuweni:tuweni-bytes'
implementation 'org.apache.tuweni:tuweni-io' implementation 'org.apache.tuweni:tuweni-io'
implementation 'org.apache.tuweni:tuweni-toml' implementation 'org.apache.tuweni:tuweni-toml'

@ -21,6 +21,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import org.hyperledger.besu.plugin.services.storage.KeyValueStorage; import org.hyperledger.besu.plugin.services.storage.KeyValueStorage;
import org.hyperledger.besu.plugin.services.storage.KeyValueStorageTransaction; import org.hyperledger.besu.plugin.services.storage.KeyValueStorageTransaction;
import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -32,11 +33,12 @@ import java.util.stream.Stream;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes;
import org.junit.Ignore; import org.assertj.core.api.Assertions;
import org.junit.Test; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
/** The Abstract key value storage test. */ /** The Abstract key value storage test. */
@Ignore @Disabled
public abstract class AbstractKeyValueStorageTest { public abstract class AbstractKeyValueStorageTest {
/** /**
@ -352,12 +354,16 @@ public abstract class AbstractKeyValueStorageTest {
* *
* @throws Exception the exception * @throws Exception the exception
*/ */
@Test(expected = IllegalStateException.class) @Test
public void transactionPutAfterCommit() throws Exception { public void transactionPutAfterCommit() throws Exception {
Assertions.assertThatThrownBy(
() -> {
final KeyValueStorage store = createStore(); final KeyValueStorage store = createStore();
final KeyValueStorageTransaction tx = store.startTransaction(); final KeyValueStorageTransaction tx = store.startTransaction();
tx.commit(); tx.commit();
tx.put(bytesOf(1), bytesOf(1)); tx.put(bytesOf(1), bytesOf(1));
})
.isInstanceOf(IllegalStateException.class);
} }
/** /**
@ -365,12 +371,16 @@ public abstract class AbstractKeyValueStorageTest {
* *
* @throws Exception the exception * @throws Exception the exception
*/ */
@Test(expected = IllegalStateException.class) @Test
public void transactionRemoveAfterCommit() throws Exception { public void transactionRemoveAfterCommit() throws Exception {
Assertions.assertThatThrownBy(
() -> {
final KeyValueStorage store = createStore(); final KeyValueStorage store = createStore();
final KeyValueStorageTransaction tx = store.startTransaction(); final KeyValueStorageTransaction tx = store.startTransaction();
tx.commit(); tx.commit();
tx.remove(bytesOf(1)); tx.remove(bytesOf(1));
})
.isInstanceOf(IllegalStateException.class);
} }
/** /**
@ -378,12 +388,16 @@ public abstract class AbstractKeyValueStorageTest {
* *
* @throws Exception the exception * @throws Exception the exception
*/ */
@Test(expected = IllegalStateException.class) @Test
public void transactionPutAfterRollback() throws Exception { public void transactionPutAfterRollback() throws Exception {
Assertions.assertThatThrownBy(
() -> {
final KeyValueStorage store = createStore(); final KeyValueStorage store = createStore();
final KeyValueStorageTransaction tx = store.startTransaction(); final KeyValueStorageTransaction tx = store.startTransaction();
tx.rollback(); tx.rollback();
tx.put(bytesOf(1), bytesOf(1)); tx.put(bytesOf(1), bytesOf(1));
})
.isInstanceOf(IllegalStateException.class);
} }
/** /**
@ -391,12 +405,16 @@ public abstract class AbstractKeyValueStorageTest {
* *
* @throws Exception the exception * @throws Exception the exception
*/ */
@Test(expected = IllegalStateException.class) @Test
public void transactionRemoveAfterRollback() throws Exception { public void transactionRemoveAfterRollback() throws Exception {
Assertions.assertThatThrownBy(
() -> {
final KeyValueStorage store = createStore(); final KeyValueStorage store = createStore();
final KeyValueStorageTransaction tx = store.startTransaction(); final KeyValueStorageTransaction tx = store.startTransaction();
tx.rollback(); tx.rollback();
tx.remove(bytesOf(1)); tx.remove(bytesOf(1));
})
.isInstanceOf(IllegalStateException.class);
} }
/** /**
@ -404,12 +422,16 @@ public abstract class AbstractKeyValueStorageTest {
* *
* @throws Exception the exception * @throws Exception the exception
*/ */
@Test(expected = IllegalStateException.class) @Test
public void transactionCommitAfterRollback() throws Exception { public void transactionCommitAfterRollback() throws Exception {
Assertions.assertThatThrownBy(
() -> {
final KeyValueStorage store = createStore(); final KeyValueStorage store = createStore();
final KeyValueStorageTransaction tx = store.startTransaction(); final KeyValueStorageTransaction tx = store.startTransaction();
tx.rollback(); tx.rollback();
tx.commit(); tx.commit();
})
.isInstanceOf(IllegalStateException.class);
} }
/** /**
@ -417,12 +439,16 @@ public abstract class AbstractKeyValueStorageTest {
* *
* @throws Exception the exception * @throws Exception the exception
*/ */
@Test(expected = IllegalStateException.class) @Test
public void transactionCommitTwice() throws Exception { public void transactionCommitTwice() throws Exception {
Assertions.assertThatThrownBy(
() -> {
final KeyValueStorage store = createStore(); final KeyValueStorage store = createStore();
final KeyValueStorageTransaction tx = store.startTransaction(); final KeyValueStorageTransaction tx = store.startTransaction();
tx.commit(); tx.commit();
tx.commit(); tx.commit();
})
.isInstanceOf(IllegalStateException.class);
} }
/** /**
@ -430,12 +456,16 @@ public abstract class AbstractKeyValueStorageTest {
* *
* @throws Exception the exception * @throws Exception the exception
*/ */
@Test(expected = IllegalStateException.class) @Test
public void transactionRollbackAfterCommit() throws Exception { public void transactionRollbackAfterCommit() throws Exception {
Assertions.assertThatThrownBy(
() -> {
final KeyValueStorage store = createStore(); final KeyValueStorage store = createStore();
final KeyValueStorageTransaction tx = store.startTransaction(); final KeyValueStorageTransaction tx = store.startTransaction();
tx.commit(); tx.commit();
tx.rollback(); tx.rollback();
})
.isInstanceOf(IllegalStateException.class);
} }
/** /**
@ -443,12 +473,16 @@ public abstract class AbstractKeyValueStorageTest {
* *
* @throws Exception the exception * @throws Exception the exception
*/ */
@Test(expected = IllegalStateException.class) @Test
public void transactionRollbackTwice() throws Exception { public void transactionRollbackTwice() throws Exception {
Assertions.assertThatThrownBy(
() -> {
final KeyValueStorage store = createStore(); final KeyValueStorage store = createStore();
final KeyValueStorageTransaction tx = store.startTransaction(); final KeyValueStorageTransaction tx = store.startTransaction();
tx.rollback(); tx.rollback();
tx.rollback(); tx.rollback();
})
.isInstanceOf(IllegalStateException.class);
} }
/** /**
@ -547,4 +581,15 @@ public abstract class AbstractKeyValueStorageTest {
protected byte[] bytesOf(final int... bytes) { protected byte[] bytesOf(final int... bytes) {
return Bytes.of(bytes).toArrayUnsafe(); return Bytes.of(bytes).toArrayUnsafe();
} }
/**
* Create a sub folder from the given path, that will not conflict with other folders.
*
* @param folder the folder in which to create the sub folder
* @return the path representing the sub folder
* @throws Exception if the folder cannot be created
*/
protected Path getTempSubFolder(final Path folder) throws Exception {
return java.nio.file.Files.createTempDirectory(folder, null);
}
} }

Loading…
Cancel
Save