Skip to content
Snippets Groups Projects
Commit ea7fd219 authored by Simon Ehrenstein's avatar Simon Ehrenstein
Browse files

Merge

parents 1948862e d6736e05
No related branches found
No related tags found
4 merge requests!159Re-implementation of Theodolite with Kotlin/Quarkus,!157Update Graal Image in CI pipeline,!83WIP: Re-implementation of Theodolite with Kotlin/Quarkus,!78Resolve "Implement Quarkus/Kotlin protype"
......@@ -29,17 +29,18 @@ The application is now runnable using `java -jar build/theodolite-quarkus-1.0.0-
## Creating a native executable
You can create a native executable using:
You can create a native executable using:
```shell script
./gradlew build -Dquarkus.package.type=native
```
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
```shell script
./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true
```
You can then execute your native executable with: `./build/theodolite-quarkus-1.0.0-SNAPSHOT-runner`
You can then execute your native executable with:
```./build/theodolite-quarkus-1.0.0-SNAPSHOT-runner```
If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling.
......@@ -48,3 +49,28 @@ If you want to learn more about building native executables, please consult http
<p>A Hello World RESTEasy resource</p>
Guide: https://quarkus.io/guides/rest-json
## Build and afterwards run the application in Docker container
```build_jvm.sh``` to build the jvm version
```build_native.sh``` to build the native image graal version
## Install Detekt Code analysis Plugin
Install https://plugins.jetbrains.com/plugin/10761-detekt
- Install the plugin
- Navigate to Settings/Preferences -> Tools -> Detekt
- Check Enable Detekt
- Specify your detekt configuration and baseline file (optional)
-> detekt issues will be annotated on-the-fly while coding
**ingore Failures in build:** add
```ignoreFailures = true```
to build.gradle detekt task
......@@ -2,11 +2,13 @@ plugins {
id 'org.jetbrains.kotlin.jvm' version "1.3.72"
id "org.jetbrains.kotlin.plugin.allopen" version "1.3.72"
id 'io.quarkus'
id "io.gitlab.arturbosch.detekt" version "1.15.0"
}
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
dependencies {
......@@ -21,6 +23,8 @@ dependencies {
implementation 'io.fabric8:kubernetes-client:5.0.0-alpha-2'
//implementation 'com.fkorotkov:kubernetes-dsl:2.8.1'
compile group: 'org.apache.kafka', name: 'kafka-clients', version: '2.7.0'
compile group: 'org.apache.zookeeper', name: 'zookeeper', version: '3.6.2'
}
group 'theodolite'
......@@ -45,3 +49,8 @@ compileKotlin {
compileTestKotlin {
kotlinOptions.jvmTarget = JavaVersion.VERSION_11
}
detekt {
failFast = true // fail build on any finding
buildUponDefaultConfig = true
ignoreFailures = true
}
\ No newline at end of file
./gradlew build
docker build -f src/main/docker/Dockerfile.jvm -t quarkus/theodolite-quarkus-jvm .
docker run -i --rm -p 8080:8080 quarkus/theodolite-quarkus-jvm
./gradlew build -Dquarkus.package.type=native
docker build -f src/main/docker/Dockerfile.native -t quarkus/theodolite-quarkus .
docker run -i --rm -p 8080:8080 quarkus/theodolite-quarkus
package theodolite
import org.apache.kafka.clients.admin.AdminClient
import org.apache.kafka.clients.admin.AdminClientConfig
import org.apache.kafka.clients.admin.ListTopicsResult
import org.apache.kafka.clients.admin.NewTopic
import org.apache.zookeeper.Watcher
import org.apache.zookeeper.ZooKeeper
import org.apache.zookeeper.WatchedEvent
class RunUc (){
val bootstrapServer = "my-confluent-cp-zookeeper:2181"
val ip = "172.18.0.9:5556"
val props = hashMapOf<String, Any>(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG to "172.18.0.9:5556")
lateinit var kafkaAdmin: AdminClient
init {
try {
kafkaAdmin = AdminClient.create(props)
}
catch (e: Exception) {
System.out.println(e.toString())
}
}
fun waitExecution(executionMinutes: Int) {
var milliToMinutes = 60000
System.out.println("Wait while executing")
for (i in 1.rangeTo(executionMinutes)) {
Thread.sleep((milliToMinutes*i).toLong());
System.out.println("Executed: "+i.toString()+" minutes")
}
System.out.println("Execution finished")
}
fun createTopics(topics: Map<String, Int>,replicationfactor: Short) {
val newTopics = mutableSetOf<NewTopic>()
for (i in topics) {
val tops = NewTopic(i.key,i.value,replicationfactor)
newTopics.add(tops)
}
kafkaAdmin.createTopics(newTopics)
System.out.println("Topics created")
}
fun deleteTopics(topics: List<String>) {
var result = kafkaAdmin.deleteTopics(topics)
System.out.println(result.values().toString())
}
fun getTopics(): ListTopicsResult? {
return kafkaAdmin.listTopics()
}
fun resetZookeeper(){
val watcher :Watcher = startWatcher()
val zookeeperclient = ZooKeeper(ip,60, watcher)
zookeeperclient.delete("/workload-generation", -1)
System.out.println("Deletion executed")
}
private fun startWatcher(): Watcher {
return Watcher { event ->
System.out.println(event.toString())
System.out.println(event.state.toString())
}
}
fun start_workload_generator(wg: String, dim_value:Integer, uc_id: String){
}
}
......@@ -7,7 +7,7 @@ import theodolite.execution.TheodoliteExecutor
object Main {
@JvmStatic
fun main(args: Array<String>) {
val theodolite = TheodoliteExecutor();
val theodolite = TheodoliteExecutor()
theodolite.run()
}
}
package theodolite
import org.apache.zookeeper.KeeperException
import org.apache.zookeeper.WatchedEvent
import org.apache.zookeeper.Watcher
import org.apache.zookeeper.ZooKeeper
class WorkloadGeneratorStateCleaner(ip: String) {
val path = "/workload-generation"
val sessionTimeout = 60
val retryTime = 3000L
lateinit var zookeeperClient: ZooKeeper
init {
try {
val watcher: Watcher = ZookeperWatcher() // defined below
zookeeperClient = ZooKeeper(ip, sessionTimeout, watcher)
} catch (e:Exception) {
System.out.println(e.toString())
}
}
fun deleteAll() {
var deleted = false
while (!deleted) {
//
try {
zookeeperClient.delete(path, -1)
} catch (ex: Exception) {
System.out.println(ex.toString())
}
try {
val clients = zookeeperClient.getChildren(path, true)
if (clients.isEmpty()){
break;
}
} catch (ex: Exception) {
when (ex) {
is KeeperException -> { deleted = true }
is InterruptedException -> {
System.out.println(ex.toString())
}
}
}
Thread.sleep(retryTime)
System.out.println("ZooKeeper reset was not successful. Retrying in 5s")
}
System.out.println("ZooKeeper reset was successful")
}
}
private class ZookeperWatcher : Watcher {
override fun process(event: WatchedEvent) {}
}
package theodolite
import io.quarkus.test.junit.NativeImageTest
@NativeImageTest
class NativeGreetingResourceIT : CompositeStrategyTest()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment