Skip to content

Commit 5e58b21

Browse files
committed
Add SolutionSessionId
1 parent e40f3f8 commit 5e58b21

File tree

4 files changed

+41
-22
lines changed

4 files changed

+41
-22
lines changed

src/EditorFeatures/Test/EditAndContinue/EditAndContinueWorkspaceServiceTests.cs

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace Microsoft.CodeAnalysis.EditAndContinue.UnitTests
4040
public sealed partial class EditAndContinueWorkspaceServiceTests : TestBase
4141
{
4242
private static readonly TestComposition s_composition = FeaturesTestCompositions.Features;
43+
private static readonly Guid s_telemetryId = Guid.Parse("00000000-1111-2222-3333-000000000000");
4344

4445
private static readonly ActiveStatementSpanProvider s_noActiveSpans =
4546
(_, _, _) => new(ImmutableArray<ActiveStatementSpan>.Empty);
@@ -65,7 +66,7 @@ public EditAndContinueWorkspaceServiceTests()
6566

6667
private TestWorkspace CreateWorkspace(out Solution solution, out EditAndContinueWorkspaceService service, Type[] additionalParts = null)
6768
{
68-
var workspace = new TestWorkspace(composition: s_composition.AddParts(additionalParts));
69+
var workspace = new TestWorkspace(composition: s_composition.AddParts(additionalParts), solutionTelemetryId: s_telemetryId);
6970
solution = workspace.CurrentSolution;
7071
service = GetEditAndContinueService(workspace);
7172
return workspace;
@@ -619,7 +620,7 @@ public async Task DifferentDocumentWithSameContent()
619620

620621
AssertEx.Equal(new[]
621622
{
622-
"Debugging_EncSession: SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1"
623+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1"
623624
}, _telemetryLog);
624625
}
625626

@@ -689,7 +690,7 @@ public async Task DesignTimeOnlyDocument()
689690

690691
AssertEx.Equal(new[]
691692
{
692-
"Debugging_EncSession: SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1"
693+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1"
693694
}, _telemetryLog);
694695
}
695696

@@ -859,7 +860,7 @@ public async Task ErrorReadingModuleFile(bool breakMode)
859860
{
860861
AssertEx.Equal(new[]
861862
{
862-
"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=2",
863+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=2",
863864
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=1|InBreakState=True|Capabilities=31",
864865
"Debugging_EncSession_EditSession_EmitDeltaErrorId: SessionId=1|EditSessionId=2|ErrorId=ENC1001"
865866
}, _telemetryLog);
@@ -868,7 +869,7 @@ public async Task ErrorReadingModuleFile(bool breakMode)
868869
{
869870
AssertEx.Equal(new[]
870871
{
871-
"Debugging_EncSession: SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=1|EmptyHotReloadSessionCount=0",
872+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=1|EmptyHotReloadSessionCount=0",
872873
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=1|InBreakState=False|Capabilities=31",
873874
"Debugging_EncSession_EditSession_EmitDeltaErrorId: SessionId=1|EditSessionId=2|ErrorId=ENC1001"
874875
}, _telemetryLog);
@@ -926,7 +927,7 @@ public async Task ErrorReadingPdbFile()
926927

927928
AssertEx.Equal(new[]
928929
{
929-
"Debugging_EncSession: SessionId=1|SessionCount=0|EmptySessionCount=1|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1"
930+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=0|EmptySessionCount=1|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1"
930931
}, _telemetryLog);
931932
}
932933

@@ -985,7 +986,7 @@ public async Task ErrorReadingSourceFile()
985986

986987
AssertEx.Equal(new[]
987988
{
988-
"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
989+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
989990
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=0|InBreakState=True|Capabilities=31"
990991
}, _telemetryLog);
991992
}
@@ -1046,15 +1047,15 @@ public async Task FileAdded(bool breakMode)
10461047
{
10471048
AssertEx.Equal(new[]
10481049
{
1049-
"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=2",
1050+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=2",
10501051
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=0|InBreakState=True|Capabilities=31"
10511052
}, _telemetryLog);
10521053
}
10531054
else
10541055
{
10551056
AssertEx.Equal(new[]
10561057
{
1057-
"Debugging_EncSession: SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=1|EmptyHotReloadSessionCount=0",
1058+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=1|EmptyHotReloadSessionCount=0",
10581059
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=0|InBreakState=False|Capabilities=31"
10591060
}, _telemetryLog);
10601061
}
@@ -1121,7 +1122,7 @@ void M()
11211122

11221123
AssertEx.Equal(new[]
11231124
{
1124-
"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
1125+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
11251126
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=1|InBreakState=True|Capabilities=31",
11261127
"Debugging_EncSession_EditSession_EmitDeltaErrorId: SessionId=1|EditSessionId=2|ErrorId=ENC2016"
11271128
}, _telemetryLog);
@@ -1221,7 +1222,7 @@ public async Task RudeEdits(bool breakMode)
12211222
{
12221223
AssertEx.Equal(new[]
12231224
{
1224-
"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=2",
1225+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=2",
12251226
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=True|HadValidChanges=False|HadValidInsignificantChanges=False|RudeEditsCount=1|EmitDeltaErrorIdCount=0|InBreakState=True|Capabilities=31",
12261227
"Debugging_EncSession_EditSession_RudeEdit: SessionId=1|EditSessionId=2|RudeEditKind=20|RudeEditSyntaxKind=8875|RudeEditBlocking=True"
12271228
}, _telemetryLog);
@@ -1230,7 +1231,7 @@ public async Task RudeEdits(bool breakMode)
12301231
{
12311232
AssertEx.Equal(new[]
12321233
{
1233-
"Debugging_EncSession: SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=1|EmptyHotReloadSessionCount=0",
1234+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=1|EmptyHotReloadSessionCount=0",
12341235
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=True|HadValidChanges=False|HadValidInsignificantChanges=False|RudeEditsCount=1|EmitDeltaErrorIdCount=0|InBreakState=False|Capabilities=31",
12351236
"Debugging_EncSession_EditSession_RudeEdit: SessionId=1|EditSessionId=2|RudeEditKind=20|RudeEditSyntaxKind=8875|RudeEditBlocking=True"
12361237
}, _telemetryLog);
@@ -1365,7 +1366,7 @@ public async Task RudeEdits_DocumentOutOfSync(bool breakMode)
13651366
{
13661367
AssertEx.Equal(new[]
13671368
{
1368-
"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=2",
1369+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=2",
13691370
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=True|HadValidChanges=False|HadValidInsignificantChanges=False|RudeEditsCount=1|EmitDeltaErrorIdCount=0|InBreakState=True|Capabilities=31",
13701371
"Debugging_EncSession_EditSession_RudeEdit: SessionId=1|EditSessionId=2|RudeEditKind=20|RudeEditSyntaxKind=8875|RudeEditBlocking=True"
13711372
}, _telemetryLog);
@@ -1374,7 +1375,7 @@ public async Task RudeEdits_DocumentOutOfSync(bool breakMode)
13741375
{
13751376
AssertEx.Equal(new[]
13761377
{
1377-
"Debugging_EncSession: SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=1|EmptyHotReloadSessionCount=0",
1378+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=1|EmptyHotReloadSessionCount=0",
13781379
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=True|HadValidChanges=False|HadValidInsignificantChanges=False|RudeEditsCount=1|EmitDeltaErrorIdCount=0|InBreakState=False|Capabilities=31",
13791380
"Debugging_EncSession_EditSession_RudeEdit: SessionId=1|EditSessionId=2|RudeEditKind=20|RudeEditSyntaxKind=8875|RudeEditBlocking=True"
13801381
}, _telemetryLog);
@@ -1525,7 +1526,7 @@ public async Task SyntaxError()
15251526

15261527
AssertEx.Equal(new[]
15271528
{
1528-
"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
1529+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
15291530
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=True|HadRudeEdits=False|HadValidChanges=False|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=0|InBreakState=True|Capabilities=31"
15301531
}, _telemetryLog);
15311532
}
@@ -1572,7 +1573,7 @@ public async Task SemanticError()
15721573

15731574
AssertEx.Equal(new[]
15741575
{
1575-
"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
1576+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
15761577
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=1|InBreakState=True|Capabilities=31",
15771578
"Debugging_EncSession_EditSession_EmitDeltaErrorId: SessionId=1|EditSessionId=2|ErrorId=CS0266"
15781579
}, _telemetryLog);
@@ -1932,7 +1933,7 @@ public async Task ValidSignificantChange_EmitError()
19321933

19331934
AssertEx.Equal(new[]
19341935
{
1935-
"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
1936+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
19361937
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=1|InBreakState=True|Capabilities=31",
19371938
"Debugging_EncSession_EditSession_EmitDeltaErrorId: SessionId=1|EditSessionId=2|ErrorId=CS8055"
19381939
}, _telemetryLog);
@@ -2343,15 +2344,15 @@ void ValidateDelta(ManagedModuleUpdate delta)
23432344
{
23442345
AssertEx.Equal(new[]
23452346
{
2346-
$"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount={(commitUpdate ? 3 : 2)}",
2347+
$"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount={(commitUpdate ? 3 : 2)}",
23472348
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=0|InBreakState=True|Capabilities=31",
23482349
}, _telemetryLog);
23492350
}
23502351
else
23512352
{
23522353
AssertEx.Equal(new[]
23532354
{
2354-
$"Debugging_EncSession: SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=1|EmptyHotReloadSessionCount={(commitUpdate ? 1 : 0)}",
2355+
$"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=0|EmptySessionCount=0|HotReloadSessionCount=1|EmptyHotReloadSessionCount={(commitUpdate ? 1 : 0)}",
23552356
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=0|InBreakState=False|Capabilities=31"
23562357
}, _telemetryLog);
23572358
}
@@ -3033,7 +3034,7 @@ public async Task ValidSignificantChange_BaselineCreationFailed_AssemblyReadErro
30333034

30343035
AssertEx.Equal(new[]
30353036
{
3036-
"Debugging_EncSession: SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
3037+
"Debugging_EncSession: SolutionSessionId=00000000-1111-2222-3333-000000000000|SessionId=1|SessionCount=1|EmptySessionCount=0|HotReloadSessionCount=0|EmptyHotReloadSessionCount=1",
30373038
"Debugging_EncSession_EditSession: SessionId=1|EditSessionId=2|HadCompilationErrors=False|HadRudeEdits=False|HadValidChanges=True|HadValidInsignificantChanges=False|RudeEditsCount=0|EmitDeltaErrorIdCount=1|InBreakState=True|Capabilities=31",
30383039
"Debugging_EncSession_EditSession_EmitDeltaErrorId: SessionId=1|EditSessionId=2|ErrorId=ENC1001"
30393040
}, _telemetryLog);

src/EditorFeatures/TestUtilities/Workspaces/TestWorkspace.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,19 @@ public partial class TestWorkspace : Workspace
5555
private readonly Dictionary<string, ITextBuffer2> _createdTextBuffers = new();
5656
private readonly string _workspaceKind;
5757

58-
public TestWorkspace(ExportProvider? exportProvider = null, TestComposition? composition = null, string? workspaceKind = WorkspaceKind.Host, bool disablePartialSolutions = true, bool ignoreUnchangeableDocumentsWhenApplyingChanges = true)
58+
public TestWorkspace(
59+
ExportProvider? exportProvider = null,
60+
TestComposition? composition = null,
61+
string? workspaceKind = WorkspaceKind.Host,
62+
Guid solutionTelemetryId = default,
63+
bool disablePartialSolutions = true,
64+
bool ignoreUnchangeableDocumentsWhenApplyingChanges = true)
5965
: base(GetHostServices(exportProvider, composition), workspaceKind ?? WorkspaceKind.Host)
6066
{
6167
Contract.ThrowIfTrue(exportProvider != null && composition != null);
6268

69+
SetCurrentSolution(CreateSolution(SolutionInfo.Create(SolutionId.CreateNewId(), VersionStamp.Create()).WithTelemetryId(solutionTelemetryId)));
70+
6371
this.TestHookPartialSolutionsDisabled = disablePartialSolutions;
6472
this.ExportProvider = exportProvider ?? GetComposition(composition).ExportProviderFactory.CreateExportProvider();
6573
_workspaceKind = workspaceKind ?? WorkspaceKind.Host;

src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ internal sealed class DebuggingSession : IDisposable
8383
/// </summary>
8484
internal readonly bool ReportDiagnostics;
8585

86-
private readonly DebuggingSessionTelemetry _telemetry = new();
86+
private readonly DebuggingSessionTelemetry _telemetry;
8787
private readonly EditSessionTelemetry _editSessionTelemetry = new();
8888

8989
private PendingSolutionUpdate? _pendingUpdate;
@@ -105,6 +105,7 @@ internal DebuggingSession(
105105
{
106106
_compilationOutputsProvider = compilationOutputsProvider;
107107
_reportTelemetry = ReportTelemetry;
108+
_telemetry = new DebuggingSessionTelemetry(solution.State.SolutionAttributes.TelemetryId);
108109

109110
Id = id;
110111
DebuggerService = debuggerService;

src/Features/Core/Portable/EditAndContinue/DebuggingSessionTelemetry.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ internal sealed class DebuggingSessionTelemetry
1313
{
1414
internal readonly struct Data
1515
{
16+
public readonly Guid SolutionSessionId;
1617
public readonly ImmutableArray<EditSessionTelemetry.Data> EditSessionData;
1718
public readonly int EmptyEditSessionCount;
1819
public readonly int EmptyHotReloadEditSessionCount;
1920

2021
public Data(DebuggingSessionTelemetry telemetry)
2122
{
23+
SolutionSessionId = telemetry._solutionSessionId;
2224
EditSessionData = telemetry._editSessionData.ToImmutableArray();
2325
EmptyEditSessionCount = telemetry._emptyEditSessionCount;
2426
EmptyHotReloadEditSessionCount = telemetry._emptyHotReloadEditSessionCount;
@@ -27,10 +29,16 @@ public Data(DebuggingSessionTelemetry telemetry)
2729

2830
private readonly object _guard = new();
2931

32+
private readonly Guid _solutionSessionId;
3033
private readonly List<EditSessionTelemetry.Data> _editSessionData = new();
3134
private int _emptyEditSessionCount;
3235
private int _emptyHotReloadEditSessionCount;
3336

37+
public DebuggingSessionTelemetry(Guid solutionSessionId)
38+
{
39+
_solutionSessionId = solutionSessionId;
40+
}
41+
3442
public Data GetDataAndClear()
3543
{
3644
lock (_guard)
@@ -82,6 +90,7 @@ public static void Log(Data data, Action<FunctionId, LogMessage> log, Func<int>
8290

8391
log(FunctionId.Debugging_EncSession, KeyValueLogMessage.Create(map =>
8492
{
93+
map["SolutionSessionId"] = data.SolutionSessionId;
8594
map[SessionId] = debugSessionId;
8695
map["SessionCount"] = data.EditSessionData.Count(session => session.InBreakState);
8796
map["EmptySessionCount"] = data.EmptyEditSessionCount;

0 commit comments

Comments
 (0)