Skip to content

Commit 146e143

Browse files
committed
Respond to PR comments
1 parent d24a06c commit 146e143

2 files changed

Lines changed: 60 additions & 49 deletions

File tree

packages/devtools_app/test/service/dtd_manager_test.dart

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,17 @@ void main() {
6666
manager.serviceRegistrationBroadcastStream,
6767
);
6868

69-
// Add an event.
70-
streamController.add(fooBarRegisteredEvent);
71-
72-
// Verify both subscribers received the event.
73-
expect(await eventQueue1.next, equals(fooBarRegisteredEvent));
74-
expect(await eventQueue2.next, equals(fooBarRegisteredEvent));
69+
try {
70+
// Add an event.
71+
streamController.add(fooBarRegisteredEvent);
7572

76-
await eventQueue1.cancel();
77-
await eventQueue2.cancel();
73+
// Verify both subscribers received the event.
74+
expect(await eventQueue1.next, equals(fooBarRegisteredEvent));
75+
expect(await eventQueue2.next, equals(fooBarRegisteredEvent));
76+
} finally {
77+
await eventQueue1.cancel();
78+
await eventQueue2.cancel();
79+
}
7880
});
7981

8082
test(
@@ -90,14 +92,18 @@ void main() {
9092
manager.serviceRegistrationBroadcastStream,
9193
);
9294

93-
// The manager only forwards registered and unregistered events.
94-
streamController.add(fooBarRegisteredEvent);
95-
streamController.add(fooBarUnregisteredEvent);
96-
streamController.add(invalidEvent);
97-
expect(await eventQueue.next, equals(fooBarRegisteredEvent));
98-
expect(await eventQueue.next, equals(fooBarUnregisteredEvent));
99-
100-
await eventQueue.cancel();
95+
try {
96+
// The manager only forwards registered and unregistered events.
97+
streamController.add(fooBarRegisteredEvent);
98+
streamController.add(invalidEvent);
99+
streamController.add(fooBarUnregisteredEvent);
100+
expect(
101+
manager.serviceRegistrationBroadcastStream,
102+
emitsInOrder([fooBarRegisteredEvent, fooBarUnregisteredEvent]),
103+
);
104+
} finally {
105+
await eventQueue.cancel();
106+
}
101107
},
102108
);
103109

@@ -107,23 +113,26 @@ void main() {
107113
manager.mockDtd = mockDtd1;
108114
await manager.connect(fakeDtdUri);
109115

110-
// The manager forwards events from the first DTD instance.
111116
final eventQueue = StreamQueue(
112117
manager.serviceRegistrationBroadcastStream,
113118
);
114-
streamController1.add(fooBarRegisteredEvent);
115-
expect(await eventQueue.next, equals(fooBarRegisteredEvent));
116119

117-
// Connect to the second DTD instance:
118-
final streamController2 = setUpEventStream(mockDtd2);
119-
manager.mockDtd = mockDtd2;
120-
await manager.connect(fakeDtdUri);
120+
try {
121+
// The manager forwards events from the first DTD instance.
122+
streamController1.add(fooBarRegisteredEvent);
123+
expect(await eventQueue.next, equals(fooBarRegisteredEvent));
121124

122-
// The manager forwards events from the second DTD instance.
123-
streamController2.add(bazQuxRegisteredEvent);
124-
expect(await eventQueue.next, equals(bazQuxRegisteredEvent));
125+
// Connect to the second DTD instance:
126+
final streamController2 = setUpEventStream(mockDtd2);
127+
manager.mockDtd = mockDtd2;
128+
await manager.connect(fakeDtdUri);
125129

126-
await eventQueue.cancel();
130+
// The manager forwards events from the second DTD instance.
131+
streamController2.add(bazQuxRegisteredEvent);
132+
expect(await eventQueue.next, equals(bazQuxRegisteredEvent));
133+
} finally {
134+
await eventQueue.cancel();
135+
}
127136
});
128137

129138
test('continues to forward events while DTD is reconnecting', () async {
@@ -138,25 +147,26 @@ void main() {
138147
final eventQueue = StreamQueue(
139148
manager.serviceRegistrationBroadcastStream,
140149
);
141-
142-
// Send events while DTD is reconnecting.
143-
manager.connectionState.addListener(() {
144-
if (manager.connectionState.value is NotConnectedDTDState) {
145-
streamController.add(fooBarRegisteredEvent);
146-
}
147-
if (manager.connectionState.value is ConnectingDTDState) {
148-
streamController.add(bazQuxRegisteredEvent);
149-
}
150-
});
151-
152-
// Trigger a done event to force DTD to reconnect.
153-
dtdDoneCompleter.complete();
154-
155-
// Verify the events sent during reconneciton were received.
156-
expect(await eventQueue.next, equals(fooBarRegisteredEvent));
157-
expect(await eventQueue.next, equals(bazQuxRegisteredEvent));
158-
159-
await eventQueue.cancel();
150+
try {
151+
// Send events while DTD is reconnecting.
152+
manager.connectionState.addListener(() {
153+
if (manager.connectionState.value is NotConnectedDTDState) {
154+
streamController.add(fooBarRegisteredEvent);
155+
}
156+
if (manager.connectionState.value is ConnectingDTDState) {
157+
streamController.add(bazQuxRegisteredEvent);
158+
}
159+
});
160+
161+
// Trigger a done event to force DTD to reconnect.
162+
dtdDoneCompleter.complete();
163+
164+
// Verify the events sent during reconnection were received.
165+
expect(await eventQueue.next, equals(fooBarRegisteredEvent));
166+
expect(await eventQueue.next, equals(bazQuxRegisteredEvent));
167+
} finally {
168+
await eventQueue.cancel();
169+
}
160170
});
161171
});
162172
}

packages/devtools_app_shared/lib/src/service/dtd_manager.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ class DTDManager {
3636
/// [CoreDtdServiceConstants.serviceUnregisteredKind] events.
3737
///
3838
/// Since this is a broadcast stream, it supports multiple subscribers.
39+
/// Subscribers should also call [DartToolingDaemon.getRegisteredServices] to
40+
/// detect any services that were already registered.
3941
Stream<DTDEvent> get serviceRegistrationBroadcastStream =>
4042
_serviceRegistrationController.stream;
4143
final _serviceRegistrationController = StreamController<DTDEvent>.broadcast();
@@ -172,9 +174,8 @@ class DTDManager {
172174
// by any listeners of the [_connection] notifier.
173175
_connection.value = connection;
174176
// Close the previous connection.
175-
if (previousConnection != null) {
176-
await previousConnection.close();
177-
}
177+
await previousConnection?.close();
178+
178179
_connectionState.value = ConnectedDTDState();
179180
_log.info('Successfully connected to DTD at: $uri');
180181

0 commit comments

Comments
 (0)