Skip to content

Commit 635fbf0

Browse files
author
kgrudzien
committed
Generating output.csv file for further processing
1 parent fd7f215 commit 635fbf0

File tree

1 file changed

+38
-4
lines changed
  • data-api/csharp-ws/CoinAPI.WebSocket.Stats.Console

1 file changed

+38
-4
lines changed

data-api/csharp-ws/CoinAPI.WebSocket.Stats.Console/Program.cs

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using CoinAPI.WebSocket.V1;
33
using CoinAPI.WebSocket.V1.DataModels;
44
using Microsoft.Extensions.Configuration;
5+
using Microsoft.Extensions.DependencyInjection;
56
using Microsoft.Extensions.Hosting;
67
using Serilog;
78
using System.Diagnostics;
@@ -185,6 +186,32 @@ void ProcessMsg(DateTime? time_exchange, DateTime? time_coinapi)
185186

186187
Task.Run(async () =>
187188
{
189+
string basePath = "output";
190+
string extension = ".csv";
191+
192+
string csvFilePath = basePath + extension;
193+
int counter = 1;
194+
while (File.Exists(csvFilePath))
195+
{
196+
csvFilePath = $"{basePath}_{counter}{extension}";
197+
counter++;
198+
}
199+
200+
using (StreamWriter sw = File.CreateText(csvFilePath))
201+
{
202+
sw.WriteLine("Parameters:");
203+
sw.WriteLine($"Endpoint Name: {endpoint_name}");
204+
sw.WriteLine($"Subscribe Data Type: {subscribe_data_type}");
205+
sw.WriteLine($"Asset: {asset}");
206+
sw.WriteLine($"Symbol: {symbol}");
207+
sw.WriteLine($"Exchange: {exchange}");
208+
sw.WriteLine($"Supress heartbeat: {supress_hb}");
209+
sw.WriteLine($"Latency type: {latency_type}");
210+
sw.WriteLine();
211+
sw.WriteLine("Timestamp;Messages;BytesReceived;WaitingCPU%;ParsingCPU%;ProcessingCPU%;LatencyMin(ms);LatencyMax(ms)");
212+
}
213+
214+
188215
if (!wsClient.ConnectedEvent.WaitOne(10000)) return;
189216

190217
var iterations = 0;
@@ -242,9 +269,9 @@ void ProcessMsg(DateTime? time_exchange, DateTime? time_coinapi)
242269
var deltaCpuTime = deltaCpuWaiting + deltaCpuParsing + deltaCpuHandling;
243270

244271

245-
var cpuWaitingPercent = 100 * deltaCpuWaiting.TotalMilliseconds / deltaCpuTime.TotalMilliseconds;
246-
var cpuParsingPercent = 100 * deltaCpuParsing.TotalMilliseconds / deltaCpuTime.TotalMilliseconds;
247-
var cpuHandlingPercent = 100 * deltaCpuHandling.TotalMilliseconds / deltaCpuTime.TotalMilliseconds;
272+
var cpuWaitingPercent = deltaCpuWaiting.TotalMilliseconds / deltaCpuTime.TotalMilliseconds;
273+
var cpuParsingPercent = deltaCpuParsing.TotalMilliseconds / deltaCpuTime.TotalMilliseconds;
274+
var cpuHandlingPercent = deltaCpuHandling.TotalMilliseconds / deltaCpuTime.TotalMilliseconds;
248275

249276

250277
var msgCountOnInterval = msgCount - msgCountPrev;
@@ -255,7 +282,7 @@ void ProcessMsg(DateTime? time_exchange, DateTime? time_coinapi)
255282

256283
strbld.AppendFormat($"Messages: {msgCountOnInterval,-8}");
257284
strbld.AppendFormat($"| Recv bytes: {bytesCountOnInterval,-8}");
258-
strbld.Append($"| CPU: wait: {cpuWaitingPercent:F2}% | parse: {cpuParsingPercent:F2}% | process: {cpuHandlingPercent:F2}%");
285+
strbld.Append($"| CPU: wait: {cpuWaitingPercent:P} | parse: {cpuParsingPercent:P} | process: {cpuHandlingPercent:P}");
259286

260287
if (latencies.Any())
261288
{
@@ -264,6 +291,13 @@ void ProcessMsg(DateTime? time_exchange, DateTime? time_coinapi)
264291
}
265292

266293
Serilog.Log.Information(strbld.ToString());
294+
295+
using (StreamWriter sw = File.AppendText(csvFilePath))
296+
{
297+
sw.WriteLine($"\"{DateTime.UtcNow:yyyy-MM-dd HH:mm:ss}\";{msgCountOnInterval};{bytesCountOnInterval};{cpuWaitingPercent:F2};{cpuParsingPercent:F2};{cpuHandlingPercent:F2};{(latencies.Any() ? latencies.Min().TotalMilliseconds : 0):F2};{(latencies.Any() ? latencies.Max().TotalMilliseconds : 0):F2}");
298+
}
299+
300+
267301
}
268302
}
269303
);

0 commit comments

Comments
 (0)