public async Task TestFileCaching() { // Set nickname relay0.UpdateFile(relay0.OwnId, new Dictionary <string, string> { { "nickname", "old :c" } }); await relay0.ConnectToNodeAsync(1); await Task.Delay(100); // Get PlayerData file from node 0 on node 1: NetworkFile file = null; relay1.GetFile(relay0.OwnId, (s, f) => file = f); await Task.Delay(100); Assert.AreEqual("old :c", file.Entries["nickname"]); // Modify PlayerData file at node 0: relay0.UpdateFile(relay0.OwnId, new Dictionary <string, string> { { "nickname", "new!" } }); // Get PlayerData file again (should be taken from cache): file = null; relay1.GetFile(relay0.OwnId, (s, f) => file = f); await Task.Delay(100); Assert.AreEqual("old :c", file.Entries["nickname"]); }
public async Task TestGetMergedMatchmaking() { await relay0.ConnectToNodeAsync(1); await relay0.ConnectToNodeAsync(2); var entries = new Dictionary <string, string> { { "field1", "value1" } }; relay0.UpdateFile(matchmakingFileId, entries); entries = new Dictionary <string, string> { { "field2", "value2" } }; relay1.UpdateFile(matchmakingFileId, entries); await Task.Delay(5000); // Wait for cached files to invalidate // Get file on node 2, it should ask other node, and it should ask remaning node for it and merge: NetworkFile file = null; relay2.GetFile(matchmakingFileId, (s, f) => { file = f; }); await Task.Delay(100); Assert.AreEqual(FileType.Matchmaking, file.FileType); Assert.AreEqual("value1", file.Entries["field1"]); Assert.AreEqual("value2", file.Entries["field2"]); }