@@ -172,7 +172,54 @@ public void ReadWorkerProviderFromConfig_InvalidWorker()
172
172
Assert . Empty ( providers ) ;
173
173
}
174
174
175
- private IEnumerable < IWorkerProvider > TestReadWorkerProviderFromConfig ( IEnumerable < TestLanguageWorkerConfig > configs , ILogger testLogger , string language = null , Dictionary < string , string > keyValuePairs = null )
175
+ [ Fact ]
176
+ public void ReadWorkerProviderFromConfig_AddAppSvcProfile_ReturnsAppServiceEnvDescription ( )
177
+ {
178
+ var expectedArguments = new string [ ] { "-v" , "verbose" } ;
179
+ var configs = new List < TestLanguageWorkerConfig > ( ) { MakeTestConfig ( testLanguage , expectedArguments , false , LanguageWorkerConstants . WorkerDescriptionAppServiceEnvProfileName ) } ;
180
+ var testLogger = new TestLogger ( testLanguage ) ;
181
+
182
+ // Creates temp directory w/ worker.config.json and runs ReadWorkerProviderFromConfig
183
+ IEnumerable < IWorkerProvider > providers = TestReadWorkerProviderFromConfig ( configs , testLogger , null , null , true ) ;
184
+ Assert . Single ( providers ) ;
185
+
186
+ IWorkerProvider worker = providers . FirstOrDefault ( ) ;
187
+ Assert . Equal ( "myFooPath" , worker . GetDescription ( ) . DefaultExecutablePath ) ;
188
+ }
189
+
190
+ [ Fact ]
191
+ public void ReadWorkerProviderFromConfig_AddProfile_ReturnsDefaultDescription ( )
192
+ {
193
+ var expectedArguments = new string [ ] { "-v" , "verbose" } ;
194
+ var configs = new List < TestLanguageWorkerConfig > ( ) { MakeTestConfig ( testLanguage , expectedArguments , false , "TestProfile" ) } ;
195
+ var testLogger = new TestLogger ( testLanguage ) ;
196
+
197
+ // Creates temp directory w/ worker.config.json and runs ReadWorkerProviderFromConfig
198
+ IEnumerable < IWorkerProvider > providers = TestReadWorkerProviderFromConfig ( configs , testLogger ) ;
199
+ Assert . Single ( providers ) ;
200
+
201
+ IWorkerProvider worker = providers . FirstOrDefault ( ) ;
202
+ Assert . Equal ( "foopath" , worker . GetDescription ( ) . DefaultExecutablePath ) ;
203
+ }
204
+
205
+ [ Fact ]
206
+ public void ReadWorkerProviderFromConfig_OverrideDefaultExePath ( )
207
+ {
208
+ var configs = new List < TestLanguageWorkerConfig > ( ) { MakeTestConfig ( testLanguage , new string [ 0 ] , false , LanguageWorkerConstants . WorkerDescriptionAppServiceEnvProfileName ) } ;
209
+ var testLogger = new TestLogger ( testLanguage ) ;
210
+ var testExePath = "./mySrc/myIndex" ;
211
+ Dictionary < string , string > keyValuePairs = new Dictionary < string , string >
212
+ {
213
+ [ $ "{ LanguageWorkerConstants . LanguageWorkersSectionName } :{ testLanguage } :{ LanguageWorkerConstants . WorkerDescriptionDefaultExecutablePath } "] = testExePath
214
+ } ;
215
+ var providers = TestReadWorkerProviderFromConfig ( configs , new TestLogger ( testLanguage ) , null , keyValuePairs , true ) ;
216
+ Assert . Single ( providers ) ;
217
+
218
+ IWorkerProvider worker = providers . FirstOrDefault ( ) ;
219
+ Assert . Equal ( testExePath , worker . GetDescription ( ) . DefaultExecutablePath ) ;
220
+ }
221
+
222
+ private IEnumerable < IWorkerProvider > TestReadWorkerProviderFromConfig ( IEnumerable < TestLanguageWorkerConfig > configs , ILogger testLogger , string language = null , Dictionary < string , string > keyValuePairs = null , bool appSvcEnv = false )
176
223
{
177
224
var workerPathSection = $ "{ LanguageWorkerConstants . LanguageWorkersSectionName } :{ LanguageWorkerConstants . WorkersDirectorySectionName } ";
178
225
try
@@ -187,7 +234,17 @@ private IEnumerable<IWorkerProvider> TestReadWorkerProviderFromConfig(IEnumerabl
187
234
var scriptHostConfig = new ScriptHostConfiguration ( ) ;
188
235
var scriptSettingsManager = new ScriptSettingsManager ( config ) ;
189
236
var configFactory = new WorkerConfigFactory ( config , testLogger ) ;
190
-
237
+ if ( appSvcEnv )
238
+ {
239
+ var testEnvVariables = new Dictionary < string , string >
240
+ {
241
+ { EnvironmentSettingNames . AzureWebsiteInstanceId , "123" } ,
242
+ } ;
243
+ using ( var variables = new TestScopedSettings ( scriptSettingsManager , testEnvVariables ) )
244
+ {
245
+ return configFactory . GetWorkerProviders ( testLogger , scriptSettingsManager , language : language ) ;
246
+ }
247
+ }
191
248
return configFactory . GetWorkerProviders ( testLogger , scriptSettingsManager , language : language ) ;
192
249
}
193
250
finally
@@ -240,17 +297,17 @@ private static IConfigurationRoot TestConfigBuilder(string workerPathSection, Di
240
297
return config ;
241
298
}
242
299
243
- private static TestLanguageWorkerConfig MakeTestConfig ( string language , string [ ] arguments , bool invalid = false )
300
+ private static TestLanguageWorkerConfig MakeTestConfig ( string language , string [ ] arguments , bool invalid = false , string addAppSvcProfile = "" )
244
301
{
245
- string json = GetTestWorkerConfig ( language , arguments , invalid ) . ToString ( ) ;
302
+ string json = GetTestWorkerConfig ( language , arguments , invalid , addAppSvcProfile ) . ToString ( ) ;
246
303
return new TestLanguageWorkerConfig ( )
247
304
{
248
305
Json = json ,
249
306
Language = language ,
250
307
} ;
251
308
}
252
309
253
- private static JObject GetTestWorkerConfig ( string language , string [ ] arguments , bool invalid )
310
+ private static JObject GetTestWorkerConfig ( string language , string [ ] arguments , bool invalid , string profileName )
254
311
{
255
312
var description = new WorkerDescription ( )
256
313
{
@@ -263,6 +320,19 @@ private static JObject GetTestWorkerConfig(string language, string[] arguments,
263
320
264
321
JObject config = new JObject ( ) ;
265
322
config [ "Description" ] = JObject . FromObject ( description ) ;
323
+
324
+ if ( ! string . IsNullOrEmpty ( profileName ) )
325
+ {
326
+ var appSvcDescription = new WorkerDescription ( )
327
+ {
328
+ DefaultExecutablePath = "myFooPath" ,
329
+ } ;
330
+
331
+ JObject profiles = new JObject ( ) ;
332
+ profiles [ profileName ] = JObject . FromObject ( appSvcDescription ) ;
333
+ config [ LanguageWorkerConstants . WorkerDescriptionProfiles ] = profiles ;
334
+ }
335
+
266
336
if ( invalid )
267
337
{
268
338
config [ "Description" ] = "invalidWorkerConfig" ;
0 commit comments