Skip to content

Commit b98663c

Browse files
authored
Merge branch 'develop' into perf/fasterNetworkShutdown
2 parents 6c7c280 + 7dbe872 commit b98663c

39 files changed

+697
-338
lines changed

.idea/inspectionProfiles/Terasology.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

engine-tests/src/main/java/org/terasology/engine/HeadlessEnvironment.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2021 The Terasology Foundation
1+
// Copyright 2022 The Terasology Foundation
22
// SPDX-License-Identifier: Apache-2.0
33
package org.terasology.engine;
44

@@ -11,6 +11,7 @@
1111
import org.terasology.engine.audio.nullAudio.NullSound;
1212
import org.terasology.engine.audio.nullAudio.NullStreamingSound;
1313
import org.terasology.engine.config.Config;
14+
import org.terasology.engine.config.PlayerConfig;
1415
import org.terasology.engine.context.Context;
1516
import org.terasology.engine.core.ComponentSystemManager;
1617
import org.terasology.engine.core.EngineTime;
@@ -28,6 +29,7 @@
2829
import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager;
2930
import org.terasology.engine.entitySystem.prefab.Prefab;
3031
import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab;
32+
import org.terasology.engine.identity.storageServiceClient.StorageServiceWorker;
3133
import org.terasology.engine.logic.behavior.asset.BehaviorTree;
3234
import org.terasology.engine.network.NetworkSystem;
3335
import org.terasology.engine.network.internal.NetworkSystemImpl;
@@ -256,6 +258,8 @@ protected void setupConfig() {
256258
Config config = new Config(context);
257259
config.loadDefaults();
258260
context.put(Config.class, config);
261+
context.put(StorageServiceWorker.class, mock(StorageServiceWorker.class));
262+
context.put(PlayerConfig.class, mock(PlayerConfig.class));
259263
}
260264

261265
@Override

engine-tests/src/main/java/org/terasology/engine/integrationenvironment/Engines.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@
3333
import org.terasology.engine.core.subsystem.lwjgl.LwjglInput;
3434
import org.terasology.engine.core.subsystem.lwjgl.LwjglTimer;
3535
import org.terasology.engine.core.subsystem.openvr.OpenVRInput;
36+
import org.terasology.engine.integrationenvironment.jupiter.IntegrationEnvironment;
3637
import org.terasology.engine.integrationenvironment.jupiter.MTEExtension;
3738
import org.terasology.engine.network.JoinStatus;
39+
import org.terasology.engine.network.NetworkMode;
3840
import org.terasology.engine.network.NetworkSystem;
3941
import org.terasology.engine.registry.CoreRegistry;
4042
import org.terasology.engine.rendering.opengl.ScreenGrabber;
@@ -80,8 +82,10 @@ public class Engines {
8082
PathManager pathManager;
8183
PathManagerProvider.Cleaner pathManagerCleaner;
8284
TerasologyEngine host;
85+
private final NetworkMode networkMode;
8386

84-
public Engines(Set<String> dependencies, String worldGeneratorUri) {
87+
public Engines(List<String> dependencies, String worldGeneratorUri, NetworkMode networkMode) {
88+
this.networkMode = networkMode;
8589
this.dependencies.addAll(dependencies);
8690

8791
if (worldGeneratorUri != null) {
@@ -97,7 +101,7 @@ public Engines(Set<String> dependencies, String worldGeneratorUri) {
97101
public void setup() {
98102
mockPathManager();
99103
try {
100-
host = createHost();
104+
host = createHost(networkMode);
101105
} catch (IOException e) {
102106
throw new UncheckedIOException(e);
103107
}
@@ -128,6 +132,11 @@ public void tearDown() {
128132

129133
/**
130134
* Creates a new client and connects it to the host.
135+
* <p>
136+
* Requires the host to have a {@link NetworkMode} that accepts connections.
137+
* Configure the host's network mode using
138+
* {@link IntegrationEnvironment#networkMode @IntegrationEnvironment#networkmode}
139+
* on your test class.
131140
*
132141
* @return the created client's context object
133142
*/
@@ -256,11 +265,11 @@ protected void mockPathManager() {
256265
PathManagerProvider.setPathManager(pathManager);
257266
}
258267

259-
TerasologyEngine createHost() throws IOException {
268+
TerasologyEngine createHost(NetworkMode networkMode) throws IOException {
260269
TerasologyEngine host = createHeadlessEngine();
261270
host.getFromEngineContext(SystemConfig.class).writeSaveGamesEnabled.set(false);
262271
host.subscribeToStateChange(new HeadlessStateChangeListener(host));
263-
host.changeState(new TestingStateHeadlessSetup(dependencies, worldGeneratorUri));
272+
host.changeState(new TestingStateHeadlessSetup(dependencies, worldGeneratorUri, networkMode));
264273

265274
doneLoading = false;
266275
host.subscribeToStateChange(() -> {

engine-tests/src/main/java/org/terasology/engine/integrationenvironment/Scopes.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

engine-tests/src/main/java/org/terasology/engine/integrationenvironment/TestingStateHeadlessSetup.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.terasology.engine.core.TerasologyEngine;
1212
import org.terasology.engine.core.subsystem.headless.mode.StateHeadlessSetup;
1313
import org.terasology.engine.game.GameManifest;
14+
import org.terasology.engine.network.NetworkMode;
1415
import org.terasology.engine.world.time.WorldTime;
1516
import org.terasology.gestalt.naming.Name;
1617

@@ -33,7 +34,8 @@ public class TestingStateHeadlessSetup extends StateHeadlessSetup {
3334
strictModuleRequirements = true;
3435
}
3536

36-
public TestingStateHeadlessSetup(Collection<String> dependencies, String worldGeneratorUri) {
37+
public TestingStateHeadlessSetup(Collection<String> dependencies, String worldGeneratorUri, NetworkMode networkMode) {
38+
super(networkMode);
3739
this.dependencies = dependencies;
3840
this.worldGeneratorUri = new SimpleUri(worldGeneratorUri);
3941
checkArgument(this.worldGeneratorUri.isValid(), "Not a valid URI `%s`", worldGeneratorUri);
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright 2022 The Terasology Foundation
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package org.terasology.engine.integrationenvironment.jupiter;
5+
6+
import org.terasology.engine.network.NetworkMode;
7+
8+
import java.lang.annotation.ElementType;
9+
import java.lang.annotation.Retention;
10+
import java.lang.annotation.RetentionPolicy;
11+
import java.lang.annotation.Target;
12+
13+
@Target(ElementType.TYPE)
14+
@Retention(RetentionPolicy.RUNTIME)
15+
public @interface IntegrationEnvironment {
16+
NetworkMode networkMode() default NetworkMode.NONE;
17+
}

engine-tests/src/main/java/org/terasology/engine/integrationenvironment/jupiter/IsolatedMTEExtension.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)