Ejemplo n.º 1
0
        public void Casting()
        {
            TimeSpan ts = GoDuration.FromTimeSpan(TimeSpan.FromHours(10));

            Assert.Equal(10.0, ts.TotalHours);

            GoDuration gts = ts;

            Assert.Equal(10.0, gts.TimeSpan.TotalHours);

            // Verify out-of-range checks.

            Assert.Throws <ArgumentOutOfRangeException>(() => GoDuration.FromTimeSpan(TimeSpan.MaxValue));
            Assert.Throws <ArgumentOutOfRangeException>(() => GoDuration.FromTimeSpan(TimeSpan.FromDays(500 * 365)));

            Assert.Throws <ArgumentOutOfRangeException>(() => GoDuration.FromTimeSpan(TimeSpan.MinValue));
            Assert.Throws <ArgumentOutOfRangeException>(() => GoDuration.FromTimeSpan(-TimeSpan.FromDays(500 * 365)));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Converts the instance into an <see cref="InternalWorkerOptions"/>.
 /// </summary>
 /// <returns>The converted instance.</returns>
 internal InternalWorkerOptions ToInternal()
 {
     return(new InternalWorkerOptions()
     {
         MaxConcurrentActivityExecutionSize = this.MaxConcurrentActivityExecutionSize,
         WorkerActivitiesPerSecond = this.WorkerActivitiesPerSecond,
         MaxConcurrentLocalActivityExecutionSize = this.MaxConcurrentLocalActivityExecutionSize,
         WorkerLocalActivitiesPerSecond = this.WorkerLocalActivitiesPerSecond,
         TaskListActivitiesPerSecond = this.TaskListActivitiesPerSecond,
         MaxConcurrentDecisionTaskExecutionSize = this.MaxConcurrentDecisionTaskExecutionSize,
         WorkerDecisionTasksPerSecond = this.WorkerDecisionTasksPerSecond,
         AutoHeartBeat = false,
         Identity = this.Identity,
         EnableLoggingInReplay = this.EnableLoggingInReplay,
         DisableWorkflowWorker = this.DisableWorkflowWorker,
         DisableActivityWorker = this.DisableActivityWorker,
         DisableStickyExecution = this.DisableStickyExecution,
         StickyScheduleToStartTimeout = GoDuration.FromTimeSpan(this.StickyScheduleToStartTimeout).Ticks,
         NonDeterministicWorkflowPolicy = (int)this.NonDeterministicWorkflowPolicy,
         WorkerStopTimeout = GoDuration.FromTimeSpan(this.WorkerStopTimeout).Ticks
     });
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Validates the options and also ensures that all <c>null</c> properties are
        /// initialized to their default values.
        /// </summary>
        /// <param name="clusterDefinition">The cluster definition.</param>
        /// <exception cref="ClusterDefinitionException">Thrown if the definition is not valid.</exception>
        public void Validate(ClusterDefinition clusterDefinition)
        {
            Covenant.Requires <ArgumentNullException>(clusterDefinition != null, nameof(clusterDefinition));

            var acmeOptionsPrefix = $"{nameof(ClusterDefinition.Network.AcmeOptions)}";

            Issuer = Issuer ?? new AcmeIssuer();
            Issuer.Validate(clusterDefinition);

            // Validate the certificate durations.

            CertificateDuration ??= defaultCertificateDuration;
            CertificateRenewBefore ??= defaultCertificateRenewBefore;

            if (!GoDuration.TryParse(CertificateDuration, out var duration))
            {
                throw new ClusterDefinitionException($"[{acmeOptionsPrefix}.{nameof(CertificateDuration)}={CertificateDuration}] cannot be parsed as a GOLANG duration.");
            }

            if (!GoDuration.TryParse(CertificateRenewBefore, out var renewBefore))
            {
                throw new ClusterDefinitionException($"[{acmeOptionsPrefix}.{nameof(CertificateRenewBefore)}={CertificateRenewBefore}] cannot be parsed as a GOLANG duration.");
            }

            if (duration.TimeSpan < TimeSpan.FromSeconds(1))
            {
                throw new ClusterDefinitionException($"[{acmeOptionsPrefix}.{nameof(CertificateDuration)}={CertificateDuration}] cannot be less than 1 second.");
            }

            if (renewBefore.TimeSpan < TimeSpan.FromSeconds(1))
            {
                throw new ClusterDefinitionException($"[{acmeOptionsPrefix}.{nameof(CertificateRenewBefore)}={CertificateRenewBefore}] cannot be less than 1 second.");
            }

            if (duration.TimeSpan < renewBefore.TimeSpan)
            {
                throw new ClusterDefinitionException($"[{acmeOptionsPrefix}.{nameof(CertificateDuration)}={CertificateDuration}] is not greater than or equal to [{acmeOptionsPrefix}.{nameof(CertificateRenewBefore)}={CertificateRenewBefore}].");
            }
        }
Ejemplo n.º 4
0
 /// <inheritdoc/>
 public override void WriteJson(JsonWriter writer, TimeSpan value, JsonSerializer serializer)
 {
     writer.WriteValue(GoDuration.FromTimeSpan(value).Ticks);
 }
Ejemplo n.º 5
0
        public void Parse()
        {
            // Verify valid input.

            Assert.Equal(0.0, GoDuration.Parse("0").TimeSpan.TotalHours);
            Assert.Equal(GoDuration.MinValue.TimeSpan, GoDuration.Parse("-2562047h47m16s854ms775us808ns").TimeSpan);
            Assert.Equal(GoDuration.MaxValue.TimeSpan, GoDuration.Parse("2562047h47m16s854ms775us807ns").TimeSpan);

            var max = GoDuration.MaxValue.ToString();
            var min = GoDuration.MinValue.ToString();

            Assert.Equal(10.0, GoDuration.Parse("10h").TotalHours);
            Assert.Equal(10.0, GoDuration.Parse("10H").TotalHours);
            Assert.Equal(10.0, GoDuration.Parse("+10h").TotalHours);
            Assert.Equal(-10.0, GoDuration.Parse("-10h").TotalHours);
            Assert.Equal(1.5, GoDuration.Parse("1.5h").TotalHours);

            Assert.Equal(123.0, GoDuration.Parse("123m").TotalMinutes);
            Assert.Equal(123.0, GoDuration.Parse("123M").TotalMinutes);
            Assert.Equal(123.0, GoDuration.Parse("+123m").TotalMinutes);
            Assert.Equal(-123.0, GoDuration.Parse("-123m").TotalMinutes);
            Assert.Equal(1.6, GoDuration.Parse("1.6m").TotalMinutes);

            Assert.Equal(5.0, GoDuration.Parse("5s").TotalSeconds);
            Assert.Equal(5.0, GoDuration.Parse("5S").TotalSeconds);
            Assert.Equal(5.0, GoDuration.Parse("+5s").TotalSeconds);
            Assert.Equal(-5.0, GoDuration.Parse("-5s").TotalSeconds);
            Assert.Equal(1.7, GoDuration.Parse("1.7s").TotalSeconds);

            Assert.Equal(5.0, GoDuration.Parse("5ms").TotalMilliseconds);
            Assert.Equal(5.0, GoDuration.Parse("5MS").TotalMilliseconds);
            Assert.Equal(5.0, GoDuration.Parse("+5ms").TotalMilliseconds);
            Assert.Equal(-5.0, GoDuration.Parse("-5ms").TotalMilliseconds);
            Assert.True(AreClose(1.7, GoDuration.Parse("1.7ms").TotalMilliseconds));

            Assert.Equal(5.0, GoDuration.Parse("5us").TotalMilliseconds * 1000);
            Assert.Equal(5.0, GoDuration.Parse("5US").TotalMilliseconds * 1000);
            Assert.Equal(5.0, GoDuration.Parse("+5us").TotalMilliseconds * 1000);
            Assert.Equal(-5.0, GoDuration.Parse("-5us").TotalMilliseconds * 1000);
            Assert.True(AreClose(1.7, GoDuration.Parse("1.7us").TotalMilliseconds * 1000));

            Assert.Equal(5.0, GoDuration.Parse("5µs").TotalMilliseconds * 1000);
            Assert.Equal(5.0, GoDuration.Parse("5µS").TotalMilliseconds * 1000);
            Assert.Equal(5.0, GoDuration.Parse("+5µs").TotalMilliseconds * 1000);
            Assert.Equal(-5.0, GoDuration.Parse("-5µs").TotalMilliseconds * 1000);
            Assert.True(AreClose(1.7, GoDuration.Parse("1.7µs").TotalMilliseconds * 1000));

            Assert.Equal(100, GoDuration.Parse("100ns").Ticks);
            Assert.Equal(1000, GoDuration.Parse("1000NS").Ticks);
            Assert.Equal(150, GoDuration.Parse("+150ns").Ticks);
            Assert.Equal(-1000, GoDuration.Parse("-1000ns").Ticks);
            Assert.Equal(1000, GoDuration.Parse("1000.5ns").Ticks);          // No nanosecond fractions

            Assert.Equal(1000.5, GoDuration.Parse("1000h30m").TotalHours);
            Assert.Equal(-1000.5, GoDuration.Parse("-1000h30m").TotalHours);

            // Verify invalid inputs.

            GoDuration gts;

            Assert.False(GoDuration.TryParse(null, out gts));
            Assert.False(GoDuration.TryParse(string.Empty, out gts));
            Assert.False(GoDuration.TryParse("    ", out gts));
            Assert.False(GoDuration.TryParse("10", out gts));
            Assert.False(GoDuration.TryParse("1000000000h", out gts));      // Out of range
            Assert.False(GoDuration.TryParse("-1000000000h", out gts));     // Out of range
        }
Ejemplo n.º 6
0
        public void Stringify()
        {
            Assert.Equal("0", GoDuration.Zero.ToString());
            Assert.Equal("-2562047h47m16s854ms775us808ns", GoDuration.MinValue.ToString());
            Assert.Equal("2562047h47m16s854ms775us807ns", GoDuration.MaxValue.ToString());

            Assert.Equal("10h", GoDuration.Parse("10h").ToString());
            Assert.Equal("10h30m", GoDuration.Parse("10.5h").ToString());

            Assert.Equal("10m", GoDuration.Parse("10m").ToString());
            Assert.Equal("10m30s", GoDuration.Parse("10.5m").ToString());

            Assert.Equal("10s", GoDuration.Parse("10s").ToString());
            Assert.Equal("10s500ms", GoDuration.Parse("10.5s").ToString());

            Assert.Equal("10ms", GoDuration.Parse("10ms").ToString());
            Assert.Equal("10ms500us", GoDuration.Parse("10.5ms").ToString());

            Assert.Equal("1us", GoDuration.Parse("1us").ToString());
            Assert.Equal("10us", GoDuration.Parse("10us").ToString());
            Assert.Equal("10us500ns", GoDuration.Parse("10.5us").ToString());

            Assert.Equal("100ns", GoDuration.Parse("100ns").ToString());
            Assert.Equal("1us500ns", GoDuration.Parse("1500ns").ToString());

            Assert.Equal("1000h30m", GoDuration.Parse("1000h30m").ToString());
            Assert.Equal("-1000h30m", GoDuration.Parse("-1000h30m").ToString());

            //-----------------------------------------------------------------
            // Pretty

            Assert.Equal("0", GoDuration.Parse("0").ToPretty());
            Assert.Equal("0", GoDuration.Parse("-0s").ToPretty());

            Assert.Equal("0.123s", GoDuration.Parse("0.123s").ToPretty());
            Assert.Equal("-0.123s", GoDuration.Parse("-0.123s").ToPretty());

            Assert.Equal("10s", GoDuration.Parse("10s").ToPretty());
            Assert.Equal("-10s", GoDuration.Parse("-10s").ToPretty());

            Assert.Equal("10m", GoDuration.Parse("10m").ToPretty());
            Assert.Equal("-10m", GoDuration.Parse("-10m").ToPretty());

            Assert.Equal("10h", GoDuration.Parse("10h").ToPretty());
            Assert.Equal("-10h", GoDuration.Parse("-10h").ToPretty());

            Assert.Equal("20m10s", GoDuration.Parse("20m10s").ToPretty());
            Assert.Equal("-20m10s", GoDuration.Parse("-20m10s").ToPretty());

            Assert.Equal("20m10.123s", GoDuration.Parse("20m10.123s").ToPretty());
            Assert.Equal("-20m10.123s", GoDuration.Parse("-20m10.123s").ToPretty());

            Assert.Equal("2h20m10s", GoDuration.Parse("2h20m10s").ToPretty());
            Assert.Equal("-2h20m10s", GoDuration.Parse("-2h20m10s").ToPretty());

            Assert.Equal("2h20m10.123s", GoDuration.Parse("2h20m10.123s").ToPretty());
            Assert.Equal("-2h20m10.123s", GoDuration.Parse("-2h20m10.123s").ToPretty());

            Assert.Equal("2h20m0.123s", GoDuration.Parse("2h20m0.123s").ToPretty());
            Assert.Equal("-2h20m0.123s", GoDuration.Parse("-2h20m0.123s").ToPretty());

            Assert.Equal("1h30m", GoDuration.Parse("1h30m").ToPretty());
            Assert.Equal("-1h30m", GoDuration.Parse("-1h30m").ToPretty());

            Assert.Equal("1h30s", GoDuration.Parse("1h30s").ToPretty());
            Assert.Equal("-1h30s", GoDuration.Parse("-1h30s").ToPretty());

            Assert.Equal("1h0.123s", GoDuration.Parse("1h0.123s").ToPretty());
            Assert.Equal("-1h0.123s", GoDuration.Parse("-1h0.123s").ToPretty());
        }