diff --git a/kafka-connect-neo4j/pom.xml b/kafka-connect-neo4j/pom.xml
index 3c2a975d..fbbd9e68 100644
--- a/kafka-connect-neo4j/pom.xml
+++ b/kafka-connect-neo4j/pom.xml
@@ -49,6 +49,11 @@
connect-utils
${kafka.connect.utils.version}
+
+ org.hamcrest
+ hamcrest
+ test
+
com.google.guava
diff --git a/kafka-connect-neo4j/src/test/kotlin/streams/kafka/connect/source/Neo4jSourceTaskTest.kt b/kafka-connect-neo4j/src/test/kotlin/streams/kafka/connect/source/Neo4jSourceTaskTest.kt
index 376f21c4..19e17316 100644
--- a/kafka-connect-neo4j/src/test/kotlin/streams/kafka/connect/source/Neo4jSourceTaskTest.kt
+++ b/kafka-connect-neo4j/src/test/kotlin/streams/kafka/connect/source/Neo4jSourceTaskTest.kt
@@ -6,12 +6,8 @@ import org.apache.kafka.connect.source.SourceRecord
import org.apache.kafka.connect.source.SourceTask
import org.apache.kafka.connect.source.SourceTaskContext
import org.apache.kafka.connect.storage.OffsetStorageReader
-import org.hamcrest.Matchers
-import org.junit.After
-import org.junit.AfterClass
-import org.junit.Before
-import org.junit.BeforeClass
-import org.junit.Test
+import org.hamcrest.Matchers.*
+import org.junit.*
import org.mockito.Mockito
import org.neo4j.driver.Driver
import org.neo4j.driver.Session
@@ -22,6 +18,10 @@ import streams.kafka.connect.common.Neo4jConnectorConfig
import streams.kafka.connect.sink.AuthenticationType
import streams.utils.JSONUtils
import streams.utils.StreamsUtils
+import java.time.Clock
+import java.time.Duration
+import java.time.Instant
+import java.time.ZoneId
import java.util.*
import java.util.concurrent.TimeUnit
@@ -84,103 +84,153 @@ class Neo4jSourceTaskTest {
@Test
fun `should source data from Neo4j with custom QUERY from NOW`() {
- val props = mutableMapOf()
- props[Neo4jConnectorConfig.SERVER_URI] = neo4j.boltUrl
- props[Neo4jSourceConnectorConfig.TOPIC] = UUID.randomUUID().toString()
- props[Neo4jSourceConnectorConfig.STREAMING_POLL_INTERVAL] = "1000"
- props[Neo4jSourceConnectorConfig.STREAMING_PROPERTY] = "timestamp"
- props[Neo4jSourceConnectorConfig.SOURCE_TYPE_QUERY] = getSourceQuery()
- props[Neo4jConnectorConfig.AUTHENTICATION_TYPE] = AuthenticationType.NONE.toString()
+ // create data with timestamp set as NOW - 5m
+ insertRecords(
+ 100, Clock.fixed(Instant.now().minus(Duration.ofMinutes(5)), ZoneId.systemDefault()), longToInt = true
+ )
- task.start(props)
- val totalRecords = 10
- val expected = insertRecords(totalRecords, true)
+ // create data with timestamp set as NOW + 5m
+ val expected =
+ insertRecords(
+ 75, Clock.fixed(Instant.now().plus(Duration.ofMinutes(5)), ZoneId.systemDefault()), longToInt = true
+ )
- val list = mutableListOf()
- Assert.assertEventually(ThrowingSupplier {
- task.poll()?.let { list.addAll(it) }
- val actualList = list.map { JSONUtils.readValue