Ejemplo n.º 1
0
        private void UdpSocket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            try
            {
                var dr        = args.GetDataReader();
                var udpResult = ReadDataReader(UdpStartTime, dr);
                UdpResults.TryAdd(sender.Information.LocalPort, udpResult);
            }
            catch (Exception ex)
            {
                // This should not every actually happen
                Stats.NExceptions++;
                Log($"TIME: CLIENT: ERROR {ex.Message}");
                var delta     = DateTime.UtcNow.Subtract(UdpStartTime).TotalSeconds;
                var udpResult = TimeResult.MakeFailed(ex, delta);
                UdpResults.TryAdd(sender.Information.LocalPort, udpResult);
            }

            // Don't need the socket after we get the first message
            sender.MessageReceived -= UdpSocket_MessageReceived;
            sender.Dispose();
        }
Ejemplo n.º 2
0
        private TimeResult ReadDataReader(DateTime startTime, DataReader dr)
        {
            uint count = dr.UnconsumedBufferLength;

            if (count >= 4)
            {
                var rawdata = dr.ReadUInt32();
                var result  = TimeServer_Rfc_868.TimeConversion.Convert(rawdata);

                // Convert to now

                var stringresult = $"{result.ToString()} raw={rawdata} {rawdata:X}";
                Log($"{stringresult}"); // Will be printed on the screen.
                var delta = DateTime.UtcNow.Subtract(startTime).TotalSeconds;
                return(TimeResult.MakeSucceeded(result.ToUnixTimeSeconds(), stringresult, delta));
            }
            else
            {
                var stringresult = "ERROR:No results!";
                Log($"TIME: CLIENT:{stringresult}");
                var delta = DateTime.UtcNow.Subtract(startTime).TotalSeconds;
                return(TimeResult.MakeFailed(SocketErrorStatus.HttpInvalidServerResponse, delta));
            }
        }
Ejemplo n.º 3
0
        public void SetValue(double value, SourceValue sourceValue = SourceValue.Digits, TimeResult timeValueResult = TimeResult.None, TimeResult timeShortestVariant = TimeResult.None)
        {
            string strFormat = string.Empty;

            if (timeShortestVariant > TimeResult.None && timeShortestVariant < timeValueResult)
            {
                var ts = new TimeShort(value, this.timeResultStrings, sourceValue);
                strFormat = ts.GetShortestString(timeShortestVariant);
            }
            else
            {
                strFormat = this.GetFormatTimeString(this.timeResultStrings, timeValueResult);
            }

            switch (sourceValue)
            {
            case SourceValue.Seconds:
                this.SetText(new TimeFormatFromSeconds()
                {
                    format = strFormat
                }.GetValue(value));
                return;

            case SourceValue.Milliseconds:
                this.SetText(new TimeFormatFromMilliseconds()
                {
                    format = strFormat
                }.GetValue(value));
                return;
            }
        }
Ejemplo n.º 4
0
 private string GetFormatTimeString(TimeResultStrings ts, TimeResult result)
 {
     return(new TimeFormat(ts, result).GetString());
 }
Ejemplo n.º 5
0
 public TimeFormat(TimeResultStrings timeResultStrings, TimeResult result)
 {
     this.timeResultStrings = timeResultStrings;
     this.result            = result;
 }
Ejemplo n.º 6
0
 public void Handle(TimeResult message)
 {
     AppendToLastOutputLine(message.ElapsedMilliseconds + "ms");
 }
Ejemplo n.º 7
0
        protected void SetResultType(SimpleTypes resultType)
        {
            SimpleType = resultType;
            switch (resultType)
            {
            case SimpleTypes.Boolean:
                GetIntResultOut      = GetBoolAsInt;
                GetStrResultOut      = GetBoolAsStr;
                GetFloatResultOut    = GetBoolAsFloat;
                GetDateTimeResultOut = GetBoolAsDateTime;
                GetTimeResultOut     = GetBoolAsTime;
                GetGeomResultOut     = GetBoolAsGeom;
                break;

            case SimpleTypes.String:
                GetBoolResultOut     = GetStrAsBool;
                GetIntResultOut      = GetStrAsInt;
                GetFloatResultOut    = GetStrAsFloat;
                GetDateTimeResultOut = GetStrAsDateTime;
                GetTimeResultOut     = GetStrAsTime;
                GetGeomResultOut     = GetStrAsGeom;
                break;

            case SimpleTypes.Integer:
                GetBoolResultOut     = GetIntAsBool;
                GetStrResultOut      = GetIntAsStr;
                GetFloatResultOut    = GetIntAsFloat;
                GetDateTimeResultOut = GetIntAsDateTime;
                GetTimeResultOut     = GetIntAsTime;
                GetGeomResultOut     = GetIntAsGeom;
                break;

            case SimpleTypes.Float:
                GetBoolResultOut     = GetFloatAsBool;
                GetStrResultOut      = GetFloatAsStr;
                GetIntResultOut      = GetFloatAsInt;
                GetDateTimeResultOut = GetFloatAsDateTime;
                GetTimeResultOut     = GetFloatAsTime;
                GetGeomResultOut     = GetFloatAsGeom;
                break;

            case SimpleTypes.Date:
                GetBoolResultOut  = GetDateTimeAsBool;
                GetStrResultOut   = GetDateAsStr;
                GetFloatResultOut = GetDateTimeAsFloat;
                GetIntResultOut   = GetDateTimeAsInt;
                GetTimeResultOut  = GetDateTimeAsTime;
                GetGeomResultOut  = GetDateTimeAsGeom;
                break;

            case SimpleTypes.DateTime:
                GetBoolResultOut  = GetDateTimeAsBool;
                GetStrResultOut   = GetDateTimeAsStr;
                GetFloatResultOut = GetDateTimeAsFloat;
                GetIntResultOut   = GetDateTimeAsInt;
                GetTimeResultOut  = GetDateTimeAsTime;
                GetGeomResultOut  = GetDateTimeAsGeom;
                break;

            case SimpleTypes.Time:
                GetBoolResultOut     = GetTimeAsBool;
                GetStrResultOut      = GetTimeAsStr;
                GetFloatResultOut    = GetTimeAsFloat;
                GetIntResultOut      = GetTimeAsInt;
                GetDateTimeResultOut = GetTimeAsDateTime;
                GetGeomResultOut     = GetTimeAsGeom;
                break;

            case SimpleTypes.Geometry:
                GetBoolResultOut     = GetGeomAsBool;
                GetStrResultOut      = GetGeomAsStr;
                GetFloatResultOut    = GetGeomAsFloat;
                GetIntResultOut      = GetGeomAsInt;
                GetDateTimeResultOut = GetGeomAsDateTime;
                GetTimeResultOut     = GetGeomAsTime;
                break;

            case SimpleTypes.Blob:
                GetBoolResultOut     = GetBlobAsBool;
                GetStrResultOut      = GetBlobAsStr;
                GetFloatResultOut    = GetBlobAsFloat;
                GetIntResultOut      = GetBlobAsInt;
                GetDateTimeResultOut = GetBlobAsDateTime;
                GetTimeResultOut     = GetBlobAsTime;
                break;
            }
        }
Ejemplo n.º 8
0
        private bool IsSuccessfulResponse(TimeResult result, HttpStatusCode? expectedStatusCode)
        {
            TimeResult<HttpWebResponse> httpResult = result as TimeResult<HttpWebResponse>;
            if (httpResult == null)
            {
                return false;
            }
            var response = httpResult.Result;

            var statusCode = (int)response.StatusCode;
            return (expectedStatusCode == null && statusCode >= 200 && statusCode < 300) ||
                (expectedStatusCode != null && ((int)expectedStatusCode.Value == statusCode));
        }
Ejemplo n.º 9
0
        private async Task ReportFailure(TimeResult lastResult)
        {
            // Try to grab a trace route
            IEnumerable<IPAddress> traceRoute = null;
            try
            {
                traceRoute = await NetworkHelpers.TraceRoute(Url.Host);
            }
            catch (PingException pex)
            {
                // Report a monitor failure
                MonitorFailure(String.Format("Failed to collect trace route to {0}. {1}",
                    Url.AbsoluteUri,
                    pex));
            }

            if (!lastResult.IsSuccess)
            {
                Failure(String.Format("Definite Failure. Exception Requesting Page: {0}.\nTrace Route:\n{1}", lastResult.Exception.GetBaseException().Message, FormatTraceRoute(traceRoute)));
                return;
            }
            else if (!IsSuccessfulResponse(lastResult, ExpectedStatusCode))
            {
                var httpResult = lastResult as TimeResult<HttpWebResponse>;
                if (httpResult != null)
                {
                    Failure(String.Format("Definite Failure. HTTP Error: {0} {1}.\nTrace Route: {2}", httpResult.Result.StatusCode, httpResult.Result.StatusCode, FormatTraceRoute(traceRoute)));
                }
                return;
            }
        }
Ejemplo n.º 10
0
 //Метод записи результатов тестов в поля на форме.
 public void RecordResult()
 {
     LabelResult.Content     = TestResult + "%";
     LabelTimeResult.Content = TimeResult.ToString("mm\\:ss");
 }
Ejemplo n.º 11
0
        public void SetValue(double value, SourceValue sourceValue = SourceValue.Digits, TimeResult timeValueResult = TimeResult.None, TimeResult timeShortestVariant = TimeResult.None)
        {
            var currentData = new ValueData()
            {
                value               = value,
                sourceValue         = sourceValue,
                timeValueResult     = timeValueResult,
                timeShortestVariant = timeShortestVariant,
                isCreated           = true,
            };

            if (this.lastValueData == currentData)
            {
                return;
            }
            this.lastValueData = currentData;
            this.lastText      = null;

            string strFormat;

            if (timeShortestVariant > TimeResult.None && timeShortestVariant < timeValueResult)
            {
                var ts = new TimeShort(value, this.timeResultStrings, sourceValue);
                strFormat = ts.GetShortestString(timeShortestVariant);
            }
            else
            {
                strFormat = this.GetFormatTimeString(this.timeResultStrings, timeValueResult);
            }

            switch (sourceValue)
            {
            case SourceValue.Digits:
                this.SetText(value.ToString());
                return;

            case SourceValue.Seconds:
                this.SetText(new TimeFormatFromSeconds()
                {
                    format = strFormat
                }.GetValue(value));
                return;

            case SourceValue.Milliseconds:
                this.SetText(new TimeFormatFromMilliseconds()
                {
                    format = strFormat
                }.GetValue(value));
                return;
            }
        }