func client(protocolFactory thrift.TProtocolFactory) { trans, err := thrift.NewTSocket(hostPort) if err != nil { log.Fatalf("Unable to create server socket: %s", err) } btrans := thrift.NewTBufferedTransport(trans, 2048) client := stress.NewServiceClientFactory(btrans, protocolFactory) err = trans.Open() if err != nil { log.Fatalf("Unable to open connection: %s", err) } ready.Done() ready.Wait() switch callType { case echoVoid: for i := 0; i < *loop; i++ { client.EchoVoid() atomic.AddInt64(&clicounter, 1) } case echoByte: for i := 0; i < *loop; i++ { client.EchoByte(42) atomic.AddInt64(&clicounter, 1) } case echoI32: for i := 0; i < *loop; i++ { client.EchoI32(4242) atomic.AddInt64(&clicounter, 1) } case echoI64: for i := 0; i < *loop; i++ { client.EchoI64(424242) atomic.AddInt64(&clicounter, 1) } case echoString: for i := 0; i < *loop; i++ { client.EchoString("TestString") atomic.AddInt64(&clicounter, 1) } case echiList: l := []int8{-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8} for i := 0; i < *loop; i++ { client.EchoList(l) atomic.AddInt64(&clicounter, 1) } case echoSet: s := map[int8]struct{}{-10: {}, -9: {}, -8: {}, -7: {}, -6: {}, -5: {}, -4: {}, -3: {}, -2: {}, -1: {}, 0: {}, 1: {}, 2: {}, 3: {}, 4: {}, 5: {}, 6: {}, 7: {}, 8: {}} for i := 0; i < *loop; i++ { client.EchoSet(s) atomic.AddInt64(&clicounter, 1) } case echoMap: m := map[int8]int8{-10: 10, -9: 9, -8: 8, -7: 7, -6: 6, -5: 5, -4: 4, -3: 3, -2: 2, -1: 1, 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8} for i := 0; i < *loop; i++ { client.EchoMap(m) atomic.AddInt64(&clicounter, 1) } } done.Done() }
func StartClient( host string, port int64, domain_socket string, transport string, protocol string, ssl bool) (client *thrifttest.ThriftTestClient, err error) { hostPort := fmt.Sprintf("%s:%d", host, port) var protocolFactory thrift.TProtocolFactory switch protocol { case "compact": protocolFactory = thrift.NewTCompactProtocolFactory() case "simplejson": protocolFactory = thrift.NewTSimpleJSONProtocolFactory() case "json": protocolFactory = thrift.NewTJSONProtocolFactory() case "binary": protocolFactory = thrift.NewTBinaryProtocolFactoryDefault() default: return nil, fmt.Errorf("Invalid protocol specified %s", protocol) } if debugClientProtocol { protocolFactory = thrift.NewTDebugProtocolFactory(protocolFactory, "client:") } var trans thrift.TTransport if ssl { trans, err = thrift.NewTSSLSocket(hostPort, &tls.Config{InsecureSkipVerify: true}) } else { if domain_socket != "" { trans, err = thrift.NewTSocket(domain_socket) } else { trans, err = thrift.NewTSocket(hostPort) } } if err != nil { return nil, err } switch transport { case "http": trans, err = thrift.NewTHttpClient(fmt.Sprintf("http://%s/service", hostPort)) if err != nil { return nil, err } case "framed": trans = thrift.NewTFramedTransport(trans) case "buffered": trans = thrift.NewTBufferedTransport(trans, 8192) case "": trans = trans default: return nil, fmt.Errorf("Invalid transport specified %s", transport) } if err = trans.Open(); err != nil { return nil, err } client = thrifttest.NewThriftTestClientFactory(trans, protocolFactory) return }