Skip to content

Commit 4e03715

Browse files
authored
Fix JavaProcess_Different_AfterHostRestart instability (#10200)
* Fix JavaProcess_Different_AfterHostRestart instability * Fix test
1 parent 16407fc commit 4e03715

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

test/WebJobs.Script.Tests.Integration/WebHostEndToEnd/SamplesEndToEndTests_Java.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
using System.Threading;
1313
using System.Threading.Tasks;
1414
using Microsoft.Azure.WebJobs.Script.Config;
15+
using Microsoft.Azure.WebJobs.Script.Workers;
1516
using Microsoft.Azure.WebJobs.Script.Workers.Rpc;
17+
using Microsoft.Extensions.DependencyInjection;
1618
using Microsoft.WebJobs.Script.Tests;
1719
using Xunit;
1820

@@ -41,18 +43,20 @@ public async Task HttpTrigger_Java_Get_Succeeds()
4143
[Fact]
4244
public async Task JavaProcess_Different_AfterHostRestart()
4345
{
44-
IEnumerable<int> javaProcessesBefore = Process.GetProcessesByName("java").Select(p => p.Id);
45-
Assert.True(javaProcessesBefore.Count() > 0);
46+
IJobHostRpcWorkerChannelManager manager = _fixture.Host.JobHostServices.GetService<IJobHostRpcWorkerChannelManager>();
47+
var channels = manager.GetChannels("java").ToList();
48+
Assert.Equal(1, channels.Count);
49+
int processId = channels[0].WorkerProcess.Id;
50+
4651
// Trigger a restart
4752
await _fixture.Host.RestartAsync(CancellationToken.None);
4853
await HttpTrigger_Java_Get_Succeeds();
49-
IEnumerable<int> javaProcessesAfter = Process.GetProcessesByName("java").Select(p => p.Id);
50-
Assert.True(javaProcessesAfter.Count() > 0);
51-
// Verify number of java processes before and after restart are the same.
52-
Assert.Equal(javaProcessesBefore.Count(), javaProcessesAfter.Count());
53-
// Verify Java different java process is used after host restart
54-
var result = javaProcessesBefore.Where(pId1 => javaProcessesAfter.Any(pId2 => pId2 == pId1));
55-
Assert.Equal(0, result.Count());
54+
55+
// Verify after restart we have only 1 java channel still, and the process ID has changed.
56+
manager = _fixture.Host.JobHostServices.GetService<IJobHostRpcWorkerChannelManager>();
57+
channels = manager.GetChannels("java").ToList();
58+
Assert.Equal(1, channels.Count);
59+
Assert.NotEqual(processId, channels[0].WorkerProcess.Id);
5660
}
5761

5862
public class TestFixture : EndToEndTestFixture

0 commit comments

Comments
 (0)