Skip to content

Commit 59697b2

Browse files
committed
Update csharp generator to include trackPerformance
1 parent 4e64a2c commit 59697b2

File tree

11 files changed

+13792
-4343
lines changed

11 files changed

+13792
-4343
lines changed

telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/expectedCode-supplemental.txt

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ namespace Test
4545
datum.MetricName = "emit_someIntMs";
4646
datum.Unit = Unit.Milliseconds;
4747
datum.Passive = payload.Passive;
48+
datum.TrackPerformance = payload.TrackPerformance;
4849
if (payload.Value.HasValue)
4950
{
5051
datum.Value = payload.Value.Value;
@@ -100,6 +101,7 @@ namespace Test
100101
datum.MetricName = "emit_noUnit";
101102
datum.Unit = Unit.None;
102103
datum.Passive = payload.Passive;
104+
datum.TrackPerformance = payload.TrackPerformance;
103105
if (payload.Value.HasValue)
104106
{
105107
datum.Value = payload.Value.Value;
@@ -155,6 +157,7 @@ namespace Test
155157
datum.MetricName = "emit_someBigBlob";
156158
datum.Unit = Unit.Count;
157159
datum.Passive = payload.Passive;
160+
datum.TrackPerformance = payload.TrackPerformance;
158161
if (payload.Value.HasValue)
159162
{
160163
datum.Value = payload.Value.Value;
@@ -218,6 +221,7 @@ namespace Test
218221
datum.MetricName = "emit_someBigBlob2";
219222
datum.Unit = Unit.Count;
220223
datum.Passive = payload.Passive;
224+
datum.TrackPerformance = payload.TrackPerformance;
221225
if (payload.Value.HasValue)
222226
{
223227
datum.Value = payload.Value.Value;
@@ -281,6 +285,7 @@ namespace Test
281285
datum.MetricName = "emit_someBigOptionalBlob";
282286
datum.Unit = Unit.Count;
283287
datum.Passive = payload.Passive;
288+
datum.TrackPerformance = payload.TrackPerformance;
284289
if (payload.Value.HasValue)
285290
{
286291
datum.Value = payload.Value.Value;
@@ -353,6 +358,63 @@ namespace Test
353358
datum.MetricName = "emit_passive";
354359
datum.Unit = Unit.Count;
355360
datum.Passive = payload.Passive;
361+
datum.TrackPerformance = payload.TrackPerformance;
362+
if (payload.Value.HasValue)
363+
{
364+
datum.Value = payload.Value.Value;
365+
}
366+
else
367+
{
368+
datum.Value = 1;
369+
}
370+
datum.AddMetadata("awsAccount", payload.AwsAccount);
371+
datum.AddMetadata("awsRegion", payload.AwsRegion);
372+
datum.AddMetadata("reason", payload.Reason);
373+
datum.AddMetadata("errorCode", payload.ErrorCode);
374+
datum.AddMetadata("causedBy", payload.CausedBy);
375+
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
376+
datum.AddMetadata("requestId", payload.RequestId);
377+
datum.AddMetadata("requestServiceType", payload.RequestServiceType);
378+
if (payload.Duration.HasValue)
379+
{
380+
datum.AddMetadata("duration", payload.Duration.Value);
381+
}
382+
datum.AddMetadata("locale", payload.Locale);
383+
384+
datum = datum.InvokeTransform(transformDatum);
385+
386+
metrics.Data.Add(datum);
387+
telemetryLogger.Record(metrics);
388+
}
389+
catch (System.Exception e)
390+
{
391+
telemetryLogger.Logger.Error("Error recording telemetry event", e);
392+
System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry");
393+
}
394+
}
395+
396+
/// Records Telemetry Event:
397+
/// Emit a metric that should track the performance
398+
public static void RecordEmitTrackPerformance(this ITelemetryLogger telemetryLogger, EmitTrackPerformance payload, Func<MetricDatum, MetricDatum> transformDatum = null)
399+
{
400+
try
401+
{
402+
var metrics = new Metrics();
403+
if (payload.CreatedOn.HasValue)
404+
{
405+
metrics.CreatedOn = payload.CreatedOn.Value;
406+
}
407+
else
408+
{
409+
metrics.CreatedOn = System.DateTime.Now;
410+
}
411+
metrics.Data = new List<MetricDatum>();
412+
413+
var datum = new MetricDatum();
414+
datum.MetricName = "emit_trackPerformance";
415+
datum.Unit = Unit.Count;
416+
datum.Passive = payload.Passive;
417+
datum.TrackPerformance = payload.TrackPerformance;
356418
if (payload.Value.HasValue)
357419
{
358420
datum.Value = payload.Value.Value;
@@ -395,6 +457,7 @@ namespace Test
395457
public EmitSomeIntMs()
396458
{
397459
this.Passive = false;
460+
this.TrackPerformance = false;
398461
}
399462
}
400463

@@ -405,6 +468,7 @@ namespace Test
405468
public EmitNoUnit()
406469
{
407470
this.Passive = false;
471+
this.TrackPerformance = false;
408472
}
409473
}
410474

@@ -427,6 +491,7 @@ namespace Test
427491
public EmitSomeBigBlob()
428492
{
429493
this.Passive = false;
494+
this.TrackPerformance = false;
430495
}
431496
}
432497

@@ -449,6 +514,7 @@ namespace Test
449514
public EmitSomeBigBlob2()
450515
{
451516
this.Passive = false;
517+
this.TrackPerformance = false;
452518
}
453519
}
454520

@@ -471,6 +537,7 @@ namespace Test
471537
public EmitSomeBigOptionalBlob()
472538
{
473539
this.Passive = false;
540+
this.TrackPerformance = false;
474541
}
475542
}
476543

@@ -481,6 +548,18 @@ namespace Test
481548
public EmitPassive()
482549
{
483550
this.Passive = true;
551+
this.TrackPerformance = false;
552+
}
553+
}
554+
555+
/// Emit a metric that should track the performance
556+
public sealed class EmitTrackPerformance : BaseTelemetryEvent
557+
{
558+
559+
public EmitTrackPerformance()
560+
{
561+
this.Passive = false;
562+
this.TrackPerformance = true;
484563
}
485564
}
486565
}

telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/expectedCode.txt

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ namespace Test
4545
datum.MetricName = "emit_someIntMs";
4646
datum.Unit = Unit.Milliseconds;
4747
datum.Passive = payload.Passive;
48+
datum.TrackPerformance = payload.TrackPerformance;
4849
if (payload.Value.HasValue)
4950
{
5051
datum.Value = payload.Value.Value;
@@ -100,6 +101,7 @@ namespace Test
100101
datum.MetricName = "emit_noUnit";
101102
datum.Unit = Unit.None;
102103
datum.Passive = payload.Passive;
104+
datum.TrackPerformance = payload.TrackPerformance;
103105
if (payload.Value.HasValue)
104106
{
105107
datum.Value = payload.Value.Value;
@@ -155,6 +157,7 @@ namespace Test
155157
datum.MetricName = "emit_someBigBlob";
156158
datum.Unit = Unit.Count;
157159
datum.Passive = payload.Passive;
160+
datum.TrackPerformance = payload.TrackPerformance;
158161
if (payload.Value.HasValue)
159162
{
160163
datum.Value = payload.Value.Value;
@@ -218,6 +221,7 @@ namespace Test
218221
datum.MetricName = "emit_someBigBlob2";
219222
datum.Unit = Unit.Count;
220223
datum.Passive = payload.Passive;
224+
datum.TrackPerformance = payload.TrackPerformance;
221225
if (payload.Value.HasValue)
222226
{
223227
datum.Value = payload.Value.Value;
@@ -281,6 +285,7 @@ namespace Test
281285
datum.MetricName = "emit_someBigOptionalBlob";
282286
datum.Unit = Unit.Count;
283287
datum.Passive = payload.Passive;
288+
datum.TrackPerformance = payload.TrackPerformance;
284289
if (payload.Value.HasValue)
285290
{
286291
datum.Value = payload.Value.Value;
@@ -353,6 +358,63 @@ namespace Test
353358
datum.MetricName = "emit_passive";
354359
datum.Unit = Unit.Count;
355360
datum.Passive = payload.Passive;
361+
datum.TrackPerformance = payload.TrackPerformance;
362+
if (payload.Value.HasValue)
363+
{
364+
datum.Value = payload.Value.Value;
365+
}
366+
else
367+
{
368+
datum.Value = 1;
369+
}
370+
datum.AddMetadata("awsAccount", payload.AwsAccount);
371+
datum.AddMetadata("awsRegion", payload.AwsRegion);
372+
datum.AddMetadata("reason", payload.Reason);
373+
datum.AddMetadata("errorCode", payload.ErrorCode);
374+
datum.AddMetadata("causedBy", payload.CausedBy);
375+
datum.AddMetadata("httpStatusCode", payload.HttpStatusCode);
376+
datum.AddMetadata("requestId", payload.RequestId);
377+
datum.AddMetadata("requestServiceType", payload.RequestServiceType);
378+
if (payload.Duration.HasValue)
379+
{
380+
datum.AddMetadata("duration", payload.Duration.Value);
381+
}
382+
datum.AddMetadata("locale", payload.Locale);
383+
384+
datum = datum.InvokeTransform(transformDatum);
385+
386+
metrics.Data.Add(datum);
387+
telemetryLogger.Record(metrics);
388+
}
389+
catch (System.Exception e)
390+
{
391+
telemetryLogger.Logger.Error("Error recording telemetry event", e);
392+
System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry");
393+
}
394+
}
395+
396+
/// Records Telemetry Event:
397+
/// Emit a metric that should track the performance
398+
public static void RecordEmitTrackPerformance(this ITelemetryLogger telemetryLogger, EmitTrackPerformance payload, Func<MetricDatum, MetricDatum> transformDatum = null)
399+
{
400+
try
401+
{
402+
var metrics = new Metrics();
403+
if (payload.CreatedOn.HasValue)
404+
{
405+
metrics.CreatedOn = payload.CreatedOn.Value;
406+
}
407+
else
408+
{
409+
metrics.CreatedOn = System.DateTime.Now;
410+
}
411+
metrics.Data = new List<MetricDatum>();
412+
413+
var datum = new MetricDatum();
414+
datum.MetricName = "emit_trackPerformance";
415+
datum.Unit = Unit.Count;
416+
datum.Passive = payload.Passive;
417+
datum.TrackPerformance = payload.TrackPerformance;
356418
if (payload.Value.HasValue)
357419
{
358420
datum.Value = payload.Value.Value;
@@ -419,6 +481,7 @@ namespace Test
419481
public EmitSomeIntMs()
420482
{
421483
this.Passive = false;
484+
this.TrackPerformance = false;
422485
}
423486
}
424487

@@ -429,6 +492,7 @@ namespace Test
429492
public EmitNoUnit()
430493
{
431494
this.Passive = false;
495+
this.TrackPerformance = false;
432496
}
433497
}
434498

@@ -451,6 +515,7 @@ namespace Test
451515
public EmitSomeBigBlob()
452516
{
453517
this.Passive = false;
518+
this.TrackPerformance = false;
454519
}
455520
}
456521

@@ -473,6 +538,7 @@ namespace Test
473538
public EmitSomeBigBlob2()
474539
{
475540
this.Passive = false;
541+
this.TrackPerformance = false;
476542
}
477543
}
478544

@@ -495,6 +561,7 @@ namespace Test
495561
public EmitSomeBigOptionalBlob()
496562
{
497563
this.Passive = false;
564+
this.TrackPerformance = false;
498565
}
499566
}
500567

@@ -505,6 +572,18 @@ namespace Test
505572
public EmitPassive()
506573
{
507574
this.Passive = true;
575+
this.TrackPerformance = false;
576+
}
577+
}
578+
579+
/// Emit a metric that should track the performance
580+
public sealed class EmitTrackPerformance : BaseTelemetryEvent
581+
{
582+
583+
public EmitTrackPerformance()
584+
{
585+
this.Passive = false;
586+
this.TrackPerformance = true;
508587
}
509588
}
510589
}

telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/sampleDefinitions.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
"unit": "Count",
7979
"description": "Emit a passive metric",
8080
"passive": true
81+
},
82+
{
83+
"name": "emit_trackPerformance",
84+
"unit": "Count",
85+
"description": "Emit a metric that should track the performance",
86+
"trackPerformance": true
8187
}
8288
]
8389
}

telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,13 @@ private CodeTypeDeclaration CreateMetricDataClass(Metric metric)
295295

296296
// Initialize the passive field based on this metric declaration
297297
// Generate: this.Passive = true/false;
298-
var valueFieldRef = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "Passive");
299-
typeConstructor.Statements.Add(new CodeAssignStatement(valueFieldRef, new CodePrimitiveExpression(metric.passive)));
298+
var passiveFieldRef = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "Passive");
299+
typeConstructor.Statements.Add(new CodeAssignStatement(passiveFieldRef, new CodePrimitiveExpression(metric.passive)));
300+
301+
// Initialize the TrackPerformance field based on this metric declaration
302+
// Generate: this.TrackPerformance = true/false;
303+
var performanceFieldRef = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "TrackPerformance");
304+
typeConstructor.Statements.Add(new CodeAssignStatement(performanceFieldRef, new CodePrimitiveExpression(metric.trackPerformance)));
300305

301306
cls.Members.Add(typeConstructor);
302307

@@ -399,6 +404,7 @@ private CodeMemberMethod CreateRecordMetricMethodByDataClass(Metric metric)
399404
tryStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(datum, "MetricName"), new CodePrimitiveExpression(metric.name)));
400405
tryStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(datum, "Unit"), GetMetricUnitExpression(metric)));
401406
tryStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(datum, "Passive"), new CodeFieldReferenceExpression(payload, "Passive")));
407+
tryStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(datum, "TrackPerformance"), new CodeFieldReferenceExpression(payload, "TrackPerformance")));
402408

403409
// Set Datum.Value to (payload.Value ?? 1)
404410
var payloadValue = new CodeFieldReferenceExpression(payload, "Value");

telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/Models/Metric.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ public class Metric
88
public Metadata[] metadata { get; set; }
99
public string unit { get; set; }
1010
public bool passive { get; set; }
11+
public bool trackPerformance { get; set; }
1112
}
1213
}

0 commit comments

Comments
 (0)