improve testing performance

This commit is contained in:
Moritz Zwerger 2023-07-29 14:49:38 +02:00
parent b502067f28
commit c74e2f970f
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
4 changed files with 8 additions and 7 deletions

View File

@ -37,11 +37,11 @@ import de.bixilon.minosoft.test.IT
object WorldTestUtil { object WorldTestUtil {
fun createWorld(connection: PlayConnection?, light: Boolean = false): World { fun createWorld(connection: PlayConnection?, light: Boolean = false, capacity: Int = 0): World {
val world = IT.OBJENESIS.newInstance(World::class.java) val world = IT.OBJENESIS.newInstance(World::class.java)
world::occlusion.forceSet(DataObserver(0)) world::occlusion.forceSet(DataObserver(0))
world::lock.forceSet(SimpleLock()) world::lock.forceSet(SimpleLock())
world::chunks.forceSet(ChunkManager(world)) world::chunks.forceSet(ChunkManager(world, maxOf(0, capacity), 0))
world::border.forceSet(WorldBorder()) world::border.forceSet(WorldBorder())
world::dimension.forceSet(DataObserver(DimensionProperties(light = light, skyLight = light))) world::dimension.forceSet(DataObserver(DimensionProperties(light = light, skyLight = light)))
world::connection.forceSet(connection) world::connection.forceSet(connection)

View File

@ -13,6 +13,7 @@
package de.bixilon.minosoft.protocol.network.connection.play package de.bixilon.minosoft.protocol.network.connection.play
import de.bixilon.kotlinglm.pow
import de.bixilon.kutil.observer.DataObserver import de.bixilon.kutil.observer.DataObserver
import de.bixilon.kutil.reflection.ReflectionUtil.forceSet import de.bixilon.kutil.reflection.ReflectionUtil.forceSet
import de.bixilon.minosoft.assets.TestAssetsManager import de.bixilon.minosoft.assets.TestAssetsManager
@ -52,7 +53,7 @@ object ConnectionTestUtil {
connection::version.forceSet(version) connection::version.forceSet(version)
connection::registries.forceSet(Registries()) connection::registries.forceSet(Registries())
connection.registries.parent = if (version == IT.VERSION) IT.REGISTRIES else ITUtil.loadPixlyzerData(version) connection.registries.parent = if (version == IT.VERSION) IT.REGISTRIES else ITUtil.loadPixlyzerData(version)
connection::world.forceSet(createWorld(connection, light)) connection::world.forceSet(createWorld(connection, light, (worldSize * 2 + 1).pow(2)))
connection::player.forceSet(LocalPlayerEntity(connection.account, connection, SignatureKeyManagement(connection, TestAccount))) connection::player.forceSet(LocalPlayerEntity(connection.account, connection, SignatureKeyManagement(connection, TestAccount)))
connection.player.startInit() connection.player.startInit()
connection::network.forceSet(TestNetwork()) connection::network.forceSet(TestNetwork())

View File

@ -61,7 +61,7 @@ class World(
val lock = SimpleLock() val lock = SimpleLock()
val random = Random() val random = Random()
var cacheBiomeAccessor: NoiseBiomeAccessor? = null var cacheBiomeAccessor: NoiseBiomeAccessor? = null
val chunks = ChunkManager(this) val chunks = ChunkManager(this, 1000, 100)
val entities = WorldEntities() val entities = WorldEntities()
var hardcore by observed(false) var hardcore by observed(false)
var dimension: DimensionProperties by observed(DimensionProperties()) var dimension: DimensionProperties by observed(DimensionProperties())

View File

@ -32,9 +32,9 @@ import de.bixilon.minosoft.data.world.chunk.update.chunk.prototype.PrototypeChan
import de.bixilon.minosoft.data.world.chunk.update.chunk.prototype.PrototypeChangeUpdate import de.bixilon.minosoft.data.world.chunk.update.chunk.prototype.PrototypeChangeUpdate
import de.bixilon.minosoft.data.world.positions.ChunkPosition import de.bixilon.minosoft.data.world.positions.ChunkPosition
class ChunkManager(val world: World) { class ChunkManager(val world: World, chunkCapacity: Int = 0, prototypeCapacity: Int = 0) {
val chunks: LockMap<Vec2i, Chunk> = LockMap(hashMapOf(), world.lock) val chunks: LockMap<Vec2i, Chunk> = LockMap(HashMap(chunkCapacity), world.lock)
val prototypes: LockMap<Vec2i, ChunkPrototype> = LockMap(hashMapOf(), world.lock) val prototypes: LockMap<Vec2i, ChunkPrototype> = LockMap(HashMap(prototypeCapacity), world.lock)
val size = WorldSizeManager(world) val size = WorldSizeManager(world)
val ticker = ChunkTicker(this) val ticker = ChunkTicker(this)
var revision by observed(0) var revision by observed(0)