### Question:
GrpcUtil { public static String getGrpcUserAgent( String transportName, @Nullable String applicationUserAgent) { StringBuilder builder = new StringBuilder(); if (applicationUserAgent != null) { builder.append(applicationUserAgent); builder.append(' '); } builder.append("grpc-java-"); builder.append(transportName); builder.append('/'); builder.append(IMPLEMENTATION_VERSION); return builder.toString(); } private  GrpcUtil(); static boolean shouldBeCountedForInUse(CallOptions callOptions); static ProxyDetector getDefaultProxyDetector(); static Status httpStatusToGrpcStatus(int httpStatusCode); static boolean isGrpcContentType(String contentType); static String getGrpcUserAgent(
      String transportName, @Nullable String applicationUserAgent); static URI authorityToUri(String authority); static String checkAuthority(String authority); static String authorityFromHostAndPort(String host, int port); static ThreadFactory getThreadFactory(String nameFormat, boolean daemon); static String getHost(InetSocketAddress addr); static void closeQuietly(@Nullable InputStream message); static EquivalentAddressGroup getAddressGroupFromTransport(ClientTransport transport); static final Charset US_ASCII; static final boolean IS_RESTRICTED_APPENGINE; static final Metadata.Key<Long> TIMEOUT_KEY; static final Metadata.Key<String> MESSAGE_ENCODING_KEY; static final Metadata.Key<byte[]> MESSAGE_ACCEPT_ENCODING_KEY; static final Metadata.Key<String> CONTENT_ENCODING_KEY; static final Metadata.Key<byte[]> CONTENT_ACCEPT_ENCODING_KEY; static final Metadata.Key<String> CONTENT_TYPE_KEY; static final Metadata.Key<String> TE_HEADER; static final Metadata.Key<String> USER_AGENT_KEY; static final int DEFAULT_PORT_PLAINTEXT; static final int DEFAULT_PORT_SSL; static final String CONTENT_TYPE_GRPC; static final String HTTP_METHOD; static final String TE_TRAILERS; static final String TIMEOUT; static final String MESSAGE_ENCODING; static final String MESSAGE_ACCEPT_ENCODING; static final String CONTENT_ENCODING; static final String CONTENT_ACCEPT_ENCODING; static final int DEFAULT_MAX_MESSAGE_SIZE; static final int DEFAULT_MAX_HEADER_LIST_SIZE; static final Splitter ACCEPT_ENCODING_SPLITTER; static final long DEFAULT_KEEPALIVE_TIME_NANOS; static final long DEFAULT_KEEPALIVE_TIMEOUT_NANOS; static final long KEEPALIVE_TIME_NANOS_DISABLED; static final long DEFAULT_SERVER_KEEPALIVE_TIME_NANOS; static final long DEFAULT_SERVER_KEEPALIVE_TIMEOUT_NANOS; static final long SERVER_KEEPALIVE_TIME_NANOS_DISABLED; static final ProxyDetector DEFAULT_PROXY_DETECTOR; static final ProxyDetector NOOP_PROXY_DETECTOR; static final CallOptions.Key<Boolean> CALL_OPTIONS_RPC_OWNED_BY_BALANCER; static final Resource<Executor> SHARED_CHANNEL_EXECUTOR; static final Resource<ScheduledExecutorService> TIMER_SERVICE; static final Supplier<Stopwatch> STOPWATCH_SUPPLIER; }### Answer:
@Test public void grpcUserAgent() { assertTrue(GrpcUtil.getGrpcUserAgent("netty", null).startsWith("grpc-java-netty/")); assertTrue(GrpcUtil.getGrpcUserAgent("okhttp", "libfoo/1.0") .startsWith("libfoo/1.0 grpc-java-okhttp")); }