private static Task ReportStartingServiceAsync( OperationContext context, IDistributedCacheServiceHost host, DistributedCacheServiceArguments arguments) { var configuration = arguments.Configuration; var logIntervalSeconds = configuration.DistributedContentSettings.ServiceRunningLogInSeconds; var logInterval = logIntervalSeconds != null ? (TimeSpan?)TimeSpan.FromSeconds(logIntervalSeconds.Value) : null; var logFilePath = GetPathForLifetimeTracking(configuration); LifetimeTracker.ServiceStarting(context, logInterval, logFilePath, arguments.TelemetryFieldsProvider.ServiceName); return(host.OnStartingServiceAsync()); }
public void NormalStartup() { var logger = TestGlobal.Logger; var context = new Context(logger); using var testDirectory = new DisposableDirectory(_fileSystem); LifetimeTracker.ServiceStarting(context, serviceRunningLogInterval: TimeSpan.FromMinutes(10), testDirectory.Path); LifetimeTracker.ServiceStarted(context); GetFullOutput().Should().NotContain(FullyInitializedMessage); LifetimeTracker.ServiceReadyToProcessRequests(context); var output = GetFullOutput(); output.Should().Contain(FullyInitializedMessage); output.Should().Contain(UnavailableOfflineTime); }
private static async Task ReportStartingServiceAsync( OperationContext context, IDistributedCacheServiceHost host, DistributedCacheServiceConfiguration configuration) { var logIntervalSeconds = configuration.DistributedContentSettings.ServiceRunningLogInSeconds; var logInterval = logIntervalSeconds != null ? (TimeSpan?)TimeSpan.FromSeconds(logIntervalSeconds.Value) : null; var logFilePath = configuration.LocalCasSettings.GetCacheRootPathWithScenario(LocalCasServiceSettings.DefaultCacheName); LifetimeTracker.ServiceStarting(context, logInterval, logFilePath); if (host is IDistributedCacheServiceHostInternal hostInternal) { await hostInternal.OnStartingServiceAsync(context); } await host.OnStartingServiceAsync(); }
public void TraceWithMultipleStartupAndShutdown() { var memoryClock = new MemoryClock(); var logger = TestGlobal.Logger; var context = new Context(logger); var process1StartupTime = memoryClock.UtcNow; memoryClock.AddSeconds(10); using var testDirectory = new DisposableDirectory(_fileSystem); LifetimeTracker.ServiceStarting(context, serviceRunningLogInterval: TimeSpan.FromMinutes(10), testDirectory.Path, memoryClock, process1StartupTime); memoryClock.AddSeconds(10); LifetimeTracker.ServiceStarted(context, memoryClock); memoryClock.AddSeconds(10); LifetimeTracker.ServiceReadyToProcessRequests(context); // Offline time should be unavailable. GetFullOutput().Should().Contain(UnavailableOfflineTime); LifetimeTracker.ServiceStopped(context, BoolResult.Success); // Now we're running the same stuff the second time, like after the process restart. memoryClock.AddSeconds(300); var process2StartupTime = memoryClock.UtcNow; memoryClock.AddSeconds(10); LifetimeTracker.ServiceStarting(context, serviceRunningLogInterval: TimeSpan.FromMinutes(10), testDirectory.Path, memoryClock, process2StartupTime); GetFullOutput().Should().Contain("LastHeartBeatTime"); memoryClock.AddSeconds(10); LifetimeTracker.ServiceStarted(context, memoryClock); memoryClock.AddSeconds(10); LifetimeTracker.ServiceReadyToProcessRequests(context); GetFullOutput().Should().Contain("OfflineTime=[00:05:50"); }