Skip to content

Commit 707f2db

Browse files
authored
Include FunctionActivityStatus in DrainModeStatus (#8383) (#8402)
1 parent 8336cd7 commit 707f2db

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

src/WebJobs.Script.WebHost/Controllers/HostController.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,9 @@ public IActionResult DrainStatus([FromServices] IScriptHostManager scriptHostMan
153153

154154
DrainModeStatus status = new DrainModeStatus()
155155
{
156-
State = state
156+
State = state,
157+
OutstandingInvocations = functionActivityStatus.OutstandingInvocations,
158+
OutstandingRetries = functionActivityStatus.OutstandingRetries
157159
};
158160

159161
string message = $"Drain Status: {JsonConvert.SerializeObject(state, Formatting.Indented)}, Activity Status: {JsonConvert.SerializeObject(functionActivityStatus, Formatting.Indented)}";

src/WebJobs.Script.WebHost/Models/DrainModeStatus.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,11 @@ public class DrainModeStatus
1111
[JsonProperty("state")]
1212
[JsonConverter(typeof(StringEnumConverter))]
1313
public DrainModeState State { get; set; }
14+
15+
[JsonProperty("outstandingInvocations")]
16+
public int OutstandingInvocations { get; set; }
17+
18+
[JsonProperty("outstandingRetries")]
19+
public int OutstandingRetries { get; set; }
1420
}
1521
}

test/WebJobs.Script.Tests/Controllers/Admin/HostControllerTests.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ public async Task Ping_ReturnsOk()
242242
[InlineData(2, 0, DrainModeState.InProgress)]
243243
[InlineData(0, 10, DrainModeState.InProgress)]
244244
[InlineData(5, 1, DrainModeState.InProgress)]
245+
[InlineData(20, 30, DrainModeState.Disabled)]
245246
public void GetDrainStatus_HostRunning_ReturnsExpected(int outstandingRetries, int outstandingInvocations, DrainModeState expectedState)
246247
{
247248
var scriptHostManagerMock = new Mock<IScriptHostManager>(MockBehavior.Strict);
@@ -256,9 +257,11 @@ public void GetDrainStatus_HostRunning_ReturnsExpected(int outstandingRetries, i
256257
serviceProviderMock.Setup(x => x.GetService(typeof(IFunctionActivityStatusProvider))).Returns(functionActivityStatusProvider.Object);
257258
serviceProviderMock.Setup(x => x.GetService(typeof(IDrainModeManager))).Returns(drainModeManager.Object);
258259
drainModeManager.Setup(x => x.IsDrainModeEnabled).Returns(expectedState != DrainModeState.Disabled);
259-
260260
var result = (OkObjectResult)_hostController.DrainStatus(scriptHostManagerMock.Object);
261-
Assert.Equal(expectedState, (result.Value as DrainModeStatus).State);
261+
var resultStatus = result.Value as DrainModeStatus;
262+
Assert.Equal(expectedState, resultStatus.State);
263+
Assert.Equal(outstandingRetries, resultStatus.OutstandingRetries);
264+
Assert.Equal(outstandingInvocations, resultStatus.OutstandingInvocations);
262265
}
263266

264267
[Fact]

0 commit comments

Comments
 (0)