Ejemplo n.º 1
0
        /// <summary>
        /// Serializes task processor performance info to <see cref="String"/>.
        /// </summary>
        /// <param name="performanceInfo">The performance info to serialize.</param>
        /// <returns>A string representing the task processor performance info.</returns>
        /// <exception cref="ArgumentNullException">Parameter <paramref name="performanceInfo"/> is null.</exception>
        public static string SerializeTaskProcessorPerformanceInfo(TaskProcessorPerformanceReport performanceInfo)
        {
            if (performanceInfo == null)
            {
                throw new ArgumentNullException("performanceInfo");
            }

            Trace.WriteLine("ENTER: Serializing {0} ...".FormatInvariant(performanceInfo.GetType().Name));

            StringBuilder result = new StringBuilder();

            result.AppendFormat(
                "{0};{1};{2}",
                RedisConverter.ToString(performanceInfo.TaskProcessorId),
                RedisConverter.ToString(performanceInfo.CpuPercent),
                RedisConverter.ToString(performanceInfo.RamPercent));

            foreach (TaskPerformanceReport taskPerformance in performanceInfo.TasksPerformance)
            {
                result.AppendFormat(
                    "#{0};{1};{2}",
                    RedisConverter.ToString(taskPerformance.TaskId),
                    RedisConverter.ToString(taskPerformance.CpuPercent),
                    RedisConverter.ToString(taskPerformance.RamPercent));
            }

            Trace.WriteLine("EXIT: {0} serialized to {1}.".FormatInvariant(performanceInfo.GetType().Name, result));

            return(result.ToString());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// De-serialize a <see cref="TaskProcessorPerformanceReport"/> instance from <see cref="String"/>.
        /// </summary>
        /// <param name="value">The string to de-serialize.</param>
        /// <returns>A <see cref="TaskProcessorPerformanceReport"/> instance de-serialized from the specified string.</returns>
        /// <exception cref="ArgumentNullException">Parameter <paramref name="value"/> is null or empty string.</exception>
        protected static TaskProcessorPerformanceReport DeserializeTaskProcessorPerformanceInfo(string value)
        {
            Trace.WriteLine("ENTER: De-serializing '{0}' to {1} ...".FormatInvariant(value, typeof(TaskProcessorPerformanceReport).Name));

            if (string.IsNullOrEmpty(value))
            {
                throw new ArgumentNullException("value");
            }

            string[] values1 = value.Split('#');

            string[] values2 = values1[0].Split(';');

            TaskProcessorPerformanceReport result = new TaskProcessorPerformanceReport(RedisConverter.ParseGuid(values2[0]))
            {
                CpuPercent = RedisConverter.ParseInteger(values2[1]),
                RamPercent = RedisConverter.ParseInteger(values2[2]),
            };

            for (int i = 1; i < values1.Length; i++)
            {
                values2 = values1[i].Split(';');

                result.TasksPerformance.Add(new TaskPerformanceReport(RedisConverter.ParseGuid(values2[0]))
                {
                    CpuPercent = RedisConverter.ParseFloat(values2[1]),
                    RamPercent = RedisConverter.ParseFloat(values2[2]),
                });
            }

            Trace.WriteLine("EXIT: '{0}' de-serialized to {1}.".FormatInvariant(value, typeof(TaskProcessorPerformanceReport).Name));

            return(result);
        }
        public virtual void ReportPerformance()
        {
            this.Receiver.SubscribeForChannels(MessageBusChannel.PerformanceReport);

            TaskProcessorPerformanceReport performance = new TaskProcessorPerformanceReport(Guid.NewGuid())
            {
                CpuPercent = 23,
                RamPercent = 31
            };

            performance.TasksPerformance.Add(new TaskPerformanceReport(Guid.NewGuid())
            {
                CpuPercent = 45,
                RamPercent = 46
            });

            performance.TasksPerformance.Add(new TaskPerformanceReport(Guid.NewGuid())
            {
                CpuPercent = 76,
                RamPercent = 84
            });

            TaskProcessorPerformanceEventArgs args = Helpers.WaitForEvent <TaskProcessorPerformanceEventArgs>(
                this.Timeout,
                handler => this.Receiver.PerformanceReportReceived += handler,
                () => this.Sender.NotifyPerformanceReport(performance));

            UnitTestHelpers.AssertEqualByPublicScalarProperties(performance, args.PerformanceInfo);

            Assert.IsTrue(performance.TasksPerformance.IsEquivalentTo(
                              args.PerformanceInfo.TasksPerformance,
                              (a, b) => UnitTestHelpers.AreEqualByPublicScalarProperties(a, b)));
        }
        public void NotifyPerformanceReport(TaskProcessorPerformanceReport taskProcessorPerformanceInfo)
        {
            this.RecordMethodCall(taskProcessorPerformanceInfo);

            if ((this.PerformanceReportReceived != null) && this.SubscribedChannels.Contains(MessageBusChannel.PerformanceReport))
            {
                this.PerformanceReportReceived(this, new TaskProcessorPerformanceEventArgs(taskProcessorPerformanceInfo));
            }
        }
Ejemplo n.º 5
0
        /// <inheritdoc />
        public void NotifyPerformanceReport(TaskProcessorPerformanceReport performanceInfo)
        {
            if (performanceInfo == null)
            {
                throw new ArgumentNullException("performanceInfo");
            }

            Trace.WriteLine("ENTER: Notifying task processor '{0}' performance report ...".FormatInvariant(performanceInfo.TaskProcessorId));

            this.provider.PublishMessage(RedisMonitoringMessageBusChannels.PerformanceReportChannel, RedisMessageBusReceiverBase.SerializeTaskProcessorPerformanceInfo(performanceInfo));

            Trace.WriteLine("EXIT: Task processor '{0}' performance report notified.".FormatInvariant(performanceInfo.TaskProcessorId));
        }
Ejemplo n.º 6
0
 /// <inheritdoc />
 public void NotifyPerformanceReport(TaskProcessorPerformanceReport performanceInfo)
 {
     /* Do nothing. */
 }