Skip to content

Commit 694cde9

Browse files
authored
Improve runtime for DuplicatePushesAreRejectedAndNotDeleted (#6861)
1 parent 248ac35 commit 694cde9

3 files changed

Lines changed: 53 additions & 45 deletions

File tree

tests/NuGetGallery.FunctionalTests/Commandline/NuGetCommandLineTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ public static IEnumerable<object[]> UploadAndUnlistPackages_Data
6161
[Theory]
6262
[MemberData(nameof(UploadAndUnlistPackages_Data))]
6363
[Description("Tests upload and unlist scenarios with API key")]
64-
[Priority(0)]
65-
[Category("P0Tests")]
64+
[Priority(2)]
65+
[Category("P2Tests")]
6666
public async Task UploadAndUnlistPackages(string apiKey)
6767
{
6868
// Can push new package ID

tests/NuGetGallery.FunctionalTests/ODataFeeds/V2FeedExtendedTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public V2FeedExtendedTests(ITestOutputHelper testOutputHelper)
3636
[Fact]
3737
[Description("Upload two packages and then issue the FindPackagesById request, expect to return both versions")]
3838
[Priority(1)]
39-
[Category("P0Tests")]
39+
[Category("P1Tests")]
4040
public async Task FindPackagesByIdTest()
4141
{
4242
var packageInfo = await _clientSdkHelper.UploadPackageVersion();

tests/NuGetGallery.FunctionalTests/PackageCreation/ApiPushTests.cs

Lines changed: 50 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -33,64 +33,72 @@ public ApiPushTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper)
3333
public async Task DuplicatePushesAreRejectedAndNotDeleted()
3434
{
3535
// Arrange
36+
var packageId = $"{nameof(DuplicatePushesAreRejectedAndNotDeleted)}.{DateTime.UtcNow.Ticks}";
37+
38+
int pushVersionCount = 10;
39+
var duplicatePushTasks = new List<Task>();
40+
for (var duplicateTaskIndex = 0; duplicateTaskIndex < pushVersionCount; duplicateTaskIndex++)
41+
{
42+
duplicatePushTasks.Add(PushDuplicates(packageId, $"1.0.{duplicateTaskIndex}", duplicateTaskIndex == 0));
43+
}
44+
45+
await Task.WhenAll(duplicatePushTasks);
46+
}
47+
48+
private async Task PushDuplicates(string packageId, string packageVersion, bool isFirstTask)
49+
{
3650
using (var client = new HttpClient())
3751
{
3852
var packageCreationHelper = new PackageCreationHelper(TestOutputHelper);
39-
var packageId = $"{nameof(DuplicatePushesAreRejectedAndNotDeleted)}.{DateTime.UtcNow.Ticks}";
40-
41-
for (var i = 0; i < 10; i++)
53+
if (!isFirstTask)
4254
{
43-
if (i > 0)
44-
{
45-
TestOutputHelper.WriteLine(string.Empty);
46-
TestOutputHelper.WriteLine(new string('=', 80));
47-
TestOutputHelper.WriteLine(string.Empty);
48-
}
55+
TestOutputHelper.WriteLine(string.Empty);
56+
TestOutputHelper.WriteLine(new string('=', 80));
57+
TestOutputHelper.WriteLine(string.Empty);
58+
}
4959

50-
var packageVersion = $"1.0.{i}";
51-
TestOutputHelper.WriteLine($"Starting package {packageId} {packageVersion}...");
60+
TestOutputHelper.WriteLine($"Starting package {packageId} {packageVersion}...");
5261

53-
var packagePath = await packageCreationHelper.CreatePackage(packageId, packageVersion);
62+
var packagePath = await packageCreationHelper.CreatePackage(packageId, packageVersion);
5463

55-
var tasks = new List<Task<HttpStatusCode>>();
56-
var barrier = new Barrier(TaskCount);
64+
var tasks = new List<Task<HttpStatusCode>>();
65+
var barrier = new Barrier(TaskCount);
5766

58-
// Act
59-
for (var taskIndex = 0; taskIndex < TaskCount; taskIndex++)
60-
{
61-
tasks.Add(PushAsync(client, packagePath, barrier));
62-
}
67+
// Act
68+
for (var taskIndex = 0; taskIndex < TaskCount; taskIndex++)
69+
{
70+
tasks.Add(PushAsync(client, packagePath, barrier));
71+
}
6372

64-
var statusCodes = await Task.WhenAll(tasks);
73+
var statusCodes = await Task.WhenAll(tasks);
6574

66-
// Assert
67-
for (var taskIndex = 1; taskIndex <= statusCodes.Length; taskIndex++)
68-
{
69-
TestOutputHelper.WriteLine($"Task {taskIndex:D2} push: HTTP {(int)statusCodes[taskIndex - 1]}");
70-
}
75+
// Assert
76+
for (var taskIndex = 1; taskIndex <= statusCodes.Length; taskIndex++)
77+
{
78+
TestOutputHelper.WriteLine($"{packageId}/{packageVersion} Task {taskIndex:D2} push: HTTP {(int)statusCodes[taskIndex - 1]}");
79+
}
7180

72-
// Wait for the packages to be available in V2 (due to async validation)
73-
await _clientSdkHelper.VerifyPackageExistsInV2Async(packageId, packageVersion);
81+
//Wait for the packages to be available in V2(due to async validation)
82+
await _clientSdkHelper.VerifyPackageExistsInV2Async(packageId, packageVersion);
7483

75-
var downloadUrl = $"{UrlHelper.V2FeedRootUrl}package/{packageId}/{packageVersion}";
76-
using (var response = await client.GetAsync(downloadUrl))
77-
{
78-
TestOutputHelper.WriteLine($"Package download: HTTP {(int)response.StatusCode}");
84+
var downloadUrl = $"{UrlHelper.V2FeedRootUrl}package/{packageId}/{packageVersion}";
85+
using (var response = await client.GetAsync(downloadUrl))
86+
{
87+
TestOutputHelper.WriteLine($"Package {packageId}/{packageVersion} download: HTTP {(int)response.StatusCode}");
7988

80-
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
89+
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
8190

82-
var actualPackageBytes = await response.Content.ReadAsByteArrayAsync();
83-
using (var stream = new MemoryStream(actualPackageBytes))
84-
using (var packageReader = new PackageArchiveReader(stream))
85-
{
86-
Assert.Equal(packageId, packageReader.NuspecReader.GetId());
87-
Assert.Equal(packageVersion, packageReader.NuspecReader.GetVersion().ToNormalizedString());
88-
}
91+
var actualPackageBytes = await response.Content.ReadAsByteArrayAsync();
92+
using (var stream = new MemoryStream(actualPackageBytes))
93+
using (var packageReader = new PackageArchiveReader(stream))
94+
{
95+
Assert.Equal(packageId, packageReader.NuspecReader.GetId());
96+
Assert.Equal(packageVersion, packageReader.NuspecReader.GetVersion().ToNormalizedString());
8997
}
90-
91-
Assert.Equal(1, statusCodes.Count(x => x == HttpStatusCode.Created));
92-
Assert.Equal(TaskCount - 1, statusCodes.Count(x => x == HttpStatusCode.Conflict));
9398
}
99+
100+
Assert.Equal(1, statusCodes.Count(x => x == HttpStatusCode.Created));
101+
Assert.Equal(TaskCount - 1, statusCodes.Count(x => x == HttpStatusCode.Conflict));
94102
}
95103
}
96104

0 commit comments

Comments
 (0)