Dan Balasescu
aaa6f963bd
Fix potential test failures due to Setup/SetUpSteps ordering
2022-07-29 15:27:39 +09:00
Dean Herbert
a21aee4e9c
Reduce calls to LoadTrack
by implicitly running on test/dummy classes
2022-07-28 18:11:40 +09:00
Dean Herbert
628a30193f
Remove incorrect TrackLoaded
override from TestWorkingBeatmap
2022-07-28 17:49:17 +09:00
Dean Herbert
2b9d46d803
Remove unused RulesetStore
from BeatmapManager
constructor
2022-07-28 16:19:05 +09:00
Dean Herbert
ef10145d6f
Rename MenuCursorContainer
and clean up code
2022-07-26 14:11:52 +09:00
Salman Ahmed
840ad8fad2
Fix background beatmap processor resetting star ratings in tests
2022-07-23 11:10:59 +03:00
Salman Ahmed
728487b7fb
Handle GetBeatmapSetRequest
on test room requests handler
...
Required for `BeatmapSetOverlay` lookups to work under dummy API. Not
100% sure about it, but works for now.
2022-07-14 02:34:55 +03:00
為什麼
d39f53f1f0
Mark CreateConfig()
return type as nullable because it's not required all ruleset to implement.
...
Also, remove nullable disable annotation for all using classes.
Setting store can be nullable because `RulesetConfigManager()` can accept null setting store.
2022-07-10 10:15:27 +08:00
Dean Herbert
5651eca06c
Merge branch 'master' into custom-ruleset-score-import
2022-07-08 19:03:47 +09:00
Dean Herbert
13e16530a6
Revert most changes to PlayerTestScene
2022-07-08 18:45:18 +09:00
Dean Herbert
e64b2b1682
Assert that test is run headless when required
2022-07-08 15:45:01 +09:00
Dean Herbert
7ef03dd2cb
Use fire-and-forget async operations on global track
...
This avoids any blocking overhead caused by a backlogged audio thread.
Test seem to pass so might be okay?
Note that order is still guaranteed due to the `ensureUpdateThread`
queueing system framework-side.
2022-07-07 17:15:45 +09:00
Dean Herbert
1a41d3ef20
Allow PlayerTestScene
to import the beatmap it's using
2022-07-07 16:42:36 +09:00
Salman Ahmed
9115072917
Fix flaky tests not running at all with environment variable set
2022-07-07 04:24:10 +03:00
Dean Herbert
64edc6888d
Add test coverage of corrupt realm creating backup
2022-07-04 16:45:23 +09:00
Dan Balasescu
385bd5a1b2
Merge pull request #18965 from peppy/mark-flaky-tests
...
Mark, document and silence remaining flaky tests on standard CI runs
2022-07-03 21:41:14 +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
615c3234d8
Remove non-required NRT hint
2022-07-01 16:25:21 +09:00
Dean Herbert
c4f1660841
Rename ENVVAR in line with previous one (OSU_TESTS_NO_TIMEOUT
)
2022-07-01 16:20:34 +09:00
Dean Herbert
1777a6d24a
Add attribute to retry flaky tests on normal CI runs
2022-07-01 16:06:18 +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
Dean Herbert
cd649f7d97
Merge branch 'master' into multiplayer-leaderboard-user-mods-2
2022-06-08 13:39:42 +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
68337df643
Fix tests by creating a score processor
2022-06-03 20:04:20 +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
Bartłomiej Dach
a8e1c5ba87
Fix remaining cases of incorrect GameplayState
construction in tests
...
Manual attempts to initialise replaced by a new `TestGameplayState`
helper for ease of use.
2022-05-28 15:23:29 +02:00
Salman Ahmed
2fac710d4b
Add step for adjusting editor clock rate in test scene
2022-05-28 04:10:39 +03:00
Joseph Madamba
389020b497
Fix scores container test failures
2022-05-26 20:58:47 -07: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
Dean Herbert
f00dc5e156
Merge pull request #17598 from smoogipoo/playlist-quick-reorder
...
Fix playlist refreshing all items on order change
2022-04-04 14:48: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
Dan Balasescu
32e55e7d78
Merge branch 'master' into osu-diff-calc-max-combo
2022-03-31 15:08:08 +09:00
Bartłomiej Dach
9621a7f9cb
Merge branch 'master' into fix-autoplay-mod-user-id
2022-03-30 21:41:45 +02:00
Dean Herbert
975883da5c
Move all usages of client.realm
filename to a single const
2022-03-30 13:34:48 +09:00
Salman Ahmed
986aad4bd5
Fix potential nullref on OsuGameTestScene.TearDownSteps
2022-03-30 01:15:24 +03:00
Dean Herbert
ea9495eb74
Update all existing calls to extension method with correct fallback handling
2022-03-29 16:51:30 +09:00
Dean Herbert
f92a31cd39
Merge pull request #17402 from smoogipoo/multiplayer-auto-countdown
...
Add multiplayer auto-start countdown timer
2022-03-25 20:31:14 +09:00
Dan Balasescu
1ff5fc98f5
Merge pull request #17445 from peppy/fix-test-realm-failures
...
Fix visual test crashes due to local realm not having update thread
2022-03-25 19:41:13 +09:00
Dan Balasescu
2553cfed75
Match new server ready/unready logic
2022-03-25 17:04:45 +09:00
Dean Herbert
6b22e5774f
Remove conditional access on known non-null
2022-03-25 16:42:35 +09:00
Dean Herbert
5fcd3b07f1
Fix visual test crashes due to local realm not having update thread
2022-03-25 16:35:32 +09:00
Dean Herbert
b1f0f89fdd
Simplify AutoStart
and Host
checks
2022-03-25 15:41:01 +09:00
Dan Balasescu
478174dd58
Merge pull request #17416 from peppy/skin-fuck
...
Refactor skin construction
2022-03-25 15:36:06 +09:00
Dan Balasescu
d3a957d64e
Fix test client not receiving initial value
2022-03-24 20:24:09 +09:00
Dan Balasescu
f80692f342
Add missing TestMultiplayerClient coverage
2022-03-24 20:19:05 +09:00
Dan Balasescu
5fe46a73cb
Update room state in more situations
2022-03-24 20:17:16 +09:00
Dan Balasescu
209de886ce
Add method to stop countdown
2022-03-24 20:17:16 +09:00
Dan Balasescu
ea9de0199d
Split countdown start into separate method
2022-03-24 20:09:32 +09:00
Dan Balasescu
dfa076c169
Refactor cancellation logic
2022-03-24 16:29:59 +09:00
Dan Balasescu
4c0d76573c
Asserate code is running on update thread
2022-03-24 15:51:30 +09:00
Dan Balasescu
f0d132b16e
Rename FinishCountdown() -> SkipToEndOfCountdown()
2022-03-24 15:21:46 +09:00
Dan Balasescu
d2ecc100e5
Revert unnecessary async change
2022-03-24 15:07:24 +09:00
Dan Balasescu
8f3a4df70a
Add explanation for try-catch
2022-03-24 15:07:24 +09:00
Dan Balasescu
d36944ac95
Dispose token manually
...
Cover more branches with cancellation source disposal
2022-03-24 15:07:24 +09:00
Dan Balasescu
34a367b369
Merge branch 'master' into multiplayer-countdown-timers-2
2022-03-23 15:40:50 +09:00
Dean Herbert
6542f974f2
Merge branch 'master' into skin-fuck
2022-03-23 15:30:22 +09:00
Dan Balasescu
a83a90e675
Rename countdown Delay -> Duration
2022-03-23 15:21:16 +09:00
Dan Balasescu
f7c0047206
Send time remaining in countdowns instead
2022-03-23 15:19:43 +09:00
Dean Herbert
078288a616
Make "skin.ini" the default skin filename and remove redundant parameters
2022-03-23 15:05:01 +09:00