3
3
4
4
using System ;
5
5
using System . Diagnostics ;
6
+ using System . IO ;
6
7
using System . Threading . Tasks ;
7
8
using Microsoft . Azure . WebJobs . Script . Config ;
8
9
using Microsoft . Azure . WebJobs . Script . Eventing ;
@@ -19,6 +20,8 @@ public class HttpWorkerProcessTests
19
20
private const string _testWorkerId = "testId" ;
20
21
private const string _rootScriptPath = "c:\\ testDir" ;
21
22
private const int _workerPort = 8090 ;
23
+
24
+ private readonly string _executablePath = System . IO . Path . GetTempFileName ( ) ;
22
25
private readonly ScriptSettingsManager _settingsManager ;
23
26
private readonly Mock < IScriptEventManager > _mockEventManager = new Mock < IScriptEventManager > ( ) ;
24
27
private readonly IWorkerProcessFactory _defaultWorkerProcessFactory = new DefaultWorkerProcessFactory ( new TestEnvironment ( ) , new LoggerFactory ( ) ) ;
@@ -33,7 +36,7 @@ public HttpWorkerProcessTests()
33
36
_httpWorkerOptions = new HttpWorkerOptions ( )
34
37
{
35
38
Port = _workerPort ,
36
- Arguments = new WorkerProcessArguments ( ) { ExecutablePath = "test" } ,
39
+ Arguments = new WorkerProcessArguments ( ) { ExecutablePath = _executablePath } ,
37
40
Description = new HttpWorkerDescription ( )
38
41
{
39
42
WorkingDirectory = @"c:\testDir"
@@ -67,8 +70,38 @@ public void CreateWorkerProcess_VerifyEnvVars(string processEnvValue)
67
70
}
68
71
69
72
[ Fact ]
70
- public async Task StartProcess_LinuxConsumption_TriesToAssignExecutePermissions ( )
73
+ public async Task StartProcess_LinuxConsumption_TriesToAssignExecutePermissions_Exists ( )
74
+ {
75
+ try
76
+ {
77
+ File . Create ( _executablePath ) . Dispose ( ) ;
78
+ TestEnvironment testEnvironment = new TestEnvironment ( ) ;
79
+ testEnvironment . SetEnvironmentVariable ( EnvironmentSettingNames . ContainerName , "TestContainer" ) ;
80
+ var mockHttpWorkerProcess = new HttpWorkerProcess ( _testWorkerId , _rootScriptPath , _httpWorkerOptions , _mockEventManager . Object , _defaultWorkerProcessFactory , _processRegistry , _testLogger , _languageWorkerConsoleLogSource . Object , testEnvironment , new TestMetricsLogger ( ) , _serviceProviderMock . Object , new LoggerFactory ( ) ) ;
81
+
82
+ try
83
+ {
84
+ await mockHttpWorkerProcess . StartProcessAsync ( ) ;
85
+ }
86
+ catch
87
+ {
88
+ // expected to throw. Just verifying a log statement occurred before then.
89
+ }
90
+
91
+ // Verify method invocation
92
+ var testLogs = _testLogger . GetLogMessages ( ) ;
93
+ Assert . Contains ( "Error while assigning execute permission" , testLogs [ 0 ] . FormattedMessage ) ;
94
+ }
95
+ finally
96
+ {
97
+ File . Delete ( _executablePath ) ;
98
+ }
99
+ }
100
+
101
+ [ Fact ]
102
+ public async Task StartProcess_LinuxConsumption_TriesToAssignExecutePermissions_NotExists ( )
71
103
{
104
+ File . Delete ( _executablePath ) ;
72
105
TestEnvironment testEnvironment = new TestEnvironment ( ) ;
73
106
testEnvironment . SetEnvironmentVariable ( EnvironmentSettingNames . ContainerName , "TestContainer" ) ;
74
107
var mockHttpWorkerProcess = new HttpWorkerProcess ( _testWorkerId , _rootScriptPath , _httpWorkerOptions , _mockEventManager . Object , _defaultWorkerProcessFactory , _processRegistry , _testLogger , _languageWorkerConsoleLogSource . Object , testEnvironment , new TestMetricsLogger ( ) , _serviceProviderMock . Object , new LoggerFactory ( ) ) ;
@@ -79,12 +112,12 @@ public async Task StartProcess_LinuxConsumption_TriesToAssignExecutePermissions(
79
112
}
80
113
catch
81
114
{
82
- // expected to throw. Just verifying a log statement occured before then.
115
+ // expected to throw. Just verifying a log statement occurred before then.
83
116
}
84
117
85
118
// Verify method invocation
86
119
var testLogs = _testLogger . GetLogMessages ( ) ;
87
- Assert . Contains ( "Error while assigning execute permission " , testLogs [ 0 ] . FormattedMessage ) ;
120
+ Assert . Contains ( "File path does not exist, not assigning permissions " , testLogs [ 0 ] . FormattedMessage ) ;
88
121
}
89
122
}
90
123
}
0 commit comments