diff options
author | Alexander Köplinger <alex.koeplinger@outlook.com> | 2017-07-02 19:35:51 +0300 |
---|---|---|
committer | Alexander Köplinger <alex.koeplinger@outlook.com> | 2017-07-03 00:31:34 +0300 |
commit | 9e91b6687e1355421680b7355c8547a88b66a7c9 (patch) | |
tree | c5004bebd78d9a4d0482784451ef69da175db8d1 /mcs/class/System.ServiceModel.Discovery | |
parent | ca55ce871f12960c58952a1926c064c33b9cac62 (diff) |
[System.ServiceModel] Don't use DateTime.Now for measuring elapsed time
Use Stopwatch or DateTime.UtcNow instead which aren't affected
by things like daylight-saving time
Diffstat (limited to 'mcs/class/System.ServiceModel.Discovery')
4 files changed, 14 insertions, 13 deletions
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs index 38caf713397..e8f53c7b598 100644 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs @@ -152,7 +152,7 @@ namespace System.ServiceModel.Discovery.Udp public bool TryReceive (TimeSpan timeout, out Message msg) { - DateTime start = DateTime.Now; + DateTime start = DateTime.UtcNow; ThrowIfDisposedOrNotOpen (); msg = null; @@ -188,7 +188,7 @@ namespace System.ServiceModel.Discovery.Udp msg = message_encoder.ReadMessage (new MemoryStream (bytes), int.MaxValue); var id = msg.Headers.MessageId; if (message_ids.Contains (id)) - return TryReceive (timeout - (DateTime.Now - start), out msg); + return TryReceive (timeout - (DateTime.UtcNow - start), out msg); if (id != null) { message_ids.Enqueue (id); if (message_ids.Count >= binding_element.TransportSettings.DuplicateMessageHistoryLength) diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs index 82740e5a1e3..2d00fc5c748 100644 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs @@ -86,7 +86,7 @@ namespace System.ServiceModel.Discovery if (!handle_announce_online) return; // Offline announcement is done by another DiscoveryChannelDispatcher - DateTime start = DateTime.Now; + DateTime start = DateTime.UtcNow; Communication.Open (timeout); // and call AnnouncementOnline(). @@ -94,7 +94,7 @@ namespace System.ServiceModel.Discovery // Published endpoints are added by DicoveryEndpointPublisherBehavior, which is added to each ServiceEndpoint in the primary (non-announcement) service. if (dx != null) { foreach (var edm in dx.PublishedEndpoints) { - client.InnerChannel.OperationTimeout = timeout - (DateTime.Now - start); + client.InnerChannel.OperationTimeout = timeout - (DateTime.UtcNow - start); client.AnnounceOnline (edm); } } @@ -115,19 +115,19 @@ namespace System.ServiceModel.Discovery if (handle_announce_online) return; // Offline announcement is done by another DiscoveryChannelDispatcher - DateTime start = DateTime.Now; + DateTime start = DateTime.UtcNow; // and call AnnouncementOnline(). var dx = host.Extensions.Find<DiscoveryServiceExtension> (); // Published endpoints are added by DicoveryEndpointPublisherBehavior, which is added to each ServiceEndpoint in the primary (non-announcement) service. if (dx != null) { foreach (var edm in dx.PublishedEndpoints) { - client.InnerChannel.OperationTimeout = timeout - (DateTime.Now - start); + client.InnerChannel.OperationTimeout = timeout - (DateTime.UtcNow - start); client.AnnounceOffline (edm); } } // Then close the client. - Communication.Close (timeout - (DateTime.Now - start)); + Communication.Close (timeout - (DateTime.UtcNow - start)); } protected override IAsyncResult OnBeginClose (TimeSpan timeout, AsyncCallback callback, object state) diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryRequestChannel.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryRequestChannel.cs index 893fdf60912..46e450eed15 100644 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryRequestChannel.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryRequestChannel.cs @@ -107,9 +107,9 @@ namespace System.ServiceModel.Discovery protected override void OnOpen (TimeSpan timeout) { // FIXME: use timeout - DateTime start = DateTime.Now; + DateTime start = DateTime.UtcNow; inner = CreateDiscoveryInnerChannel<TChannel> (factory); - ((IChannel) inner).Open (timeout - (DateTime.Now - start)); + ((IChannel) inner).Open (timeout - (DateTime.UtcNow - start)); } public Message Request (Message msg) diff --git a/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/DiscoveryClientBindingElementTest.cs b/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/DiscoveryClientBindingElementTest.cs index 26083822660..6aa0faed67e 100644 --- a/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/DiscoveryClientBindingElementTest.cs +++ b/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/DiscoveryClientBindingElementTest.cs @@ -23,6 +23,7 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // using System; +using System.Diagnostics; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; @@ -176,9 +177,9 @@ namespace MonoTests.System.ServiceModel.Discovery Assert.IsNull (cf.GetProperty<DiscoveryEndpoint> (), "#1"); var ch = cf.CreateChannel (DiscoveryClientBindingElement.DiscoveryEndpointAddress); Assert.IsNull (ch.GetProperty<DiscoveryEndpoint> (), "#2"); - DateTime start = DateTime.Now; + var sw = Stopwatch.StartNew (); ch.Open (TimeSpan.FromSeconds (5)); - Assert.IsTrue (DateTime.Now - start < TimeSpan.FromSeconds (15), "It is likely that FindCriteria.Duration is ignored"); + Assert.IsTrue (sw.Elapsed < TimeSpan.FromSeconds (15), "It is likely that FindCriteria.Duration is ignored"); } [Test] @@ -193,9 +194,9 @@ namespace MonoTests.System.ServiceModel.Discovery var cf = be.BuildChannelFactory<IDuplexSessionChannel> (bc); cf.Open (); var ch = cf.CreateChannel (DiscoveryClientBindingElement.DiscoveryEndpointAddress); - DateTime start = DateTime.Now; + var sw = Stopwatch.StartNew (); ch.Open (TimeSpan.FromSeconds (5)); - Assert.IsTrue (DateTime.Now - start < TimeSpan.FromSeconds (15), "It is likely that FindCriteria.Duration is ignored"); + Assert.IsTrue (sw.Elapsed < TimeSpan.FromSeconds (15), "It is likely that FindCriteria.Duration is ignored"); } [Test] |