@@ -226,7 +226,7 @@ public void setUp() throws Exception {
226226 @ Test
227227 @ SuppressWarnings ("unchecked" )
228228 public void singlePolicyTypicalWorkflow () {
229- orcaHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
229+ setOrcaReportConfig ( orcaHelperWrapper , SHORT_INTERVAL_CONFIG );
230230 verify (origHelper , atLeast (0 )).getSynchronizationContext ();
231231 verifyNoMoreInteractions (origHelper );
232232
@@ -307,8 +307,8 @@ public void singlePolicyTypicalWorkflow() {
307307
308308 @ Test
309309 public void twoLevelPoliciesTypicalWorkflow () {
310- childHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
311- parentHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
310+ setOrcaReportConfig ( childHelperWrapper , SHORT_INTERVAL_CONFIG );
311+ setOrcaReportConfig ( parentHelperWrapper , SHORT_INTERVAL_CONFIG );
312312 verify (origHelper , atLeast (0 )).getSynchronizationContext ();
313313 verifyNoMoreInteractions (origHelper );
314314
@@ -394,7 +394,7 @@ public void twoLevelPoliciesTypicalWorkflow() {
394394 @ Test
395395 @ SuppressWarnings ("unchecked" )
396396 public void orcReportingDisabledWhenServiceNotImplemented () {
397- orcaHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
397+ setOrcaReportConfig ( orcaHelperWrapper , SHORT_INTERVAL_CONFIG );
398398 createSubchannel (orcaHelperWrapper .asHelper (), 0 , Attributes .EMPTY );
399399 FakeSubchannel subchannel = subchannels [0 ];
400400 OpenRcaServiceImp orcaServiceImp = orcaServiceImps [0 ];
@@ -429,7 +429,7 @@ public void orcReportingDisabledWhenServiceNotImplemented() {
429429
430430 @ Test
431431 public void orcaReportingStreamClosedAndRetried () {
432- orcaHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
432+ setOrcaReportConfig ( orcaHelperWrapper , SHORT_INTERVAL_CONFIG );
433433 createSubchannel (orcaHelperWrapper .asHelper (), 0 , Attributes .EMPTY );
434434 FakeSubchannel subchannel = subchannels [0 ];
435435 OpenRcaServiceImp orcaServiceImp = orcaServiceImps [0 ];
@@ -502,7 +502,7 @@ public void reportingNotStartedUntilConfigured() {
502502
503503 assertThat (orcaServiceImps [0 ].calls ).isEmpty ();
504504 assertThat (subchannels [0 ].logs ).isEmpty ();
505- orcaHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
505+ setOrcaReportConfig ( orcaHelperWrapper , SHORT_INTERVAL_CONFIG );
506506 assertThat (orcaServiceImps [0 ].calls ).hasSize (1 );
507507 assertLog (subchannels [0 ].logs ,
508508 "DEBUG: Starting ORCA reporting for " + subchannels [0 ].getAllAddresses ());
@@ -512,7 +512,7 @@ public void reportingNotStartedUntilConfigured() {
512512
513513 @ Test
514514 public void updateReportingIntervalBeforeCreatingSubchannel () {
515- orcaHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
515+ setOrcaReportConfig ( orcaHelperWrapper , SHORT_INTERVAL_CONFIG );
516516 createSubchannel (orcaHelperWrapper .asHelper (), 0 , Attributes .EMPTY );
517517 deliverSubchannelState (0 , ConnectivityStateInfo .forNonError (READY ));
518518 verify (mockStateListeners [0 ]).onSubchannelState (eq (ConnectivityStateInfo .forNonError (READY )));
@@ -527,7 +527,7 @@ public void updateReportingIntervalBeforeCreatingSubchannel() {
527527 @ Test
528528 public void updateReportingIntervalBeforeSubchannelReady () {
529529 createSubchannel (orcaHelperWrapper .asHelper (), 0 , Attributes .EMPTY );
530- orcaHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
530+ setOrcaReportConfig ( orcaHelperWrapper , SHORT_INTERVAL_CONFIG );
531531 deliverSubchannelState (0 , ConnectivityStateInfo .forNonError (READY ));
532532 verify (mockStateListeners [0 ]).onSubchannelState (eq (ConnectivityStateInfo .forNonError (READY )));
533533
@@ -542,7 +542,7 @@ public void updateReportingIntervalBeforeSubchannelReady() {
542542 public void updateReportingIntervalWhenRpcActive () {
543543 // Sets report interval before creating a Subchannel, reporting starts right after suchannel
544544 // state becomes READY.
545- orcaHelperWrapper . setReportingConfig ( MEDIUM_INTERVAL_CONFIG );
545+ setOrcaReportConfig ( orcaHelperWrapper , MEDIUM_INTERVAL_CONFIG );
546546 createSubchannel (orcaHelperWrapper .asHelper (), 0 , Attributes .EMPTY );
547547 deliverSubchannelState (0 , ConnectivityStateInfo .forNonError (READY ));
548548 verify (mockStateListeners [0 ]).onSubchannelState (eq (ConnectivityStateInfo .forNonError (READY )));
@@ -554,7 +554,7 @@ public void updateReportingIntervalWhenRpcActive() {
554554 .isEqualTo (buildOrcaRequestFromConfig (MEDIUM_INTERVAL_CONFIG ));
555555
556556 // Make reporting less frequent.
557- orcaHelperWrapper . setReportingConfig ( LONG_INTERVAL_CONFIG );
557+ setOrcaReportConfig ( orcaHelperWrapper , LONG_INTERVAL_CONFIG );
558558 assertThat (orcaServiceImps [0 ].calls .poll ().cancelled ).isTrue ();
559559 assertThat (orcaServiceImps [0 ].calls ).hasSize (1 );
560560 assertLog (subchannels [0 ].logs ,
@@ -563,12 +563,12 @@ public void updateReportingIntervalWhenRpcActive() {
563563 .isEqualTo (buildOrcaRequestFromConfig (LONG_INTERVAL_CONFIG ));
564564
565565 // Configuring with the same report interval again does not restart ORCA RPC.
566- orcaHelperWrapper . setReportingConfig ( LONG_INTERVAL_CONFIG );
566+ setOrcaReportConfig ( orcaHelperWrapper , LONG_INTERVAL_CONFIG );
567567 assertThat (orcaServiceImps [0 ].calls .peek ().cancelled ).isFalse ();
568568 assertThat (subchannels [0 ].logs ).isEmpty ();
569569
570570 // Make reporting more frequent.
571- orcaHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
571+ setOrcaReportConfig ( orcaHelperWrapper , SHORT_INTERVAL_CONFIG );
572572 assertThat (orcaServiceImps [0 ].calls .poll ().cancelled ).isTrue ();
573573 assertThat (orcaServiceImps [0 ].calls ).hasSize (1 );
574574 assertLog (subchannels [0 ].logs ,
@@ -580,7 +580,7 @@ public void updateReportingIntervalWhenRpcActive() {
580580 @ Test
581581 public void updateReportingIntervalWhenRpcPendingRetry () {
582582 createSubchannel (orcaHelperWrapper .asHelper (), 0 , Attributes .EMPTY );
583- orcaHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
583+ setOrcaReportConfig ( orcaHelperWrapper , SHORT_INTERVAL_CONFIG );
584584 deliverSubchannelState (0 , ConnectivityStateInfo .forNonError (READY ));
585585 verify (mockStateListeners [0 ]).onSubchannelState (eq (ConnectivityStateInfo .forNonError (READY )));
586586
@@ -600,7 +600,7 @@ public void updateReportingIntervalWhenRpcPendingRetry() {
600600 assertThat (orcaServiceImps [0 ].calls ).isEmpty ();
601601
602602 // Make reporting less frequent.
603- orcaHelperWrapper . setReportingConfig ( LONG_INTERVAL_CONFIG );
603+ setOrcaReportConfig ( orcaHelperWrapper , LONG_INTERVAL_CONFIG );
604604 // Retry task will be canceled and restarts new RPC immediately.
605605 assertThat (fakeClock .getPendingTasks ()).isEmpty ();
606606 assertThat (orcaServiceImps [0 ].calls ).hasSize (1 );
@@ -621,7 +621,7 @@ public void policiesReceiveSameReportIndependently() {
621621 assertThat (subchannels [0 ].logs ).isEmpty ();
622622
623623 // Parent helper requests ORCA reports with a certain interval, load reporting starts.
624- parentHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
624+ setOrcaReportConfig ( parentHelperWrapper , SHORT_INTERVAL_CONFIG );
625625 assertThat (orcaServiceImps [0 ].calls ).hasSize (1 );
626626 assertLog (subchannels [0 ].logs ,
627627 "DEBUG: Starting ORCA reporting for " + subchannels [0 ].getAllAddresses ());
@@ -637,7 +637,7 @@ public void policiesReceiveSameReportIndependently() {
637637 verifyNoMoreInteractions (mockOrcaListener2 );
638638
639639 // Now child helper also wants to receive reports.
640- childHelperWrapper . setReportingConfig ( SHORT_INTERVAL_CONFIG );
640+ setOrcaReportConfig ( childHelperWrapper , SHORT_INTERVAL_CONFIG );
641641 orcaServiceImps [0 ].calls .peek ().responseObserver .onNext (report );
642642 assertLog (subchannels [0 ].logs , "DEBUG: Received an ORCA report: " + report );
643643 // Both helper receives the same report instance.
@@ -651,9 +651,8 @@ public void policiesReceiveSameReportIndependently() {
651651
652652 @ Test
653653 public void reportWithMostFrequentIntervalRequested () {
654- parentHelperWrapper .setReportingConfig (SHORT_INTERVAL_CONFIG );
655- childHelperWrapper .setReportingConfig (LONG_INTERVAL_CONFIG );
656-
654+ setOrcaReportConfig (parentHelperWrapper , SHORT_INTERVAL_CONFIG );
655+ setOrcaReportConfig (childHelperWrapper , LONG_INTERVAL_CONFIG );
657656 createSubchannel (childHelperWrapper .asHelper (), 0 , Attributes .EMPTY );
658657 deliverSubchannelState (0 , ConnectivityStateInfo .forNonError (READY ));
659658 verify (mockStateListeners [0 ]).onSubchannelState (eq (ConnectivityStateInfo .forNonError (READY )));
@@ -667,12 +666,12 @@ public void reportWithMostFrequentIntervalRequested() {
667666
668667 // Child helper wants reporting to be more frequent than its current setting while it is still
669668 // less frequent than parent helper. Nothing should happen on existing RPC.
670- childHelperWrapper . setReportingConfig ( MEDIUM_INTERVAL_CONFIG );
669+ setOrcaReportConfig ( childHelperWrapper , MEDIUM_INTERVAL_CONFIG );
671670 assertThat (orcaServiceImps [0 ].calls .peek ().cancelled ).isFalse ();
672671 assertThat (subchannels [0 ].logs ).isEmpty ();
673672
674673 // Parent helper wants reporting to be less frequent.
675- parentHelperWrapper . setReportingConfig ( MEDIUM_INTERVAL_CONFIG );
674+ setOrcaReportConfig ( parentHelperWrapper , MEDIUM_INTERVAL_CONFIG );
676675 assertThat (orcaServiceImps [0 ].calls .poll ().cancelled ).isTrue ();
677676 assertThat (orcaServiceImps [0 ].calls ).hasSize (1 );
678677 assertLog (subchannels [0 ].logs ,
@@ -724,39 +723,14 @@ public void run() {
724723 return newSubchannel .get ();
725724 }
726725
727- private abstract static class ForwardingSubchannel extends Subchannel {
728-
729- protected abstract Subchannel delegate ();
730-
731- @ Override
732- public void shutdown () {
733- delegate ().shutdown ();
734- }
735-
736- @ Override
737- public void requestConnection () {
738- delegate ().requestConnection ();
739- }
740-
741- @ Override
742- public List <EquivalentAddressGroup > getAllAddresses () {
743- return delegate ().getAllAddresses ();
744- }
745-
746- @ Override
747- public Attributes getAttributes () {
748- return delegate ().getAttributes ();
749- }
750-
751- @ Override
752- public Channel asChannel () {
753- return delegate ().asChannel ();
754- }
755-
756- @ Override
757- public ChannelLogger getChannelLogger () {
758- return delegate ().getChannelLogger ();
759- }
726+ private void setOrcaReportConfig (
727+ final OrcaReportingHelperWrapper helperWrapper , final OrcaReportingConfig config ) {
728+ syncContext .execute (new Runnable () {
729+ @ Override
730+ public void run () {
731+ helperWrapper .setReportingConfig (config );
732+ }
733+ });
760734 }
761735
762736 private static final class OpenRcaServiceImp extends OpenRcaServiceGrpc .OpenRcaServiceImplBase {
0 commit comments