diff --git a/theodolite-benchmarks/application-kafkastreams-commons/build.gradle b/theodolite-benchmarks/application-kafkastreams-commons/build.gradle index 01daacba94e6be67a43767fd663b8089a6b965bc..e177aa5c4770c1a77fc21084a7766741fdb9bdec 100644 --- a/theodolite-benchmarks/application-kafkastreams-commons/build.gradle +++ b/theodolite-benchmarks/application-kafkastreams-commons/build.gradle @@ -2,6 +2,13 @@ plugins { id 'theodolite.java-commons' } +repositories { + jcenter() + maven { + url "https://oss.sonatype.org/content/repositories/snapshots/" + } +} + dependencies { // These dependencies are used internally, and not exposed to consumers on their own compile classpath. // implementation 'org.slf4j:slf4j-simple:1.7.25' diff --git a/theodolite-benchmarks/build.gradle b/theodolite-benchmarks/build.gradle index 3395dcf80a26588287fd80b597fe24e0916c0002..3d980c33304e6ad1ba449f8d34eb24897b90426c 100644 --- a/theodolite-benchmarks/build.gradle +++ b/theodolite-benchmarks/build.gradle @@ -1,4 +1,5 @@ // Inherited to all subprojects +// Make shadow plugin available, used for flink buildscript { repositories { maven { @@ -10,133 +11,16 @@ buildscript { } } -// Variables used to distinct different subprojects -def useCaseProjects = subprojects.findAll {it -> it.name.matches('uc(.)*')} -def useCaseApplications = subprojects.findAll {it -> it.name.matches('uc[0-9]+-application')} -def useCaseApplicationsFlink = subprojects.findAll {it -> it.name.matches('uc[0-9]+-application-flink')} -def useCaseGenerators = subprojects.findAll {it -> it.name.matches('uc[0-9]+-workload-generator*')} - // Plugins allprojects { apply plugin: 'eclipse' } -subprojects { - apply plugin: 'theodolite.java-conventions' -} - -configure(useCaseProjects){ - apply plugin: 'application' -} - -configure(useCaseApplicationsFlink){ - apply plugin: 'com.github.johnrengelman.shadow' - applicationDefaultJvmArgs = ["-Dlog4j.configuration=log4j.properties"] -} - // Check for updates every build configurations.all { resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } -// Repositories for all projects -allprojects { - repositories { - jcenter() - maven { - url "https://oss.sonatype.org/content/repositories/snapshots/" - } - maven { - url 'https://packages.confluent.io/maven/' - } - maven { - url 'https://repository.apache.org/content/repositories/snapshots/' - } // TODO required? - } -} - -// Dependencies for all Kafka Streams benchmarks (use case applications) -configure(useCaseApplications) { - dependencies { - // These dependencies are used internally, and not exposed to consumers on their own compile classpath. - implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true } - implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true } - implementation 'org.apache.kafka:kafka-streams:2.6.0' // enable TransformerSuppliers - implementation 'com.google.code.gson:gson:2.8.2' - implementation 'com.google.guava:guava:24.1-jre' - implementation 'org.slf4j:slf4j-simple:1.7.25' - implementation project(':application-kafkastreams-commons') - - // Use JUnit test framework - testImplementation 'junit:junit:4.12' - } -} - -// Dependencies for all Flink benchmarks (use case applications) -configure(useCaseApplicationsFlink) { - ext { - flinkVersion = '1.12.2' - scalaBinaryVersion = '2.12' - } - - dependencies { - // Special version required because of https://issues.apache.org/jira/browse/FLINK-13703 - implementation('org.industrial-devops:titan-ccp-common:0.1.0-flink-ready-SNAPSHOT') { changing = true } - implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true } - - // These dependencies are used internally, and not exposed to consumers on their own compile classpath. - implementation 'org.apache.kafka:kafka-clients:2.2.0' - implementation 'com.google.guava:guava:24.1-jre' - implementation 'org.slf4j:slf4j-simple:1.6.1' - compile project(':flink-commons') - - //compile group: 'org.apache.kafka', name: 'kafka-clients', version: "2.2.0" - compile group: 'org.apache.flink', name: 'flink-java', version: "${flinkVersion}" - compile group: 'org.apache.flink', name: "flink-streaming-java_${scalaBinaryVersion}", version:"${flinkVersion}" - compile group: 'org.apache.flink', name: "flink-table-api-java-bridge_${scalaBinaryVersion}", version: "${flinkVersion}" - compile group: 'org.apache.flink', name: "flink-table-planner-blink_${scalaBinaryVersion}", version: "${flinkVersion}" - compile group: 'org.apache.flink', name: "flink-connector-kafka_${scalaBinaryVersion}", version: "${flinkVersion}" - implementation "org.apache.flink:flink-avro:${flinkVersion}" - implementation "org.apache.flink:flink-avro-confluent-registry:${flinkVersion}" - compile group: 'org.apache.flink', name: "flink-runtime-web_${scalaBinaryVersion}", version: "${flinkVersion}" // TODO: remove after development - compile group: 'org.apache.flink', name: "flink-statebackend-rocksdb_${scalaBinaryVersion}", version: "${flinkVersion}" - compile group: 'org.apache.flink', name: "flink-metrics-prometheus_${scalaBinaryVersion}", version: "${flinkVersion}" - - // Use JUnit test framework - testImplementation 'junit:junit:4.12' - } - - run.classpath = sourceSets.main.runtimeClasspath - - jar { - manifest { - attributes 'Built-By': System.getProperty('user.name'), - 'Build-Jdk': System.getProperty('java.version') - } - } - - shadowJar { - configurations = [project.configurations.compile] - zip64 true - } -} - -// Dependencies for all load generators -configure(useCaseGenerators) { - dependencies { - // These dependencies are used internally, and not exposed to consumers on their own compile classpath. - implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true } - implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true } - implementation 'org.slf4j:slf4j-simple:1.7.25' - - // These dependencies are used for the workload-generator-commmon - implementation project(':workload-generator-commons') - - // Use JUnit test framework - testImplementation 'junit:junit:4.12' - } -} - allprojects { eclipse { classpath { diff --git a/theodolite-benchmarks/buildSrc/build.gradle b/theodolite-benchmarks/buildSrc/build.gradle index 7abe60a90e3605163da5b00eade04de915664fa4..f6acd3b4ca164100087eaaf00623d8897d7f280f 100644 --- a/theodolite-benchmarks/buildSrc/build.gradle +++ b/theodolite-benchmarks/buildSrc/build.gradle @@ -1,3 +1,4 @@ +// to discover the precompiled script plugins plugins { id 'groovy-gradle-plugin' } diff --git a/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.java-uc.gradle b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.java-uc.gradle deleted file mode 100644 index b182c9d7f56d7d6df4b95e0fa4b449b101c6c5cd..0000000000000000000000000000000000000000 --- a/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.java-uc.gradle +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - // common java conventions - id 'theodolite.java-conventions' - - // make executable - id 'application' -} diff --git a/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-flink.gradle b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-flink.gradle new file mode 100644 index 0000000000000000000000000000000000000000..c19f930d82b78488cac584f5923dd650546ff89f --- /dev/null +++ b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-flink.gradle @@ -0,0 +1,63 @@ +plugins { + id 'theodolite.java-conventions' + id 'application' // executable + id 'com.github.johnrengelman.shadow' // create fat jar +} + +applicationDefaultJvmArgs = ["-Dlog4j.configuration=log4j.properties"] + +ext { + flinkVersion = '1.12.2' + scalaBinaryVersion = '2.12' +} + +repositories { + jcenter() + maven { + url "https://oss.sonatype.org/content/repositories/snapshots/" + } + maven { + url 'https://packages.confluent.io/maven/' + } +} + +dependencies { + // Special version required because of https://issues.apache.org/jira/browse/FLINK-13703 + implementation('org.industrial-devops:titan-ccp-common:0.1.0-flink-ready-SNAPSHOT') { changing = true } + implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true } + + // These dependencies are used internally, and not exposed to consumers on their own compile classpath. + implementation 'org.apache.kafka:kafka-clients:2.2.0' + implementation 'com.google.guava:guava:24.1-jre' + implementation 'org.slf4j:slf4j-simple:1.6.1' + compile project(':flink-commons') + + //compile group: 'org.apache.kafka', name: 'kafka-clients', version: "2.2.0" + compile group: 'org.apache.flink', name: 'flink-java', version: "${flinkVersion}" + compile group: 'org.apache.flink', name: "flink-streaming-java_${scalaBinaryVersion}", version:"${flinkVersion}" + compile group: 'org.apache.flink', name: "flink-table-api-java-bridge_${scalaBinaryVersion}", version: "${flinkVersion}" + compile group: 'org.apache.flink', name: "flink-table-planner-blink_${scalaBinaryVersion}", version: "${flinkVersion}" + compile group: 'org.apache.flink', name: "flink-connector-kafka_${scalaBinaryVersion}", version: "${flinkVersion}" + implementation "org.apache.flink:flink-avro:${flinkVersion}" + implementation "org.apache.flink:flink-avro-confluent-registry:${flinkVersion}" + compile group: 'org.apache.flink', name: "flink-runtime-web_${scalaBinaryVersion}", version: "${flinkVersion}" // TODO: remove after development + compile group: 'org.apache.flink', name: "flink-statebackend-rocksdb_${scalaBinaryVersion}", version: "${flinkVersion}" + compile group: 'org.apache.flink', name: "flink-metrics-prometheus_${scalaBinaryVersion}", version: "${flinkVersion}" + + // Use JUnit test framework + testImplementation 'junit:junit:4.12' +} + +run.classpath = sourceSets.main.runtimeClasspath + +jar { + manifest { + attributes 'Built-By': System.getProperty('user.name'), + 'Build-Jdk': System.getProperty('java.version') + } +} + +shadowJar { + configurations = [project.configurations.compile] + zip64 true +} diff --git a/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-kafka-streams.gradle b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-kafka-streams.gradle new file mode 100644 index 0000000000000000000000000000000000000000..c664038cfe7af98d9331a05db224170f06442537 --- /dev/null +++ b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-kafka-streams.gradle @@ -0,0 +1,31 @@ +plugins { + // common java conventions + id 'theodolite.java-conventions' + + // make executable + id 'application' +} + +repositories { + jcenter() + maven { + url "https://oss.sonatype.org/content/repositories/snapshots/" + } + maven { + url 'https://packages.confluent.io/maven/' + } +} + +dependencies { + // These dependencies are used internally, and not exposed to consumers on their own compile classpath. + implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true } + implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true } + implementation 'org.apache.kafka:kafka-streams:2.6.0' // enable TransformerSuppliers + implementation 'com.google.code.gson:gson:2.8.2' + implementation 'com.google.guava:guava:24.1-jre' + implementation 'org.slf4j:slf4j-simple:1.7.25' + implementation project(':application-kafkastreams-commons') + + // Use JUnit test framework + testImplementation 'junit:junit:4.12' +} diff --git a/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-workload.gradle b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-workload.gradle new file mode 100644 index 0000000000000000000000000000000000000000..2c1f9509afffb5ec4abd9c65127abaed328da1e4 --- /dev/null +++ b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-workload.gradle @@ -0,0 +1,30 @@ +plugins { + // common java conventions + id 'theodolite.java-conventions' + + // make executable + id 'application' +} + +repositories { + jcenter() + maven { + url "https://oss.sonatype.org/content/repositories/snapshots/" + } + maven { + url 'https://packages.confluent.io/maven/' + } +} + +dependencies { + // These dependencies are used internally, and not exposed to consumers on their own compile classpath. + implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true } + implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true } + implementation 'org.slf4j:slf4j-simple:1.7.25' + + // These dependencies are used for the workload-generator-commmon + implementation project(':workload-generator-commons') + + // Use JUnit test framework + testImplementation 'junit:junit:4.12' +} diff --git a/theodolite-benchmarks/flink-commons/build.gradle b/theodolite-benchmarks/flink-commons/build.gradle index a1f048b67da5b21a48c9d00951f6033a28ddd448..cff49b845a95b2d6f49fd2ef16b51124d5507d29 100644 --- a/theodolite-benchmarks/flink-commons/build.gradle +++ b/theodolite-benchmarks/flink-commons/build.gradle @@ -7,6 +7,13 @@ ext { scalaBinaryVersion = '2.12' } +repositories { + jcenter() + maven { + url "https://oss.sonatype.org/content/repositories/snapshots/" + } +} + dependencies { // Special version required because of https://issues.apache.org/jira/browse/FLINK-13703 implementation('org.industrial-devops:titan-ccp-common:0.1.0-flink-ready-SNAPSHOT') { changing = true } diff --git a/theodolite-benchmarks/uc1-application-flink/build.gradle b/theodolite-benchmarks/uc1-application-flink/build.gradle index 5626314b03684a458ffc91027595d0298a30b0b5..8a57c61ba7d3f799c69feb74d697b806f3773fa7 100644 --- a/theodolite-benchmarks/uc1-application-flink/build.gradle +++ b/theodolite-benchmarks/uc1-application-flink/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-flink' } mainClassName = "theodolite.uc1.application.HistoryServiceFlinkJob" diff --git a/theodolite-benchmarks/uc1-application/build.gradle b/theodolite-benchmarks/uc1-application/build.gradle index c13b8962726296230ff0fdb7ec104263839d0fae..3c4f6cda286c61dcee7efe4b871fbd71657d7973 100644 --- a/theodolite-benchmarks/uc1-application/build.gradle +++ b/theodolite-benchmarks/uc1-application/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-kafka-streams' } mainClassName = "theodolite.uc1.application.HistoryService" diff --git a/theodolite-benchmarks/uc1-workload-generator/build.gradle b/theodolite-benchmarks/uc1-workload-generator/build.gradle index 490dbb66314f6b76eb954865ef17a8c0810b6eb4..cec494c8e4f15d327b7c07c4f1f0adb597fa329d 100644 --- a/theodolite-benchmarks/uc1-workload-generator/build.gradle +++ b/theodolite-benchmarks/uc1-workload-generator/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-workload' } mainClassName = "theodolite.uc1.workloadgenerator.LoadGenerator" diff --git a/theodolite-benchmarks/uc2-application-flink/build.gradle b/theodolite-benchmarks/uc2-application-flink/build.gradle index 173c3ceacc79f7a8b8a2ace51fcf24b8d8b025fe..ee30302acd653257e361ffdbeb25aea241da1845 100644 --- a/theodolite-benchmarks/uc2-application-flink/build.gradle +++ b/theodolite-benchmarks/uc2-application-flink/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-flink' } allprojects { diff --git a/theodolite-benchmarks/uc2-application/build.gradle b/theodolite-benchmarks/uc2-application/build.gradle index 9195550317150f8890a10ecf8e0fd5e61d0ad153..da9ea85fa0b63188f06c596cc49fc6e5bb1bc048 100644 --- a/theodolite-benchmarks/uc2-application/build.gradle +++ b/theodolite-benchmarks/uc2-application/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-kafka-streams' } mainClassName = "theodolite.uc2.application.HistoryService" diff --git a/theodolite-benchmarks/uc2-workload-generator/build.gradle b/theodolite-benchmarks/uc2-workload-generator/build.gradle index 498e05fc87a0b4eb41f6f1f6dba1f647d6519f91..e949b625b95462c90819dc7c23a238abc77007f0 100644 --- a/theodolite-benchmarks/uc2-workload-generator/build.gradle +++ b/theodolite-benchmarks/uc2-workload-generator/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-workload' } mainClassName = "theodolite.uc2.workloadgenerator.LoadGenerator" diff --git a/theodolite-benchmarks/uc3-application-flink/build.gradle b/theodolite-benchmarks/uc3-application-flink/build.gradle index a1ed6ba07d7d3d277a4879d118253dea311b3293..20801fa5ff637980012d3f0eb55ee8c5c787a902 100644 --- a/theodolite-benchmarks/uc3-application-flink/build.gradle +++ b/theodolite-benchmarks/uc3-application-flink/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-flink' } allprojects { diff --git a/theodolite-benchmarks/uc3-application/build.gradle b/theodolite-benchmarks/uc3-application/build.gradle index ee4917278689e9dfa1848d24f8c6dc9d0c082c43..ac6bd76b5b72718eb7eadf0ade8d5c4d9456b3ba 100644 --- a/theodolite-benchmarks/uc3-application/build.gradle +++ b/theodolite-benchmarks/uc3-application/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-kafka-streams' } mainClassName = "theodolite.uc3.application.HistoryService" diff --git a/theodolite-benchmarks/uc3-workload-generator/build.gradle b/theodolite-benchmarks/uc3-workload-generator/build.gradle index 22103aaf28e60d276d98d946613e7f74b52ecc0e..d536e6e5ab47fcca02f99ce88b30d6ac9b69d71f 100644 --- a/theodolite-benchmarks/uc3-workload-generator/build.gradle +++ b/theodolite-benchmarks/uc3-workload-generator/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-workload' } mainClassName = "theodolite.uc3.workloadgenerator.LoadGenerator" diff --git a/theodolite-benchmarks/uc4-application-flink/build.gradle b/theodolite-benchmarks/uc4-application-flink/build.gradle index 9ef66cb39de68032c478a4455ac8544d0ed25452..e5466514ff96f3c0a711cbb333e5a6bd1a8dde94 100644 --- a/theodolite-benchmarks/uc4-application-flink/build.gradle +++ b/theodolite-benchmarks/uc4-application-flink/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-flink' } mainClassName = "theodolite.uc4.application.AggregationServiceFlinkJob" diff --git a/theodolite-benchmarks/uc4-application/build.gradle b/theodolite-benchmarks/uc4-application/build.gradle index 061650e31471fd313316036e4764ed761d8c6ab6..8486e9302b655087e0c8a970fd7f55a170f60a8f 100644 --- a/theodolite-benchmarks/uc4-application/build.gradle +++ b/theodolite-benchmarks/uc4-application/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-kafka-streams' } mainClassName = "theodolite.uc4.application.AggregationService" diff --git a/theodolite-benchmarks/uc4-workload-generator/build.gradle b/theodolite-benchmarks/uc4-workload-generator/build.gradle index 5d419e67c1b88dc8ef1c70b04318ac31785db250..14b39ccd5d3bc736f49bf2dff6943bfda66fac91 100644 --- a/theodolite-benchmarks/uc4-workload-generator/build.gradle +++ b/theodolite-benchmarks/uc4-workload-generator/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'theodolite.java-uc' + id 'theodolite.uc-workload' } mainClassName = "theodolite.uc4.workloadgenerator.LoadGenerator" diff --git a/theodolite-benchmarks/workload-generator-commons/build.gradle b/theodolite-benchmarks/workload-generator-commons/build.gradle index 06dd5b2b85a7fee15df6203bf1c22ac9e666a2ee..118f3e648f829a3eafe719ddf660d35ac8563574 100644 --- a/theodolite-benchmarks/workload-generator-commons/build.gradle +++ b/theodolite-benchmarks/workload-generator-commons/build.gradle @@ -2,6 +2,16 @@ plugins { id 'theodolite.java-commons' } +repositories { + jcenter() + maven { + url "https://oss.sonatype.org/content/repositories/snapshots/" + } + maven { + url 'https://packages.confluent.io/maven/' + } +} + dependencies { implementation 'com.google.guava:guava:30.1-jre' implementation 'com.hazelcast:hazelcast:4.1.1'