Пример #1
0
        private StepTiming CreateStepTiming(SerializableStepTiming sourceStepTiming)
        {
            // ensure parentId
            ProfilingSession.ProfilingSessionContainer.CurrentSessionStepId = sourceStepTiming.ParentId;

            var stepTiming = new StepTiming(this, sourceStepTiming.Name)
            {
                DurationMilliseconds = sourceStepTiming.DurationMilliseconds,
                ExecuteType = sourceStepTiming.ExecuteType,
                StartMilliseconds = sourceStepTiming.StartMilliseconds,
                Sort = sourceStepTiming.Sort,
                Tags = sourceStepTiming.Tags == null ? null : new TagCollection(sourceStepTiming.Tags)
            };

            // fix Id
            if (CustomTimings != null)
            {
                for (var i = 0; i < CustomTimings.Count; ++i)
                {
                    if (CustomTimings[i].ParentId == sourceStepTiming.Id)
                    {
                        CustomTimings[i].ParentId = stepTiming.Id;
                    }
                }
            }
            for (var i = 0; i < StepTimings.Count; ++i)
            {
                if (StepTimings[i].ParentId == sourceStepTiming.Id)
                {
                    StepTimings[i].ParentId = stepTiming.Id;
                }
            }
            sourceStepTiming.Id = stepTiming.Id;

            ProfilingSession.ProfilingSessionContainer.CurrentSessionStepId = null;

            return stepTiming;
        }
Пример #2
0
        internal SerializableStepTiming ParseStepFields(JsonObject stepJson)
        {
            var step = new SerializableStepTiming();
            step.DurationMilliseconds = ParseInt64(stepJson["duration"]).GetValueOrDefault();
            step.ExecuteType = stepJson["executeType"];
            step.Id = ParseGuid(stepJson["id"]);
            step.MachineName = stepJson["machine"];
            step.StartMilliseconds = ParseInt64(stepJson["start"]).GetValueOrDefault();
            step.Sort = ParseInt64(stepJson["sort"]).GetValueOrDefault(step.StartMilliseconds);
            step.Started = ParseDateTime(stepJson["started"]);
            step.Name = stepJson["name"];
            if (stepJson.ContainsKey("tags")) step.Tags = ParseTags(stepJson.Child("tags"));
            step.Type = stepJson["type"];
            step.ParentId = ParseGuid(stepJson["parentId"]);

            return step;
        }
Пример #3
0
        private void AddSelfAndChildrenStepTimings(
            List<SerializableStepTiming> sortedList, SerializableStepTiming stepTiming, List<SerializableStepTiming> stepTimings)
        {
            sortedList.Add(stepTiming);

            for (var i = 0; i < stepTimings.Count; ++i)
            {
                if (stepTimings[i].ParentId == stepTiming.Id)
                {
                    AddSelfAndChildrenStepTimings(sortedList, stepTimings[i], stepTimings);
                }
            }
        }