コード例 #1
0
        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());
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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");
        }