Skip to content

Commit

Permalink
add searchable fields to status endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
handymenny committed Feb 6, 2024
1 parent 1ad0cc7 commit d518c69
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 4 deletions.
27 changes: 27 additions & 0 deletions src/main/java/it/smartphonecombo/uecapabilityparser/query/Field.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,33 @@ package it.smartphonecombo.uecapabilityparser.query
import it.smartphonecombo.uecapabilityparser.model.Capabilities
import it.smartphonecombo.uecapabilityparser.model.band.IBandDetails
import it.smartphonecombo.uecapabilityparser.model.combo.ICombo
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class SearchableField(val name: String, val type: FieldType) {
companion object {
fun getAllSearchableFields() = buildList {
addAll(FieldNumber.entries.map { SearchableField(it.name, FieldType.FieldNumber) })
addAll(FieldString.entries.map { SearchableField(it.name, FieldType.FieldString) })
addAll(FieldStrings.entries.map { SearchableField(it.name, FieldType.FieldStrings) })
addAll(
FieldBandsDetails.entries.map {
SearchableField(it.name, FieldType.FieldBandsDetails)
}
)
addAll(FieldCombos.entries.map { SearchableField(it.name, FieldType.FieldCombos) })
}
}
}

enum class FieldType {
@SerialName("number") FieldNumber,
@SerialName("string") FieldString,
@SerialName("strings") FieldStrings,
@SerialName("bandDetails") FieldBandsDetails,
@SerialName("combos") FieldCombos
}

enum class FieldNumber {
LTE_CATEGORY_DL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import it.smartphonecombo.uecapabilityparser.model.MultiCapabilities
import it.smartphonecombo.uecapabilityparser.model.index.IndexLine
import it.smartphonecombo.uecapabilityparser.model.index.LibraryIndex
import it.smartphonecombo.uecapabilityparser.query.Query
import it.smartphonecombo.uecapabilityparser.query.SearchableField
import it.smartphonecombo.uecapabilityparser.util.Config
import it.smartphonecombo.uecapabilityparser.util.MultiParsing
import it.smartphonecombo.uecapabilityparser.util.Parsing
Expand Down Expand Up @@ -286,7 +287,14 @@ class JavalinApp {
val version = Config.getOrDefault("project.version", "")
val logTypes = LogType.validEntries
val requestMaxSize = app.cfg.http.maxRequestSize
val status = ServerStatus(version, endpoints, logTypes, requestMaxSize)
val status =
ServerStatus(
version,
endpoints,
logTypes,
requestMaxSize,
SearchableField.getAllSearchableFields()
)
ctx.json(status)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package it.smartphonecombo.uecapabilityparser.server

import it.smartphonecombo.uecapabilityparser.model.LogType
import it.smartphonecombo.uecapabilityparser.query.SearchableField
import kotlinx.serialization.Serializable

@Serializable
data class ServerStatus(
val version: String,
val endpoints: List<String>,
val logTypes: List<LogType>,
val maxRequestSize: Long
val maxRequestSize: Long,
val searchableFields: List<SearchableField>
)
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import io.javalin.http.HttpStatus
import io.javalin.testtools.JavalinTest
import it.smartphonecombo.uecapabilityparser.UtilityForTests.scatAvailable
import it.smartphonecombo.uecapabilityparser.model.LogType
import it.smartphonecombo.uecapabilityparser.query.SearchableField
import it.smartphonecombo.uecapabilityparser.util.Config
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement
Expand Down Expand Up @@ -71,6 +72,8 @@ internal class ServerModeOthersTest {
.filter { scatAvailable || it !in scatTypes }
.map(LogType::of)

private val searchableFields = SearchableField.getAllSearchableFields()

@AfterEach
fun tearDown() {
Config.clear()
Expand Down Expand Up @@ -103,15 +106,16 @@ internal class ServerModeOthersTest {
@Test
fun testStatusStoreEnable() {
Config["store"] = "/store"
val status = ServerStatus(parserVersion, endpoints, logTypes, 256000000)
val status = ServerStatus(parserVersion, endpoints, logTypes, 256000000, searchableFields)
getTest("/status", Json.encodeToJsonElement(status))
}

@Test
fun testStatusStoreOff() {
val endpointsNoStore =
endpoints.filterNot { it.startsWith("/store") && !it.endsWith("status") }
val status = ServerStatus(parserVersion, endpointsNoStore, logTypes, 256000000)
val status =
ServerStatus(parserVersion, endpointsNoStore, logTypes, 256000000, searchableFields)
getTest("/status", Json.encodeToJsonElement(status))
}

Expand Down

0 comments on commit d518c69

Please sign in to comment.