@@ -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