Skip to content

Commit 60a8046

Browse files
committed
added runner type and share vertical for testing
1 parent 0f5c3d7 commit 60a8046

File tree

8 files changed

+65
-33
lines changed

8 files changed

+65
-33
lines changed

modules/fbs-core/api/src/main/kotlin/de/thm/ii/fbs/controller/v2/PlaygroundController.kt

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import de.thm.ii.fbs.services.v2.persistence.*
1414
import de.thm.ii.fbs.utils.v2.annotations.CurrentToken
1515
import de.thm.ii.fbs.utils.v2.exceptions.NotFoundException
1616
import org.springframework.http.HttpStatus
17-
import org.springframework.http.ResponseEntity
1817
import org.springframework.web.bind.annotation.*
1918

2019
@RestController
@@ -75,15 +74,9 @@ class PlaygroundController(
7574

7675
@PostMapping("/{dbId}/dump")
7776
@ResponseBody
78-
fun createSharePlayground(@CurrentToken currentToken: LegacyToken, @PathVariable("dbId") dbId: Int): ResponseEntity<String> {
79-
return try {
80-
val selectedDb = databaseRepository.findByOwner_IdAndIdAndDeleted(currentToken.id, dbId, false)
81-
?: throw NotFoundException()
82-
val dumpUri = sqlPlaygroundCheckerService.createSharePlayground(selectedDb)
83-
return ResponseEntity.ok(dumpUri)
84-
} catch (e: Exception) {
85-
ResponseEntity.badRequest().body(e.message)
86-
}
77+
fun createSharePlayground(@CurrentToken currentToken: LegacyToken, @PathVariable("dbId") dbId: Int): String {
78+
val currentActiveDb = databaseRepository.findByOwner_IdAndIdAndDeleted(currentToken.id, dbId, false) ?: throw NotFoundException()
79+
return sqlPlaygroundCheckerService.createSharePlayground(currentActiveDb)
8780
}
8881

8982
@PostMapping("/{dbId}/reset")

modules/fbs-core/api/src/main/kotlin/de/thm/ii/fbs/model/v2/checker/RunnerType.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ package de.thm.ii.fbs.model.v2.checker
33
import com.fasterxml.jackson.annotation.JsonValue
44

55
enum class RunnerType(@JsonValue val label: String) {
6-
SQL_PLAYGROUND("sql-playground")
6+
SQL_PLAYGROUND("sql-playground"),
7+
SHARE_PLAYGROUND("share")
78
}

modules/fbs-core/api/src/main/kotlin/de/thm/ii/fbs/model/v2/checker/SharePlaygroundArguments.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@ data class SharePlaygroundArguments(
66
@JsonProperty("user")
77
val user: RunnerUser,
88
@JsonProperty("database")
9-
val database: RunnerDatabase
9+
val database: RunnerDatabase,
10+
@JsonProperty("runner")
11+
val runner: Runner = Runner(RunnerType.SHARE_PLAYGROUND)
1012
) : RunnerArguments()

modules/fbs-core/api/src/main/kotlin/de/thm/ii/fbs/services/v2/checker/RemoteCheckerV2Service.kt

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package de.thm.ii.fbs.services.v2.checker
22

33
import com.fasterxml.jackson.databind.ObjectMapper
4-
import de.thm.ii.fbs.model.v2.checker.SharePlaygroundArguments
54
import de.thm.ii.fbs.model.v2.checker.RunnerArguments
65
import de.thm.ii.fbs.utils.v2.helpers.RestTemplateFactory
76
import org.springframework.beans.factory.annotation.Value
@@ -33,14 +32,4 @@ abstract class RemoteCheckerV2Service(
3332
throw Exception("invalid status code from runner: ${res.statusCode}")
3433
}
3534
}
36-
37-
protected fun sendDumpRequest(dumpArguments: SharePlaygroundArguments): String {
38-
val body = objectMapper.writeValueAsString(dumpArguments)
39-
val res = restTemplate.postForEntity("$masterRunnerURL/runner/start", body, String::class.java) //path maybe needs to change
40-
41-
if (res.statusCode != HttpStatus.ACCEPTED) {
42-
throw Exception("Invalid status code from runner: ${res.statusCode}")
43-
}
44-
return res.body ?: throw IllegalStateException("Runner did not return any response")
45-
}
4635
}

modules/fbs-core/api/src/main/kotlin/de/thm/ii/fbs/services/v2/checker/SqlPlaygroundCheckerService.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import de.thm.ii.fbs.model.v2.security.SharePlaygroundToken
77
import de.thm.ii.fbs.services.v2.persistence.SharePlaygroundTokenRepository
88
import org.springframework.beans.factory.annotation.Value
99
import org.springframework.stereotype.Service
10-
import java.io.IOException
1110
import java.time.LocalDateTime
1211
import java.util.*
1312

@@ -34,19 +33,16 @@ class SqlPlaygroundCheckerService(
3433
)
3534
}
3635

37-
@Throws(IOException::class, InterruptedException::class)
3836
fun createSharePlayground(db: SqlPlaygroundDatabase): String {
3937
val token = UUID.randomUUID().toString()
40-
val expiryTime = LocalDateTime.now().plusSeconds(30)
41-
val uri = this.sendDumpRequest(
38+
val expiryTime = LocalDateTime.now()
39+
val uri = this.sendToRunner(
4240
SharePlaygroundArguments(
4341
RunnerUser(db.owner.id!!, db.owner.username),
4442
RunnerDatabase(db.id!!, db.name)
4543
))
46-
47-
sharePlaygroundTokenRepository.save(SharePlaygroundToken(token, db.owner.id!!, db.id!!, expiryTime, uri))
48-
49-
return uri
44+
sharePlaygroundTokenRepository.save(SharePlaygroundToken(token, db.owner.id!!, db.id!!, expiryTime, uri.toString()))
45+
return uri.toString()
5046
}
5147

5248
fun deleteDatabase(database: SqlPlaygroundDatabase, userId: Int, username: String) {

modules/fbs-runner/checker/src/main/scala/de/thm/ii/fbs/services/runner/SQLPlaygroundService.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package de.thm.ii.fbs.services.runner
22

33
import de.thm.ii.fbs.services.ExtendedResultsService
44
import de.thm.ii.fbs.services.db.{DBOperationsService, PsqlOperationsService}
5-
import de.thm.ii.fbs.types.{OutputJsonStructure, SqlPlaygroundRunArgs}
5+
import de.thm.ii.fbs.types.{OutputJsonStructure, SharePlaygroundArgs, SqlPlaygroundRunArgs}
66
import de.thm.ii.fbs.util.{DBTypes, DatabaseInformationService, PlaygroundDBConnections, SqlPlaygroundMode}
77
import io.vertx.core.json.JsonObject
88
import io.vertx.scala.ext.sql.ResultSet
@@ -21,6 +21,11 @@ object SQLPlaygroundService {
2121
OutputJsonStructure("triggers", Option("manipulation"))
2222
)
2323

24+
// change this function with dump function
25+
def test(): String = {
26+
s"Test is working"
27+
}
28+
2429
def isPlaygroundResult(res: JsonObject): Boolean = res.getString("resultType", "").equals(PLAYGROUND_RESULT_TYPE)
2530

2631
/**

modules/fbs-runner/checker/src/main/scala/de/thm/ii/fbs/verticles/HttpVerticle.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package de.thm.ii.fbs.verticles
22

33
import de.thm.ii.fbs.services.runner.SQLPlaygroundService
44
import de.thm.ii.fbs.verticles.HttpVerticle.SEND_COMPLETION
5-
import de.thm.ii.fbs.verticles.runner.{BashRunnerVerticle, SqlCheckerVerticle, SqlPlaygroundVerticle, SqlRunnerVerticle}
5+
import de.thm.ii.fbs.verticles.runner.{BashRunnerVerticle, SharePlaygroundVerticle, SqlCheckerVerticle, SqlPlaygroundVerticle, SqlRunnerVerticle}
66
import io.vertx.lang.scala.json.JsonObject
77
import io.vertx.lang.scala.{ScalaLogger, ScalaVerticle}
88
import io.vertx.scala.core.eventbus.Message
@@ -94,6 +94,9 @@ class HttpVerticle extends ScalaVerticle {
9494
case "sql-playground" =>
9595
vertx.eventBus().send(SqlPlaygroundVerticle.RUN_ADDRESS, body)
9696
ctx.response().setStatusCode(202).end()
97+
case "share" =>
98+
vertx.eventBus().send(SharePlaygroundVerticle.RUN_ADDRESS, body)
99+
ctx.response().setStatusCode(202).end()
97100
case _ => ctx.response().setStatusCode(404).end("Invalid Runner Type")
98101
}
99102
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package de.thm.ii.fbs.verticles.runner
2+
3+
import de.thm.ii.fbs.services.runner.SQLPlaygroundService
4+
import de.thm.ii.fbs.types._
5+
import de.thm.ii.fbs.verticles.runner.SharePlaygroundVerticle.RUN_ADDRESS
6+
import io.vertx.lang.scala.{ScalaLogger, ScalaVerticle}
7+
import io.vertx.scala.core.eventbus.Message
8+
import io.vertx.core.json.JsonObject
9+
10+
import scala.concurrent.Future
11+
12+
class SharePlaygroundVerticle extends ScalaVerticle {
13+
private val logger = ScalaLogger.getLogger(getClass.getName)
14+
15+
override def startFuture(): Future[_] = {
16+
vertx.eventBus().consumer(RUN_ADDRESS, handleTest).completionFuture()
17+
}
18+
19+
//placeholder function
20+
private def handleTest(msg: Message[JsonObject]): Future[Unit] = Future {
21+
val argsJson = msg.body()
22+
23+
val userJson = argsJson.getJsonObject("user")
24+
val databaseJson = argsJson.getJsonObject("database")
25+
26+
val userId = userJson.getInteger("id")
27+
val username = userJson.getString("username")
28+
val databaseName = databaseJson.getString("name")
29+
val databaseid = databaseJson.getInteger("id")
30+
31+
val user = new User(userId, username)
32+
val database = Database(databaseid, databaseName)
33+
34+
val args = SharePlaygroundArgs(user, database)
35+
36+
val response = SQLPlaygroundService.test()
37+
msg.reply(response)
38+
}
39+
}
40+
41+
object SharePlaygroundVerticle {
42+
val RUN_ADDRESS = "de.thm.ii.fbs.runner.share"
43+
}

0 commit comments

Comments
 (0)