/// <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()); }
/// <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)); } }
/// <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)); }
/// <inheritdoc /> public void NotifyPerformanceReport(TaskProcessorPerformanceReport performanceInfo) { /* Do nothing. */ }