diff --git a/build.gradle.kts b/build.gradle.kts index 63c8711..2a23f7b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -152,6 +152,7 @@ apollo { spotless { kotlin { + targetExclude("**/generated/**") licenseHeaderFile(file("LICENSE-HEADER.txt")) } } diff --git a/gradle.properties b/gradle.properties index 79f7733..9ca4f31 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,12 +1,12 @@ kotlin.code.style=official cliGroup=com.sourceplusplus -projectVersion=0.3.1 +projectVersion=0.4.0 vertxVersion=4.2.4 graalVersion = 21.3.0 -jacksonVersion = 2.12.5 -apolloVersion=3.0.0 +jacksonVersion=2.13.1 +apolloVersion=3.1.0 commonsLang3Version = 3.12.0 cliktVersion = 3.2.0 bouncycastleVersion = 1.69 diff --git a/settings.gradle b/settings.gradle index ce36349..ee52cbb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -10,7 +10,7 @@ pluginManagement { id 'com.avast.gradle.docker-compose' version "0.15.0" apply false id 'io.gitlab.arturbosch.detekt' version "1.19.0" apply false id 'com.github.johnrengelman.shadow' version "7.1.2" apply false - id 'com.apollographql.apollo3' version "3.0.0" apply false + id 'com.apollographql.apollo3' version "3.1.0" apply false id 'org.mikeneck.graalvm-native-image' version "1.4.1" apply false id 'com.diffplug.spotless' version '6.2.1' apply false } diff --git a/src/main/kotlin/spp/cli/PlatformCLI.kt b/src/main/kotlin/spp/cli/PlatformCLI.kt index 425fe02..a10c96a 100644 --- a/src/main/kotlin/spp/cli/PlatformCLI.kt +++ b/src/main/kotlin/spp/cli/PlatformCLI.kt @@ -43,7 +43,7 @@ import org.bouncycastle.openssl.PEMKeyPair import org.bouncycastle.openssl.PEMParser import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter import org.bouncycastle.util.encoders.Hex -import spp.protocol.developer.Developer +import spp.protocol.platform.developer.Developer import spp.protocol.util.KSerializers import java.io.File import java.io.StringReader diff --git a/src/main/kotlin/spp/cli/commands/instrument/SubscribeEvents.kt b/src/main/kotlin/spp/cli/commands/instrument/SubscribeEvents.kt index 7ac4ea5..c597fbf 100644 --- a/src/main/kotlin/spp/cli/commands/instrument/SubscribeEvents.kt +++ b/src/main/kotlin/spp/cli/commands/instrument/SubscribeEvents.kt @@ -35,14 +35,13 @@ import io.vertx.ext.eventbus.bridge.tcp.impl.protocol.FrameParser import io.vertx.kotlin.coroutines.await import kotlinx.coroutines.runBlocking import spp.cli.PlatformCLI -import spp.protocol.SourceMarkerServices +import spp.protocol.ProtocolMarshaller.deserializeLiveInstrumentRemoved +import spp.protocol.SourceServices.Provide.toLiveInstrumentSubscriberAddress import spp.protocol.extend.TCPServiceFrameParser -import spp.protocol.instrument.LiveInstrumentEvent -import spp.protocol.instrument.LiveInstrumentEventType -import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit -import spp.protocol.instrument.breakpoint.event.LiveBreakpointRemoved -import spp.protocol.instrument.log.event.LiveLogHit -import spp.protocol.instrument.log.event.LiveLogRemoved +import spp.protocol.instrument.event.LiveBreakpointHit +import spp.protocol.instrument.event.LiveInstrumentEvent +import spp.protocol.instrument.event.LiveInstrumentEventType +import spp.protocol.instrument.event.LiveLogHit class SubscribeEvents : CliktCommand( help = "Listens for and outputs live events. Subscribes to all events by default" @@ -89,7 +88,7 @@ class SubscribeEvents : CliktCommand( ).await() socket!!.handler(FrameParser(TCPServiceFrameParser(vertx, socket))) - vertx.eventBus().consumer("local." + SourceMarkerServices.Provide.LIVE_INSTRUMENT_SUBSCRIBER) { + vertx.eventBus().consumer(toLiveInstrumentSubscriberAddress(PlatformCLI.developer.id)) { val liveEvent = Json.decodeValue(it.body().toString(), LiveInstrumentEvent::class.java) //todo: impl filter on platform @@ -107,15 +106,9 @@ class SubscribeEvents : CliktCommand( return@consumer } } - LiveInstrumentEventType.BREAKPOINT_REMOVED -> { - val breakpointRemoved = Json.decodeValue(liveEvent.data, LiveBreakpointRemoved::class.java) - if (breakpointRemoved.breakpointId !in instrumentIds) { - return@consumer - } - } - LiveInstrumentEventType.LOG_REMOVED -> { - val logRemoved = Json.decodeValue(liveEvent.data, LiveLogRemoved::class.java) - if (logRemoved.logId !in instrumentIds) { + LiveInstrumentEventType.BREAKPOINT_REMOVED, LiveInstrumentEventType.LOG_REMOVED -> { + val logRemoved = deserializeLiveInstrumentRemoved(JsonObject(liveEvent.data)) + if (logRemoved.liveInstrument.id !in instrumentIds) { return@consumer } } @@ -164,9 +157,9 @@ class SubscribeEvents : CliktCommand( //register listener FrameHelper.sendFrame( BridgeEventType.REGISTER.name.lowercase(), - SourceMarkerServices.Provide.LIVE_INSTRUMENT_SUBSCRIBER, - JsonObject(), - socket + toLiveInstrumentSubscriberAddress(PlatformCLI.developer.id), null, + JsonObject().apply { PlatformCLI.developer.accessToken?.let { put("auth-token", it) } }, + null, null, socket ) println("Listening for events...") } diff --git a/src/main/kotlin/spp/cli/commands/view/SubscribeView.kt b/src/main/kotlin/spp/cli/commands/view/SubscribeView.kt index 271dc38..41d4307 100644 --- a/src/main/kotlin/spp/cli/commands/view/SubscribeView.kt +++ b/src/main/kotlin/spp/cli/commands/view/SubscribeView.kt @@ -18,8 +18,6 @@ package spp.cli.commands.view import com.github.ajalt.clikt.core.CliktCommand -import com.github.ajalt.clikt.parameters.arguments.argument -import com.github.ajalt.clikt.parameters.arguments.multiple import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.option import eu.geekplace.javapinning.JavaPinning @@ -36,7 +34,7 @@ import io.vertx.ext.eventbus.bridge.tcp.impl.protocol.FrameParser import io.vertx.kotlin.coroutines.await import kotlinx.coroutines.runBlocking import spp.cli.PlatformCLI -import spp.protocol.SourceMarkerServices.Provide.LIVE_VIEW_SUBSCRIBER +import spp.protocol.SourceServices.Provide.toLiveViewSubscriberAddress import spp.protocol.artifact.log.Log import spp.protocol.artifact.log.LogOrderType import spp.protocol.artifact.log.LogResult @@ -93,7 +91,7 @@ class SubscribeView : CliktCommand( ).await() socket!!.handler(FrameParser(TCPServiceFrameParser(vertx, socket))) - vertx.eventBus().consumer("local.$LIVE_VIEW_SUBSCRIBER.${PlatformCLI.developer.id}") { + vertx.eventBus().consumer(toLiveViewSubscriberAddress(PlatformCLI.developer.id)) { val event = Json.decodeValue(it.body().toString(), LiveViewEvent::class.java) if (outputFullEvent) { println(event.metricsData) @@ -109,9 +107,9 @@ class SubscribeView : CliktCommand( //register listener FrameHelper.sendFrame( BridgeEventType.REGISTER.name.lowercase(), - "$LIVE_VIEW_SUBSCRIBER.${PlatformCLI.developer.id}", - JsonObject(), - socket + toLiveViewSubscriberAddress(PlatformCLI.developer.id), null, + JsonObject().apply { PlatformCLI.developer.accessToken?.let { put("auth-token", it) } }, + null, null, socket ) println("Listening for events...") } @@ -144,7 +142,7 @@ class SubscribeView : CliktCommand( Int.MAX_VALUE ) logsResult.logs.forEach { - println(it.getFormattedMessage()) + println(it.toFormattedMessage()) } } } diff --git a/src/test/kotlin/integration/BatchLiveInstrumentCLI.kt b/src/test/kotlin/integration/BatchLiveInstrumentCLI.kt index 7c4ad63..ee0ef38 100644 --- a/src/test/kotlin/integration/BatchLiveInstrumentCLI.kt +++ b/src/test/kotlin/integration/BatchLiveInstrumentCLI.kt @@ -22,8 +22,8 @@ import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotNull import org.junit.jupiter.api.Test import spp.cli.Main +import spp.protocol.instrument.LiveBreakpoint import spp.protocol.instrument.LiveInstrument -import spp.protocol.instrument.breakpoint.LiveBreakpoint class BatchLiveInstrumentCLI : CLIIntegrationTest() { diff --git a/src/test/kotlin/integration/CLIIntegrationTest.kt b/src/test/kotlin/integration/CLIIntegrationTest.kt index 6db3156..1ff0917 100644 --- a/src/test/kotlin/integration/CLIIntegrationTest.kt +++ b/src/test/kotlin/integration/CLIIntegrationTest.kt @@ -22,10 +22,10 @@ import io.vertx.core.json.Json import io.vertx.core.json.JsonArray import io.vertx.core.json.jackson.DatabindCodec import spp.cli.Main -import spp.protocol.instrument.breakpoint.LiveBreakpoint -import spp.protocol.instrument.log.LiveLog -import spp.protocol.instrument.meter.LiveMeter -import spp.protocol.instrument.span.LiveSpan +import spp.protocol.instrument.LiveBreakpoint +import spp.protocol.instrument.LiveLog +import spp.protocol.instrument.LiveMeter +import spp.protocol.instrument.LiveSpan import java.io.OutputStream import java.io.PrintStream import kotlin.reflect.KClass diff --git a/src/test/kotlin/integration/LiveInstrumentCLI.kt b/src/test/kotlin/integration/LiveInstrumentCLI.kt index 5a1d863..bc4a444 100644 --- a/src/test/kotlin/integration/LiveInstrumentCLI.kt +++ b/src/test/kotlin/integration/LiveInstrumentCLI.kt @@ -17,13 +17,13 @@ */ package integration -import spp.protocol.instrument.LiveInstrument -import spp.protocol.instrument.breakpoint.LiveBreakpoint -import spp.protocol.instrument.log.LiveLog import io.vertx.core.json.Json import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Test import spp.cli.Main +import spp.protocol.instrument.LiveBreakpoint +import spp.protocol.instrument.LiveInstrument +import spp.protocol.instrument.LiveLog class LiveInstrumentCLI : CLIIntegrationTest() {