use of io.grpc.xds.XdsClient.LdsResourceWatcher in project grpc-java by grpc.
the class ClientXdsClientTestBase method cachedLdsResource_data.
@Test
public void cachedLdsResource_data() {
DiscoveryRpcCall call = startResourceWatcher(LDS, LDS_RESOURCE, ldsResourceWatcher);
// Client sends an ACK LDS request.
call.sendResponse(LDS, testListenerRds, VERSION_1, "0000");
call.verifyRequest(LDS, LDS_RESOURCE, VERSION_1, "0000", NODE);
LdsResourceWatcher watcher = mock(LdsResourceWatcher.class);
xdsClient.watchLdsResource(LDS_RESOURCE, watcher);
verify(watcher).onChanged(ldsUpdateCaptor.capture());
assertThat(ldsUpdateCaptor.getValue().httpConnectionManager().rdsName()).isEqualTo(RDS_RESOURCE);
call.verifyNoMoreRequest();
verifyResourceMetadataAcked(LDS, LDS_RESOURCE, testListenerRds, VERSION_1, TIME_INCREMENT);
verifySubscribedResourcesMetadataSizes(1, 0, 0, 0);
}
use of io.grpc.xds.XdsClient.LdsResourceWatcher in project grpc-java by grpc.
the class ClientXdsClientTestBase method multipleLdsWatchers.
@Test
public void multipleLdsWatchers() {
String ldsResourceTwo = "bar.googleapis.com";
LdsResourceWatcher watcher1 = mock(LdsResourceWatcher.class);
LdsResourceWatcher watcher2 = mock(LdsResourceWatcher.class);
xdsClient.watchLdsResource(LDS_RESOURCE, ldsResourceWatcher);
xdsClient.watchLdsResource(ldsResourceTwo, watcher1);
xdsClient.watchLdsResource(ldsResourceTwo, watcher2);
DiscoveryRpcCall call = resourceDiscoveryCalls.poll();
call.verifyRequest(LDS, ImmutableList.of(LDS_RESOURCE, ldsResourceTwo), "", "", NODE);
// Both LDS resources were requested.
verifyResourceMetadataRequested(LDS, LDS_RESOURCE);
verifyResourceMetadataRequested(LDS, ldsResourceTwo);
verifySubscribedResourcesMetadataSizes(2, 0, 0, 0);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(ldsResourceWatcher).onResourceDoesNotExist(LDS_RESOURCE);
verify(watcher1).onResourceDoesNotExist(ldsResourceTwo);
verify(watcher2).onResourceDoesNotExist(ldsResourceTwo);
verifyResourceMetadataDoesNotExist(LDS, LDS_RESOURCE);
verifyResourceMetadataDoesNotExist(LDS, ldsResourceTwo);
verifySubscribedResourcesMetadataSizes(2, 0, 0, 0);
Any listenerTwo = Any.pack(mf.buildListenerWithApiListenerForRds(ldsResourceTwo, RDS_RESOURCE));
call.sendResponse(LDS, ImmutableList.of(testListenerVhosts, listenerTwo), VERSION_1, "0000");
// ldsResourceWatcher called with listenerVhosts.
verify(ldsResourceWatcher).onChanged(ldsUpdateCaptor.capture());
assertThat(ldsUpdateCaptor.getValue().httpConnectionManager().virtualHosts()).hasSize(VHOST_SIZE);
// watcher1 called with listenerTwo.
verify(watcher1).onChanged(ldsUpdateCaptor.capture());
assertThat(ldsUpdateCaptor.getValue().httpConnectionManager().rdsName()).isEqualTo(RDS_RESOURCE);
assertThat(ldsUpdateCaptor.getValue().httpConnectionManager().virtualHosts()).isNull();
// watcher2 called with listenerTwo.
verify(watcher2).onChanged(ldsUpdateCaptor.capture());
assertThat(ldsUpdateCaptor.getValue().httpConnectionManager().rdsName()).isEqualTo(RDS_RESOURCE);
assertThat(ldsUpdateCaptor.getValue().httpConnectionManager().virtualHosts()).isNull();
// Metadata of both listeners is stored.
verifyResourceMetadataAcked(LDS, LDS_RESOURCE, testListenerVhosts, VERSION_1, TIME_INCREMENT);
verifyResourceMetadataAcked(LDS, ldsResourceTwo, listenerTwo, VERSION_1, TIME_INCREMENT);
verifySubscribedResourcesMetadataSizes(2, 0, 0, 0);
}
use of io.grpc.xds.XdsClient.LdsResourceWatcher in project grpc-java by grpc.
the class ClientXdsClientTestBase method cachedLdsResource_absent.
@Test
public void cachedLdsResource_absent() {
DiscoveryRpcCall call = startResourceWatcher(LDS, LDS_RESOURCE, ldsResourceWatcher);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(ldsResourceWatcher).onResourceDoesNotExist(LDS_RESOURCE);
// Add another watcher.
LdsResourceWatcher watcher = mock(LdsResourceWatcher.class);
xdsClient.watchLdsResource(LDS_RESOURCE, watcher);
verify(watcher).onResourceDoesNotExist(LDS_RESOURCE);
call.verifyNoMoreRequest();
verifyResourceMetadataDoesNotExist(LDS, LDS_RESOURCE);
verifySubscribedResourcesMetadataSizes(1, 0, 0, 0);
}
Aggregations