From 21c966ed1e3ef4eca776e0dee40582d79b522fd0 Mon Sep 17 00:00:00 2001 From: Jake Meiergerd Date: Sun, 27 Sep 2026 13:24:30 -0500 Subject: [PATCH 1/2] Deleted old, un-maintained DynamicData.Profile test project. Unsure what the purpose of this used to be, but it hasn't been included in the main solution for years, and and doesn't even build anymore. --- .../DynamicData.Profile/Allocations.cs | 20 --- .../DynamicData.Profile/AllocationsCount.cs | 26 ---- .../CacheAllocationChecks.cs | 60 --------- .../CheapAndDirtyAllocationTest.cs | 119 ------------------ .../DynamicData.Profile.csproj | 20 --- NonProduction/DynamicData.Profile/Person.cs | 18 --- 6 files changed, 263 deletions(-) delete mode 100644 NonProduction/DynamicData.Profile/Allocations.cs delete mode 100644 NonProduction/DynamicData.Profile/AllocationsCount.cs delete mode 100644 NonProduction/DynamicData.Profile/CacheAllocationChecks.cs delete mode 100644 NonProduction/DynamicData.Profile/CheapAndDirtyAllocationTest.cs delete mode 100644 NonProduction/DynamicData.Profile/DynamicData.Profile.csproj delete mode 100644 NonProduction/DynamicData.Profile/Person.cs diff --git a/NonProduction/DynamicData.Profile/Allocations.cs b/NonProduction/DynamicData.Profile/Allocations.cs deleted file mode 100644 index 0ebe7bf41..000000000 --- a/NonProduction/DynamicData.Profile/Allocations.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) 2011-2019 Roland Pheasant. All rights reserved. -// Roland Pheasant licenses this file to you under the MIT license. -// See the LICENSE file in the project root for full license information. - -using System; - -namespace DynamicData.Profile -{ - public static class Allocations - { - public static AllocationsCount Run(Action action) - { - var initial = GC.GetAllocatedBytesForCurrentThread(); - action(); - var final = GC.GetAllocatedBytesForCurrentThread(); - - return new AllocationsCount(initial, final); - } - } -} \ No newline at end of file diff --git a/NonProduction/DynamicData.Profile/AllocationsCount.cs b/NonProduction/DynamicData.Profile/AllocationsCount.cs deleted file mode 100644 index 4e9f7a441..000000000 --- a/NonProduction/DynamicData.Profile/AllocationsCount.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) 2011-2019 Roland Pheasant. All rights reserved. -// Roland Pheasant licenses this file to you under the MIT license. -// See the LICENSE file in the project root for full license information. - -namespace DynamicData.Profile -{ - public class AllocationsCount - { - - public long InitialSize { get; } - public long FinalSize { get; } - public long Size => FinalSize - InitialSize; - - /// Initializes a new instance of the class. - public AllocationsCount(long initialSize, long finalSize) - { - InitialSize = initialSize; - FinalSize = finalSize; - } - - public override string ToString() - { - return $"Allocation Bytes: {Size:N0}"; - } - } -} \ No newline at end of file diff --git a/NonProduction/DynamicData.Profile/CacheAllocationChecks.cs b/NonProduction/DynamicData.Profile/CacheAllocationChecks.cs deleted file mode 100644 index 96f5dc0c7..000000000 --- a/NonProduction/DynamicData.Profile/CacheAllocationChecks.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2011-2019 Roland Pheasant. All rights reserved. -// Roland Pheasant licenses this file to you under the MIT license. -// See the LICENSE file in the project root for full license information. - -using System; -using System.Linq; -using Xunit; - -namespace DynamicData.Profile -{ - - public class CacheAllocationChecks - { - [Fact] - public void PopulateCache_NoObservers() - { - var items = Enumerable.Range(1, 10_000).Select(j => new Person("P" + j, j)).ToList(); - - var cache = new SourceCache(p=>p.Name); - - var result = Allocations.Run(() => - { - cache.AddOrUpdate(items); - }); - Console.WriteLine(result); - } - - [Fact] - public void PopulateCache_Observers() - { - var items = Enumerable.Range(1, 10_000).Select(j => new Person("P" + j, j)).ToList(); - - var cache = new SourceCache(p => p.Name); - var subscribed = cache.Connect().Subscribe(); - var result = Allocations.Run(() => - { - cache.AddOrUpdate(items); - }); - Console.WriteLine(result); - } - - [Fact] - public void Connect() - { - var items = Enumerable.Range(1, 10_000).Select(j => new Person("P" + j, j)).ToList(); - - var cache = new SourceCache(p => p.Name); - cache.Connect().Subscribe();//do warm up - - var added = Allocations.Run(() => cache.AddOrUpdate(items)); - Console.WriteLine(added); - - var connected = Allocations.Run(() => cache.Connect().Subscribe()); - Console.WriteLine(connected); - - var filtered = Allocations.Run(() => cache.Connect(p=>p.Age <5000).Subscribe()); - Console.WriteLine(filtered); - } - } -} diff --git a/NonProduction/DynamicData.Profile/CheapAndDirtyAllocationTest.cs b/NonProduction/DynamicData.Profile/CheapAndDirtyAllocationTest.cs deleted file mode 100644 index d2939e177..000000000 --- a/NonProduction/DynamicData.Profile/CheapAndDirtyAllocationTest.cs +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (c) 2011-2019 Roland Pheasant. All rights reserved. -// Roland Pheasant licenses this file to you under the MIT license. -// See the LICENSE file in the project root for full license information. - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Linq; -using DynamicData.Kernel; -using Xunit; - -namespace DynamicData.Profile -{ - public class CheapAndDirtyAllocationTest - { - - [Fact] - public void ChangeSetAllocations() - { - // Arrange - var iList = Enumerable.Range(1, 100) - .Select(j => new Person("P" + j, j)) - .Select(p => new Change(ChangeReason.Add, p.Name, p)) - .ToList(); - - var changes = new ChangeSet(iList); - - var startAllocs = GC.GetAllocatedBytesForCurrentThread(); - - // Assert - var i = 0; - foreach (var item in changes) - { - i++; - } - - var endAllocs = GC.GetAllocatedBytesForCurrentThread(); - var diff = endAllocs - startAllocs; - Assert.Equal(startAllocs, endAllocs); - Assert.Equal(iList.Count, i); - } - - [Fact(Skip = "Allocation is not as originally expected, this test has not been run for some time due to a solution fault in loading the test")] - public void ChangeSetAllocations2() - { - // Arrange - var iList = Enumerable.Range(1, 100) - .Select(j => new Person("P" + j, j)) - .Select(p => new Change(ChangeReason.Add, p.Name, p)) - .ToList(); - - var changes = new ChangeSet(iList); - - var startAllocs = GC.GetAllocatedBytesForCurrentThread(); - - // Act - EnumerableIList> eIList = changes; - - // Assert - var i = 0; - var count = changes.Count; - foreach (var item in eIList) - { - i++; - } - - var endAllocs = GC.GetAllocatedBytesForCurrentThread(); - var diff = endAllocs - startAllocs; - Assert.Equal(startAllocs, endAllocs); - Assert.Equal(iList.Count, i); - } - - [Fact] - public void NoAllocations() - { - // Arrange - IList iList = new[] { 1, 2, 3, 4, 5, 6, 7 }.ToImmutableArray(); - - // Act - var eIList = EnumerableIList.Create(iList); - var startAllocs = GC.GetAllocatedBytesForCurrentThread(); - - // Assert - var i = 0; - foreach (var item in eIList) - { - i++; - } - - var endAllocs = GC.GetAllocatedBytesForCurrentThread(); - - Assert.Equal(startAllocs, endAllocs); - Assert.Equal(iList.Count, i); - } - - [Fact] - public void WithAllocations() - { - // Arrange - IList iList = new[] { 1, 2, 3, 4, 5, 6, 7 }.ToImmutableArray(); - - // Act - var eIList = EnumerableIList.Create(iList); - var startAllocs = GC.GetAllocatedBytesForCurrentThread(); - - // Assert - var i = 0; - foreach (var item in eIList) - { - i++; - } - - var endAllocs = GC.GetAllocatedBytesForCurrentThread(); - - Assert.Equal(startAllocs, endAllocs); - Assert.Equal(iList.Count, i); - } - } -} diff --git a/NonProduction/DynamicData.Profile/DynamicData.Profile.csproj b/NonProduction/DynamicData.Profile/DynamicData.Profile.csproj deleted file mode 100644 index 504b3165c..000000000 --- a/NonProduction/DynamicData.Profile/DynamicData.Profile.csproj +++ /dev/null @@ -1,20 +0,0 @@ - - - net8.0 - $(NoWarn);CS0618 - - - - - - - - - - - - - - - - diff --git a/NonProduction/DynamicData.Profile/Person.cs b/NonProduction/DynamicData.Profile/Person.cs deleted file mode 100644 index 2e8ccc0b9..000000000 --- a/NonProduction/DynamicData.Profile/Person.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2011-2019 Roland Pheasant. All rights reserved. -// Roland Pheasant licenses this file to you under the MIT license. -// See the LICENSE file in the project root for full license information. - -namespace DynamicData.Profile -{ - public class Person - { - public string Name { get; } - public int Age { get; } - - public Person(string name, int age) - { - Name = name; - Age = age; - } - } -} \ No newline at end of file From 05c5bbb55e955e9b6eddefad4c0004a10cc4c78a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 27 Sep 2026 18:25:56 +0000 Subject: [PATCH 2/2] Update actions/upload-artifact action to v7 --- .github/workflows/ci-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index e5f9f3baf..b72be9df6 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -68,7 +68,7 @@ jobs: working-directory: src - name: Create NuGet Artifacts - uses: actions/upload-artifact@v4.6.2 + uses: actions/upload-artifact@v7.0.1 with: name: nuget path: 'src/**/bin/Release/*.nupkg'