Skip to content

Commit 46f7b62

Browse files
committed
Fixing host specialization tracing
1 parent d1bbd7f commit 46f7b62

File tree

4 files changed

+64
-12
lines changed

4 files changed

+64
-12
lines changed

src/WebJobs.Script.WebHost/App_Start/WebHostResolver.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Microsoft.Azure.WebJobs.Script.Config;
99
using Microsoft.Azure.WebJobs.Script.Diagnostics;
1010
using Microsoft.Azure.WebJobs.Script.Eventing;
11+
using Microsoft.Azure.WebJobs.Script.WebHost.Properties;
1112
using Microsoft.Azure.WebJobs.Script.WebHost.WebHooks;
1213

1314
namespace Microsoft.Azure.WebJobs.Script.WebHost
@@ -95,7 +96,7 @@ public WebHookReceiverManager GetWebHookReceiverManager(WebHostSettings settings
9596
}
9697
}
9798

98-
private void EnsureInitialized(WebHostSettings settings)
99+
internal void EnsureInitialized(WebHostSettings settings)
99100
{
100101
if (!WebScriptHostManager.InStandbyMode)
101102
{
@@ -108,9 +109,12 @@ private void EnsureInitialized(WebHostSettings settings)
108109
_activeReceiverManager = new WebHookReceiverManager(_activeHostManager.SecretManager);
109110
InitializeFileSystem();
110111

111-
// here we're undergoing the one and only one
112-
// standby mode specialization
113-
_activeScriptHostConfig.TraceWriter.Info("Host has been specialized");
112+
if (_standbyHostManager != null)
113+
{
114+
// we're undergoing the one and only one
115+
// standby mode specialization
116+
_activeScriptHostConfig.TraceWriter.Info(Resources.HostSpecializationTrace);
117+
}
114118

115119
_standbyHostManager?.Dispose();
116120
_standbyReceiverManager?.Dispose();

src/WebJobs.Script.WebHost/Properties/Resources.Designer.cs

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/WebJobs.Script.WebHost/Properties/Resources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,9 @@
259259
]
260260
}</value>
261261
</data>
262+
<data name="HostSpecializationTrace" xml:space="preserve">
263+
<value>Host has been specialized</value>
264+
</data>
262265
<data name="SwaggerFileDeleteError" xml:space="preserve">
263266
<value>Error deleting Swagger document</value>
264267
</data>

test/WebJobs.Script.Tests.Integration/Host/StandbyModeTests.cs

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Microsoft.Azure.WebJobs.Script.Config;
99
using Microsoft.Azure.WebJobs.Script.Eventing;
1010
using Microsoft.Azure.WebJobs.Script.WebHost;
11+
using Microsoft.Azure.WebJobs.Script.WebHost.Properties;
1112
using Moq;
1213
using Xunit;
1314

@@ -87,6 +88,48 @@ public void GetWebScriptHostManager_ReturnsExpectedValue()
8788
TestGetter(_webHostResolver.GetWebScriptHostManager);
8889
}
8990

91+
[Fact]
92+
public void EnsureInitialized_NonPlaceholderMode()
93+
{
94+
using (new TestEnvironment())
95+
{
96+
_traceWriter.Traces.Clear();
97+
98+
var settings = GetWebHostSettings();
99+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "0");
100+
Assert.False(WebScriptHostManager.InStandbyMode);
101+
_webHostResolver.EnsureInitialized(settings);
102+
103+
// ensure specialization message is NOT written
104+
var traces = _traceWriter.Traces.ToArray();
105+
var traceEvent = traces.SingleOrDefault(p => p.Message.Contains(Resources.HostSpecializationTrace));
106+
Assert.Null(traceEvent);
107+
}
108+
}
109+
110+
[Fact]
111+
public void EnsureInitialized_PlaceholderMode()
112+
{
113+
using (new TestEnvironment())
114+
{
115+
_traceWriter.Traces.Clear();
116+
117+
var settings = GetWebHostSettings();
118+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "1");
119+
Assert.True(WebScriptHostManager.InStandbyMode);
120+
_webHostResolver.EnsureInitialized(settings);
121+
122+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "0");
123+
Assert.False(WebScriptHostManager.InStandbyMode);
124+
_webHostResolver.EnsureInitialized(settings);
125+
126+
var traces = _traceWriter.Traces.ToArray();
127+
var traceEvent = traces.Last();
128+
Assert.Equal(Resources.HostSpecializationTrace, traceEvent.Message);
129+
Assert.Equal(TraceLevel.Info, traceEvent.Level);
130+
}
131+
}
132+
90133
private void TestGetter<T>(Func<WebHostSettings, T> func)
91134
{
92135
using (new TestEnvironment())
@@ -96,8 +139,6 @@ private void TestGetter<T>(Func<WebHostSettings, T> func)
96139
T next = default(T);
97140
try
98141
{
99-
_traceWriter.Traces.Clear();
100-
101142
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "1");
102143

103144
var settings = GetWebHostSettings();
@@ -109,11 +150,6 @@ private void TestGetter<T>(Func<WebHostSettings, T> func)
109150
Assert.NotNull(current);
110151
Assert.NotSame(prev, current);
111152

112-
var traces = _traceWriter.Traces.ToArray();
113-
var traceEvent = traces.Last();
114-
Assert.Equal("Host has been specialized", traceEvent.Message);
115-
Assert.Equal(TraceLevel.Info, traceEvent.Level);
116-
117153
// test only set one way
118154
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "1");
119155
next = func(settings);

0 commit comments

Comments
 (0)