From e1865b565d63aafc412bcb4975da9b5200d2b8ac Mon Sep 17 00:00:00 2001 From: ZHANG Dapeng Date: Mon, 23 Jul 2018 14:30:38 -0700 Subject: [PATCH] core: channel tracing log only when number of backends changed between zeor and nonzero This is to implement one of changes made in the spec https://github.com/grpc/proposal/pull/89/files --- .../io/grpc/internal/ManagedChannelImpl.java | 7 ++-- .../grpc/internal/ManagedChannelImplTest.java | 34 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java b/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java index 1ee538a836..ff46cca638 100644 --- a/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java +++ b/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java @@ -211,6 +211,7 @@ final class ManagedChannelImpl extends ManagedChannel implements Instrumented servers = new ArrayList(); + servers.add(new EquivalentAddressGroup(socketAddress)); + FakeNameResolverFactory nameResolverFactory = + new FakeNameResolverFactory.Builder(expectedUri).setServers(servers).build(); + channelBuilder.nameResolverFactory(nameResolverFactory); + createChannel(); + + int prevSize = getStats(channel).channelTrace.events.size(); + nameResolverFactory.resolvers.get(0).listener.onAddresses( + Collections.singletonList(new EquivalentAddressGroup( + Arrays.asList(new SocketAddress() {}, new SocketAddress() {}))), + Attributes.EMPTY); + assertThat(getStats(channel).channelTrace.events).hasSize(prevSize); + + prevSize = getStats(channel).channelTrace.events.size(); + nameResolverFactory.resolvers.get(0).listener.onError(Status.INTERNAL); + assertThat(getStats(channel).channelTrace.events).hasSize(prevSize + 1); + + prevSize = getStats(channel).channelTrace.events.size(); + nameResolverFactory.resolvers.get(0).listener.onError(Status.INTERNAL); + assertThat(getStats(channel).channelTrace.events).hasSize(prevSize); + + prevSize = getStats(channel).channelTrace.events.size(); + nameResolverFactory.resolvers.get(0).listener.onAddresses( + Collections.singletonList(new EquivalentAddressGroup( + Arrays.asList(new SocketAddress() {}, new SocketAddress() {}))), + Attributes.EMPTY); + assertThat(getStats(channel).channelTrace.events).hasSize(prevSize + 1); + } + @Test public void channelTracing_stateChangeEvent() throws Exception { channelBuilder.maxTraceEvents(10);