Skip to content

Commit 67a1d27

Browse files
committed
Refactor MONITORS-DEFAULT.json profile to handle capturing all default monitoring information.
1 parent 54e73de commit 67a1d27

File tree

8 files changed

+287
-338
lines changed

8 files changed

+287
-338
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.1.13
1+
2.1.14

src/VirtualClient/VirtualClient.Contracts/VirtualClientComponent.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -727,7 +727,6 @@ await this.Logger.LogMessageAsync($"{this.TypeName}.Execute", telemetryContext,
727727
finally
728728
{
729729
this.EndTime = DateTime.UtcNow;
730-
731730
this.LogSuccessOrFailedMetric(succeeded, scenarioStartTime: this.StartTime, scenarioEndTime: this.EndTime, telemetryContext: telemetryContext);
732731
}
733732

src/VirtualClient/VirtualClient.Contracts/VirtualClientIntervalBasedMonitor.cs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public abstract class VirtualClientIntervalBasedMonitor : VirtualClientComponent
1717
/// The default frequency that monitors run at (every five minutes)
1818
/// </summary>
1919
private static TimeSpan defaultFrequency = TimeSpan.FromMinutes(5);
20-
private static TimeSpan defaultWarmupPeriod = TimeSpan.FromMinutes(5);
20+
private static TimeSpan defaultWarmupPeriod = TimeSpan.Zero;
2121

2222
/// <summary>
2323
/// Initializes a new instance of the <see cref="VirtualClientIntervalBasedMonitor"/> class.
@@ -52,8 +52,7 @@ public TimeSpan MonitorFrequency
5252
{
5353
get
5454
{
55-
return this.Parameters.GetTimeSpanValue(
56-
nameof(VirtualClientIntervalBasedMonitor.MonitorFrequency), VirtualClientIntervalBasedMonitor.defaultFrequency);
55+
return this.Parameters.GetTimeSpanValue(nameof(this.MonitorFrequency), VirtualClientIntervalBasedMonitor.defaultFrequency);
5756
}
5857
}
5958

@@ -64,8 +63,7 @@ public TimeSpan MonitorWarmupPeriod
6463
{
6564
get
6665
{
67-
return this.Parameters.GetTimeSpanValue(
68-
nameof(VirtualClientIntervalBasedMonitor.MonitorWarmupPeriod), VirtualClientIntervalBasedMonitor.defaultWarmupPeriod);
66+
return this.Parameters.GetTimeSpanValue(nameof(this.MonitorWarmupPeriod), VirtualClientIntervalBasedMonitor.defaultWarmupPeriod);
6967
}
7068
}
7169

@@ -77,8 +75,19 @@ public long MonitorIterations
7775
{
7876
get
7977
{
80-
return this.Parameters.GetValue<long>(
81-
nameof(VirtualClientIntervalBasedMonitor.MonitorIterations), -1);
78+
return this.Parameters.GetValue<long>(nameof(this.MonitorIterations), -1);
79+
}
80+
}
81+
82+
/// <summary>
83+
/// Defines a monitoring strategy for more complex monitoring cadences.
84+
/// </summary>
85+
public MonitorStrategy? MonitorStrategy
86+
{
87+
get
88+
{
89+
this.Parameters.TryGetValue(nameof(this.MonitorStrategy), out IConvertible strategy);
90+
return strategy != null ? Enum.Parse<MonitorStrategy>(strategy.ToString()) : null;
8291
}
8392
}
8493

src/VirtualClient/VirtualClient.Core/SystemManagement.cs

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,16 @@ public void EnableLongPathInWindows()
277277
/// <param name="cancellationToken">A token that can be used to cancel the wait operation.</param>
278278
public async Task WaitAsync(CancellationToken cancellationToken)
279279
{
280-
while (!cancellationToken.IsCancellationRequested)
280+
try
281+
{
282+
while (!cancellationToken.IsCancellationRequested)
283+
{
284+
await Task.Delay(100, cancellationToken);
285+
}
286+
}
287+
catch (OperationCanceledException)
281288
{
282-
await Task.Delay(100, cancellationToken).ConfigureAwait(false);
289+
// expected if the CancellationToken receives a cancellation request.
283290
}
284291
}
285292

@@ -291,20 +298,27 @@ public async Task WaitAsync(CancellationToken cancellationToken)
291298
/// <param name="cancellationToken">A token that can be used to cancel the wait operation.</param>
292299
public async Task WaitAsync(DateTime timeout, CancellationToken cancellationToken)
293300
{
294-
DateTime effectiveTimeout = timeout;
295-
if (timeout.Kind != DateTimeKind.Utc)
296-
{
297-
effectiveTimeout = timeout.ToUniversalTime();
298-
}
299-
300-
while (!cancellationToken.IsCancellationRequested)
301+
try
301302
{
302-
if (DateTime.UtcNow >= effectiveTimeout)
303+
DateTime effectiveTimeout = timeout;
304+
if (timeout.Kind != DateTimeKind.Utc)
303305
{
304-
break;
306+
effectiveTimeout = timeout.ToUniversalTime();
305307
}
306308

307-
await Task.Delay(100, cancellationToken).ConfigureAwait(false);
309+
while (!cancellationToken.IsCancellationRequested)
310+
{
311+
if (DateTime.UtcNow >= effectiveTimeout)
312+
{
313+
break;
314+
}
315+
316+
await Task.Delay(100, cancellationToken);
317+
}
318+
}
319+
catch (OperationCanceledException)
320+
{
321+
// expected if the CancellationToken receives a cancellation request.
308322
}
309323
}
310324

@@ -314,9 +328,16 @@ public async Task WaitAsync(DateTime timeout, CancellationToken cancellationToke
314328
/// </summary>
315329
/// <param name="timeout">The maximum time to wait before continuing.</param>
316330
/// <param name="cancellationToken">A token that can be used to cancel the wait operation.</param>
317-
public Task WaitAsync(TimeSpan timeout, CancellationToken cancellationToken)
331+
public async Task WaitAsync(TimeSpan timeout, CancellationToken cancellationToken)
318332
{
319-
return Task.Delay(timeout, cancellationToken);
333+
try
334+
{
335+
await Task.Delay(timeout, cancellationToken);
336+
}
337+
catch (OperationCanceledException)
338+
{
339+
// expected if the CancellationToken receives a cancellation request.
340+
}
320341
}
321342

322343
private async Task<CpuInfo> GetCpuInfoOnUnixAsync()

0 commit comments

Comments
 (0)