Dean Herbert
1a41d3ef20
Allow PlayerTestScene
to import the beatmap it's using
2022-07-07 16:42:36 +09:00
Dan Balasescu
084a65578c
Always clone messages incoming from client-side
2022-07-01 19:36:37 +09:00
Dan Balasescu
37acec1952
Isolate client's LocalUser from TestMultiplayerClient
2022-07-01 19:23:41 +09:00
Dan Balasescu
b64c0d011c
Isolate client's Room from TestMultiplayerClient
2022-07-01 19:23:25 +09:00
Dan Balasescu
0be858b5bf
Rename APIRoom -> ClientAPIRoom, remove unused asserts
2022-07-01 19:21:59 +09:00
Dan Balasescu
1c2ffb3bc4
Fix server-side objects being sent to client
2022-07-01 19:21:53 +09:00
Dean Herbert
35745c83b7
Replace dodgy SetUpSteps
overriding with usage of HasCustomSteps
2022-06-28 15:19:02 +09:00
Dean Herbert
54fe6b7df3
Fix incorrect string interpolation
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-06-28 01:43:09 +09:00
Dean Herbert
569fde4b47
Add messages to all InvalidOperationException
s
...
Without this, they can be very non-descript and hard to track down
2022-06-28 01:34:25 +09:00
Dean Herbert
5a7d339cc8
Centralise and harden editor-ready-for-use check
...
Not only does this combine the check into one location, but it also adds
a check on the global `WorkingBeatmap` being updated, which is the only
way I can see the following failure happening:
```csharp
05:19:07 osu.Game.Tests: osu.Game.Tests.Visual.Editing.TestSceneEditorBeatmapCreation.TestAddAudioTrack
05:19:07 Failed TestAddAudioTrack [161 ms]
05:19:07 Error Message:
05:19:07 TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
05:19:07 Stack Trace:
05:19:07 --TearDown
05:19:07 at osu.Game.Database.ModelManager`1.<>c__DisplayClass7_0.<AddFile>b__0(TModel managed) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Database\ModelManager.cs:line 36
05:19:07 at osu.Game.Database.ModelManager`1.<>c__DisplayClass8_0.<performFileOperation>b__0(Realm realm) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Database\ModelManager.cs:line 49
05:19:07 at osu.Game.Database.RealmExtensions.Write(Realm realm, Action`1 function) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Database\RealmExtensions.cs:line 14
05:19:07 at osu.Game.Database.ModelManager`1.performFileOperation(TModel item, Action`1 operation) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Database\ModelManager.cs:line 46
05:19:07 at osu.Game.Database.ModelManager`1.AddFile(TModel item, Stream contents, String filename) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Database\ModelManager.cs:line 36
05:19:07 at osu.Game.Screens.Edit.Setup.ResourcesSection.ChangeAudioTrack(FileInfo source) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Screens\Edit\Setup\ResourcesSection.cs:line 115
05:19:07 at osu.Game.Tests.Visual.Editing.TestSceneEditorBeatmapCreation.<TestAddAudioTrack>b__13_0() in C:\BuildAgent\work\ecd860037212ac52\osu.Game.Tests\Visual\Editing\TestSceneEditorBeatmapCreation.cs:line 101
05:19:07 at osu.Framework.Testing.Drawables.Steps.AssertButton.checkAssert()
05:19:07 at osu.Framework.Testing.Drawables.Steps.StepButton.PerformStep(Boolean userTriggered)
05:19:07 at osu.Framework.Testing.TestScene.runNextStep(Action onCompletion, Action`1 onError, Func`2 stopCondition)
```
2022-06-27 16:22:01 +09:00
Dean Herbert
1a22377e19
Fix test deadlock due to TPL threadpool saturation
...
As found in aggressive CI runs:
```csharp
00007F6F527F32B0 00007f74f937c72d (MethodDesc 00007f74f5545a78 + 0x22d System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken)), calling (MethodDesc 00007f74f51c0838 + 0 System.Threading.Monitor.Wait(System.Object, Int32))
00007F6F527F3330 00007f74f93861ca (MethodDesc 00007f74f5259100 + 0x10a System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken)), calling (MethodDesc 00007f74f5545a78 + 0 System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken))
00007F6F527F3390 00007f74f9385d11 (MethodDesc 00007f74f52590e8 + 0x81 System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)), calling (MethodDesc 00007f74f5259100 + 0 System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken))
00007F6F527F33E0 00007f74fc3823af (MethodDesc 00007f74f5934c08 + 0x4f System.Threading.Tasks.Task`1[[System.Boolean, System.Private.CoreLib]].GetResultCore(Boolean)), calling (MethodDesc 00007f74f52590e8 + 0 System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken))
00007F6F527F3400 00007f74fb0aad92 (MethodDesc 00007f74fb28b000 + 0x122 osu.Game.Tests.Visual.OnlinePlay.OnlinePlayTestScene+<>c__DisplayClass21_0.<Setup>b__1(osu.Game.Online.API.APIRequest)), calling (MethodDesc 00007f74f5934be8 + 0 System.Threading.Tasks.Task`1[[System.Boolean, System.Private.CoreLib]].get_Result())
00007F6F527F3470 00007f74fa9c6dd7 (MethodDesc 00007f74f921f6c8 + 0x77 osu.Game.Online.API.DummyAPIAccess.PerformAsync(osu.Game.Online.API.APIRequest))
00007F6F527F34C0 00007f74fb13c718 (MethodDesc 00007f74fb4e0c50 + 0x538 osu.Game.Database.OnlineLookupCache`3+<performLookup>d__13[[System.Int32, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib]].MoveNext())
```
Going with the simplest solution, as what we had was pretty ugly to start with and I don't want to overthink this, just push a fix and hope for the best.
2022-06-26 16:42:29 +09:00
Dean Herbert
31a447fda0
Update parameter discards
2022-06-24 21:26:19 +09:00
Dean Herbert
158f0a1f23
Remove remaining Room!=null
checks in TestMultiplayerClient
where possible
2022-06-23 17:38:34 +09:00
Dean Herbert
bc557bacf0
Remove room null assertion in TestMultiplayerClient.ChangeState
to avoid assert
...
This method is run from async contexts, but `get_Room` asserts update
thread which is not the case. Was causing silent test failures (showing
as pass but failing `dotnet-test` via return code):
TestSceneMultiplayer.TestGameplayFlow
```
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: Score preparation failed!
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: NUnit.Framework.AssertionException: :
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at osu.Framework.Logging.ThrowingTraceListener.Fail(String message1, String message2)
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at System.Diagnostics.TraceInternal.Fail(String message, String detailMessage)
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at System.Diagnostics.TraceInternal.TraceProvider.Fail(String message, String detailMessage)
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at System.Diagnostics.Debug.Fail(String message, String detailMessage)
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at osu.Game.Online.Multiplayer.MultiplayerClient.get_Room() in /opt/buildagent/work/ecd860037212ac52/osu.Game/Online/Multiplayer/MultiplayerClient.cs:line 98
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at osu.Game.Tests.Visual.Multiplayer.TestMultiplayerClient.ChangeState(MultiplayerUserState newState) in /opt/buildagent/work/ecd860037212ac52/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs:line 275
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at osu.Game.Screens.OnlinePlay.Multiplayer.MultiplayerPlayer.PrepareScoreForResultsAsync(Score score) in /opt/buildagent/work/ecd860037212ac52/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerPlayer.cs:line 223
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at osu.Game.Screens.Play.Player.prepareScoreForResults() in /opt/buildagent/work/ecd860037212ac52/osu.Game/Screens/Play/Player.cs:line 747
```
2022-06-23 14:10:20 +09:00
Bartłomiej Dach
21d60231b6
Add limited test coverage of osu://
scheme link IPC flow
2022-06-20 22:22:25 +02:00
Dan Balasescu
f8830c6850
Automated #nullable processing
2022-06-17 16:37:17 +09:00
Bartłomiej Dach
9c4f6d2ce0
Merge branch 'master' into first-run-setup-notification-interruption
2022-06-16 15:14:40 +02:00
Dean Herbert
8a5755ca52
Remove pointless override in test implementation
2022-06-16 18:27:16 +09:00
Dean Herbert
1f3e1b2d97
Combine BeatmapManager
and BeatmapModelManager
into one class
2022-06-16 18:07:04 +09:00
Salman Ahmed
1171d44ad9
Add failing test case
2022-06-15 03:37:04 +03:00
Dean Herbert
f11fe54385
Remove custom hash function flow
2022-06-15 00:42:30 +09:00
Dan Balasescu
3df4d1b0e6
Fix incorrect HasPassword value for returned rooms
2022-06-03 21:17:48 +09:00
Dan Balasescu
41ff170b60
Fix playlist IDs not being returned
2022-06-03 21:12:09 +09:00
Dan Balasescu
646f5f0f33
Isolate "server-side" multiplayer rooms in testing
2022-06-03 19:17:34 +09:00
Dean Herbert
477e520766
Add comment regarding deadlock avoidance
2022-05-31 12:24:44 +09:00
Dean Herbert
f935f034c2
Ensure request handling for OnlinePlayTestScene
runs in a scheduled fashion
2022-05-30 16:33:07 +09:00
Salman Ahmed
2fac710d4b
Add step for adjusting editor clock rate in test scene
2022-05-28 04:10:39 +03:00
Dean Herbert
93c94b8ea0
Fix test caching woes
2022-05-26 18:30:37 +09:00
Dean Herbert
acd554d918
Update time info and add bpm
2022-05-25 23:54:59 +09:00
Dean Herbert
0bcf8c846c
Change editor colour scheme to aquamarine
2022-05-24 18:43:22 +09:00
Salman Ahmed
cef99fd020
Disallow transferring track from test WorkingBeatmap
s which have local stores
2022-05-20 16:08:31 +03:00
Dean Herbert
35026ad642
Add missing EditorClock
caching
2022-05-13 21:39:54 +09:00
Bartłomiej Dach
fdb21fedab
Implement IOverlayManager
in ScreenTestScene
2022-05-05 22:16:55 +02:00
Dean Herbert
b411b59006
Move IPlacementHandler
caching to interface
2022-05-05 16:43:02 +09:00
Dean Herbert
1f1845d69b
Merge branch 'master' into multiplayer-force-start-2
2022-04-29 14:45:40 +09:00
Dean Herbert
ed894d6428
Merge pull request #17941 from frenzibyte/remove-legacy-skin-fallback
...
Handle all legacy skin component types explicitly and remove texture fallback
2022-04-25 21:55:05 +09:00
Dean Herbert
7ac3ba132c
Remove unused using statements
2022-04-25 18:55:12 +09:00
Salman Ahmed
daadc3fc21
Simplfiy and share notification dimsiss method across test scenes
...
Might as well inline, but I feel like it will require adding the same
comment across all usages, because just `State.Value = Hidden` in an
until step feels off, dunno.
2022-04-23 23:14:19 +03:00
Salman Ahmed
89519086c8
Fix SkinnableTestScene
unnecessarily adding a base raw skin layer
2022-04-23 03:34:05 +03:00
Dan Balasescu
b293d3923c
Merge branch 'master' into multiplayer-force-start-2
2022-04-23 01:03:55 +09:00
Bartłomiej Dach
8c6864727e
Merge branch 'master' into first-run-setup
2022-04-21 22:14:57 +02:00
Dean Herbert
832d37b2c2
Update screen transition events to use new event args
2022-04-22 00:52:44 +09:00
Dan Balasescu
08d250fe58
Rename MatchStarted() -> GameplayStarted()
2022-04-21 22:39:24 +09:00
Dean Herbert
e8adbb319b
Skip first run setup in OsuGameTestScene
s
2022-04-19 22:57:07 +09:00
Dean Herbert
e315313266
Split out IDialogOverlay
to allow for easier testing
2022-04-18 18:36:26 +09:00
Dean Herbert
9b433280bd
Remove countdown implementation from TestMultiplayerClient
2022-04-13 21:24:33 +09:00
Dean Herbert
abb42a54fd
Fix MultiplayerTestScene
not actually setting match type correctly
2022-04-11 17:57:05 +09:00
Dan Balasescu
e1f147a207
Mutate playlist in EditUserPlaylistItem
2022-04-04 13:46:41 +09:00
Dan Balasescu
6e6271d0c0
Fix "server-side" room playlist not updated
...
Remove unused using
2022-04-01 18:32:10 +09:00
Bartłomiej Dach
9621a7f9cb
Merge branch 'master' into fix-autoplay-mod-user-id
2022-03-30 21:41:45 +02:00