@@ -163,79 +163,81 @@ public Long answer(InvocationOnMock invocation) throws Throwable {
163163 tracker1 .start ("bundleId1" );
164164 tracker2 .start ("bundleId2" );
165165
166- state1 .activate ();
167- state2 .activate ();
168-
169- // Check that the current threads PTransform id is available
170- assertEquals ("ptransformId1" , tracker1 .getCurrentThreadsPTransformId ());
171- assertEquals ("ptransformId2" , tracker2 .getCurrentThreadsPTransformId ());
172-
173- // Check that the status returns a value as soon as it is activated.
174- ExecutionStateTrackerStatus activeBundleStatus1 = tracker1 .getStatus ();
175- ExecutionStateTrackerStatus activeBundleStatus2 = tracker2 .getStatus ();
176- assertEquals ("ptransformId1" , activeBundleStatus1 .getPTransformId ());
177- assertEquals ("ptransformId2" , activeBundleStatus2 .getPTransformId ());
178- assertEquals ("ptransformIdName1" , activeBundleStatus1 .getPTransformUniqueName ());
179- assertEquals ("ptransformIdName2" , activeBundleStatus2 .getPTransformUniqueName ());
180- assertEquals (Thread .currentThread (), activeBundleStatus1 .getTrackedThread ());
181- assertEquals (Thread .currentThread (), activeBundleStatus2 .getTrackedThread ());
182- assertThat (activeBundleStatus1 .getStartTime ().getMillis (), equalTo (1L ));
183- assertThat (activeBundleStatus2 .getStartTime ().getMillis (), equalTo (1L ));
184- assertThat (
185- activeBundleStatus1 .getLastTransitionTime ().getMillis (),
186- // Because we are using lazySet, we aren't guaranteed to see the latest value
187- // but we should definitely be seeing a value that isn't zero
188- equalTo (1L ));
189- assertThat (
190- activeBundleStatus2 .getLastTransitionTime ().getMillis (),
191- // Internal implementation has this be equal to the second value we return (2 * 100L)
192- equalTo (1L ));
193-
194- waitTillActive .countDown ();
195- waitForSamples .await ();
166+ ExecutionStateTrackerStatus activeStateStatus1 , activeStateStatus2 ;
167+ try (ExecutionState .ActiveState activeState = state1 .scopedActivate ()) {
168+ state2 .activate ();
169+
170+ // Check that the current threads PTransform id is available
171+ assertEquals ("ptransformId1" , tracker1 .getCurrentThreadsPTransformId ());
172+ assertEquals ("ptransformId2" , tracker2 .getCurrentThreadsPTransformId ());
173+
174+ // Check that the status returns a value as soon as it is activated.
175+ ExecutionStateTrackerStatus activeBundleStatus1 = tracker1 .getStatus ();
176+ ExecutionStateTrackerStatus activeBundleStatus2 = tracker2 .getStatus ();
177+ assertEquals ("ptransformId1" , activeBundleStatus1 .getPTransformId ());
178+ assertEquals ("ptransformId2" , activeBundleStatus2 .getPTransformId ());
179+ assertEquals ("ptransformIdName1" , activeBundleStatus1 .getPTransformUniqueName ());
180+ assertEquals ("ptransformIdName2" , activeBundleStatus2 .getPTransformUniqueName ());
181+ assertEquals (Thread .currentThread (), activeBundleStatus1 .getTrackedThread ());
182+ assertEquals (Thread .currentThread (), activeBundleStatus2 .getTrackedThread ());
183+ assertThat (activeBundleStatus1 .getStartTime ().getMillis (), equalTo (1L ));
184+ assertThat (activeBundleStatus2 .getStartTime ().getMillis (), equalTo (1L ));
185+ assertThat (
186+ activeBundleStatus1 .getLastTransitionTime ().getMillis (),
187+ // Because we are using lazySet, we aren't guaranteed to see the latest value
188+ // but we should definitely be seeing a value that isn't zero
189+ equalTo (1L ));
190+ assertThat (
191+ activeBundleStatus2 .getLastTransitionTime ().getMillis (),
192+ // Internal implementation has this be equal to the second value we return (2 * 100L)
193+ equalTo (1L ));
196194
197- // Check that the current threads PTransform id is available
198- assertEquals ("ptransformId1" , tracker1 .getCurrentThreadsPTransformId ());
199- assertEquals ("ptransformId2" , tracker2 .getCurrentThreadsPTransformId ());
200-
201- // Check that we get additional data about the active PTransform.
202- ExecutionStateTrackerStatus activeStateStatus1 = tracker1 .getStatus ();
203- ExecutionStateTrackerStatus activeStateStatus2 = tracker2 .getStatus ();
204- assertEquals ("ptransformId1" , activeStateStatus1 .getPTransformId ());
205- assertEquals ("ptransformId2" , activeStateStatus2 .getPTransformId ());
206- assertEquals ("ptransformIdName1" , activeStateStatus1 .getPTransformUniqueName ());
207- assertEquals ("ptransformIdName2" , activeStateStatus2 .getPTransformUniqueName ());
208- assertEquals (Thread .currentThread (), activeStateStatus1 .getTrackedThread ());
209- assertEquals (Thread .currentThread (), activeStateStatus2 .getTrackedThread ());
210- assertThat (
211- activeStateStatus1 .getLastTransitionTime (),
212- greaterThan (activeBundleStatus1 .getLastTransitionTime ()));
213- assertThat (
214- activeStateStatus2 .getLastTransitionTime (),
215- greaterThan (activeBundleStatus2 .getLastTransitionTime ()));
195+ waitTillActive .countDown ();
196+ waitForSamples .await ();
216197
217- // Validate intermediate monitoring data
218- Map <String , ByteString > intermediateResults1 = new HashMap <>();
219- Map <String , ByteString > intermediateResults2 = new HashMap <>();
220- tracker1 .updateIntermediateMonitoringData (intermediateResults1 );
221- tracker2 .updateIntermediateMonitoringData (intermediateResults2 );
222- assertThat (
223- MonitoringInfoEncodings .decodeInt64Counter (intermediateResults1 .get ("shortId1" )),
224- // Because we are using lazySet, we aren't guaranteed to see the latest value.
225- // The CountDownLatch ensures that we will see either the prior value or
226- // the latest value.
227- anyOf (equalTo (900L ), equalTo (1000L )));
228- assertThat (
229- MonitoringInfoEncodings .decodeInt64Counter (intermediateResults2 .get ("shortId2" )),
230- // Because we are using lazySet, we aren't guaranteed to see the latest value.
231- // The CountDownLatch ensures that we will see either the prior value or
232- // the latest value.
233- anyOf (equalTo (900L ), equalTo (1000L )));
198+ // Check that the current threads PTransform id is available
199+ assertEquals ("ptransformId1" , tracker1 .getCurrentThreadsPTransformId ());
200+ assertEquals ("ptransformId2" , tracker2 .getCurrentThreadsPTransformId ());
201+
202+ // Check that we get additional data about the active PTransform.
203+ activeStateStatus1 = tracker1 .getStatus ();
204+ activeStateStatus2 = tracker2 .getStatus ();
205+ assertEquals ("ptransformId1" , activeStateStatus1 .getPTransformId ());
206+ assertEquals ("ptransformId2" , activeStateStatus2 .getPTransformId ());
207+ assertEquals ("ptransformIdName1" , activeStateStatus1 .getPTransformUniqueName ());
208+ assertEquals ("ptransformIdName2" , activeStateStatus2 .getPTransformUniqueName ());
209+ assertEquals (Thread .currentThread (), activeStateStatus1 .getTrackedThread ());
210+ assertEquals (Thread .currentThread (), activeStateStatus2 .getTrackedThread ());
211+ assertThat (
212+ activeStateStatus1 .getLastTransitionTime (),
213+ greaterThan (activeBundleStatus1 .getLastTransitionTime ()));
214+ assertThat (
215+ activeStateStatus2 .getLastTransitionTime (),
216+ greaterThan (activeBundleStatus2 .getLastTransitionTime ()));
217+
218+ // Validate intermediate monitoring data
219+ Map <String , ByteString > intermediateResults1 = new HashMap <>();
220+ Map <String , ByteString > intermediateResults2 = new HashMap <>();
221+ tracker1 .updateIntermediateMonitoringData (intermediateResults1 );
222+ tracker2 .updateIntermediateMonitoringData (intermediateResults2 );
223+ assertThat (
224+ MonitoringInfoEncodings .decodeInt64Counter (intermediateResults1 .get ("shortId1" )),
225+ // Because we are using lazySet, we aren't guaranteed to see the latest value.
226+ // The CountDownLatch ensures that we will see either the prior value or
227+ // the latest value.
228+ anyOf (equalTo (900L ), equalTo (1000L )));
229+ assertThat (
230+ MonitoringInfoEncodings .decodeInt64Counter (intermediateResults2 .get ("shortId2" )),
231+ // Because we are using lazySet, we aren't guaranteed to see the latest value.
232+ // The CountDownLatch ensures that we will see either the prior value or
233+ // the latest value.
234+ anyOf (equalTo (900L ), equalTo (1000L )));
234235
235- waitTillIntermediateReport .countDown ();
236- waitForMoreSamples .await ();
236+ waitTillIntermediateReport .countDown ();
237+ waitForMoreSamples .await ();
238+ state2 .deactivate ();
239+ }
237240 state1 .deactivate ();
238- state2 .deactivate ();
239241
240242 waitTillStatesDeactivated .countDown ();
241243 waitForEvenMoreSamples .await ();
0 commit comments