|
12 | 12 | using System.Threading;
|
13 | 13 | using System.Threading.Tasks;
|
14 | 14 | using Microsoft.Azure.WebJobs.Script.Config;
|
| 15 | +using Microsoft.Azure.WebJobs.Script.Workers; |
15 | 16 | using Microsoft.Azure.WebJobs.Script.Workers.Rpc;
|
| 17 | +using Microsoft.Extensions.DependencyInjection; |
16 | 18 | using Microsoft.WebJobs.Script.Tests;
|
17 | 19 | using Xunit;
|
18 | 20 |
|
@@ -41,18 +43,20 @@ public async Task HttpTrigger_Java_Get_Succeeds()
|
41 | 43 | [Fact]
|
42 | 44 | public async Task JavaProcess_Different_AfterHostRestart()
|
43 | 45 | {
|
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 | + |
46 | 51 | // Trigger a restart
|
47 | 52 | await _fixture.Host.RestartAsync(CancellationToken.None);
|
48 | 53 | 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); |
56 | 60 | }
|
57 | 61 |
|
58 | 62 | public class TestFixture : EndToEndTestFixture
|
|
0 commit comments