Skip to content

Commit 04aed2f

Browse files
committed
Use separate action descriptor types
1 parent ee5072f commit 04aed2f

File tree

18 files changed

+135
-46
lines changed

18 files changed

+135
-46
lines changed

src/Tests/CollectionRuleActions.UnitTests/ActionListExecutorTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ await TestHostHelper.CreateCollectionRulesHost(_outputHelper, rootOptions =>
186186
Assert.Throws<OptionsValidationException>(() => host.Services.GetRequiredService<IOptionsMonitor<CollectionRuleOptions>>().Get(DefaultRuleName));
187187
}, serviceCollection =>
188188
{
189-
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions>(nameof(PassThroughAction));
189+
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions, PassThroughActionDescriptor>();
190190
});
191191
}
192192

src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon/CollectionRules/Actions/ActionsServiceCollectionExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ internal static class ActionsServiceCollectionExtensions
1414
public static IServiceCollection RegisterTestAction(this IServiceCollection services, CallbackActionService callback)
1515
{
1616
services.AddSingleton(callback);
17-
services.RegisterCollectionRuleAction<CallbackActionFactory, BaseRecordOptions>(CallbackAction.ActionName);
17+
services.RegisterCollectionRuleAction<CallbackActionFactory, BaseRecordOptions, CallbackActionDescriptor>();
1818

1919
return services;
2020
}
2121

2222
public static IServiceCollection RegisterDelayedTestAction(this IServiceCollection services, CallbackActionService callback)
2323
{
2424
services.AddSingleton(callback);
25-
services.RegisterCollectionRuleAction<DelayedCallbackActionFactory, BaseRecordOptions>(DelayedCallbackAction.ActionName);
25+
services.RegisterCollectionRuleAction<DelayedCallbackActionFactory, BaseRecordOptions, DelayedCallbackActionDescriptor>();
2626

2727
return services;
2828
}

src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon/CollectionRules/Actions/CallbackAction.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using Microsoft.Diagnostics.Monitoring.WebApi;
55
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Actions;
6+
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Configuration;
67
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Options.Actions;
78
using System;
89
using System.Collections.Generic;
@@ -73,6 +74,13 @@ public ICollectionRuleAction Create(IProcessInfo processInfo, BaseRecordOptions
7374
}
7475
}
7576

77+
internal sealed class CallbackActionDescriptor : ICollectionRuleActionDescriptor
78+
{
79+
public string ActionName => CallbackAction.ActionName;
80+
public Type OptionsType => typeof(BaseRecordOptions);
81+
public Type FactoryType => typeof(CallbackActionFactory);
82+
}
83+
7684
internal sealed class DelayedCallbackAction : ICollectionRuleAction
7785
{
7886
public const string ActionName = nameof(DelayedCallbackAction);
@@ -111,6 +119,13 @@ public Task<CollectionRuleActionResult> WaitForCompletionAsync(CancellationToken
111119
}
112120
}
113121

122+
internal sealed class DelayedCallbackActionDescriptor : ICollectionRuleActionDescriptor
123+
{
124+
public string ActionName => DelayedCallbackAction.ActionName;
125+
public Type OptionsType => typeof(BaseRecordOptions);
126+
public Type FactoryType => typeof(DelayedCallbackActionFactory);
127+
}
128+
114129
internal sealed class CallbackActionService
115130
{
116131
public TimeProvider TimeProvider { get; }

src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon/CollectionRules/Actions/PassThroughAction.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33

44
using Microsoft.Diagnostics.Monitoring.WebApi;
55
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Actions;
6+
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Configuration;
67
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Options.Actions;
8+
using System;
79
using System.Collections.Generic;
810
using System.Threading;
911
using System.Threading.Tasks;
@@ -53,6 +55,13 @@ public Task<CollectionRuleActionResult> WaitForCompletionAsync(CancellationToken
5355
}
5456
}
5557

58+
internal sealed class PassThroughActionDescriptor : ICollectionRuleActionDescriptor
59+
{
60+
public string ActionName => nameof(PassThroughAction);
61+
public Type OptionsType => typeof(PassThroughOptions);
62+
public Type FactoryType => typeof(PassThroughActionFactory);
63+
}
64+
5665
internal sealed record class PassThroughOptions : BaseRecordOptions
5766
{
5867
[ActionOptionsDependencyProperty]

src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/ActionDependencyAnalyzerTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ await TestHostHelper.CreateCollectionRulesHost(_outputHelper, rootOptions =>
135135
Assert.Equal("Output a1input3 trail", a2output3);
136136
}, serviceCollection =>
137137
{
138-
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions>(nameof(PassThroughAction));
138+
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions, PassThroughActionDescriptor>();
139139
});
140140
}
141141

@@ -174,7 +174,7 @@ await TestHostHelper.CreateCollectionRulesHost(_outputHelper, rootOptions =>
174174

175175
}, serviceCollection =>
176176
{
177-
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions>(nameof(PassThroughAction));
177+
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions, PassThroughActionDescriptor>();
178178
});
179179
}
180180

@@ -211,7 +211,7 @@ await TestHostHelper.CreateCollectionRulesHost(_outputHelper, rootOptions =>
211211
}, serviceCollection =>
212212
{
213213
serviceCollection.AddSingleton<TimeProvider, MockTimeProvider>();
214-
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions>(nameof(PassThroughAction));
214+
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions, PassThroughActionDescriptor>();
215215
});
216216
}
217217

@@ -254,7 +254,7 @@ await TestHostHelper.CreateCollectionRulesHost(_outputHelper, rootOptions =>
254254

255255
}, serviceCollection =>
256256
{
257-
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions>(nameof(PassThroughAction));
257+
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions, PassThroughActionDescriptor>();
258258
}, loggingBuilder =>
259259
{
260260
loggingBuilder.AddProvider(new TestLoggerProvider(record));
@@ -290,7 +290,7 @@ await TestHostHelper.CreateCollectionRulesHost(_outputHelper, rootOptions =>
290290

291291
}, serviceCollection =>
292292
{
293-
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions>(nameof(PassThroughAction));
293+
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions, PassThroughActionDescriptor>();
294294
});
295295
}
296296

@@ -352,7 +352,7 @@ await TestHostHelper.CreateCollectionRulesHost(_outputHelper, rootOptions =>
352352
Assert.Equal("Output a1input3 trail", a2output3);
353353
}, serviceCollection =>
354354
{
355-
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions>(nameof(PassThroughAction));
355+
serviceCollection.RegisterCollectionRuleAction<PassThroughActionFactory, PassThroughOptions, PassThroughActionDescriptor>();
356356
});
357357
}
358358
}

src/Tools/dotnet-monitor/CollectionRules/Actions/CollectDumpAction.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using Microsoft.Diagnostics.Monitoring.WebApi;
55
using Microsoft.Diagnostics.Monitoring.WebApi.Models;
6+
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Configuration;
67
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Options.Actions;
78
using Microsoft.Extensions.DependencyInjection;
89
using System;
@@ -66,4 +67,11 @@ protected override EgressOperation CreateArtifactOperation(CollectionRuleMetadat
6667
}
6768
}
6869
}
70+
71+
internal sealed class CollectDumpActionDescriptor : ICollectionRuleActionDescriptor
72+
{
73+
public string ActionName => KnownCollectionRuleActions.CollectDump;
74+
public Type FactoryType => typeof(CollectDumpActionFactory);
75+
public Type OptionsType => typeof(CollectDumpOptions);
76+
}
6977
}

src/Tools/dotnet-monitor/CollectionRules/Actions/CollectExceptionsAction.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using Microsoft.Diagnostics.Monitoring.WebApi;
55
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Options.Actions;
6+
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Configuration;
67
using Microsoft.Extensions.DependencyInjection;
78
using System;
89
using System.ComponentModel.DataAnnotations;
@@ -55,4 +56,11 @@ protected override EgressOperation CreateArtifactOperation(CollectionRuleMetadat
5556
return egressOperation;
5657
}
5758
}
59+
60+
internal sealed class CollectExceptionsActionDescriptor : ICollectionRuleActionDescriptor
61+
{
62+
public string ActionName => KnownCollectionRuleActions.CollectExceptions;
63+
public Type FactoryType => typeof(CollectExceptionsActionFactory);
64+
public Type OptionsType => typeof(CollectExceptionsOptions);
65+
}
5866
}

src/Tools/dotnet-monitor/CollectionRules/Actions/CollectGCDumpAction.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System;
88
using System.ComponentModel.DataAnnotations;
99
using Utils = Microsoft.Diagnostics.Monitoring.WebApi.Utilities;
10+
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Configuration;
1011

1112
namespace Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Actions
1213
{
@@ -59,4 +60,11 @@ protected override EgressOperation CreateArtifactOperation(CollectionRuleMetadat
5960
}
6061
}
6162
}
63+
64+
internal sealed class CollectGCDumpActionDescriptor : ICollectionRuleActionDescriptor
65+
{
66+
public string ActionName => KnownCollectionRuleActions.CollectGCDump;
67+
public Type FactoryType => typeof(CollectGCDumpActionFactory);
68+
public Type OptionsType => typeof(CollectGCDumpOptions);
69+
}
6270
}

src/Tools/dotnet-monitor/CollectionRules/Actions/CollectLiveMetricsAction.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Microsoft.Diagnostics.Monitoring.WebApi;
66
using Microsoft.Diagnostics.Monitoring.WebApi.Models;
77
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Options.Actions;
8+
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Configuration;
89
using Microsoft.Extensions.DependencyInjection;
910
using Microsoft.Extensions.Options;
1011
using System;
@@ -95,4 +96,11 @@ protected override EgressOperation CreateArtifactOperation(CollectionRuleMetadat
9596
}
9697
}
9798
}
99+
100+
internal sealed class CollectLiveMetricsActionDescriptor : ICollectionRuleActionDescriptor
101+
{
102+
public string ActionName => KnownCollectionRuleActions.CollectLiveMetrics;
103+
public Type FactoryType => typeof(CollectLiveMetricsActionFactory);
104+
public Type OptionsType => typeof(CollectLiveMetricsOptions);
105+
}
98106
}

src/Tools/dotnet-monitor/CollectionRules/Actions/CollectLogsAction.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Microsoft.Diagnostics.Monitoring.Options;
66
using Microsoft.Diagnostics.Monitoring.WebApi;
77
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Options.Actions;
8+
using Microsoft.Diagnostics.Tools.Monitor.CollectionRules.Configuration;
89
using Microsoft.Extensions.DependencyInjection;
910
using Microsoft.Extensions.Logging;
1011
using System;
@@ -83,4 +84,11 @@ protected override EgressOperation CreateArtifactOperation(CollectionRuleMetadat
8384
}
8485
}
8586
}
87+
88+
internal sealed class CollectLogsActionDescriptor : ICollectionRuleActionDescriptor
89+
{
90+
public string ActionName => KnownCollectionRuleActions.CollectLogs;
91+
public Type FactoryType => typeof(CollectLogsActionFactory);
92+
public Type OptionsType => typeof(CollectLogsOptions);
93+
}
8694
}

0 commit comments

Comments
 (0)