From e6c5a040f708a184ba0c470eb58c296fc7c3b3f9 Mon Sep 17 00:00:00 2001 From: Erica Vellanoweth Date: Thu, 13 Feb 2025 14:33:03 -0800 Subject: [PATCH 1/9] retrieving disk paths via diskManager --- .../UnixDiskManagerTests.cs | 18 ++++ .../WindowsDiskManagerTests.cs | 88 +++++++++++++++++++ .../VirtualClient.Core/DiskManager.cs | 3 + .../VirtualClient.Core/IDiskManager.cs | 7 ++ .../VirtualClient.Core/UnixDiskManager.cs | 39 ++++++++ .../VirtualClient.Core/WindowsDiskManager.cs | 39 ++++++++ .../InMemoryDiskManager.cs | 10 +++ 7 files changed, 204 insertions(+) diff --git a/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs b/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs index ee47286935..e6aaf0d05f 100644 --- a/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs +++ b/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs @@ -349,6 +349,24 @@ public void UnixDiskManagerAppliesRetriesOnFailedAttemptsToCreateMountPoints() Assert.IsTrue(attempts == 4); } + [Test] + public async Task UnixDiskManagerReturnsListofDiskPaths() + { + this.testProcess.OnHasExited = () => true; + this.testProcess.OnStart = () => true; + this.testProcess.StandardOutput.Append(Resources.lshw_disk_storage_results); + + List accessPaths = new List + { + "/mnt", + }; + + IEnumerable diskPaths = await this.diskManager.GetDiskPathsAsync("osdisk:false", CancellationToken.None) + .ConfigureAwait(false); + + CollectionAssert.AreEqual(diskPaths, accessPaths); + } + private class TestUnixDiskManager : UnixDiskManager { public TestUnixDiskManager(ProcessManager processManager) diff --git a/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs b/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs index 9f9695f197..844d07c50c 100644 --- a/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs +++ b/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs @@ -1483,6 +1483,94 @@ public async Task WindowsDiskManagerGetsTheExpectedDisks_Scenario1() actualDisks.ToList().ForEach(disk => Assert.IsTrue(disk.Volumes.Count() == 2)); } + [Test] + public async Task WindowsDiskManagerReturnsListofDiskPaths() + { + this.testProcess.OnHasExited = () => true; + this.testProcess.OnStart = () => true; + + this.standardInput.BytesWritten += (sender, data) => + { + string input = data.ToString().Trim(); + if (input.Contains($"select disk")) + { + int diskIndex = int.Parse(Regex.Match(input, "[0-9]+").Value); + this.testProcess.StandardOutput.Append($"Disk {diskIndex} is now the selected disk."); + } + else if (input.Contains($"select partition")) + { + int partitionIndex = int.Parse(Regex.Match(input, "[0-9]+").Value); + this.testProcess.StandardOutput.Append($"Partition {partitionIndex} is now the selected partition."); + } + else if (input.Contains("list disk")) + { + StringBuilder listDiskResults = new StringBuilder() + .AppendLine(" ") + .AppendLine(" Disk ### Status Size Free Dyn Gpt") + .AppendLine(" -------- ------------- ------- ------- --- ---") + .AppendLine(" Disk 0 Online 127 GB 1024 KB "); + + this.testProcess.StandardOutput.Append(listDiskResults.ToString()); + } + else if (input.Contains("list partition")) + { + StringBuilder listPartitionResults = new StringBuilder() + .AppendLine(" ") + .AppendLine(" Partition ### Type Size Offset") + .AppendLine(" ------------- ---------------- ------- -------") + .AppendLine(" Partition 1 Primary 500 MB 1024 KB") + .AppendLine(" Partition 2 Primary 126 GB 501 MB"); + + this.testProcess.StandardOutput.Append(listPartitionResults.ToString()); + } + else if (input.Contains($"detail disk")) + { + StringBuilder detailDiskResults = new StringBuilder() + .AppendLine(" ") + .AppendLine("Virtual HD ATA Device") + .AppendLine("Disk ID: EF349D83") + .AppendLine("Type : ATA") + .AppendLine("Status : Online") + .AppendLine("Path : 0") + .AppendLine("Target : 0") + .AppendLine("LUN ID : 0") + .AppendLine(" ") + .AppendLine(" Volume ### Ltr Label Fs Type Size Status Info ") + .AppendLine(" ---------- --- ----------- ----- ---------- ------- --------- --------") + .AppendLine(" Volume 0 System Rese NTFS Partition 500 MB Healthy System ") + .AppendLine(" Volume 1 C Windows NTFS Partition 126 GB Healthy Boot "); + + this.testProcess.StandardOutput.Append(detailDiskResults.ToString()); + } + else if (input.Contains($"detail partition")) + { + StringBuilder detailPartitionResults = new StringBuilder() + .AppendLine(" ") + .AppendLine("Partition 1") + .AppendLine("Type : 07") + .AppendLine("Hidden: No") + .AppendLine("Active: Yes") + .AppendLine("Offset in Bytes: 525336576") + .AppendLine(" ") + .AppendLine(" Volume ### Ltr Label Fs Type Size Status Info ") + .AppendLine(" ---------- --- ----------- ----- ---------- ------- --------- --------") + .AppendLine(" Volume 1 C Windows NTFS Partition 126 GB Healthy Boot "); + + this.testProcess.StandardOutput.Append(detailPartitionResults.ToString()); + } + }; + + List accessPaths = new List + { + "C:\\" + }; + + IEnumerable diskPaths = await this.diskManager.GetDiskPathsAsync(DiskFilters.DefaultDiskFilter, CancellationToken.None) + .ConfigureAwait(false); + + CollectionAssert.AreEqual(diskPaths, accessPaths); + } + private class TestWindowsDiskManager : WindowsDiskManager { public TestWindowsDiskManager(ProcessManager processManager) diff --git a/src/VirtualClient/VirtualClient.Core/DiskManager.cs b/src/VirtualClient/VirtualClient.Core/DiskManager.cs index 91fe6668b3..1490a54da9 100644 --- a/src/VirtualClient/VirtualClient.Core/DiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/DiskManager.cs @@ -53,5 +53,8 @@ protected DiskManager(ILogger logger) /// public abstract Task> GetDisksAsync(CancellationToken cancellationToken); + + /// + public abstract Task> GetDiskPathsAsync(string diskFilter, CancellationToken cancellationToken); } } diff --git a/src/VirtualClient/VirtualClient.Core/IDiskManager.cs b/src/VirtualClient/VirtualClient.Core/IDiskManager.cs index 12aaa07050..ed46d98d1a 100644 --- a/src/VirtualClient/VirtualClient.Core/IDiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/IDiskManager.cs @@ -38,5 +38,12 @@ public interface IDiskManager /// /// A token that can be used to cancel the operation. Task> GetDisksAsync(CancellationToken cancellationToken); + + /// + /// Grabs the available data directory on the system. + /// + /// + /// Disk filter to + Task> GetDiskPathsAsync(string diskFilter, CancellationToken cancellationToken); } } diff --git a/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs b/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs index 4affbfc7d6..e8147d8947 100644 --- a/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs @@ -169,6 +169,45 @@ public override Task> GetDisksAsync(CancellationToken cancella }); } + /// + /// Grabs the available data directory on the system. + /// + /// + /// Disk filter to + /// + /// + public override Task> GetDiskPathsAsync(string diskFilter, CancellationToken cancellationToken) + { + List diskPaths = new List(); + + return this.Logger.LogMessageAsync($"{nameof(UnixDiskManager)}.GetDiskPaths", EventContext.Persisted(), async () => + { + IEnumerable disks = await this.GetDisksAsync(cancellationToken).ConfigureAwait(false); + IEnumerable disksToTest = DiskFilters.FilterDisks(disks, diskFilter, PlatformID.Unix).ToList(); + + if (disksToTest?.Any() != true) + { + throw new WorkloadException( + "Expected disks to test not found. Given the parameters defined for the profile action/step or those passed " + + "in on the command line, the requisite disks do not exist on the system or could not be identified based on the properties " + + "of the existing disks.", + ErrorReason.DependencyNotFound); + } + + foreach (Disk disk in disksToTest) + { + string diskPath = $"{disk.GetPreferredAccessPath(PlatformID.Unix)}"; + + if (!string.IsNullOrEmpty(diskPath)) + { + diskPaths.Add(diskPath); + } + } + + return diskPaths.AsEnumerable(); + }); + } + private Task AssignMountPointAsync(DiskVolume volume, string mountPoint, EventContext telemetryContext, CancellationToken cancellationToken) { int retries = -1; diff --git a/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs b/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs index 9812ba8439..0fb412c000 100644 --- a/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs @@ -472,6 +472,45 @@ await process.WriteInput(command) return disks; } + /// + /// Grabs the available data directory on the system. + /// + /// + /// Disk filter to + /// + /// + public override Task> GetDiskPathsAsync(string diskFilter, CancellationToken cancellationToken) + { + List diskPaths = new List(); + + return this.Logger.LogMessageAsync($"{nameof(WindowsDiskManager)}.GetDiskPaths", EventContext.Persisted(), async () => + { + IEnumerable disks = await this.GetDisksAsync(cancellationToken).ConfigureAwait(false); + IEnumerable disksToTest = DiskFilters.FilterDisks(disks, diskFilter, PlatformID.Win32NT).ToList(); + + if (disksToTest?.Any() != true) + { + throw new WorkloadException( + "Expected disks to test not found. Given the parameters defined for the profile action/step or those passed " + + "in on the command line, the requisite disks do not exist on the system or could not be identified based on the properties " + + "of the existing disks.", + ErrorReason.DependencyNotFound); + } + + foreach (Disk disk in disksToTest) + { + string diskPath = $"{disk.GetPreferredAccessPath(PlatformID.Win32NT)}"; + + if (!string.IsNullOrEmpty(diskPath)) + { + diskPaths.Add(diskPath); + } + } + + return diskPaths.AsEnumerable(); + }); + } + /// /// Returns as set of lines that are all the exact same width. /// diff --git a/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs b/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs index e6264ff501..78647a2062 100644 --- a/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs +++ b/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs @@ -123,6 +123,16 @@ public Task> GetDisksAsync(CancellationToken cancellationToken return Task.FromResult((IEnumerable)this); } + /// + /// Grabs the available data directory on the system. + /// + /// + /// Disk filter to + public Task> GetDiskPathsAsync(string diskFilter, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } + private void AddVolumeToDisk(Disk disk, FileSystemType fileSystemType) { DiskVolume newVolume = null; From e4647490d2006db210f3a40febcc407d970e4dbf Mon Sep 17 00:00:00 2001 From: Erica Vellanoweth Date: Wed, 19 Feb 2025 15:43:03 -0800 Subject: [PATCH 2/9] overloading getdisks with the diskfilter & adjusting FIO with the changes --- .../FIO/FioExecutorTests.cs | 35 +--------------- .../VirtualClient.Actions/FIO/FioExecutor.cs | 28 ++----------- .../UnixDiskManagerTests.cs | 10 ++--- .../WindowsDiskManagerTests.cs | 11 ++--- .../VirtualClient.Core/DiskManager.cs | 2 +- .../VirtualClient.Core/IDiskManager.cs | 8 ++-- .../VirtualClient.Core/UnixDiskManager.cs | 40 ++++--------------- .../VirtualClient.Core/WindowsDiskManager.cs | 40 ++++--------------- .../profiles/PERF-IO-FIO.json | 6 +++ .../InMemoryDiskManager.cs | 16 +++++--- 10 files changed, 49 insertions(+), 147 deletions(-) diff --git a/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs b/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs index f8fe7fdbe7..39993d43c9 100644 --- a/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs +++ b/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs @@ -56,7 +56,7 @@ public void SetupTest() this.disks = this.mockFixture.CreateDisks(PlatformID.Unix, true); - this.mockFixture.DiskManager.Setup(mgr => mgr.GetDisksAsync(It.IsAny())).ReturnsAsync(() => this.disks); + this.mockFixture.DiskManager.Setup(mgr => mgr.GetDisksAsync(It.IsAny(), It.IsAny())).ReturnsAsync(() => this.disks); this.mockFixture.PackageManager.OnGetPackage().ReturnsAsync(new DependencyPath("fio", this.mockFixture.GetPackagePath("fio"))); this.mockFixture.File.OnFileExists().Returns(true); this.mockFixture.File.Setup(file => file.ReadAllText(It.IsAny())).Returns(string.Empty); @@ -193,39 +193,6 @@ public void FioExecutorAppliesConfigurationParametersCorrectly_DiskFillScenario( } } - [Test] - public async Task FioExecutorCreatesExpectedMountPointsForDisksUnderTest_RemoteDiskScenario() - { - // Clear any access points out. - this.disks.ToList().ForEach(disk => disk.Volumes.ToList().ForEach(vol => (vol.AccessPaths as List).Clear())); - - List> mountPointsCreated = new List>(); - - this.mockFixture.DiskManager - .Setup(mgr => mgr.CreateMountPointAsync(It.IsAny(), It.IsAny(), It.IsAny())) - .Callback((volume, mountPoint, token) => - { - (volume.AccessPaths as List).Add(mountPoint); - }) - .Returns(Task.CompletedTask); - - using (TestFioExecutor workloadExecutor = new TestFioExecutor(this.mockFixture.Dependencies, this.profileParameters)) - { - await workloadExecutor.ExecuteAsync(CancellationToken.None); - - Assert.IsTrue(this.disks.Skip(1).All(d => d.Volumes.First().AccessPaths?.Any() == true)); - - string expectedMountPoint1 = Path.Combine(MockFixture.TestAssemblyDirectory, "vcmnt_dev_sdd1"); - Assert.AreEqual(expectedMountPoint1, this.disks.ElementAt(1).Volumes.First().AccessPaths.First()); - - string expectedMountPoint2 = Path.Combine(MockFixture.TestAssemblyDirectory, "vcmnt_dev_sde1"); - Assert.AreEqual(expectedMountPoint2, this.disks.ElementAt(2).Volumes.First().AccessPaths.First()); - - string expectedMountPoint3 = Path.Combine(MockFixture.TestAssemblyDirectory, "vcmnt_dev_sdf1"); - Assert.AreEqual(expectedMountPoint3, this.disks.ElementAt(3).Volumes.First().AccessPaths.First()); - } - } - [Test] public void FioExecutorCreatesTheExpectedWorkloadProcess_Scenario1() { diff --git a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs index f39547ebef..3b8e800502 100644 --- a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs +++ b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs @@ -300,7 +300,9 @@ protected override async Task ExecuteAsync(EventContext telemetryContext, Cancel string ioEngine = FioExecutor.GetIOEngine(Environment.OSVersion.Platform); - IEnumerable disks = await this.SystemManagement.DiskManager.GetDisksAsync(cancellationToken) + this.DiskFilter = string.IsNullOrWhiteSpace(this.DiskFilter) ? DiskFilters.DefaultDiskFilter : this.DiskFilter; + + IEnumerable disks = await this.SystemManagement.DiskManager.GetDisksAsync(this.DiskFilter, cancellationToken) .ConfigureAwait(false); if (disks?.Any() != true) @@ -310,32 +312,10 @@ protected override async Task ExecuteAsync(EventContext telemetryContext, Cancel ErrorReason.WorkloadUnexpectedAnomaly); } - IEnumerable disksToTest = this.GetDisksToTest(disks); - - if (disksToTest?.Any() != true) - { - throw new WorkloadException( - "Expected disks to test not found. Given the parameters defined for the profile action/step or those passed " + - "in on the command line, the requisite disks do not exist on the system or could not be identified based on the properties " + - "of the existing disks.", - ErrorReason.DependencyNotFound); - } - - if (await this.CreateMountPointsAsync(disksToTest, cancellationToken).ConfigureAwait(false)) - { - // Refresh the disks to pickup the mount point changes. - await Task.Delay(1000).ConfigureAwait(false); - IEnumerable updatedDisks = await this.SystemManagement.DiskManager.GetDisksAsync(cancellationToken) - .ConfigureAwait(false); - - disksToTest = this.GetDisksToTest(updatedDisks); - } - telemetryContext.AddContext(nameof(this.DiskFilter), this.DiskFilter); telemetryContext.AddContext("executable", this.ExecutablePath); telemetryContext.AddContext(nameof(ioEngine), ioEngine); telemetryContext.AddContext(nameof(disks), disks); - telemetryContext.AddContext(nameof(disksToTest), disksToTest); this.WorkloadProcesses.Clear(); List fioProcessTasks = new List(); @@ -345,7 +325,7 @@ protected override async Task ExecuteAsync(EventContext telemetryContext, Cancel await this.SetCommandLineForJobFilesAsync(cancellationToken); } - this.WorkloadProcesses.AddRange(this.CreateWorkloadProcesses(this.ExecutablePath, this.CommandLine, disksToTest, this.ProcessModel)); + this.WorkloadProcesses.AddRange(this.CreateWorkloadProcesses(this.ExecutablePath, this.CommandLine, disks, this.ProcessModel)); using (BackgroundOperations profiling = BackgroundOperations.BeginProfiling(this, cancellationToken)) { diff --git a/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs b/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs index e6aaf0d05f..164f304aac 100644 --- a/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs +++ b/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs @@ -350,21 +350,17 @@ public void UnixDiskManagerAppliesRetriesOnFailedAttemptsToCreateMountPoints() } [Test] - public async Task UnixDiskManagerReturnsListofDiskPaths() + public async Task UnixDiskManagerReturnsListofFilteredDisks() { this.testProcess.OnHasExited = () => true; this.testProcess.OnStart = () => true; this.testProcess.StandardOutput.Append(Resources.lshw_disk_storage_results); - List accessPaths = new List - { - "/mnt", - }; - IEnumerable diskPaths = await this.diskManager.GetDiskPathsAsync("osdisk:false", CancellationToken.None) + IEnumerable disks = await this.diskManager.GetDisksAsync("osdisk:false", CancellationToken.None) .ConfigureAwait(false); - CollectionAssert.AreEqual(diskPaths, accessPaths); + Assert.AreEqual(disks.Count(), 3); } private class TestUnixDiskManager : UnixDiskManager diff --git a/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs b/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs index 844d07c50c..639a411c5f 100644 --- a/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs +++ b/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs @@ -1484,7 +1484,7 @@ public async Task WindowsDiskManagerGetsTheExpectedDisks_Scenario1() } [Test] - public async Task WindowsDiskManagerReturnsListofDiskPaths() + public async Task WindowsDiskManagerReturnsListofFilteredDisks() { this.testProcess.OnHasExited = () => true; this.testProcess.OnStart = () => true; @@ -1560,15 +1560,10 @@ public async Task WindowsDiskManagerReturnsListofDiskPaths() } }; - List accessPaths = new List - { - "C:\\" - }; - - IEnumerable diskPaths = await this.diskManager.GetDiskPathsAsync(DiskFilters.DefaultDiskFilter, CancellationToken.None) + IEnumerable disks = await this.diskManager.GetDisksAsync(DiskFilters.DefaultDiskFilter, CancellationToken.None) .ConfigureAwait(false); - CollectionAssert.AreEqual(diskPaths, accessPaths); + Assert.AreEqual(disks.Count(), 1); } private class TestWindowsDiskManager : WindowsDiskManager diff --git a/src/VirtualClient/VirtualClient.Core/DiskManager.cs b/src/VirtualClient/VirtualClient.Core/DiskManager.cs index 1490a54da9..d70a7a24eb 100644 --- a/src/VirtualClient/VirtualClient.Core/DiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/DiskManager.cs @@ -55,6 +55,6 @@ protected DiskManager(ILogger logger) public abstract Task> GetDisksAsync(CancellationToken cancellationToken); /// - public abstract Task> GetDiskPathsAsync(string diskFilter, CancellationToken cancellationToken); + public abstract Task> GetDisksAsync(string diskFilter, CancellationToken cancellationToken); } } diff --git a/src/VirtualClient/VirtualClient.Core/IDiskManager.cs b/src/VirtualClient/VirtualClient.Core/IDiskManager.cs index ed46d98d1a..0a7baaebe8 100644 --- a/src/VirtualClient/VirtualClient.Core/IDiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/IDiskManager.cs @@ -40,10 +40,10 @@ public interface IDiskManager Task> GetDisksAsync(CancellationToken cancellationToken); /// - /// Grabs the available data directory on the system. + /// Gets the set of physical disks that exist on the system. /// - /// - /// Disk filter to - Task> GetDiskPathsAsync(string diskFilter, CancellationToken cancellationToken); + /// Optional filter for disks. + /// A token that can be used to cancel the operation. + Task> GetDisksAsync(string diskFilter, CancellationToken cancellationToken); } } diff --git a/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs b/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs index e8147d8947..2fbe38c08a 100644 --- a/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs @@ -170,42 +170,18 @@ public override Task> GetDisksAsync(CancellationToken cancella } /// - /// Grabs the available data directory on the system. + /// Gets the set of physical disks that exist on the system. /// - /// - /// Disk filter to - /// - /// - public override Task> GetDiskPathsAsync(string diskFilter, CancellationToken cancellationToken) + /// A token that can be used to cancel the operation. + /// The filter to apply to the disks. + public override async Task> GetDisksAsync(string diskFilter, CancellationToken cancellationToken) { - List diskPaths = new List(); + IEnumerable disks = await this.GetDisksAsync(cancellationToken) + .ConfigureAwait(false); - return this.Logger.LogMessageAsync($"{nameof(UnixDiskManager)}.GetDiskPaths", EventContext.Persisted(), async () => - { - IEnumerable disks = await this.GetDisksAsync(cancellationToken).ConfigureAwait(false); - IEnumerable disksToTest = DiskFilters.FilterDisks(disks, diskFilter, PlatformID.Unix).ToList(); + IEnumerable filteredDisks = DiskFilters.FilterDisks(disks, diskFilter, PlatformID.Unix).ToList(); - if (disksToTest?.Any() != true) - { - throw new WorkloadException( - "Expected disks to test not found. Given the parameters defined for the profile action/step or those passed " + - "in on the command line, the requisite disks do not exist on the system or could not be identified based on the properties " + - "of the existing disks.", - ErrorReason.DependencyNotFound); - } - - foreach (Disk disk in disksToTest) - { - string diskPath = $"{disk.GetPreferredAccessPath(PlatformID.Unix)}"; - - if (!string.IsNullOrEmpty(diskPath)) - { - diskPaths.Add(diskPath); - } - } - - return diskPaths.AsEnumerable(); - }); + return filteredDisks; } private Task AssignMountPointAsync(DiskVolume volume, string mountPoint, EventContext telemetryContext, CancellationToken cancellationToken) diff --git a/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs b/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs index 0fb412c000..76c9a6f3e4 100644 --- a/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs @@ -473,42 +473,18 @@ await process.WriteInput(command) } /// - /// Grabs the available data directory on the system. + /// Gets the set of physical disks that exist on the system. /// - /// - /// Disk filter to - /// - /// - public override Task> GetDiskPathsAsync(string diskFilter, CancellationToken cancellationToken) + /// Optional filter for disks. + /// A token that can be used to cancel the operation. + public override async Task> GetDisksAsync(string diskFilter, CancellationToken cancellationToken) { - List diskPaths = new List(); + IEnumerable disks = await this.GetDisksAsync(cancellationToken) + .ConfigureAwait(false); - return this.Logger.LogMessageAsync($"{nameof(WindowsDiskManager)}.GetDiskPaths", EventContext.Persisted(), async () => - { - IEnumerable disks = await this.GetDisksAsync(cancellationToken).ConfigureAwait(false); - IEnumerable disksToTest = DiskFilters.FilterDisks(disks, diskFilter, PlatformID.Win32NT).ToList(); + IEnumerable filteredDisks = DiskFilters.FilterDisks(disks, diskFilter, PlatformID.Win32NT).ToList(); - if (disksToTest?.Any() != true) - { - throw new WorkloadException( - "Expected disks to test not found. Given the parameters defined for the profile action/step or those passed " + - "in on the command line, the requisite disks do not exist on the system or could not be identified based on the properties " + - "of the existing disks.", - ErrorReason.DependencyNotFound); - } - - foreach (Disk disk in disksToTest) - { - string diskPath = $"{disk.GetPreferredAccessPath(PlatformID.Win32NT)}"; - - if (!string.IsNullOrEmpty(diskPath)) - { - diskPaths.Add(diskPath); - } - } - - return diskPaths.AsEnumerable(); - }); + return filteredDisks; } /// diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json index 88b7e3bc42..497fd8e4a0 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json @@ -490,6 +490,12 @@ "Scenario": "InitializeDisks" } }, + { + "Type": "MountDisks", + "Parameters": { + "Scenario": "CreateMountPoints" + } + }, { "Type": "LinuxPackageInstallation", "Parameters": { diff --git a/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs b/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs index 78647a2062..3af0b889fc 100644 --- a/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs +++ b/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs @@ -46,6 +46,11 @@ public InMemoryDiskManager() /// public Action OnGetDisks { get; set; } + /// + /// Mimics the behavior of getting disks with filter. + /// + public Action OnGetFilterDisks { get; set; } + /// /// Creates a mount point for the volume provided. /// @@ -124,13 +129,14 @@ public Task> GetDisksAsync(CancellationToken cancellationToken } /// - /// Grabs the available data directory on the system. + /// Gets the set of physical disks that exist on the system. /// - /// - /// Disk filter to - public Task> GetDiskPathsAsync(string diskFilter, CancellationToken cancellationToken) + /// Optional filter for disks." + /// A token that can be used to cancel the operation. + public Task> GetDisksAsync(string diskFilter, CancellationToken cancellationToken) { - throw new NotImplementedException(); + this.OnGetFilterDisks?.Invoke(diskFilter); + return Task.FromResult((IEnumerable)this); } private void AddVolumeToDisk(Disk disk, FileSystemType fileSystemType) From 21dd5cef18a02152ccfa079e2c6c5b3a29e0c570 Mon Sep 17 00:00:00 2001 From: Erica Vellanoweth Date: Wed, 19 Feb 2025 16:18:05 -0800 Subject: [PATCH 3/9] fixing files --- src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs index e26acadc73..f63972236e 100644 --- a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs +++ b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs @@ -323,7 +323,7 @@ protected override async Task ExecuteAsync(EventContext telemetryContext, Cancel this.WorkloadProcesses.Clear(); List fioProcessTasks = new List(); - this.WorkloadProcesses.AddRange(this.CreateWorkloadProcesses(this.ExecutablePath, this.CommandLine, disksToTest, this.ProcessModel)); + this.WorkloadProcesses.AddRange(this.CreateWorkloadProcesses(this.ExecutablePath, this.CommandLine, disks, this.ProcessModel)); using (BackgroundOperations profiling = BackgroundOperations.BeginProfiling(this, cancellationToken)) { From 181d0308ed76634b260a33439283b5335ed5a043 Mon Sep 17 00:00:00 2001 From: Erica Vellanoweth Date: Wed, 26 Feb 2025 12:01:48 -0800 Subject: [PATCH 4/9] removing mount points method --- .../VirtualClient.Actions/FIO/FioExecutor.cs | 42 ------------------- 1 file changed, 42 deletions(-) diff --git a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs index f63972236e..d740e74f25 100644 --- a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs +++ b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs @@ -366,48 +366,6 @@ await this.DeleteTestFilesAsync(workload.TestFiles) } } - /// - /// Creates mount points for any disks that do not have them already. - /// - /// This disks on which to create the mount points. - /// A token that can be used to cancel the operation. - protected async Task CreateMountPointsAsync(IEnumerable disks, CancellationToken cancellationToken) - { - bool mountPointsCreated = false; - - // Don't mount any partition in OS drive. - foreach (Disk disk in disks.Where(d => !d.IsOperatingSystem())) - { - // mount every volume that doesn't have an accessPath. - foreach (DiskVolume volume in disk.Volumes.Where(v => v.AccessPaths?.Any() != true)) - { - string newMountPoint = volume.GetDefaultMountPoint(); - this.Logger.LogTraceMessage($"Create Mount Point: {newMountPoint}"); - - EventContext relatedContext = EventContext.Persisted().Clone() - .AddContext(nameof(volume), volume) - .AddContext("mountPoint", newMountPoint); - - await this.Logger.LogMessageAsync($"{this.TypeName}.CreateMountPoint", relatedContext, async () => - { - string newMountPoint = volume.GetDefaultMountPoint(); - if (!this.SystemManagement.FileSystem.Directory.Exists(newMountPoint)) - { - this.SystemManagement.FileSystem.Directory.CreateDirectory(newMountPoint).Create(); - } - - await this.SystemManagement.DiskManager.CreateMountPointAsync(volume, newMountPoint, cancellationToken) - .ConfigureAwait(false); - - mountPointsCreated = true; - - }).ConfigureAwait(false); - } - } - - return mountPointsCreated; - } - /// /// Creates a process to run FIO targeting the disks specified. /// From 63831f49c03c2bba9787f814eaa016a87ea9a7b9 Mon Sep 17 00:00:00 2001 From: Erica Vellanoweth Date: Tue, 4 Mar 2025 11:47:16 -0800 Subject: [PATCH 5/9] creating an extensions method --- .../FIO/FioExecutorTests.cs | 2 +- .../VirtualClient.Actions/FIO/FioExecutor.cs | 2 +- .../UnixDiskManagerTests.cs | 2 +- .../WindowsDiskManagerTests.cs | 2 +- .../VirtualClient.Core/DiskManager.cs | 3 -- .../DiskManagerExtensions.cs | 42 +++++++++++++++++++ .../VirtualClient.Core/IDiskManager.cs | 7 ---- .../VirtualClient.Core/UnixDiskManager.cs | 15 ------- .../VirtualClient.Core/WindowsDiskManager.cs | 15 ------- 9 files changed, 46 insertions(+), 44 deletions(-) create mode 100644 src/VirtualClient/VirtualClient.Core/DiskManagerExtensions.cs diff --git a/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs b/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs index 1dd2c5be39..9874d45e35 100644 --- a/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs +++ b/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs @@ -56,7 +56,7 @@ public void SetupTest() this.disks = this.mockFixture.CreateDisks(PlatformID.Unix, true); - this.mockFixture.DiskManager.Setup(mgr => mgr.GetDisksAsync(It.IsAny(), It.IsAny())).ReturnsAsync(() => this.disks); + this.mockFixture.DiskManager.Setup(mgr => mgr.GetDisksAsync(It.IsAny())).ReturnsAsync(() => this.disks); this.mockFixture.PackageManager.OnGetPackage().ReturnsAsync(new DependencyPath("fio", this.mockFixture.GetPackagePath("fio"))); this.mockFixture.File.OnFileExists().Returns(true); this.mockFixture.File.Setup(file => file.ReadAllText(It.IsAny())).Returns(string.Empty); diff --git a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs index d740e74f25..efa64b58a8 100644 --- a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs +++ b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs @@ -305,7 +305,7 @@ protected override async Task ExecuteAsync(EventContext telemetryContext, Cancel this.DiskFilter = string.IsNullOrWhiteSpace(this.DiskFilter) ? DiskFilters.DefaultDiskFilter : this.DiskFilter; - IEnumerable disks = await this.SystemManagement.DiskManager.GetDisksAsync(this.DiskFilter, cancellationToken) + IEnumerable disks = await this.SystemManagement.DiskManager.GetFilteredDisksAsync(this.Platform, this.DiskFilter, cancellationToken) .ConfigureAwait(false); if (disks?.Any() != true) diff --git a/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs b/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs index 164f304aac..1ff5d84278 100644 --- a/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs +++ b/src/VirtualClient/VirtualClient.Core.UnitTests/UnixDiskManagerTests.cs @@ -357,7 +357,7 @@ public async Task UnixDiskManagerReturnsListofFilteredDisks() this.testProcess.StandardOutput.Append(Resources.lshw_disk_storage_results); - IEnumerable disks = await this.diskManager.GetDisksAsync("osdisk:false", CancellationToken.None) + IEnumerable disks = await this.diskManager.GetFilteredDisksAsync(PlatformID.Unix, "osdisk:false", CancellationToken.None) .ConfigureAwait(false); Assert.AreEqual(disks.Count(), 3); diff --git a/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs b/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs index 639a411c5f..578e0e8bff 100644 --- a/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs +++ b/src/VirtualClient/VirtualClient.Core.UnitTests/WindowsDiskManagerTests.cs @@ -1560,7 +1560,7 @@ public async Task WindowsDiskManagerReturnsListofFilteredDisks() } }; - IEnumerable disks = await this.diskManager.GetDisksAsync(DiskFilters.DefaultDiskFilter, CancellationToken.None) + IEnumerable disks = await this.diskManager.GetFilteredDisksAsync(PlatformID.Win32NT, DiskFilters.DefaultDiskFilter, CancellationToken.None) .ConfigureAwait(false); Assert.AreEqual(disks.Count(), 1); diff --git a/src/VirtualClient/VirtualClient.Core/DiskManager.cs b/src/VirtualClient/VirtualClient.Core/DiskManager.cs index d70a7a24eb..91fe6668b3 100644 --- a/src/VirtualClient/VirtualClient.Core/DiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/DiskManager.cs @@ -53,8 +53,5 @@ protected DiskManager(ILogger logger) /// public abstract Task> GetDisksAsync(CancellationToken cancellationToken); - - /// - public abstract Task> GetDisksAsync(string diskFilter, CancellationToken cancellationToken); } } diff --git a/src/VirtualClient/VirtualClient.Core/DiskManagerExtensions.cs b/src/VirtualClient/VirtualClient.Core/DiskManagerExtensions.cs new file mode 100644 index 0000000000..1971783f3f --- /dev/null +++ b/src/VirtualClient/VirtualClient.Core/DiskManagerExtensions.cs @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +namespace VirtualClient +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.IO; + using System.IO.Abstractions; + using System.Linq; + using System.Text.RegularExpressions; + using System.Threading; + using System.Threading.Tasks; + using Polly; + using VirtualClient.Common.Extensions; + using VirtualClient.Contracts; + + /// + /// Methods for extending the functionality of the + /// disk manager class, and related classes. + /// + public static class DiskManagerExtensions + { + /// + /// Gets a filtered set of physical disks that exist on the system. + /// + /// + /// + /// A token that can be used to cancel the operation. + /// The filter to apply to the disks. + public static async Task> GetFilteredDisksAsync(this IDiskManager diskManager, PlatformID platform, string diskFilter, CancellationToken cancellationToken) + { + IEnumerable disks = await diskManager.GetDisksAsync(cancellationToken) + .ConfigureAwait(false); + + IEnumerable filteredDisks = DiskFilters.FilterDisks(disks, diskFilter, platform).ToList(); + + return filteredDisks; + } + } +} diff --git a/src/VirtualClient/VirtualClient.Core/IDiskManager.cs b/src/VirtualClient/VirtualClient.Core/IDiskManager.cs index 0a7baaebe8..12aaa07050 100644 --- a/src/VirtualClient/VirtualClient.Core/IDiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/IDiskManager.cs @@ -38,12 +38,5 @@ public interface IDiskManager /// /// A token that can be used to cancel the operation. Task> GetDisksAsync(CancellationToken cancellationToken); - - /// - /// Gets the set of physical disks that exist on the system. - /// - /// Optional filter for disks. - /// A token that can be used to cancel the operation. - Task> GetDisksAsync(string diskFilter, CancellationToken cancellationToken); } } diff --git a/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs b/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs index 2fbe38c08a..4affbfc7d6 100644 --- a/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/UnixDiskManager.cs @@ -169,21 +169,6 @@ public override Task> GetDisksAsync(CancellationToken cancella }); } - /// - /// Gets the set of physical disks that exist on the system. - /// - /// A token that can be used to cancel the operation. - /// The filter to apply to the disks. - public override async Task> GetDisksAsync(string diskFilter, CancellationToken cancellationToken) - { - IEnumerable disks = await this.GetDisksAsync(cancellationToken) - .ConfigureAwait(false); - - IEnumerable filteredDisks = DiskFilters.FilterDisks(disks, diskFilter, PlatformID.Unix).ToList(); - - return filteredDisks; - } - private Task AssignMountPointAsync(DiskVolume volume, string mountPoint, EventContext telemetryContext, CancellationToken cancellationToken) { int retries = -1; diff --git a/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs b/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs index 76c9a6f3e4..9812ba8439 100644 --- a/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs +++ b/src/VirtualClient/VirtualClient.Core/WindowsDiskManager.cs @@ -472,21 +472,6 @@ await process.WriteInput(command) return disks; } - /// - /// Gets the set of physical disks that exist on the system. - /// - /// Optional filter for disks. - /// A token that can be used to cancel the operation. - public override async Task> GetDisksAsync(string diskFilter, CancellationToken cancellationToken) - { - IEnumerable disks = await this.GetDisksAsync(cancellationToken) - .ConfigureAwait(false); - - IEnumerable filteredDisks = DiskFilters.FilterDisks(disks, diskFilter, PlatformID.Win32NT).ToList(); - - return filteredDisks; - } - /// /// Returns as set of lines that are all the exact same width. /// From b68ded9363bad4ae267e23b2d963f867292b3e5f Mon Sep 17 00:00:00 2001 From: Erica Vellanoweth Date: Tue, 4 Mar 2025 11:51:56 -0800 Subject: [PATCH 6/9] fixing conflict --- .../VirtualClient.Main/profiles/PERF-IO-FIO.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json index f3d0981287..b5ab753058 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json @@ -500,6 +500,12 @@ "Scenario": "InitializeDisks" } }, + { + "Type": "MountDisks", + "Parameters": { + "Scenario": "CreateMountPoints" + } + }, { "Type": "DependencyPackageInstallation", "Parameters": { From bdff1d73afff489725da956dc6f6412a8bf7c1c0 Mon Sep 17 00:00:00 2001 From: Erica Vellanoweth Date: Tue, 4 Mar 2025 12:14:52 -0800 Subject: [PATCH 7/9] removing mt pnt test --- .../FIO/FioExecutorTests.cs | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs b/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs index a12f7797fb..b0e49b7119 100644 --- a/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs +++ b/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioExecutorTests.cs @@ -216,39 +216,6 @@ public void FioExecutorAppliesConfigurationParametersCorrectly_DiskFillScenario( } } - [Test] - public async Task FioExecutorCreatesExpectedMountPointsForDisksUnderTest_RemoteDiskScenario() - { - // Clear any access points out. - this.disks.ToList().ForEach(disk => disk.Volumes.ToList().ForEach(vol => (vol.AccessPaths as List).Clear())); - - List> mountPointsCreated = new List>(); - - this.DiskManager - .Setup(mgr => mgr.CreateMountPointAsync(It.IsAny(), It.IsAny(), It.IsAny())) - .Callback((volume, mountPoint, token) => - { - (volume.AccessPaths as List).Add(mountPoint); - }) - .Returns(Task.CompletedTask); - - using (TestFioExecutor workloadExecutor = new TestFioExecutor(this.Dependencies, this.profileParameters)) - { - await workloadExecutor.ExecuteAsync(CancellationToken.None); - - Assert.IsTrue(this.disks.Skip(1).All(d => d.Volumes.First().AccessPaths?.Any() == true)); - - string expectedMountPoint1 = Path.Combine(MockFixture.TestAssemblyDirectory, "vcmnt_dev_sdd1"); - Assert.AreEqual(expectedMountPoint1, this.disks.ElementAt(1).Volumes.First().AccessPaths.First()); - - string expectedMountPoint2 = Path.Combine(MockFixture.TestAssemblyDirectory, "vcmnt_dev_sde1"); - Assert.AreEqual(expectedMountPoint2, this.disks.ElementAt(2).Volumes.First().AccessPaths.First()); - - string expectedMountPoint3 = Path.Combine(MockFixture.TestAssemblyDirectory, "vcmnt_dev_sdf1"); - Assert.AreEqual(expectedMountPoint3, this.disks.ElementAt(3).Volumes.First().AccessPaths.First()); - } - } - [Test] public void FioExecutorCreatesTheExpectedWorkloadProcess_Scenario1() { From 40ec834e56db7d32d019c8c3ea0a0e4528197fc4 Mon Sep 17 00:00:00 2001 From: Erica Vellanoweth Date: Tue, 4 Mar 2025 12:53:06 -0800 Subject: [PATCH 8/9] removing changes from in memory disk manager --- .../InMemoryDiskManager.cs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs b/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs index 3af0b889fc..ac4c7c6c3c 100644 --- a/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs +++ b/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs @@ -128,17 +128,6 @@ public Task> GetDisksAsync(CancellationToken cancellationToken return Task.FromResult((IEnumerable)this); } - /// - /// Gets the set of physical disks that exist on the system. - /// - /// Optional filter for disks." - /// A token that can be used to cancel the operation. - public Task> GetDisksAsync(string diskFilter, CancellationToken cancellationToken) - { - this.OnGetFilterDisks?.Invoke(diskFilter); - return Task.FromResult((IEnumerable)this); - } - private void AddVolumeToDisk(Disk disk, FileSystemType fileSystemType) { DiskVolume newVolume = null; From ed862cbad186bf159ccf094fe34ffca44c910b42 Mon Sep 17 00:00:00 2001 From: Erica Vellanoweth Date: Tue, 4 Mar 2025 12:54:26 -0800 Subject: [PATCH 9/9] removing in memory disk manager changes --- .../VirtualClient.TestFramework/InMemoryDiskManager.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs b/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs index ac4c7c6c3c..e6264ff501 100644 --- a/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs +++ b/src/VirtualClient/VirtualClient.TestFramework/InMemoryDiskManager.cs @@ -46,11 +46,6 @@ public InMemoryDiskManager() /// public Action OnGetDisks { get; set; } - /// - /// Mimics the behavior of getting disks with filter. - /// - public Action OnGetFilterDisks { get; set; } - /// /// Creates a mount point for the volume provided. ///