Skip to content

Commit 0250917

Browse files
Optimize CopyFilesRecursively for Linux
1 parent ae2038e commit 0250917

File tree

2 files changed

+16
-32
lines changed

2 files changed

+16
-32
lines changed

src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Configurations/ReliabilityFrameworkTest.CreateTestSuite.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ public static void CreateTestingAssets(string ReliabilityFrameworkDll,
1313
{
1414
Console.WriteLine($"====== Copy ReliabilityFramework.dll and Tests to `outputFolder` ======");
1515
Utilities.CopyFile(ReliabilityFrameworkDll, outputFolder);
16-
Utilities.CopyFolderRecursively(TestFolder, outputFolder);
16+
DirectoryInfo testDir = Directory.CreateDirectory(Path.Combine(outputFolder, "Tests"));
17+
string testfolderPath = testDir.FullName;
18+
Utilities.CopyFilesRecursively(TestFolder, testfolderPath);
1719

1820
Console.WriteLine($"====== Copy gcperfsim.dll to Tests ======");
1921
string destTestsFolder = Path.Combine(outputFolder, "Tests");

src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/Utilities.cs

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,24 @@ public static class Utilities
44
{
55
public static void CopyFilesRecursively(string sourcePath, string targetPath)
66
{
7-
string targetPathAsDirectory = targetPath + "\\";
7+
sourcePath = Path.GetFullPath(sourcePath).TrimEnd(Path.DirectorySeparatorChar);
8+
targetPath = Path.GetFullPath(targetPath).TrimEnd(Path.DirectorySeparatorChar);
9+
10+
Directory.CreateDirectory(targetPath);
11+
812
foreach (string dirPath in Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories))
913
{
10-
Directory.CreateDirectory(dirPath.Replace(sourcePath, targetPathAsDirectory));
14+
string relativePath = Path.GetRelativePath(sourcePath, dirPath);
15+
string newDirPath = Path.Combine(targetPath, relativePath);
16+
Directory.CreateDirectory(newDirPath);
1117
}
1218

13-
foreach (string newPath in Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories))
19+
foreach (string filePath in Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories))
1420
{
15-
File.Copy(newPath, newPath.Replace(sourcePath, targetPathAsDirectory), true);
21+
string relativePath = Path.GetRelativePath(sourcePath, filePath);
22+
string newFilePath = Path.Combine(targetPath, relativePath);
23+
Directory.CreateDirectory(Path.GetDirectoryName(newFilePath));
24+
File.Copy(filePath, newFilePath, true);
1625
}
1726
}
1827

@@ -50,33 +59,6 @@ public static bool TryCopyFile(string sourcePath, string destinationPath)
5059
}
5160
}
5261

53-
public static void CopyFolderRecursively(string sourcePath, string destinationPath)
54-
{
55-
string realDestinationPath = String.Empty;
56-
// If destinationPath is a folder
57-
if (Directory.Exists(destinationPath))
58-
{
59-
string folderName = Path.GetFileName(sourcePath);
60-
realDestinationPath = Path.Combine(destinationPath, folderName);
61-
}
62-
else
63-
{
64-
realDestinationPath = destinationPath;
65-
}
66-
Directory.CreateDirectory(realDestinationPath);
67-
68-
foreach (string srcSubDir in Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories))
69-
{
70-
string dstSubDir = srcSubDir.Replace(sourcePath, realDestinationPath);
71-
Directory.CreateDirectory(dstSubDir);
72-
}
73-
74-
foreach (string srcFile in Directory.GetFiles(sourcePath, "*", SearchOption.AllDirectories))
75-
{
76-
string dstFile = srcFile.Replace(sourcePath, realDestinationPath);
77-
File.Copy(srcFile, dstFile, true);
78-
}
79-
}
8062
public static void CopyFile(string srcPath, string dstPath)
8163
{
8264
string realDestPath = String.Empty;

0 commit comments

Comments
 (0)