From 99538ba04c8cc36f359fdb5887f7a070383f3814 Mon Sep 17 00:00:00 2001 From: Esteban Zimanyi Date: Thu, 23 Jul 2026 09:26:15 +0200 Subject: [PATCH] Split the Kafka app into a binding module and a benchmark module The kafka-streams-app module packed the generated MEOS binding surface and the BerlinMOD streaming benchmark together, so a binding build/test dragged in the 27-cell BerlinMOD matrix. Split it into a Maven reactor: binding/ - the org.mobilitydb.meos.MeosOps* facades generated from the JMEOS catalog + the generic Kafka Streams wiring layer + the surface smoke tests. A pure projection; no application code. benchmark/ - the berlinmod.* BerlinMOD Streams app + its tests, depending on the binding module. All its MEOS access goes through the binding's generated surface. The parent pom drives both modules and shares the compiler/surefire config (including the LD_LIBRARY_PATH for the native libmeos, now staged once at the reactor root). build-jmeos.sh, the CI workflow and .gitignore follow the new layout. The binding module now builds and tests on its own, without the benchmark. --- .github/workflows/maven.yml | 3 +- .gitignore | 4 +- .../docs/benchmark.md | 0 benchmark/pom.xml | 131 +++++++++++ .../main/java/berlinmod/BerlinMODCorpus.java | 0 .../java/berlinmod/BerlinMODTopology.java | 0 .../main/java/berlinmod/BerlinMODTrip.java | 0 .../java/berlinmod/BerlinMODTripSerde.java | 0 .../src/main/java/berlinmod/Haversine.java | 0 .../src/main/java/berlinmod/MEOSBridge.java | 0 .../main/java/berlinmod/PointOfInterest.java | 0 .../java/berlinmod/Q1ContinuousProcessor.java | 0 .../java/berlinmod/Q1SnapshotProcessor.java | 0 .../java/berlinmod/Q1WindowedProcessor.java | 0 .../java/berlinmod/Q2ContinuousProcessor.java | 0 .../java/berlinmod/Q2SnapshotProcessor.java | 0 .../java/berlinmod/Q2WindowedProcessor.java | 0 .../java/berlinmod/Q3ContinuousProcessor.java | 0 .../java/berlinmod/Q3SnapshotProcessor.java | 0 .../java/berlinmod/Q3WindowedProcessor.java | 0 .../java/berlinmod/Q4ContinuousProcessor.java | 0 .../java/berlinmod/Q4SnapshotProcessor.java | 0 .../java/berlinmod/Q4WindowedProcessor.java | 0 .../java/berlinmod/Q5ContinuousProcessor.java | 0 .../java/berlinmod/Q5SnapshotProcessor.java | 0 .../java/berlinmod/Q5WindowedProcessor.java | 0 .../java/berlinmod/Q6ContinuousProcessor.java | 0 .../java/berlinmod/Q6SnapshotProcessor.java | 0 .../java/berlinmod/Q6WindowedProcessor.java | 0 .../java/berlinmod/Q7ContinuousProcessor.java | 0 .../java/berlinmod/Q7SnapshotProcessor.java | 0 .../java/berlinmod/Q7WindowedProcessor.java | 0 .../java/berlinmod/Q8ContinuousProcessor.java | 0 .../java/berlinmod/Q8SnapshotProcessor.java | 0 .../java/berlinmod/Q8WindowedProcessor.java | 0 .../java/berlinmod/Q9ContinuousProcessor.java | 0 .../java/berlinmod/Q9SnapshotProcessor.java | 0 .../java/berlinmod/Q9WindowedProcessor.java | 0 .../main/java/berlinmod/SegmentDistance.java | 0 .../src/main/resources/log4j.properties | 0 .../java/berlinmod/BerlinMODBenchmark.java | 0 .../berlinmod/BerlinMODFullMatrixTest.java | 0 .../berlinmod/BerlinMODSetSetJoinTest.java | 0 .../berlinmod/EmbeddedBrokerBenchmark.java | 0 .../src/test/resources/berlinmod_sample.csv | 0 binding/pom.xml | 117 +++++++++ .../wirings/MeosBoundedStateProcessor.java | 0 .../meos/wirings/MeosCrossStreamJoiner.java | 0 .../kafka/meos/wirings/MeosOpsRuntime.java | 0 .../kafka/meos/wirings/MeosStatelessOps.java | 0 .../meos/wirings/MeosWindowedAggregator.java | 0 .../mobilitydb/kafka/meos/wirings/README.md | 0 .../org/mobilitydb/meos/MeosSetSetJoin.java | 0 .../kafka/meos/MeosCbufferSmokeTest.java | 0 .../kafka/meos/MeosFacadeSmokeTest.java | 0 .../kafka/meos/MeosNpointSmokeTest.java | 0 .../kafka/meos/MeosPoseSmokeTest.java | 0 .../wirings/demo/MeosWiringsDemoTopology.java | 0 build-jmeos.sh | 6 +- kafka-streams-app/pom.xml | 222 ------------------ pom.xml | 63 +++++ 61 files changed, 317 insertions(+), 229 deletions(-) rename {kafka-streams-app => benchmark}/docs/benchmark.md (100%) create mode 100644 benchmark/pom.xml rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/BerlinMODCorpus.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/BerlinMODTopology.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/BerlinMODTrip.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/BerlinMODTripSerde.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Haversine.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/MEOSBridge.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/PointOfInterest.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q1ContinuousProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q1SnapshotProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q1WindowedProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q2ContinuousProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q2SnapshotProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q2WindowedProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q3ContinuousProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q3SnapshotProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q3WindowedProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q4ContinuousProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q4SnapshotProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q4WindowedProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q5ContinuousProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q5SnapshotProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q5WindowedProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q6ContinuousProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q6SnapshotProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q6WindowedProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q7ContinuousProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q7SnapshotProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q7WindowedProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q8ContinuousProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q8SnapshotProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q8WindowedProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q9ContinuousProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q9SnapshotProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/Q9WindowedProcessor.java (100%) rename {kafka-streams-app => benchmark}/src/main/java/berlinmod/SegmentDistance.java (100%) rename {kafka-streams-app => benchmark}/src/main/resources/log4j.properties (100%) rename {kafka-streams-app => benchmark}/src/test/java/berlinmod/BerlinMODBenchmark.java (100%) rename {kafka-streams-app => benchmark}/src/test/java/berlinmod/BerlinMODFullMatrixTest.java (100%) rename {kafka-streams-app => benchmark}/src/test/java/berlinmod/BerlinMODSetSetJoinTest.java (100%) rename {kafka-streams-app => benchmark}/src/test/java/berlinmod/EmbeddedBrokerBenchmark.java (100%) rename {kafka-streams-app => benchmark}/src/test/resources/berlinmod_sample.csv (100%) create mode 100644 binding/pom.xml rename {kafka-streams-app => binding}/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosBoundedStateProcessor.java (100%) rename {kafka-streams-app => binding}/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosCrossStreamJoiner.java (100%) rename {kafka-streams-app => binding}/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosOpsRuntime.java (100%) rename {kafka-streams-app => binding}/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosStatelessOps.java (100%) rename {kafka-streams-app => binding}/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosWindowedAggregator.java (100%) rename {kafka-streams-app => binding}/src/main/java/org/mobilitydb/kafka/meos/wirings/README.md (100%) rename {kafka-streams-app => binding}/src/main/java/org/mobilitydb/meos/MeosSetSetJoin.java (100%) rename {kafka-streams-app => binding}/src/test/java/org/mobilitydb/kafka/meos/MeosCbufferSmokeTest.java (100%) rename {kafka-streams-app => binding}/src/test/java/org/mobilitydb/kafka/meos/MeosFacadeSmokeTest.java (100%) rename {kafka-streams-app => binding}/src/test/java/org/mobilitydb/kafka/meos/MeosNpointSmokeTest.java (100%) rename {kafka-streams-app => binding}/src/test/java/org/mobilitydb/kafka/meos/MeosPoseSmokeTest.java (100%) rename {kafka-streams-app => binding}/src/test/java/org/mobilitydb/kafka/meos/wirings/demo/MeosWiringsDemoTopology.java (100%) delete mode 100644 kafka-streams-app/pom.xml create mode 100644 pom.xml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index f459347..18edb97 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -43,11 +43,10 @@ jobs: # libmeos is already built and installed under /usr/local by the # provision-meos action, so build-jmeos.sh skips its own libmeos build # and only builds the JMEOS jar from JMEOS main, installs it into the - # local Maven repo, and stages libmeos.so under kafka-streams-app/lib. + # local Maven repo, and stages libmeos.so under the reactor-root lib/. run: JOBS=2 ./build-jmeos.sh - name: Test the Kafka Streams app # The generated MeosOps* facades forward to the installed JMEOS jar; the tests # exercise them against the freshly built libmeos, resolved via LD_LIBRARY_PATH. - working-directory: kafka-streams-app run: LD_LIBRARY_PATH="$PWD/lib" mvn -B test diff --git a/.gitignore b/.gitignore index b498157..d88fedd 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,8 @@ tools/meos-idl.json # JMEOS native dependency — generated by build-jmeos.sh, never committed .build-jmeos/ -kafka-streams-app/jar/ -kafka-streams-app/lib/ +jar/ +lib/ *.jar *.so diff --git a/kafka-streams-app/docs/benchmark.md b/benchmark/docs/benchmark.md similarity index 100% rename from kafka-streams-app/docs/benchmark.md rename to benchmark/docs/benchmark.md diff --git a/benchmark/pom.xml b/benchmark/pom.xml new file mode 100644 index 0000000..56d90ac --- /dev/null +++ b/benchmark/pom.xml @@ -0,0 +1,131 @@ + + + 4.0.0 + + + com.mobilitydb.kafka + mobility-kafka-parent + 1.0-SNAPSHOT + + + mobility-kafka-benchmark + + + + + + com.mobilitydb.kafka + mobility-kafka-binding + ${project.version} + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + slf4j-simple + ${slf4j.version} + + + + org.apache.kafka + kafka-streams-test-utils + ${kafka.version} + test + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + + + org.apache.kafka + kafka_2.13 + ${kafka.version} + test + + + org.apache.kafka + kafka_2.13 + ${kafka.version} + test-jartesttest + + + org.apache.kafka + kafka-streams + ${kafka.version} + test-jartesttest + + + org.apache.kafka + kafka-clients + ${kafka.version} + test-jartesttest + + + org.apache.kafka + kafka-server-common + ${kafka.version} + test-jartesttest + + + org.hamcrest + hamcrest + 2.2 + test + + + + + + + maven-shade-plugin + 3.5.1 + + + package + + shade + + + false + + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + + + + diff --git a/kafka-streams-app/src/main/java/berlinmod/BerlinMODCorpus.java b/benchmark/src/main/java/berlinmod/BerlinMODCorpus.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/BerlinMODCorpus.java rename to benchmark/src/main/java/berlinmod/BerlinMODCorpus.java diff --git a/kafka-streams-app/src/main/java/berlinmod/BerlinMODTopology.java b/benchmark/src/main/java/berlinmod/BerlinMODTopology.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/BerlinMODTopology.java rename to benchmark/src/main/java/berlinmod/BerlinMODTopology.java diff --git a/kafka-streams-app/src/main/java/berlinmod/BerlinMODTrip.java b/benchmark/src/main/java/berlinmod/BerlinMODTrip.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/BerlinMODTrip.java rename to benchmark/src/main/java/berlinmod/BerlinMODTrip.java diff --git a/kafka-streams-app/src/main/java/berlinmod/BerlinMODTripSerde.java b/benchmark/src/main/java/berlinmod/BerlinMODTripSerde.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/BerlinMODTripSerde.java rename to benchmark/src/main/java/berlinmod/BerlinMODTripSerde.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Haversine.java b/benchmark/src/main/java/berlinmod/Haversine.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Haversine.java rename to benchmark/src/main/java/berlinmod/Haversine.java diff --git a/kafka-streams-app/src/main/java/berlinmod/MEOSBridge.java b/benchmark/src/main/java/berlinmod/MEOSBridge.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/MEOSBridge.java rename to benchmark/src/main/java/berlinmod/MEOSBridge.java diff --git a/kafka-streams-app/src/main/java/berlinmod/PointOfInterest.java b/benchmark/src/main/java/berlinmod/PointOfInterest.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/PointOfInterest.java rename to benchmark/src/main/java/berlinmod/PointOfInterest.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q1ContinuousProcessor.java b/benchmark/src/main/java/berlinmod/Q1ContinuousProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q1ContinuousProcessor.java rename to benchmark/src/main/java/berlinmod/Q1ContinuousProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q1SnapshotProcessor.java b/benchmark/src/main/java/berlinmod/Q1SnapshotProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q1SnapshotProcessor.java rename to benchmark/src/main/java/berlinmod/Q1SnapshotProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q1WindowedProcessor.java b/benchmark/src/main/java/berlinmod/Q1WindowedProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q1WindowedProcessor.java rename to benchmark/src/main/java/berlinmod/Q1WindowedProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q2ContinuousProcessor.java b/benchmark/src/main/java/berlinmod/Q2ContinuousProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q2ContinuousProcessor.java rename to benchmark/src/main/java/berlinmod/Q2ContinuousProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q2SnapshotProcessor.java b/benchmark/src/main/java/berlinmod/Q2SnapshotProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q2SnapshotProcessor.java rename to benchmark/src/main/java/berlinmod/Q2SnapshotProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q2WindowedProcessor.java b/benchmark/src/main/java/berlinmod/Q2WindowedProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q2WindowedProcessor.java rename to benchmark/src/main/java/berlinmod/Q2WindowedProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q3ContinuousProcessor.java b/benchmark/src/main/java/berlinmod/Q3ContinuousProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q3ContinuousProcessor.java rename to benchmark/src/main/java/berlinmod/Q3ContinuousProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q3SnapshotProcessor.java b/benchmark/src/main/java/berlinmod/Q3SnapshotProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q3SnapshotProcessor.java rename to benchmark/src/main/java/berlinmod/Q3SnapshotProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q3WindowedProcessor.java b/benchmark/src/main/java/berlinmod/Q3WindowedProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q3WindowedProcessor.java rename to benchmark/src/main/java/berlinmod/Q3WindowedProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q4ContinuousProcessor.java b/benchmark/src/main/java/berlinmod/Q4ContinuousProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q4ContinuousProcessor.java rename to benchmark/src/main/java/berlinmod/Q4ContinuousProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q4SnapshotProcessor.java b/benchmark/src/main/java/berlinmod/Q4SnapshotProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q4SnapshotProcessor.java rename to benchmark/src/main/java/berlinmod/Q4SnapshotProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q4WindowedProcessor.java b/benchmark/src/main/java/berlinmod/Q4WindowedProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q4WindowedProcessor.java rename to benchmark/src/main/java/berlinmod/Q4WindowedProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q5ContinuousProcessor.java b/benchmark/src/main/java/berlinmod/Q5ContinuousProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q5ContinuousProcessor.java rename to benchmark/src/main/java/berlinmod/Q5ContinuousProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q5SnapshotProcessor.java b/benchmark/src/main/java/berlinmod/Q5SnapshotProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q5SnapshotProcessor.java rename to benchmark/src/main/java/berlinmod/Q5SnapshotProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q5WindowedProcessor.java b/benchmark/src/main/java/berlinmod/Q5WindowedProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q5WindowedProcessor.java rename to benchmark/src/main/java/berlinmod/Q5WindowedProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q6ContinuousProcessor.java b/benchmark/src/main/java/berlinmod/Q6ContinuousProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q6ContinuousProcessor.java rename to benchmark/src/main/java/berlinmod/Q6ContinuousProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q6SnapshotProcessor.java b/benchmark/src/main/java/berlinmod/Q6SnapshotProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q6SnapshotProcessor.java rename to benchmark/src/main/java/berlinmod/Q6SnapshotProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q6WindowedProcessor.java b/benchmark/src/main/java/berlinmod/Q6WindowedProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q6WindowedProcessor.java rename to benchmark/src/main/java/berlinmod/Q6WindowedProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q7ContinuousProcessor.java b/benchmark/src/main/java/berlinmod/Q7ContinuousProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q7ContinuousProcessor.java rename to benchmark/src/main/java/berlinmod/Q7ContinuousProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q7SnapshotProcessor.java b/benchmark/src/main/java/berlinmod/Q7SnapshotProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q7SnapshotProcessor.java rename to benchmark/src/main/java/berlinmod/Q7SnapshotProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q7WindowedProcessor.java b/benchmark/src/main/java/berlinmod/Q7WindowedProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q7WindowedProcessor.java rename to benchmark/src/main/java/berlinmod/Q7WindowedProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q8ContinuousProcessor.java b/benchmark/src/main/java/berlinmod/Q8ContinuousProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q8ContinuousProcessor.java rename to benchmark/src/main/java/berlinmod/Q8ContinuousProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q8SnapshotProcessor.java b/benchmark/src/main/java/berlinmod/Q8SnapshotProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q8SnapshotProcessor.java rename to benchmark/src/main/java/berlinmod/Q8SnapshotProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q8WindowedProcessor.java b/benchmark/src/main/java/berlinmod/Q8WindowedProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q8WindowedProcessor.java rename to benchmark/src/main/java/berlinmod/Q8WindowedProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q9ContinuousProcessor.java b/benchmark/src/main/java/berlinmod/Q9ContinuousProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q9ContinuousProcessor.java rename to benchmark/src/main/java/berlinmod/Q9ContinuousProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q9SnapshotProcessor.java b/benchmark/src/main/java/berlinmod/Q9SnapshotProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q9SnapshotProcessor.java rename to benchmark/src/main/java/berlinmod/Q9SnapshotProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/Q9WindowedProcessor.java b/benchmark/src/main/java/berlinmod/Q9WindowedProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/Q9WindowedProcessor.java rename to benchmark/src/main/java/berlinmod/Q9WindowedProcessor.java diff --git a/kafka-streams-app/src/main/java/berlinmod/SegmentDistance.java b/benchmark/src/main/java/berlinmod/SegmentDistance.java similarity index 100% rename from kafka-streams-app/src/main/java/berlinmod/SegmentDistance.java rename to benchmark/src/main/java/berlinmod/SegmentDistance.java diff --git a/kafka-streams-app/src/main/resources/log4j.properties b/benchmark/src/main/resources/log4j.properties similarity index 100% rename from kafka-streams-app/src/main/resources/log4j.properties rename to benchmark/src/main/resources/log4j.properties diff --git a/kafka-streams-app/src/test/java/berlinmod/BerlinMODBenchmark.java b/benchmark/src/test/java/berlinmod/BerlinMODBenchmark.java similarity index 100% rename from kafka-streams-app/src/test/java/berlinmod/BerlinMODBenchmark.java rename to benchmark/src/test/java/berlinmod/BerlinMODBenchmark.java diff --git a/kafka-streams-app/src/test/java/berlinmod/BerlinMODFullMatrixTest.java b/benchmark/src/test/java/berlinmod/BerlinMODFullMatrixTest.java similarity index 100% rename from kafka-streams-app/src/test/java/berlinmod/BerlinMODFullMatrixTest.java rename to benchmark/src/test/java/berlinmod/BerlinMODFullMatrixTest.java diff --git a/kafka-streams-app/src/test/java/berlinmod/BerlinMODSetSetJoinTest.java b/benchmark/src/test/java/berlinmod/BerlinMODSetSetJoinTest.java similarity index 100% rename from kafka-streams-app/src/test/java/berlinmod/BerlinMODSetSetJoinTest.java rename to benchmark/src/test/java/berlinmod/BerlinMODSetSetJoinTest.java diff --git a/kafka-streams-app/src/test/java/berlinmod/EmbeddedBrokerBenchmark.java b/benchmark/src/test/java/berlinmod/EmbeddedBrokerBenchmark.java similarity index 100% rename from kafka-streams-app/src/test/java/berlinmod/EmbeddedBrokerBenchmark.java rename to benchmark/src/test/java/berlinmod/EmbeddedBrokerBenchmark.java diff --git a/kafka-streams-app/src/test/resources/berlinmod_sample.csv b/benchmark/src/test/resources/berlinmod_sample.csv similarity index 100% rename from kafka-streams-app/src/test/resources/berlinmod_sample.csv rename to benchmark/src/test/resources/berlinmod_sample.csv diff --git a/binding/pom.xml b/binding/pom.xml new file mode 100644 index 0000000..915db5d --- /dev/null +++ b/binding/pom.xml @@ -0,0 +1,117 @@ + + + 4.0.0 + + + com.mobilitydb.kafka + mobility-kafka-parent + 1.0-SNAPSHOT + + + mobility-kafka-binding + + + + + + com.mobilitydb + jmeos + ${jmeos.version} + + + com.github.jnr + jnr-ffi + ${jnr.version} + + + org.apache.kafka + kafka-streams + ${kafka.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + + + org.slf4j + slf4j-simple + ${slf4j.version} + test + + + org.apache.kafka + kafka-streams-test-utils + ${kafka.version} + test + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 3.1.0 + + + generate-facades + generate-sources + exec + + python3 + + ${project.basedir}/../tools/codegen_jvm.py + --engine + kafka + --catalog + ${project.basedir}/../tools/meos-idl.json + --jar + ${settings.localRepository}/com/mobilitydb/jmeos/${jmeos.version}/jmeos-${jmeos.version}.jar + --out + ${project.build.directory}/generated-facades + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.5.0 + + + add-generated-facades + generate-sources + add-source + + + ${project.build.directory}/generated-facades/src/main/java + + + + + + + + diff --git a/kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosBoundedStateProcessor.java b/binding/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosBoundedStateProcessor.java similarity index 100% rename from kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosBoundedStateProcessor.java rename to binding/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosBoundedStateProcessor.java diff --git a/kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosCrossStreamJoiner.java b/binding/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosCrossStreamJoiner.java similarity index 100% rename from kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosCrossStreamJoiner.java rename to binding/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosCrossStreamJoiner.java diff --git a/kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosOpsRuntime.java b/binding/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosOpsRuntime.java similarity index 100% rename from kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosOpsRuntime.java rename to binding/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosOpsRuntime.java diff --git a/kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosStatelessOps.java b/binding/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosStatelessOps.java similarity index 100% rename from kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosStatelessOps.java rename to binding/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosStatelessOps.java diff --git a/kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosWindowedAggregator.java b/binding/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosWindowedAggregator.java similarity index 100% rename from kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosWindowedAggregator.java rename to binding/src/main/java/org/mobilitydb/kafka/meos/wirings/MeosWindowedAggregator.java diff --git a/kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/README.md b/binding/src/main/java/org/mobilitydb/kafka/meos/wirings/README.md similarity index 100% rename from kafka-streams-app/src/main/java/org/mobilitydb/kafka/meos/wirings/README.md rename to binding/src/main/java/org/mobilitydb/kafka/meos/wirings/README.md diff --git a/kafka-streams-app/src/main/java/org/mobilitydb/meos/MeosSetSetJoin.java b/binding/src/main/java/org/mobilitydb/meos/MeosSetSetJoin.java similarity index 100% rename from kafka-streams-app/src/main/java/org/mobilitydb/meos/MeosSetSetJoin.java rename to binding/src/main/java/org/mobilitydb/meos/MeosSetSetJoin.java diff --git a/kafka-streams-app/src/test/java/org/mobilitydb/kafka/meos/MeosCbufferSmokeTest.java b/binding/src/test/java/org/mobilitydb/kafka/meos/MeosCbufferSmokeTest.java similarity index 100% rename from kafka-streams-app/src/test/java/org/mobilitydb/kafka/meos/MeosCbufferSmokeTest.java rename to binding/src/test/java/org/mobilitydb/kafka/meos/MeosCbufferSmokeTest.java diff --git a/kafka-streams-app/src/test/java/org/mobilitydb/kafka/meos/MeosFacadeSmokeTest.java b/binding/src/test/java/org/mobilitydb/kafka/meos/MeosFacadeSmokeTest.java similarity index 100% rename from kafka-streams-app/src/test/java/org/mobilitydb/kafka/meos/MeosFacadeSmokeTest.java rename to binding/src/test/java/org/mobilitydb/kafka/meos/MeosFacadeSmokeTest.java diff --git a/kafka-streams-app/src/test/java/org/mobilitydb/kafka/meos/MeosNpointSmokeTest.java b/binding/src/test/java/org/mobilitydb/kafka/meos/MeosNpointSmokeTest.java similarity index 100% rename from kafka-streams-app/src/test/java/org/mobilitydb/kafka/meos/MeosNpointSmokeTest.java rename to binding/src/test/java/org/mobilitydb/kafka/meos/MeosNpointSmokeTest.java diff --git a/kafka-streams-app/src/test/java/org/mobilitydb/kafka/meos/MeosPoseSmokeTest.java b/binding/src/test/java/org/mobilitydb/kafka/meos/MeosPoseSmokeTest.java similarity index 100% rename from kafka-streams-app/src/test/java/org/mobilitydb/kafka/meos/MeosPoseSmokeTest.java rename to binding/src/test/java/org/mobilitydb/kafka/meos/MeosPoseSmokeTest.java diff --git a/kafka-streams-app/src/test/java/org/mobilitydb/kafka/meos/wirings/demo/MeosWiringsDemoTopology.java b/binding/src/test/java/org/mobilitydb/kafka/meos/wirings/demo/MeosWiringsDemoTopology.java similarity index 100% rename from kafka-streams-app/src/test/java/org/mobilitydb/kafka/meos/wirings/demo/MeosWiringsDemoTopology.java rename to binding/src/test/java/org/mobilitydb/kafka/meos/wirings/demo/MeosWiringsDemoTopology.java diff --git a/build-jmeos.sh b/build-jmeos.sh index 9865ab2..6c7cd9e 100755 --- a/build-jmeos.sh +++ b/build-jmeos.sh @@ -17,10 +17,10 @@ # 3. Registers the jar in the local Maven repository via # `mvn install:install-file` under the coordinates the kafka-streams-app # pom depends on (com.mobilitydb:jmeos:1.4.0 by default). -# 4. Copies libmeos.so into kafka-streams-app/lib/ for the test/runtime +# 4. Copies libmeos.so into the reactor-root lib/ for the test/runtime # LD_LIBRARY_PATH. # -# After running this once, `cd kafka-streams-app && mvn test` resolves JMEOS as +# After running this once, `mvn test` resolves JMEOS as # an ordinary dependency — no committed jar/so required. # # The refs below track upstream MobilityDB master and MobilityDB/JMEOS main — the @@ -51,7 +51,7 @@ JMEOS_VERSION="${JMEOS_VERSION:-1.4.0}" # Layout. # --------------------------------------------------------------------------- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -APP_DIR="${SCRIPT_DIR}/kafka-streams-app" +APP_DIR="${SCRIPT_DIR}" WORK_DIR="${WORK_DIR:-${SCRIPT_DIR}/.build-jmeos}" JOBS="${JOBS:-$(nproc 2>/dev/null || echo 4)}" diff --git a/kafka-streams-app/pom.xml b/kafka-streams-app/pom.xml deleted file mode 100644 index 8bcf69a..0000000 --- a/kafka-streams-app/pom.xml +++ /dev/null @@ -1,222 +0,0 @@ - - - 4.0.0 - - com.mobilitydb.kafka - mobility-kafka-streams - 1.0-SNAPSHOT - - - 21 - 21 - UTF-8 - 3.6.0 - 2.18.2 - 2.0.16 - 5.11.4 - true - ${project.basedir}/lib - - - - - - com.mobilitydb - jmeos - 1.4.0 - - - com.github.jnr - jnr-ffi - 2.1.10 - - - org.apache.kafka - kafka-streams - ${kafka.version} - - - - org.apache.kafka - kafka-streams-test-utils - ${kafka.version} - test - - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - - org.slf4j - slf4j-api - ${slf4j.version} - - - org.slf4j - slf4j-simple - ${slf4j.version} - - - - org.junit.jupiter - junit-jupiter-api - ${junit.version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit.version} - test - - - - - org.apache.kafka - kafka_2.13 - ${kafka.version} - test - - - org.apache.kafka - kafka_2.13 - ${kafka.version} - test-jartesttest - - - org.apache.kafka - kafka-streams - ${kafka.version} - test-jartesttest - - - org.apache.kafka - kafka-clients - ${kafka.version} - test-jartesttest - - - org.apache.kafka - kafka-server-common - ${kafka.version} - test-jartesttest - - - org.hamcrest - hamcrest - 2.2 - test - - - - - - - - org.codehaus.mojo - exec-maven-plugin - 3.1.0 - - - generate-facades - generate-sources - exec - - python3 - - ${project.basedir}/../tools/codegen_jvm.py - --engine - kafka - --catalog - ${project.basedir}/../tools/meos-idl.json - --jar - ${settings.localRepository}/com/mobilitydb/jmeos/1.4.0/jmeos-1.4.0.jar - --out - ${project.build.directory}/generated-facades - - - - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.5.0 - - - add-generated-facades - generate-sources - add-source - - - ${project.build.directory}/generated-facades/src/main/java - - - - - - - maven-compiler-plugin - 3.12.1 - - ${maven.compiler.source} - ${maven.compiler.target} - - - - maven-surefire-plugin - 3.2.5 - - false - - ${meos.enabled} - - - ${meos.lib.dir} - - --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED - - - - maven-shade-plugin - 3.5.1 - - - package - - shade - - - false - - - - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - - - - - - - diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..5817910 --- /dev/null +++ b/pom.xml @@ -0,0 +1,63 @@ + + + 4.0.0 + + com.mobilitydb.kafka + mobility-kafka-parent + 1.0-SNAPSHOT + pom + + + binding + benchmark + + + + 21 + 21 + UTF-8 + 3.6.0 + 2.18.2 + 2.0.16 + 5.11.4 + 1.4.0 + 2.1.10 + true + + ${maven.multiModuleProjectDirectory}/lib + + + + + + + maven-compiler-plugin + 3.12.1 + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + maven-surefire-plugin + 3.2.5 + + false + + ${meos.enabled} + + + ${meos.lib.dir} + + --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED + + + + + +