Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2015, Google Inc. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions are
   * met:
   *
   *    * Redistributions of source code must retain the above copyright
   * notice, this list of conditions and the following disclaimer.
  *    * Redistributions in binary form must reproduce the above
  * copyright notice, this list of conditions and the following disclaimer
  * in the documentation and/or other materials provided with the
  * distribution.
  *
  *    * Neither the name of Google Inc. nor the names of its
  * contributors may be used to endorse or promote products derived from
  * this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 package io.grpc.benchmarks.qps;
 
 
 
 
 
 import java.io.File;
Utility methods to support benchmarking classes.
 
 final class Utils {
   private static final String UNIX_DOMAIN_SOCKET_PREFIX = "unix://";
 
   // The histogram can record values between 1 microsecond and 1 min.
   static final long HISTOGRAM_MAX_VALUE = 60000000L;
   // Value quantization will be no larger than 1/10^3 = 0.1%.
   static final int HISTOGRAM_PRECISION = 3;
 
   private Utils() {
   }
 
   static boolean parseBoolean(String value) {
     return value.isEmpty() || Boolean.parseBoolean(value);
   }
 
   static SocketAddress parseSocketAddress(String value) {
     if (value.startsWith()) {
       // Unix Domain Socket address.
       // Create the underlying file for the Unix Domain Socket.
       String filePath = value.substring(.length());
       File file = new File(filePath);
       if (!file.isAbsolute()) {
         throw new IllegalArgumentException("File path must be absolute: " + filePath);
       }
       try {
         if (file.createNewFile()) {
           // If this application created the file, delete it when the application exits.
           file.deleteOnExit();
         }
       } catch (IOException ex) {
         throw new RuntimeException(ex);
       }
      // Create the SocketAddress referencing the file.
      return new DomainSocketAddress(file);
    } else {
      // Standard TCP/IP address.
      String[] parts = value.split(":", 2);
      if (parts.length < 2) {
        throw new IllegalArgumentException(
            "Address must be a unix:// path or be in the form host:port. Got: " + value);
      }
      String host = parts[0];
      int port = Integer.parseInt(parts[1]);
      return new InetSocketAddress(hostport);
    }
  }
    ByteString body = ByteString.copyFrom(new byte[config.clientPayload]);
    Payload payload = Payload.newBuilder()
        .setType(config.payloadType)
        .setBody(body)
        .build();
    return SimpleRequest.newBuilder()
        .setResponseType(config.payloadType)
        .setResponseSize(config.serverPayload)
        .setPayload(payload)
        .build();
  }
    if (config.transport == ..) {
      InetSocketAddress addr = (InetSocketAddressconfig.address;
      return OkHttpChannelBuilder
          .forAddress(addr.getHostName(), addr.getPort())
          .executor(config.directExecutor ? MoreExecutors.newDirectExecutorService() : null)
          .build();
    }
    // It's a Netty transport.
    SslContext context = null;
    NegotiationType negotiationType = config.tls ? . : .;
    if (config.tls && config.testca) {
      File cert = TestUtils.loadCert("ca.pem");
      boolean useJdkSsl = config.transport == ..;
      context = GrpcSslContexts.forClient().trustManager(cert)
          .sslProvider(useJdkSsl ? . : .)
          .build();
    }
    final EventLoopGroup group;
    final Class<? extends io.netty.channel.ChannelchannelType;
    switch (config.transport) {
      case :
        group = new NioEventLoopGroup();
        channelType = NioSocketChannel.class;
        break;
      case :
        // These classes only work on Linux.
        group = new EpollEventLoopGroup();
        channelType = EpollSocketChannel.class;
        break;
      case :
        // These classes only work on Linux.
        group = new EpollEventLoopGroup();
        channelType = EpollDomainSocketChannel.class;
        break;
      default:
        // Should never get here.
        throw new IllegalArgumentException("Unsupported transport: " + config.transport);
    }
    return NettyChannelBuilder
        .forAddress(config.address)
        .eventLoopGroup(group)
        .channelType(channelType)
        .negotiationType(negotiationType)
        .executor(config.directExecutor ? MoreExecutors.newDirectExecutorService() : null)
        .sslContext(context)
        .connectionWindowSize(config.connectionWindow)
        .streamWindowSize(config.streamWindow)
        .build();
  }
  static void saveHistogram(Histogram histogramString filenamethrows IOException {
    File file;
    PrintStream log = null;
    try {
      file = new File(filename);
      if (file.exists() && !file.delete()) {
        ..println("Failed deleting previous histogram file: " + file.getAbsolutePath());
      }
      log = new PrintStream(new FileOutputStream(file), false);
      histogram.outputPercentileDistribution(log, 1.0);
    } finally {
      if (log != null) {
        log.close();
      }
    }
  }
New to GrepCode? Check out our FAQ X