Exemple #1
0
        public void Timestamps_do_not_round_trip()
        {
            var service = new LocalServerTimestampService();

            {
                var currentTimestamp = service.GetCurrentTimestamp();
                var deserialized     = new DateTimeOffset(new DateTime(currentTimestamp));
                Assert.True(TimeZoneInfo.Local.BaseUtcOffset == TimeSpan.Zero || deserialized.Offset != TimeSpan.Zero);
            }

            {
                var currentTime = service.GetCurrentTime();
                currentTime = currentTime.ToOffset(TimeSpan.FromHours(1)); // non-local offset

                var ms = new MemoryStream();

                var d = currentTime;
                var w = new BinaryWriter(ms);
                w.Write(d.Ticks);

                ms.Position = 0;

                var r             = new BinaryReader(ms);
                var recreatedTime = new DateTimeOffset(new DateTime(r.ReadInt64()));

                // We didn't write d.Offset, so we can't recreate the instant in time.
                // This would require 64 bits (d.Ticks) + 16 bits (d.Offset), which does not fit in long.
                Assert.NotEqual(currentTime, recreatedTime);
            }
        }
Exemple #2
0
        public void Can_get_zoned_time()
        {
            var service     = new LocalServerTimestampService();
            var currentTime = service.GetCurrentZonedTime();

            Assert.NotEqual(default(DateTimeOffset), currentTime);
        }
        private static BackgroundTaskHost CreateBackgroundTaskHost(Action <BackgroundTaskOptions> configureOptions)
        {
            var services = new ServiceCollection();

            services.AddBackgroundTasks(configureOptions);
            var serviceProvider = services.BuildServiceProvider();
            var timestamps      = new LocalServerTimestampService();
            var scheduler       = new BackgroundTaskHost(serviceProvider, timestamps,
                                                         new InMemoryBackgroundTaskStore(timestamps), new JsonBackgroundTaskSerializer(),
                                                         new ReflectionTypeResolver(),
                                                         serviceProvider.GetRequiredService <IOptionsMonitor <BackgroundTaskOptions> >(),
                                                         serviceProvider.GetService <ISafeLogger <BackgroundTaskHost> >());

            return(scheduler);
        }