Skip to content

Commit 2f9f6bb

Browse files
committed
fixed OrcaOobUtilTest for calling setOrcaReportingConfig inside syncContext
1 parent 749d061 commit 2f9f6bb

File tree

1 file changed

+28
-54
lines changed

1 file changed

+28
-54
lines changed

xds/src/test/java/io/grpc/xds/OrcaOobUtilTest.java

Lines changed: 28 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)