@@ -30,7 +30,7 @@ public WebScriptHostHandlerTests()
30
30
31
31
HttpConfiguration config = new HttpConfiguration ( ) ;
32
32
config . DependencyResolver = mockResolver . Object ;
33
- WebScriptHostHandler handler = new WebScriptHostHandler ( config , hostTimeoutSeconds : 1 )
33
+ WebScriptHostHandler handler = new WebScriptHostHandler ( config , hostTimeoutSeconds : 1 , hostRunningPollIntervalMS : 50 )
34
34
{
35
35
InnerHandler = new TestHandler ( )
36
36
} ;
@@ -41,6 +41,7 @@ public WebScriptHostHandlerTests()
41
41
public async Task SendAsync_HostNotRunning_Returns503 ( )
42
42
{
43
43
_managerMock . SetupGet ( p => p . IsRunning ) . Returns ( false ) ;
44
+ _managerMock . SetupGet ( p => p . LastError ) . Returns ( ( Exception ) null ) ;
44
45
45
46
HttpRequestMessage request = new HttpRequestMessage ( HttpMethod . Get , "http://functions.test.com/api/test" ) ;
46
47
HttpResponseMessage response = await _invoker . SendAsync ( request , CancellationToken . None ) ;
@@ -57,6 +58,18 @@ public async Task SendAsync_HostRunning_ReturnsOk()
57
58
Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
58
59
}
59
60
61
+ [ Fact ]
62
+ public async Task SendAsync_HostInErrorState_Returns503Immediately ( )
63
+ {
64
+ _managerMock . SetupGet ( p => p . IsRunning ) . Returns ( false ) ;
65
+ _managerMock . SetupGet ( p => p . LastError ) . Returns ( new Exception ( ) ) ;
66
+
67
+ HttpRequestMessage request = new HttpRequestMessage ( HttpMethod . Get , "http://functions.test.com/api/test" ) ;
68
+ HttpResponseMessage response = await _invoker . SendAsync ( request , CancellationToken . None ) ;
69
+ Assert . Equal ( HttpStatusCode . ServiceUnavailable , response . StatusCode ) ;
70
+ _managerMock . VerifyGet ( P => P . IsRunning , Times . Exactly ( 2 ) ) ;
71
+ }
72
+
60
73
public class TestHandler : DelegatingHandler
61
74
{
62
75
protected override Task < HttpResponseMessage > SendAsync ( HttpRequestMessage request , CancellationToken cancellationToken )
0 commit comments