fix broken tests

This commit is contained in:
Adam 2022-04-20 12:58:04 +02:00
parent 03e8e9442a
commit d1353eec60
4 changed files with 929 additions and 869 deletions

View file

@ -79,9 +79,7 @@ class ColourHexTest : BehaviorSpec({
val colour: Colour = jsonMapperKafkatorio.decodeFromString(colourJson) val colour: Colour = jsonMapperKafkatorio.decodeFromString(colourJson)
val colourHex = colour.toHex() val colourHex = colour.toHex()
colourHex shouldBe ColourHex(r, g, b, a) colourHex shouldBe ColourHex(r, g, b, a)
} }
} }
} }
}) })

View file

@ -1,5 +1,18 @@
package dev.adamko.kafkatorio.events.schema package dev.adamko.kafkatorio.events.schema
import dev.adamko.kafkatorio.schema.common.Colour
import dev.adamko.kafkatorio.schema.common.EntityIdentifiersData
import dev.adamko.kafkatorio.schema.common.ForceIndex
import dev.adamko.kafkatorio.schema.common.MapEntityPosition
import dev.adamko.kafkatorio.schema.common.PlayerIndex
import dev.adamko.kafkatorio.schema.common.SurfaceIndex
import dev.adamko.kafkatorio.schema.common.Tick
import dev.adamko.kafkatorio.schema.common.UnitNumber
import dev.adamko.kafkatorio.schema.jsonMapperKafkatorio
import dev.adamko.kafkatorio.schema2.KafkatorioPacket2
import dev.adamko.kafkatorio.schema2.PlayerUpdate
import dev.adamko.kafkatorio.schema2.PlayerUpdateKey
import dev.adamko.kafkatorio.schema2.SurfaceUpdate
import io.kotest.core.spec.style.FunSpec import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldBe
import kotlinx.serialization.decodeFromString import kotlinx.serialization.decodeFromString
@ -13,8 +26,9 @@ class UpdatePacketsTest : FunSpec({
{ {
"tick": 66, "tick": 66,
"modVersion": "0.3.2", "modVersion": "0.3.2",
"packetType": "UPDATE", "data": {
"update": { "type": "dev.adamko.kafkatorio.schema2.PlayerUpdate",
"key": {"index": 1},
"afkTime": 0, "afkTime": 0,
"chatColour": { "chatColour": {
"red": 1, "red": 1,
@ -33,7 +47,6 @@ class UpdatePacketsTest : FunSpec({
"on_player_joined_game": 1 "on_player_joined_game": 1
}, },
"forceIndex": 1, "forceIndex": 1,
"index": 1,
"isAdmin": true, "isAdmin": true,
"isConnected": true, "isConnected": true,
"isShowOnMap": true, "isShowOnMap": true,
@ -41,23 +54,20 @@ class UpdatePacketsTest : FunSpec({
"lastOnline": 0, "lastOnline": 0,
"name": "fredthedeadhead", "name": "fredthedeadhead",
"onlineTime": 0, "onlineTime": 0,
"position": { "position": [-58, 13],
"y": 13, "tag": ""
"x": -58
},
"tag": "",
"updateType": "PLAYER"
} }
} }
""".trimIndent() """.trimIndent()
test("decode") { test("decode") {
val packet: FactorioEventUpdatePacket = jsonMapperKafkatorio.decodeFromString(json) val packet: KafkatorioPacket2 = jsonMapperKafkatorio.decodeFromString(json)
packet shouldBe FactorioEventUpdatePacket( packet shouldBe KafkatorioPacket2(
modVersion = "0.3.2", modVersion = "0.3.2",
tick = Tick(66u), tick = Tick(66u),
update = PlayerUpdate( data = PlayerUpdate(
key = PlayerUpdateKey(PlayerIndex(1u)),
afkTime = Tick(0u), afkTime = Tick(0u),
bannedReason = null, bannedReason = null,
characterUnitNumber = null, characterUnitNumber = null,
@ -67,7 +77,6 @@ class UpdatePacketsTest : FunSpec({
disconnectReason = null, disconnectReason = null,
eventCounts = mapOf("on_player_changed_position" to 7u, "on_player_joined_game" to 1u), eventCounts = mapOf("on_player_changed_position" to 7u, "on_player_joined_game" to 1u),
forceIndex = ForceIndex(1u), forceIndex = ForceIndex(1u),
index = PlayerIndex(1u),
isAdmin = true, isAdmin = true,
isConnected = true, isConnected = true,
isRemoved = null, isRemoved = null,
@ -86,11 +95,11 @@ class UpdatePacketsTest : FunSpec({
} }
test("encode") { test("encode") {
val v = FactorioEventUpdatePacket( val v = KafkatorioPacket2(
modVersion = "0.3.2", modVersion = "0.3.2",
tick = Tick(66u), tick = Tick(66u),
update = PlayerUpdate( data = PlayerUpdate(
index = PlayerIndex(1u), key = PlayerUpdateKey(PlayerIndex(1u)),
characterUnitNumber = null, characterUnitNumber = null,
chatColour = null, chatColour = null,
colour = null, colour = null,
@ -121,21 +130,22 @@ class UpdatePacketsTest : FunSpec({
{ {
"modVersion": "0.3.2", "modVersion": "0.3.2",
"tick": 66, "tick": 66,
"update": { "data": {
"index": 1, "type": "dev.adamko.kafkatorio.schema2.PlayerUpdate",
"key": {
"index": 1
},
"name": "fredthedeadhead", "name": "fredthedeadhead",
"afkTime": 0, "afkTime": 0,
"isShowOnMap": true, "isShowOnMap": true,
"isSpectator": false, "isSpectator": false,
"lastOnline": 0, "lastOnline": 0,
"onlineTime": 0, "onlineTime": 0,
"position": { "position": [
"x": -58.0, -58.0,
"y": 13.0 13.0
}, ]
"updateType": "PLAYER" }
},
"packetType": "UPDATE"
} }
""".trimIndent() """.trimIndent()
} }
@ -147,10 +157,11 @@ class UpdatePacketsTest : FunSpec({
{ {
"tick": 227934, "tick": 227934,
"modVersion": "0.3.2", "modVersion": "0.3.2",
"packetType": "UPDATE", "data": {
"update": { "type": "dev.adamko.kafkatorio.schema2.PlayerUpdate",
"index": 1, "key": {
"updateType": "PLAYER", "index": 1
},
"lastOnline": 227932, "lastOnline": 227932,
"onlineTime": 227888, "onlineTime": 227888,
"afkTime": 324, "afkTime": 324,
@ -158,7 +169,7 @@ class UpdatePacketsTest : FunSpec({
"diedCause": { "diedCause": {
"unitNumber": 66, "unitNumber": 66,
"name": "small-biter", "name": "small-biter",
"type": "unit" "protoType": "unit"
}, },
"eventCounts": { "eventCounts": {
"on_player_died": 2 "on_player_died": 2
@ -168,12 +179,12 @@ class UpdatePacketsTest : FunSpec({
""".trimIndent() """.trimIndent()
test("decode") { test("decode") {
val packet: FactorioEventUpdatePacket = jsonMapperKafkatorio.decodeFromString(json) val packet: KafkatorioPacket2 = jsonMapperKafkatorio.decodeFromString(json)
packet shouldBe FactorioEventUpdatePacket( packet shouldBe KafkatorioPacket2(
modVersion = "0.3.2", modVersion = "0.3.2",
tick = Tick(227934u), tick = Tick(227934u),
update = PlayerUpdate( data = PlayerUpdate(
afkTime = Tick(324u), afkTime = Tick(324u),
bannedReason = null, bannedReason = null,
characterUnitNumber = null, characterUnitNumber = null,
@ -182,12 +193,12 @@ class UpdatePacketsTest : FunSpec({
diedCause = EntityIdentifiersData( diedCause = EntityIdentifiersData(
unitNumber = UnitNumber(66u), unitNumber = UnitNumber(66u),
name = "small-biter", name = "small-biter",
type = "unit", protoType = "unit",
), ),
disconnectReason = null, disconnectReason = null,
eventCounts = mapOf("on_player_died" to 2u), eventCounts = mapOf("on_player_died" to 2u),
forceIndex = null, forceIndex = null,
index = PlayerIndex(1u), key = PlayerUpdateKey(PlayerIndex(1u)),
isAdmin = null, isAdmin = null,
isConnected = true, isConnected = true,
isRemoved = null, isRemoved = null,
@ -204,7 +215,38 @@ class UpdatePacketsTest : FunSpec({
) )
) )
} }
} }
context("surface update") {
//language=json
val json = """
{
"data": {
"type": "dev.adamko.kafkatorio.schema2.SurfaceUpdate",
"name": "nauvis",
"index": 1,
"daytime": 0.73
},
"modVersion": "0.3.2",
"tick": 176000
}
""".trimIndent()
val expected = KafkatorioPacket2(
tick = Tick(176000u),
modVersion = "0.3.2",
data = SurfaceUpdate(
name = "nauvis",
index = SurfaceIndex(1u),
daytime = 0.73,
)
)
println(jsonMapperKafkatorio.encodeToString(expected))
test("decode") {
val packet: KafkatorioPacket2 = jsonMapperKafkatorio.decodeFromString(json)
packet shouldBe expected
}
}
}) })

View file

@ -1,12 +1,19 @@
package dev.adamko.kafkatorio.processor.topology package dev.adamko.kafkatorio.processor.topology
import dev.adamko.kafkatorio.processor.KafkatorioTopology
import dev.adamko.kafkatorio.processor.admin.TOPIC_GROUPED_MAP_CHUNKS_STATE import dev.adamko.kafkatorio.processor.admin.TOPIC_GROUPED_MAP_CHUNKS_STATE
import dev.adamko.kafkatorio.processor.serdes.jsonMapper import dev.adamko.kafkatorio.processor.serdes.jsonMapper
import dev.adamko.kafkatorio.processor.serdes.kxsBinary import dev.adamko.kafkatorio.processor.serdes.kxsBinary
import dev.adamko.kafkatorio.schema.common.* import dev.adamko.kafkatorio.schema.common.Colour
import dev.adamko.kafkatorio.schema.common.ColourHex
import dev.adamko.kafkatorio.schema.common.MapChunkPosition
import dev.adamko.kafkatorio.schema.common.MapTileDictionary
import dev.adamko.kafkatorio.schema.common.MapTileDictionary.PrototypeKey import dev.adamko.kafkatorio.schema.common.MapTileDictionary.PrototypeKey
import dev.adamko.kafkatorio.schema.common.MapTilePosition
import dev.adamko.kafkatorio.schema.common.PrototypeName
import dev.adamko.kafkatorio.schema.common.SurfaceIndex
import dev.adamko.kafkatorio.schema.common.Tick
import dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2 import dev.adamko.kafkatorio.schema.prototypes.FactorioPrototype2
import dev.adamko.kafkatorio.schema2.KafkatorioPacket2
import dev.adamko.kafkatorio.schema2.MapChunkUpdate import dev.adamko.kafkatorio.schema2.MapChunkUpdate
import dev.adamko.kafkatorio.schema2.MapChunkUpdateKey import dev.adamko.kafkatorio.schema2.MapChunkUpdateKey
import dev.adamko.kafkatorio.schema2.PrototypesUpdate import dev.adamko.kafkatorio.schema2.PrototypesUpdate
@ -28,24 +35,27 @@ class GroupMapChunksTest : FunSpec({
test("basic test") { test("basic test") {
val streamsBuilder = StreamsBuilder() val streamsBuilder = StreamsBuilder()
val prototypesTopicName = "prototypes-topic" val prototypesTopicName = "kafkatorio.packet.prototypes"
val mapChunkUpdatesTopicName = "map-chunk-updates-topic" val mapChunkUpdatesTopicName = "kafkatorio.packet.map-chunk"
val topology = groupMapChunks(streamsBuilder) val topology = groupMapChunks(streamsBuilder)
val testDriver = TopologyTestDriver(topology) val testDriver = TopologyTestDriver(topology)
val prototypesTestInputTopic: TestInputTopic<FactorioServerId, PrototypesUpdate> = val prototypesTestInputTopic: TestInputTopic<FactorioServerId, KafkatorioPacket2> =
testDriver.createInputTopic( testDriver.createInputTopic(
prototypesTopicName, prototypesTopicName,
jsonMapper.serde<FactorioServerId>().serializer(), jsonMapper.serde<FactorioServerId>().serializer(),
jsonMapper.serde<PrototypesUpdate>().serializer(), jsonMapper.serde<KafkatorioPacket2>().serializer(),
) )
val serverId = FactorioServerId("test-server-id") val serverId = FactorioServerId("test-server-id")
prototypesTestInputTopic.pipeInput( prototypesTestInputTopic.pipeInput(
serverId, serverId,
KafkatorioPacket2(
modVersion = "1.2.3",
tick = Tick(22u),
PrototypesUpdate( PrototypesUpdate(
listOf( listOf(
FactorioPrototype2.MapTile( FactorioPrototype2.MapTile(
@ -59,16 +69,20 @@ class GroupMapChunksTest : FunSpec({
) )
) )
) )
)
val mapChunkUpdatesInputTopic: TestInputTopic<FactorioServerId, MapChunkUpdate> = val mapChunkUpdatesInputTopic: TestInputTopic<FactorioServerId, KafkatorioPacket2> =
testDriver.createInputTopic( testDriver.createInputTopic(
mapChunkUpdatesTopicName, mapChunkUpdatesTopicName,
jsonMapper.serde<FactorioServerId>().serializer(), jsonMapper.serde<FactorioServerId>().serializer(),
jsonMapper.serde<MapChunkUpdate>().serializer(), jsonMapper.serde<KafkatorioPacket2>().serializer(),
) )
mapChunkUpdatesInputTopic.pipeInput( mapChunkUpdatesInputTopic.pipeInput(
serverId, serverId,
KafkatorioPacket2(
modVersion = "1.2.3",
tick = Tick(44u),
MapChunkUpdate( MapChunkUpdate(
key = MapChunkUpdateKey( key = MapChunkUpdateKey(
MapChunkPosition(11, 22), MapChunkPosition(11, 22),
@ -82,6 +96,7 @@ class GroupMapChunksTest : FunSpec({
) )
) )
) )
)
val outputTopic: TestOutputTopic<ServerMapChunkId, ServerMapChunkTiles<ColourHex>> = val outputTopic: TestOutputTopic<ServerMapChunkId, ServerMapChunkTiles<ColourHex>> =
testDriver testDriver
@ -114,5 +129,4 @@ class GroupMapChunksTest : FunSpec({
} }
} }
} }
}) })