Skip to content

Commit ecc6ed1

Browse files
sigurdmcommit-bot@chromium.org
authored andcommitted
Send resolution analytics from dart pub get/upgrade/...
Also enables batched analytics (up to 20 events will be sent together in one request if they are all issued before control is returned to the async queue). Change-Id: Ic23429d4981bc33a34cb19ffc00affdd09dfe511 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/217014 Reviewed-by: Jonas Jensen <[email protected]> Commit-Queue: Sigurd Meldgaard <[email protected]>
1 parent d54cd7c commit ecc6ed1

File tree

5 files changed

+87
-8
lines changed

5 files changed

+87
-8
lines changed

pkg/dartdev/lib/dartdev.dart

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,14 @@ class DartdevRunner extends CommandRunner<int> {
122122
addCommand(FormatCommand(verbose: verbose));
123123
addCommand(LanguageServerCommand(verbose: verbose));
124124
addCommand(MigrateCommand(verbose: verbose));
125-
addCommand(pubCommand());
125+
addCommand(
126+
pubCommand(
127+
analytics: PubAnalytics(
128+
() => analytics,
129+
dependencyKindCustomDimensionName: dependencyKindCustomDimensionName,
130+
),
131+
),
132+
);
126133
addCommand(RunCommand(verbose: verbose));
127134
addCommand(TestCommand());
128135
}

pkg/dartdev/lib/src/analytics.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ class DartdevAnalytics extends AnalyticsImpl {
121121
IOPostHandler(),
122122
applicationName: appName,
123123
applicationVersion: getDartVersion(),
124+
batchingDelay: Duration(),
124125
);
125126

126127
@override

pkg/dartdev/lib/src/events.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@ enum _CustomDimensions {
2020
commandExitCode, // cd1
2121
enabledExperiments, // cd2
2222
commandFlags, // cd3
23+
dependencyKind, // cd4
2324
}
2425

2526
String _cdKey(_CustomDimensions cd) => 'cd${cd.index + 1}';
2627

28+
final String dependencyKindCustomDimensionName =
29+
_cdKey(_CustomDimensions.dependencyKind);
30+
2731
Map<String, String> _useCdKeys(Map<_CustomDimensions, String> parameters) {
2832
return parameters.map(
2933
(_CustomDimensions k, String v) => MapEntry<String, String>(_cdKey(k), v),

pkg/dartdev/test/analytics_test.dart

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,12 @@ Future<void> main() async {
129129
]);
130130
});
131131

132-
test('pub get', () {
133-
final p = project(logAnalytics: true);
132+
test('pub get dry run', () {
133+
final p = project(logAnalytics: true, pubspec: {
134+
'name': 'foo',
135+
'environment': {'sdk': '>=2.10.0 <3.0.0'},
136+
'dependencies': {'_dummy_pkg': '0.0.1'}
137+
});
134138
final result = p.runSync(['pub', 'get', '--dry-run']);
135139
expect(extractAnalytics(result), [
136140
{
@@ -160,6 +164,60 @@ Future<void> main() async {
160164
]);
161165
});
162166

167+
test('pub get', () {
168+
final p = project(logAnalytics: true, pubspec: {
169+
'name': 'foo',
170+
'environment': {'sdk': '>=2.10.0 <3.0.0'},
171+
'dependencies': {'_dummy_pkg': '0.0.1'}
172+
});
173+
final result = p.runSync(['pub', 'get']);
174+
expect(extractAnalytics(result), [
175+
{
176+
'hitType': 'screenView',
177+
'message': {'viewName': 'pub/get'}
178+
},
179+
{
180+
'hitType': 'event',
181+
'message': {
182+
'category': 'pub-get',
183+
'action': '_dummy_pkg',
184+
'label': '0.0.1',
185+
'value': 1,
186+
'ni': '1',
187+
'cd4': 'direct'
188+
}
189+
},
190+
{
191+
'hitType': 'timing',
192+
'message': {
193+
'variableName': 'resolution',
194+
'time': isA<int>(),
195+
'category': 'pub-get',
196+
'label': null
197+
}
198+
},
199+
{
200+
'hitType': 'event',
201+
'message': {
202+
'category': 'dartdev',
203+
'action': 'pub/get',
204+
'label': null,
205+
'value': null,
206+
'cd1': '0',
207+
}
208+
},
209+
{
210+
'hitType': 'timing',
211+
'message': {
212+
'variableName': 'pub/get',
213+
'time': isA<int>(),
214+
'category': 'commands',
215+
'label': null
216+
}
217+
}
218+
]);
219+
});
220+
163221
test('format', () {
164222
final p = project(logAnalytics: true);
165223
final result = p.runSync(['format', '-l80', '.']);

pkg/dartdev/test/utils.dart

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ TestProject project(
2323
String analysisOptions,
2424
bool logAnalytics = false,
2525
String name = TestProject._defaultProjectName,
26-
VersionConstraint sdkConstraint}) =>
26+
VersionConstraint sdkConstraint,
27+
Map<String, dynamic> pubspec}) =>
2728
TestProject(
2829
mainSrc: mainSrc,
2930
analysisOptions: analysisOptions,
3031
logAnalytics: logAnalytics,
31-
sdkConstraint: sdkConstraint);
32+
sdkConstraint: sdkConstraint,
33+
pubspec: pubspec);
3234

3335
class TestProject {
3436
static const String _defaultProjectName = 'dartdev_temp';
@@ -47,21 +49,28 @@ class TestProject {
4749

4850
final VersionConstraint sdkConstraint;
4951

52+
final Map<String, dynamic> pubspec;
53+
5054
TestProject(
5155
{String mainSrc,
5256
String analysisOptions,
5357
this.name = _defaultProjectName,
5458
this.logAnalytics = false,
55-
this.sdkConstraint}) {
59+
this.sdkConstraint,
60+
this.pubspec}) {
5661
dir = Directory.systemTemp.createTempSync('a');
57-
file('pubspec.yaml', '''
62+
file(
63+
'pubspec.yaml',
64+
pubspec == null
65+
? '''
5866
name: $name
5967
environment:
6068
sdk: '${sdkConstraint ?? '>=2.10.0 <3.0.0'}'
6169
6270
dev_dependencies:
6371
test: any
64-
''');
72+
'''
73+
: json.encode(pubspec));
6574
if (analysisOptions != null) {
6675
file('analysis_options.yaml', analysisOptions);
6776
}

0 commit comments

Comments
 (0)