Skip to content

Commit

Permalink
Merge pull request #6 from Rallista/feat/default-config
Browse files Browse the repository at this point in the history
Added and tested baseline default config
  • Loading branch information
Archdoog authored Sep 2, 2024
2 parents f13a788 + d1af9f0 commit 09cce02
Show file tree
Hide file tree
Showing 8 changed files with 522 additions and 90 deletions.
5 changes: 5 additions & 0 deletions config/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ dependencies {
implementation("com.squareup.moshi:moshi-adapters:$moshiVersion")

testImplementation(kotlin("test"))

val kotestVersion = "5.9.0"
testImplementation("io.kotest:kotest-runner-junit5:$kotestVersion")
testImplementation("io.kotest:kotest-assertions-core:$kotestVersion")
testImplementation("io.kotest:kotest-assertions-json:$kotestVersion")
}

kotlin {
Expand Down
130 changes: 130 additions & 0 deletions config/src/main/kotlin/ValhallaConfigDefault.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
import com.valhalla.config.models.AdditionalData
import com.valhalla.config.models.Httpd
import com.valhalla.config.models.HttpdService
import com.valhalla.config.models.Logging
import com.valhalla.config.models.Loki
import com.valhalla.config.models.LokiLogging
import com.valhalla.config.models.LokiService
import com.valhalla.config.models.LokiServiceDefaults
import com.valhalla.config.models.Meili
import com.valhalla.config.models.MeiliAuto
import com.valhalla.config.models.MeiliBicycle
import com.valhalla.config.models.MeiliDefault
import com.valhalla.config.models.MeiliGrid
import com.valhalla.config.models.MeiliMultimodal
import com.valhalla.config.models.MeiliPedestrian
import com.valhalla.config.models.MeiliService
import com.valhalla.config.models.Mjolnir
import com.valhalla.config.models.MjolnirDataProcessing
import com.valhalla.config.models.Odin
import com.valhalla.config.models.OdinMarkupFormatter
import com.valhalla.config.models.OdinService
import com.valhalla.config.models.ServiceLimits
import com.valhalla.config.models.ServiceLimitsAuto
import com.valhalla.config.models.ServiceLimitsBicycle
import com.valhalla.config.models.ServiceLimitsBus
import com.valhalla.config.models.ServiceLimitsCentroid
import com.valhalla.config.models.ServiceLimitsIsochrone
import com.valhalla.config.models.ServiceLimitsMultimodal
import com.valhalla.config.models.ServiceLimitsPedestrian
import com.valhalla.config.models.ServiceLimitsSkadi
import com.valhalla.config.models.ServiceLimitsStatus
import com.valhalla.config.models.ServiceLimitsTrace
import com.valhalla.config.models.Statsd
import com.valhalla.config.models.Thor
import com.valhalla.config.models.ThorLogging
import com.valhalla.config.models.ThorService
import com.valhalla.config.models.ValhallaConfig

class ValhallaConfigBuilder {

private var config = ValhallaConfigBuilder.DEFAULT

// TODO: Add more feature rich/dynamic builder functionality

/**
* Set the tile extract path
*
* e.g. /data/user/0/com.valhalla.valhalla.test/files/valhalla_tiles.tar
*/
fun withTileExtract(tileExtract: String): ValhallaConfigBuilder {
config = config.copy(
mjolnir = config.mjolnir?.copy(
tileExtract = tileExtract
)
)
return this
}

fun withTileDir(tileDir: String): ValhallaConfigBuilder {
config = config.copy(
mjolnir = config.mjolnir?.copy(
tileDir = tileDir
)
)
return this
}

fun build(): ValhallaConfig {
return config
}

companion object {
val DEFAULT = ValhallaConfig(
additionalData = AdditionalData(),
httpd = Httpd(
HttpdService(
// TODO: We can remove this if we fix the asterisk becoming a _* from openapi-generator.
listen = "tcp://*:8002"
)
),
loki = Loki(
logging = LokiLogging(),
service = LokiService(),
serviceDefaults = LokiServiceDefaults(),
),
meili = Meili(
auto = MeiliAuto(),
bicycle = MeiliBicycle(),
default = MeiliDefault(),
grid = MeiliGrid(),
logging = Logging(),
multimodal = MeiliMultimodal(),
pedestrian = MeiliPedestrian(),
service = MeiliService()
),
mjolnir = Mjolnir(
dataProcessing = MjolnirDataProcessing(),
logging = Logging(),
),
odin = Odin(
logging = Logging(),
markupFormatter = OdinMarkupFormatter(),
service = OdinService()
),
serviceLimits = ServiceLimits(
auto = ServiceLimitsAuto(),
bicycle = ServiceLimitsBicycle(),
bikeshare = ServiceLimitsBicycle(),
bus = ServiceLimitsBus(),
centroid = ServiceLimitsCentroid(),
isochrone = ServiceLimitsIsochrone(),
motorScooter = ServiceLimitsBicycle(),
motorcycle = ServiceLimitsBicycle(),
multimodal = ServiceLimitsMultimodal(),
pedestrian = ServiceLimitsPedestrian(),
skadi = ServiceLimitsSkadi(),
status = ServiceLimitsStatus(),
taxi = ServiceLimitsAuto(),
trace = ServiceLimitsTrace(),
transit = ServiceLimitsBicycle(),
truck = ServiceLimitsAuto()
),
statsd = Statsd(),
thor = Thor(
logging = ThorLogging(),
service = ThorService()
)
)
}
}
20 changes: 0 additions & 20 deletions config/src/test/kotlin/AdditionalDataTest.kt

This file was deleted.

26 changes: 3 additions & 23 deletions config/src/test/kotlin/MoshiAdapterTest.kt
Original file line number Diff line number Diff line change
@@ -1,37 +1,17 @@
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import com.valhalla.config.models.AdditionalData
import com.valhalla.config.models.Httpd
import com.valhalla.config.models.Loki
import com.valhalla.config.models.Meili
import com.valhalla.config.models.Mjolnir
import com.valhalla.config.models.Odin
import com.valhalla.config.models.ServiceLimits
import com.valhalla.config.models.Statsd
import com.valhalla.config.models.Thor
import com.valhalla.config.models.ValhallaConfig
import kotlin.test.Test
import kotlin.test.assertNotNull

data class AllModels(
val additionalData: AdditionalData = AdditionalData(),
val httpd: Httpd = Httpd(),
val loki: Loki = Loki(),
val meili: Meili = Meili(),
val mjolnir: Mjolnir = Mjolnir(),
val odin: Odin = Odin(),
val serviceLimits: ServiceLimits = ServiceLimits(),
val statsd: Statsd = Statsd(),
val thor: Thor = Thor()
)

class MoshiAdapterTest {

private val moshi: Moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build()

@Test
fun testEncode() {
val all = AllModels()
val encoded = moshi.adapter(AllModels::class.java).toJson(all)
val config = ValhallaConfigBuilder.DEFAULT
val encoded = moshi.adapter(ValhallaConfig::class.java).toJson(config)
assertNotNull(encoded)
}
}
18 changes: 18 additions & 0 deletions config/src/test/kotlin/ValhallaConfigTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import com.valhalla.config.models.ValhallaConfig
import io.kotest.assertions.json.shouldMatchJsonResource
import kotlin.test.Test

class ValhallaConfigTest {

private val moshi: Moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build()

@Test
fun testDefault() {
val config = ValhallaConfigBuilder.DEFAULT
val configJson = moshi.adapter(ValhallaConfig::class.java).toJson(config)

configJson.shouldMatchJsonResource("/default-config.json")
}
}
Loading

0 comments on commit 09cce02

Please sign in to comment.