Skip to content

Commit f89b38e

Browse files
authored
[pack]Update check for InStanbyMode. (#5303)
1 parent 9b968f8 commit f89b38e

File tree

3 files changed

+51
-4
lines changed

3 files changed

+51
-4
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ internal void EnsureInitialized(WebHostSettings settings)
128128
// Determine whether we should do normal or standby initialization
129129
if (!WebScriptHostManager.InStandbyMode)
130130
{
131-
EncureInitializedNonStandbyMode(settings);
131+
EnsureInitializedNonStandbyMode(settings);
132132
}
133133
else
134134
{
@@ -170,7 +170,7 @@ private void EnsureInitializedStandbyMode(WebHostSettings settings)
170170
}
171171
}
172172

173-
private void EncureInitializedNonStandbyMode(WebHostSettings settings)
173+
private void EnsureInitializedNonStandbyMode(WebHostSettings settings)
174174
{
175175
try
176176
{

src/WebJobs.Script.WebHost/WebScriptHostManager.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,18 @@ public static bool InStandbyMode
148148
{
149149
return true;
150150
}
151-
151+
if (ScriptSettingsManager.Instance.GetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode) != null)
152+
{
153+
// These environment variables are set by DWAS at during specialization.
154+
// Note: All three varaibles might not get set at the same time.
155+
// Each of these gets set during different phases of specialization
156+
if (!(ScriptSettingsManager.Instance.GetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode) == "0"
157+
&& ScriptSettingsManager.Instance.GetSetting(EnvironmentSettingNames.AzureWebsiteContainerReady) == "1"
158+
&& ScriptSettingsManager.Instance.GetSetting(EnvironmentSettingNames.AzureWebsiteConfigurationReady) == "1"))
159+
{
160+
return true;
161+
}
162+
}
152163
// no longer standby mode
153164
_standbyMode = false;
154165

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

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public StandbyModeTests()
3232
}
3333

3434
[Fact]
35-
public void InStandbyMode_ReturnsExpectedValue()
35+
public void InStandbyMode_ReturnsExpectedValue_AzureWebsitePlaceholderMode_Set()
3636
{
3737
using (new TestEnvironment())
3838
{
@@ -44,8 +44,34 @@ public void InStandbyMode_ReturnsExpectedValue()
4444
{
4545
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "1");
4646
Assert.Equal(true, WebScriptHostManager.InStandbyMode);
47+
}
48+
}
49+
50+
[Fact]
51+
public void InStandbyMode_ReturnsExpectedValue_AzureWebsiteContainerReady_Set()
52+
{
53+
using (new TestEnvironment())
54+
{
55+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "0");
56+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteContainerReady, "1");
57+
Assert.Equal(true, WebScriptHostManager.InStandbyMode);
58+
}
59+
}
60+
61+
[Fact]
62+
public void InStandbyMode_ReturnsExpectedValue()
63+
{
64+
using (new TestEnvironment())
65+
{
66+
// initially false
67+
Assert.Equal(false, WebScriptHostManager.InStandbyMode);
68+
}
4769

70+
using (new TestEnvironment())
71+
{
4872
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "0");
73+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteContainerReady, "1");
74+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteConfigurationReady, "1");
4975
Assert.Equal(false, WebScriptHostManager.InStandbyMode);
5076

5177
// test only set one way
@@ -93,6 +119,9 @@ public void EnsureInitialized_NonPlaceholderMode()
93119

94120
var settings = GetWebHostSettings();
95121
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "0");
122+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteConfigurationReady, "1");
123+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteContainerReady, "1");
124+
96125
Assert.False(WebScriptHostManager.InStandbyMode);
97126
_webHostResolver.EnsureInitialized(settings);
98127

@@ -194,13 +223,17 @@ private class TestEnvironment : IDisposable
194223
private string _home;
195224
private string _prevHome;
196225
private string _prevPlaceholderMode;
226+
private string _prevConfigurationReady;
227+
private string _prevContainerReady;
197228
private string _prevInstanceId;
198229

199230
public TestEnvironment()
200231
{
201232
_settingsManager = ScriptSettingsManager.Instance;
202233
_prevHome = _settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteHomePath);
203234
_prevPlaceholderMode = _settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode);
235+
_prevConfigurationReady = _settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteConfigurationReady);
236+
_prevContainerReady = _settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteContainerReady);
204237
_prevInstanceId = _settingsManager.GetSetting(EnvironmentSettingNames.AzureWebsiteInstanceId);
205238

206239
_home = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
@@ -217,6 +250,9 @@ public void Dispose()
217250
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteHomePath, _prevHome);
218251
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteInstanceId, _prevInstanceId);
219252
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsitePlaceholderMode, _prevPlaceholderMode);
253+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteConfigurationReady, _prevConfigurationReady);
254+
_settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteContainerReady, _prevContainerReady);
255+
220256
try
221257
{
222258
Directory.Delete(_home, recursive: true);

0 commit comments

Comments
 (0)