blob: 0b93a8d92714606b606172c04707a1ef6aecb4da [file] [log] [blame]
/*
* Copyright 2018 The gRPC Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.grpc.protobuf.services;
import com.google.common.base.MoreObjects;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import io.grpc.ConnectivityState;
import io.grpc.InternalChannelz;
import io.grpc.InternalChannelz.ChannelStats;
import io.grpc.InternalChannelz.Security;
import io.grpc.InternalChannelz.ServerStats;
import io.grpc.InternalChannelz.SocketOptions;
import io.grpc.InternalChannelz.SocketStats;
import io.grpc.InternalChannelz.TransportStats;
import io.grpc.InternalInstrumented;
import io.grpc.InternalLogId;
import io.grpc.InternalWithLogId;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.Collections;
/**
* Test class definitions that will be used in the proto utils test as well as
* channelz service test.
*/
final class ChannelzTestHelper {
static final class TestSocket implements InternalInstrumented<SocketStats> {
private final InternalLogId id = InternalLogId.allocate("socket", /*details=*/ null);
TransportStats transportStats = new TransportStats(
/*streamsStarted=*/ 1,
/*lastLocalStreamCreatedTimeNanos=*/ 2,
/*lastRemoteStreamCreatedTimeNanos=*/ 3,
/*streamsSucceeded=*/ 4,
/*streamsFailed=*/ 5,
/*messagesSent=*/ 6,
/*messagesReceived=*/ 7,
/*keepAlivesSent=*/ 8,
/*lastMessageSentTimeNanos=*/ 9,
/*lastMessageReceivedTimeNanos=*/ 10,
/*localFlowControlWindow=*/ 11,
/*remoteFlowControlWindow=*/ 12);
SocketAddress local = new InetSocketAddress("10.0.0.1", 1000);
SocketAddress remote = new InetSocketAddress("10.0.0.2", 1000);
InternalChannelz.SocketOptions socketOptions
= new InternalChannelz.SocketOptions.Builder().build();
Security security = null;
@Override
public ListenableFuture<SocketStats> getStats() {
SettableFuture<SocketStats> ret = SettableFuture.create();
ret.set(
new SocketStats(
transportStats,
local,
remote,
socketOptions,
security));
return ret;
}
@Override
public InternalLogId getLogId() {
return id;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("logId", getLogId())
.toString();
}
}
static final class TestListenSocket implements InternalInstrumented<SocketStats> {
private final InternalLogId id = InternalLogId.allocate("listensocket", /*details=*/ null);
SocketAddress listenAddress = new InetSocketAddress("10.0.0.1", 1234);
@Override
public ListenableFuture<SocketStats> getStats() {
SettableFuture<SocketStats> ret = SettableFuture.create();
ret.set(
new SocketStats(
/*data=*/ null,
listenAddress,
/*remote=*/ null,
new SocketOptions.Builder().addOption("listen_option", "listen_option_value").build(),
/*security=*/ null));
return ret;
}
@Override
public InternalLogId getLogId() {
return id;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("logId", getLogId())
.toString();
}
}
static final class TestServer implements InternalInstrumented<ServerStats> {
private final InternalLogId id = InternalLogId.allocate("server", /*details=*/ null);
ServerStats serverStats = new ServerStats(
/*callsStarted=*/ 1,
/*callsSucceeded=*/ 2,
/*callsFailed=*/ 3,
/*lastCallStartedNanos=*/ 4,
Collections.<InternalInstrumented<SocketStats>>emptyList());
@Override
public ListenableFuture<ServerStats> getStats() {
SettableFuture<ServerStats> ret = SettableFuture.create();
ret.set(serverStats);
return ret;
}
@Override
public InternalLogId getLogId() {
return id;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("logId", getLogId())
.toString();
}
}
static final class TestChannel implements InternalInstrumented<ChannelStats> {
private final InternalLogId id =
InternalLogId.allocate("channel-or-subchannel", /*details=*/ null);
ChannelStats stats = new ChannelStats.Builder()
.setTarget("sometarget")
.setState(ConnectivityState.READY)
.setCallsStarted(1)
.setCallsSucceeded(2)
.setCallsFailed(3)
.setLastCallStartedNanos(4)
.setSubchannels(Collections.<InternalWithLogId>emptyList())
.setSockets(Collections.<InternalWithLogId>emptyList())
.build();
@Override
public ListenableFuture<ChannelStats> getStats() {
SettableFuture<ChannelStats> ret = SettableFuture.create();
ret.set(stats);
return ret;
}
@Override
public InternalLogId getLogId() {
return id;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("logId", getLogId())
.toString();
}
}
}