Commit Graph

52873 Commits

Author SHA1 Message Date
8f91ce8f0c Merge pull request #18871 from peppy/fix-realm-assertion-during-tests
Fix occasional failure in realm test proceedings due to incorrect `Debug.Assert`
2022-06-27 18:48:47 +09:00
50c1c066de Add various logging of global WorkingBeatmap state changes 2022-06-27 18:41:31 +09:00
e131101708 Merge pull request #18866 from peppy/fix-storyboard-outro-skip-test-flaky
Fix `TestStoryboardSkipOutro` occasionally failing due to strict timings
2022-06-27 18:33:02 +09:00
0ba29b6fa6 Use currentScreen instead to make sure the screen we care about is loaded 2022-06-27 18:28:00 +09:00
b13fa924fd Merge pull request #18865 from peppy/fix-flaky-chat-test
Fix chat tests failing 1/10000 runs
2022-06-27 18:06:00 +09:00
5af1106fa5 Remove unused using statement 2022-06-27 18:04:52 +09:00
f6a61472c4 Fix occasional failure in realm test proceedings due to incorrect Debug.Assert
After a `BlockAllOperations`, the restoration of the `updateRealm`
instance is not instance. It is posted to a `SynchronizationContext`.
The assertion which has been removed in this commit was assuming it
would always be an immediate operation.

To ensure this works as expected, I've tracked the initialised state via
a new `bool`.

```csharp
System.TimeoutException : Attempting to block for migration took too long.

  1) Host threw exception System.AggregateException: One or more errors occurred. (: )
 ---> NUnit.Framework.AssertionException: :
   at osu.Framework.Logging.ThrowingTraceListener.Fail(String message1, String message2)
   at System.Diagnostics.TraceInternal.Fail(String message, String detailMessage)
   at System.Diagnostics.TraceInternal.TraceProvider.Fail(String message, String detailMessage)
   at System.Diagnostics.Debug.Fail(String message, String detailMessage)
   at osu.Game.Database.RealmAccess.BlockAllOperations() in /opt/buildagent/work/ecd860037212ac52/osu.Game/Database/RealmAccess.cs:line 813
   at osu.Game.OsuGameBase.<>c__DisplayClass108_1.<Migrate>b__0() in /opt/buildagent/work/ecd860037212ac52/osu.Game/OsuGameBase.cs:line 449
   at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
   at osu.Framework.Threading.Scheduler.Update()
   at osu.Framework.Graphics.Drawable.UpdateSubTree()
   at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
```

https://teamcity.ppy.sh/buildConfiguration/Osu_Build/322?hideProblemsFromDependencies=false&hideTestsFromDependencies=false&expandBuildTestsSection=true
2022-06-27 18:01:12 +09:00
7ae222d984 Merge pull request #18863 from smoogipoo/difficulty-attributes-beatmap
Pass online beatmap info into `DifficultyAttributes.FromDatabaseAttributes()`
2022-06-27 17:16:52 +09:00
401d9c1bae Fix TestStoryboardSkipOutro occasionally failing due to strict timings 2022-06-27 17:13:46 +09:00
8c3c1f095e Update rollback test expectations
I can't find a better way to do this. It's very hard to trigger an
actual failure in the import process these days. For now I've just made
this work with the new assumptions. May be worth removing the test in
the future if this ever backfires.
2022-06-27 17:04:35 +09:00
13dcaf82ad Fix chat tests failing 1/10000 runs
31a447fda0/osu.Game/Online/Chat/ChannelManager.cs (L412-L414)

Sigh.
2022-06-27 16:50:10 +09:00
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
0fd2c010e5 Remove NRT disables from attributes classes 2022-06-27 16:07:15 +09:00
0579780bb8 Add IBeatmapOnlineInfo parameter and use to extract more data 2022-06-27 16:07:15 +09:00
f6a6538e96 Add more properties to IBeatmapOnlineInfo 2022-06-27 16:07:15 +09:00
10d1bbb131 Log global working beatmap updates in OsuGameBase instead of OsuGame 2022-06-27 15:58:51 +09:00
b70b365411 Ensure files are cleaned up even on test step failure in TestAddAudioTrack 2022-06-27 15:53:05 +09:00
01487a1185 Add assertion on realm re-fetch being not-null 2022-06-27 15:52:45 +09:00
13c8d33009 Fix second case of empty beatmaps being reported to sentry as errors 2022-06-27 15:29:01 +09:00
da61d0547f Include archive name in import log output 2022-06-27 15:24:25 +09:00
2b278ed324 Merge pull request #18841 from peppy/menu-cursor-better-rotation
Adjust menu cursor rotation to use a floating centre-point
2022-06-27 14:18:54 +09:00
05148d2b98 Merge pull request #18854 from peppy/fix-flaky-editor-navigation-test
Attempt to fix flaky `EditorNavigation` test
2022-06-27 13:58:28 +09:00
1c1016d0be Merge pull request #18853 from peppy/fix-flaky-playlist-test
Attempt to fix flaky `PlaylistOverlay` test
2022-06-27 13:48:19 +09:00
b5a8889fb8 Attempt to fix flaky EditorNavigation test
Conditionals taken from
f8830c6850/osu.Game/Tests/Visual/EditorTestScene.cs (L61-L62)
where it seemed to resolve other similar cases.
2022-06-27 03:04:50 +09:00
cd9eaf215b Attempt to fix flaky PlaylistOverlay test 2022-06-27 02:58:01 +09:00
0bd230217b Merge pull request #18849 from peppy/fix-another-test-deadlock
Fix test deadlock due to TPL threadpool saturation
2022-06-26 17:37:15 +09:00
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
2ecab454aa Adjust animations and tolerances to make things feel snappier 2022-06-25 19:50:10 +09:00
a039f9878a Adjust menu cursor rotation to follow mouse, rather than be fixated around original click location 2022-06-25 19:33:44 +09:00
f15698d025 Merge pull request #18830 from peppy/c-sharp-10 2022-06-25 12:03:29 +09:00
e0c2228b41 Revert downgrades in code inspection settings 2022-06-24 16:43:57 +02:00
a83c45b50e Fix compile failures from framework breaking change 2022-06-24 16:07:14 +02:00
df30bedab6 Update framework again 2022-06-24 16:01:52 +02:00
14327943a2 Update framework 2022-06-24 21:28:30 +09:00
81bfe14063 Update DotSettings to match framework (in most cases) 2022-06-24 21:28:24 +09:00
31a447fda0 Update parameter discards 2022-06-24 21:26:19 +09:00
30eebf3511 Merge branch 'master' into c-sharp-10 2022-06-24 21:22:33 +09:00
2ca4184eda Merge pull request #18834 from bdach/ban-implicit-to-lower-upper
Disallow usage of `string.To{Upper,Lower}()` without explicit culture
2022-06-24 20:39:58 +09:00
7eb49dac7a Merge pull request #18832 from peppy/bdc-remove-unused-path
Remove unused bindable retrieval flow in `BeatmapDifficultyCache`
2022-06-24 20:20:23 +09:00
a329b346a4 Merge pull request #18833 from peppy/beatmap-manager-misc
Ensure `WorkingBeatmap` is always using a detached instance
2022-06-24 13:06:09 +02:00
823b3c1c0f Ensure WorkingBeatmap is always using a detached instance 2022-06-24 19:07:54 +09:00
2ae48d5a87 Rename incorrect parameter name in BeatmapManager.GetWorkingBeatmap 2022-06-24 19:07:54 +09:00
26c5b59f6d Replace usages of string.To{Lower,Upper}() 2022-06-24 11:57:45 +02:00
e536256e3b Merge branch 'master' into bdc-remove-unused-path 2022-06-24 17:55:56 +09:00
c7e92f46f4 Merge pull request #18819 from peppy/difficulty-icon-refactor-pass
Refactor difficulty icons to not suck
2022-06-24 17:50:50 +09:00
c179127670 Remove unused bindable retrieval flow 2022-06-24 17:09:56 +09:00
0755430006 Use AddOnce for update calls 2022-06-24 17:09:56 +09:00
453b77e0dc Fix dangerous File.Copy causing intermittent realm migration test failures
Resolves an issue I've been able to locally reproduce on windows.
Basically, the `File.Copy` would begin while realm was blocking. The
"restore" operation is posted to the `SynchronizationContext` to run on
next update call, but in the mean time the copy would begin, causing a
conflict of interest.

Very dangerous. Only really noticeable on windows.
2022-06-24 17:09:56 +09:00
6487cd674f Merge pull request #18831 from peppy/fix-failing-realm-migration-test
Fix dangerous `File.Copy` causing intermittent realm migration test failures
2022-06-24 17:05:22 +09:00
8912f07745 Merge branch 'master' into difficulty-icon-refactor-pass 2022-06-24 16:34:35 +09:00