3
3
using System . Collections . Generic ;
4
4
using System . Threading . Tasks ;
5
5
6
- namespace Hotsapi . Uploader . Common . Test
6
+ namespace Heroesprofile . Uploader . Common . Test
7
7
{
8
8
[ TestClass ]
9
9
public partial class ManagerTests
10
- {
11
- private Task ShortRandomDelay ( )
12
- {
13
- var r = new Random ( ) ;
14
- var delay = r . Next ( 100 , 200 ) ;
15
- return Task . Delay ( delay ) ;
16
- }
17
- private static IEnumerable < ReplayFile > ThreeInOrder
18
- {
19
- get {
20
- var one = new ReplayFile ( "one" ) {
21
- Created = new DateTime ( 2020 , 1 , 1 , 0 , 0 , 1 )
22
- } ;
23
- var two = new ReplayFile ( "two" ) {
24
- Created = new DateTime ( 2020 , 1 , 1 , 0 , 0 , 10 )
25
- } ;
26
- var three = new ReplayFile ( "three" ) {
27
- Created = new DateTime ( 2020 , 1 , 1 , 0 , 0 , 20 )
28
- } ;
29
- var initialFiles = new List < ReplayFile > ( ) { one , two , three } ;
30
- return initialFiles ;
31
- }
10
+ {
11
+ private Task ShortRandomDelay ( )
12
+ {
13
+ var r = new Random ( ) ;
14
+ var delay = r . Next ( 100 , 200 ) ;
15
+ return Task . Delay ( delay ) ;
16
+ }
17
+ private static IEnumerable < ReplayFile > ThreeInOrder
18
+ {
19
+ get {
20
+ var one = new ReplayFile ( "one" ) {
21
+ Created = new DateTime ( 2020 , 1 , 1 , 0 , 0 , 1 )
22
+ } ;
23
+ var two = new ReplayFile ( "two" ) {
24
+ Created = new DateTime ( 2020 , 1 , 1 , 0 , 0 , 10 )
25
+ } ;
26
+ var three = new ReplayFile ( "three" ) {
27
+ Created = new DateTime ( 2020 , 1 , 1 , 0 , 0 , 20 )
28
+ } ;
29
+ var initialFiles = new List < ReplayFile > ( ) { one , two , three } ;
30
+ return initialFiles ;
31
+ }
32
32
}
33
33
34
34
[ TestMethod ]
35
35
[ Ignore ( "Known intermittant failure: multiple uploads are started in parallel and don't always start in order" ) ]
36
- public async Task InitialFilesStartInOrder ( )
37
- {
38
- var initialFiles = ThreeInOrder ;
39
-
36
+ public async Task InitialFilesStartInOrder ( )
37
+ {
38
+ var initialFiles = ThreeInOrder ;
39
+
40
40
var manager = new Manager ( new MockStorage ( initialFiles ) ) ;
41
- var uploadTester = new MockUploader ( ) ;
42
-
43
- var promise = new TaskCompletionSource < int > ( ) ;
44
- Task done = promise . Task ;
45
-
46
- var uploadsSeen = 0 ;
47
- var l = new object ( ) ;
48
- ReplayFile lastUploadStarted = null ;
49
- uploadTester . SetUploadCallback ( async rf => {
50
- if ( lastUploadStarted != null ) {
51
- try {
52
- Assert . IsTrue ( rf . Created >= lastUploadStarted . Created , $ "upload started out of order, { lastUploadStarted } started after { rf } ") ;
53
- } catch ( Exception e ) {
54
- promise . TrySetException ( e ) ;
55
- }
56
- }
57
- lastUploadStarted = rf ;
58
- await ShortRandomDelay ( ) ;
59
- var isDone = false ;
60
- lock ( l ) {
61
- uploadsSeen ++ ;
62
- isDone = uploadsSeen >= 3 ;
63
- }
64
- if ( isDone ) {
65
- promise . TrySetResult ( uploadsSeen ) ;
66
- }
41
+ var uploadTester = new MockUploader ( ) ;
42
+
43
+ var promise = new TaskCompletionSource < int > ( ) ;
44
+ Task done = promise . Task ;
45
+
46
+ var uploadsSeen = 0 ;
47
+ var l = new object ( ) ;
48
+ ReplayFile lastUploadStarted = null ;
49
+ uploadTester . SetUploadCallback ( async rf => {
50
+ if ( lastUploadStarted != null ) {
51
+ try {
52
+ Assert . IsTrue ( rf . Created >= lastUploadStarted . Created , $ "upload started out of order, { lastUploadStarted } started after { rf } ") ;
53
+ } catch ( Exception e ) {
54
+ promise . TrySetException ( e ) ;
55
+ }
56
+ }
57
+ lastUploadStarted = rf ;
58
+ await ShortRandomDelay ( ) ;
59
+ var isDone = false ;
60
+ lock ( l ) {
61
+ uploadsSeen ++ ;
62
+ isDone = uploadsSeen >= 3 ;
63
+ }
64
+ if ( isDone ) {
65
+ promise . TrySetResult ( uploadsSeen ) ;
66
+ }
67
67
} ) ;
68
68
69
69
manager . Start ( new NoNewFilesMonitor ( ) , new MockAnalizer ( ) , uploadTester ) ;
70
70
await done ;
71
- }
72
-
73
-
74
-
71
+ }
72
+
73
+
74
+
75
75
[ TestMethod ]
76
76
[ Ignore ( "Known intermittant failure: multiple uploads are started in parallel and don't always end in order" ) ]
77
- public async Task InitialFilesEndInorder ( ) {
78
- var initialFiles = ThreeInOrder ;
79
-
77
+ public async Task InitialFilesEndInorder ( ) {
78
+ var initialFiles = ThreeInOrder ;
79
+
80
80
var manager = new Manager ( new MockStorage ( initialFiles ) ) ;
81
- var uploadTester = new MockUploader ( ) ;
82
- var promise = new TaskCompletionSource < int > ( ) ;
83
- Task done = promise . Task ;
84
-
85
- var uploadsSeen = 0 ;
86
- var l = new object ( ) ;
87
- ReplayFile lastUploadFinished = null ;
88
- uploadTester . SetUploadCallback ( async rf => {
89
- await ShortRandomDelay ( ) ;
90
- if ( lastUploadFinished != null ) {
91
- try {
92
- Assert . IsTrue ( rf . Created >= lastUploadFinished . Created , $ "upload completed out of order, { lastUploadFinished } completed after { rf } ") ;
93
- }
94
- catch ( Exception e ) {
95
- promise . TrySetException ( e ) ;
96
- }
97
- }
98
- lastUploadFinished = rf ;
99
- var isDone = false ;
100
- lock ( l ) {
101
- uploadsSeen ++ ;
102
- isDone = uploadsSeen >= 3 ;
103
- }
104
- if ( isDone ) {
105
- promise . TrySetResult ( uploadsSeen ) ;
106
- }
81
+ var uploadTester = new MockUploader ( ) ;
82
+ var promise = new TaskCompletionSource < int > ( ) ;
83
+ Task done = promise . Task ;
84
+
85
+ var uploadsSeen = 0 ;
86
+ var l = new object ( ) ;
87
+ ReplayFile lastUploadFinished = null ;
88
+ uploadTester . SetUploadCallback ( async rf => {
89
+ await ShortRandomDelay ( ) ;
90
+ if ( lastUploadFinished != null ) {
91
+ try {
92
+ Assert . IsTrue ( rf . Created >= lastUploadFinished . Created , $ "upload completed out of order, { lastUploadFinished } completed after { rf } ") ;
93
+ }
94
+ catch ( Exception e ) {
95
+ promise . TrySetException ( e ) ;
96
+ }
97
+ }
98
+ lastUploadFinished = rf ;
99
+ var isDone = false ;
100
+ lock ( l ) {
101
+ uploadsSeen ++ ;
102
+ isDone = uploadsSeen >= 3 ;
103
+ }
104
+ if ( isDone ) {
105
+ promise . TrySetResult ( uploadsSeen ) ;
106
+ }
107
107
} ) ;
108
108
109
109
manager . Start ( new NoNewFilesMonitor ( ) , new MockAnalizer ( ) , uploadTester ) ;
@@ -112,23 +112,23 @@ public async Task InitialFilesEndInorder() {
112
112
113
113
[ TestMethod ]
114
114
public async Task AllInitialFilesProcessed ( )
115
- {
116
- var initialFiles = ThreeInOrder ;
117
-
115
+ {
116
+ var initialFiles = ThreeInOrder ;
117
+
118
118
var manager = new Manager ( new MockStorage ( initialFiles ) ) ;
119
- var uploadTester = new MockUploader ( ) ;
120
- var done = new TaskCompletionSource < int > ( ) ;
121
-
122
- var uploadsSeen = 0 ;
123
- object l = new object ( ) ;
124
- uploadTester . SetUploadCallback ( async rf => {
125
- await ShortRandomDelay ( ) ;
126
- lock ( l ) {
127
- uploadsSeen ++ ;
128
- if ( uploadsSeen >= 3 ) {
129
- done . SetResult ( uploadsSeen ) ;
130
- }
131
- }
119
+ var uploadTester = new MockUploader ( ) ;
120
+ var done = new TaskCompletionSource < int > ( ) ;
121
+
122
+ var uploadsSeen = 0 ;
123
+ object l = new object ( ) ;
124
+ uploadTester . SetUploadCallback ( async rf => {
125
+ await ShortRandomDelay ( ) ;
126
+ lock ( l ) {
127
+ uploadsSeen ++ ;
128
+ if ( uploadsSeen >= 3 ) {
129
+ done . SetResult ( uploadsSeen ) ;
130
+ }
131
+ }
132
132
} ) ;
133
133
134
134
manager . Start ( new NoNewFilesMonitor ( ) , new MockAnalizer ( ) , uploadTester ) ;
0 commit comments