14
14
* limitations under the License.
15
15
*/
16
16
17
+ using Microsoft . AspNetCore . Mvc . Testing ;
17
18
using Microsoft . Extensions . Configuration ;
18
- using Microsoft . Extensions . Hosting ;
19
19
using Monai . Deploy . WorkflowManager . TaskManager . IntegrationTests . POCO ;
20
20
using Monai . Deploy . WorkflowManager . TaskManager . IntegrationTests . Support ;
21
21
using Polly ;
@@ -42,12 +42,13 @@ public Hooks(IObjectContainer objectContainer)
42
42
private static RabbitPublisher ? TaskCallbackPublisher { get ; set ; }
43
43
private static RabbitConsumer ? TaskUpdateConsumer { get ; set ; }
44
44
public static RabbitConsumer ? ClinicalReviewConsumer { get ; private set ; }
45
+ public static RabbitConsumer ? EmailConsumer { get ; private set ; }
45
46
private static MinioClientUtil ? MinioClient { get ; set ; }
46
47
private static MongoClientUtil ? MongoClient { get ; set ; }
47
48
public static AsyncRetryPolicy RetryPolicy { get ; private set ; }
48
49
private IObjectContainer ObjectContainer { get ; set ; }
49
- private static IHost ? Host { get ; set ; }
50
50
private static HttpClient ? HttpClient { get ; set ; }
51
+ private static WebApplicationFactory < Program > ? WebApplicationFactory { get ; set ; }
51
52
52
53
/// <summary>
53
54
/// Runs before all tests to create static implementions of Rabbit and Mongo clients as well as starting the WorkflowManager using WebApplicationFactory.
@@ -70,6 +71,7 @@ public static void Init()
70
71
TestExecutionConfig . RabbitConfig . TaskCallbackQueue = "md.tasks.callback" ;
71
72
TestExecutionConfig . RabbitConfig . TaskUpdateQueue = "md.tasks.update" ;
72
73
TestExecutionConfig . RabbitConfig . ClinicalReviewQueue = "aide.clinical_review.request" ;
74
+ TestExecutionConfig . RabbitConfig . EmailQueue = "aide.notification_email.request" ;
73
75
TestExecutionConfig . RabbitConfig . TaskCancellationQueue = "md.tasks.cancellation" ;
74
76
75
77
TestExecutionConfig . MongoConfig . ConnectionString = config . GetValue < string > ( "WorkloadManagerDatabase:ConnectionString" ) ;
@@ -87,11 +89,12 @@ public static void Init()
87
89
88
90
RabbitConnectionFactory . DeleteAllQueues ( ) ;
89
91
92
+ WebApplicationFactory = WebAppFactory . GetWebApplicationFactory ( ) ;
93
+ HttpClient = WebApplicationFactory ? . CreateClient ( ) ;
94
+
90
95
RetryPolicy = Policy . Handle < Exception > ( ) . WaitAndRetryAsync ( retryCount : 20 , sleepDurationProvider : _ => TimeSpan . FromMilliseconds ( 500 ) ) ;
91
96
MongoClient = new MongoClientUtil ( ) ;
92
- HttpClient = new HttpClient ( ) ;
93
97
MinioClient = new MinioClientUtil ( ) ;
94
- Host = TaskManagerStartup . StartTaskManager ( ) ;
95
98
96
99
RabbitConnectionFactory . SetRabbitConnection ( ) ;
97
100
}
@@ -116,7 +119,7 @@ public static async Task CheckTaskManagerConsumersStarted()
116
119
{
117
120
await RetryPolicy . ExecuteAsync ( async ( ) =>
118
121
{
119
- var response = await TaskManagerStartup . GetQueueStatus ( HttpClient , TestExecutionConfig . RabbitConfig . VirtualHost , TestExecutionConfig . RabbitConfig . TaskDispatchQueue ) ;
122
+ var response = await WebAppFactory . GetQueueStatus ( HttpClient , TestExecutionConfig . RabbitConfig . VirtualHost , TestExecutionConfig . RabbitConfig . TaskDispatchQueue ) ;
120
123
var content = response . Content . ReadAsStringAsync ( ) . Result ;
121
124
122
125
if ( content . Contains ( "error" ) )
@@ -133,6 +136,13 @@ await RetryPolicy.ExecuteAsync(async () =>
133
136
TaskCallbackPublisher = new RabbitPublisher ( TestExecutionConfig . RabbitConfig . Exchange , TestExecutionConfig . RabbitConfig . TaskCallbackQueue ) ;
134
137
TaskUpdateConsumer = new RabbitConsumer ( TestExecutionConfig . RabbitConfig . Exchange , TestExecutionConfig . RabbitConfig . TaskUpdateQueue ) ;
135
138
ClinicalReviewConsumer = new RabbitConsumer ( TestExecutionConfig . RabbitConfig . Exchange , TestExecutionConfig . RabbitConfig . ClinicalReviewQueue ) ;
139
+ EmailConsumer = new RabbitConsumer ( TestExecutionConfig . RabbitConfig . Exchange , TestExecutionConfig . RabbitConfig . EmailQueue ) ;
140
+ }
141
+
142
+ [ BeforeTestRun ( Order = 3 ) ]
143
+ public static async Task CreateBucket ( )
144
+ {
145
+ await MinioClient . CreateBucket ( TestExecutionConfig . MinioConfig . Bucket ) ;
136
146
}
137
147
138
148
/// <summary>
@@ -145,6 +155,7 @@ public void SetUp(ScenarioContext scenarioContext, ISpecFlowOutputHelper outputH
145
155
ObjectContainer . RegisterInstanceAs ( TaskCallbackPublisher , "TaskCallbackPublisher" ) ;
146
156
ObjectContainer . RegisterInstanceAs ( TaskUpdateConsumer , "TaskUpdateConsumer" ) ;
147
157
ObjectContainer . RegisterInstanceAs ( ClinicalReviewConsumer , "ClinicalReviewConsumer" ) ;
158
+ ObjectContainer . RegisterInstanceAs ( EmailConsumer , "EmailConsumer" ) ;
148
159
ObjectContainer . RegisterInstanceAs ( MinioClient ) ;
149
160
var dataHelper = new DataHelper ( ObjectContainer ) ;
150
161
ObjectContainer . RegisterInstanceAs ( dataHelper ) ;
@@ -162,7 +173,7 @@ public void SetUp(ScenarioContext scenarioContext, ISpecFlowOutputHelper outputH
162
173
public static void TearDownRabbit ( )
163
174
{
164
175
RabbitConnectionFactory . DeleteAllQueues ( ) ;
165
- Host ? . StopAsync ( ) ;
176
+ WebApplicationFactory ? . Dispose ( ) ;
166
177
}
167
178
}
168
179
}
0 commit comments