##// END OF EJS Templates
working on diagnostics
cin -
r194:d45bdf510514 v2
parent child
Show More
@@ -132,7 +132,7 namespace Implab.Test {
132 ShouldThrow(() => p.Join(1000));
132 ShouldThrow(() => p.Join(1000));
133 Assert.AreEqual(ExecutionState.Failed, comp.State);
133 Assert.AreEqual(ExecutionState.Failed, comp.State);
134
134
135 Assert.IsInstanceOfType(comp.LastError, typeof(OperationCanceledException));
135 Assert.IsTrue(comp.LastError is OperationCanceledException);
136
136
137 comp.Dispose();
137 comp.Dispose();
138 }
138 }
@@ -185,7 +185,7 namespace Implab.Test {
185 p.Cancel();
185 p.Cancel();
186 ShouldThrow(() => p.Join(1000));
186 ShouldThrow(() => p.Join(1000));
187 Assert.AreEqual(ExecutionState.Failed, comp.State);
187 Assert.AreEqual(ExecutionState.Failed, comp.State);
188 Assert.IsInstanceOfType(comp.LastError, typeof(OperationCanceledException));
188 Assert.IsTrue(comp.LastError is OperationCanceledException);
189
189
190 comp.Dispose();
190 comp.Dispose();
191 }
191 }
@@ -59,8 +59,8 namespace Implab.Diagnostics {
59
59
60 public void UnsubscribeAll() {
60 public void UnsubscribeAll() {
61 lock (m_subscriptions) {
61 lock (m_subscriptions) {
62 foreach (var subscription in m_subscriptions.Values)
62 foreach (var remove in m_subscriptions.Values)
63 subscription();
63 remove();
64 m_subscriptions.Clear();
64 m_subscriptions.Clear();
65 }
65 }
66 }
66 }
@@ -69,7 +69,7 namespace Implab.Diagnostics {
69 this,
69 this,
70 new LogEventArgs<TEvent>(
70 new LogEventArgs<TEvent>(
71 data,
71 data,
72 Name,
72 this,
73 traceContext.ThreadId,
73 traceContext.ThreadId,
74 traceContext.CurrentOperation,
74 traceContext.CurrentOperation,
75 traceContext.CurrentOperation.Duration
75 traceContext.CurrentOperation.Duration
@@ -77,5 +77,9 namespace Implab.Diagnostics {
77 );
77 );
78 }
78 }
79 }
79 }
80
81 public override string ToString() {
82 return Name;
80 }
83 }
81 }
84 }
85 }
@@ -2,7 +2,7
2
2
3 namespace Implab.Diagnostics {
3 namespace Implab.Diagnostics {
4 public class LogEventArgs : EventArgs {
4 public class LogEventArgs : EventArgs {
5 public string ChannelName {
5 public object Channel {
6 get;
6 get;
7 private set;
7 private set;
8 }
8 }
@@ -18,8 +18,8 namespace Implab.Diagnostics {
18 get;
18 get;
19 private set;
19 private set;
20 }
20 }
21 public LogEventArgs(string channelName, int threadId, LogicalOperation operation, int timeOffset) {
21 public LogEventArgs(object channel, int threadId, LogicalOperation operation, int timeOffset) {
22 ChannelName = channelName;
22 Channel = channel;
23 ThreadId = threadId;
23 ThreadId = threadId;
24 Operation = operation;
24 Operation = operation;
25 OperationTimeOffset = timeOffset;
25 OperationTimeOffset = timeOffset;
@@ -5,7 +5,7
5 private set;
5 private set;
6 }
6 }
7
7
8 public LogEventArgs(TEvent value,string channelName, int threadId, LogicalOperation operation, int timeOffset) : base(channelName, threadId, operation, timeOffset) {
8 public LogEventArgs(TEvent value,object channel, int threadId, LogicalOperation operation, int timeOffset) : base(channel, threadId, operation, timeOffset) {
9 Value = value;
9 Value = value;
10 }
10 }
11 }
11 }
@@ -18,7 +18,7 namespace Implab.Diagnostics {
18 var msg = new StringBuilder();
18 var msg = new StringBuilder();
19 for (int i = 0; i < args.Operation.Level; i++)
19 for (int i = 0; i < args.Operation.Level; i++)
20 msg.Append(" ");
20 msg.Append(" ");
21 msg.AppendFormat("[{0}]:{1}: {2}", args.ThreadId, args.ChannelName, entry);
21 msg.AppendFormat("[{0}]:{1}: {2}", args.ThreadId, args.Channel, entry);
22
22
23 lock (m_textWriter) {
23 lock (m_textWriter) {
24 if (!IsDisposed) {
24 if (!IsDisposed) {
@@ -77,7 +77,6
77 <ItemGroup>
77 <ItemGroup>
78 <Compile Include="CustomEqualityComparer.cs" />
78 <Compile Include="CustomEqualityComparer.cs" />
79 <Compile Include="Diagnostics\ConsoleTraceListener.cs" />
79 <Compile Include="Diagnostics\ConsoleTraceListener.cs" />
80 <Compile Include="Diagnostics\EventText.cs" />
81 <Compile Include="Diagnostics\LogChannel.cs" />
80 <Compile Include="Diagnostics\LogChannel.cs" />
82 <Compile Include="Diagnostics\LogicalOperation.cs" />
81 <Compile Include="Diagnostics\LogicalOperation.cs" />
83 <Compile Include="Diagnostics\TextFileListener.cs" />
82 <Compile Include="Diagnostics\TextFileListener.cs" />
@@ -4,39 +4,42 using System.Threading.Tasks;
4 using Implab.Formats.JSON;
4 using Implab.Formats.JSON;
5 using System.IO;
5 using System.IO;
6 using System.Text.Json;
6 using System.Text.Json;
7 using System.Diagnostics;
8 using Implab.Parallels;
9 using System.Threading;
7
10
8 namespace MonoPlay {
11 namespace MonoPlay {
9 class MainClass {
12 class MainClass {
10
13
11
14
12 public static void Main(string[] args) {
15 public static void Main(string[] args) {
13 if (args == null)
16 var pool = new WorkerPool(10);
14 throw new ArgumentNullException("args");
15 int t1, t2;
16
17
17 for (int i = 0; i < 2; i++) {
18 var listerner = new ConsoleTraceListener();
18 t1 = Environment.TickCount;
19 listerner.TraceOutputOptions = TraceOptions.LogicalOperationStack;
19 int elements =0;
20 Trace.Listeners.Add(listerner);
20 using (var reader = new JSONParser(File.OpenText("/home/sergey/temp/citylots.json"))) {
21
21 while (reader.Read())
22 Trace.CorrelationManager.StartLogicalOperation("Main");
22 elements++;
23 }
24
23
25 t2 = Environment.TickCount;
24 var d = pool.Invoke(() => {
26 Console.WriteLine("attempt {0} done: {1} ms, {2:.00} Mb, {3} GC, Elements: {4}",i+1, t2 - t1, GC.GetTotalMemory(false) / (1024*1024), GC.CollectionCount(0), elements );
25 Trace.CorrelationManager.StartLogicalOperation("Worker");
27 }
26 Thread.Sleep(100);
27 Trace.TraceInformation("worker done");
28 Trace.CorrelationManager.StopLogicalOperation();
29 });
28
30
29 Console.WriteLine("Syste.Text.Json");
31 ThreadPool.QueueUserWorkItem((o) => {
30 var paraser = new JsonParser();
32 Trace.CorrelationManager.StartLogicalOperation("Thread");
31 for (int i = 0; i < 2; i++) {
33 Thread.Sleep(100);
32 t1 = Environment.TickCount;
34 Trace.TraceInformation("thread done");
33 using (var reader = File.OpenText("/home/sergey/temp/citylots.json")) {
35 Trace.CorrelationManager.StopLogicalOperation();
34 paraser.Parse(reader);
36 });
35 }
36
37
37 t2 = Environment.TickCount;
38 Trace.TraceInformation("main done");
38 Console.WriteLine("attempt {0} done: {1} ms, {2:.00} Mb, {3} GC, ",i+1, t2 - t1, GC.GetTotalMemory(false) / (1024*1024), GC.CollectionCount(0));
39 Trace.CorrelationManager.StopLogicalOperation();
39 }
40
41 d.Join();
42
40
43
41
44
42 }
45 }
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 3
Under Review
author

Auto status change to "Under Review"

Approved
author

ok, latest stable version should be in default

You need to be logged in to leave comments. Login now