func Test_Proto_Thrift(t *testing.T) { t.Skip() server := &TServer{} err := server.Start(thrift.NewTTransportFactory()) assert.NoError(t, err) defer server.Server.Stop() var transport thrift.TTransport transport, err = thrift.NewTSocket(fmt.Sprintf("127.0.0.1:%d", server.Port)) assert.NoError(t, err) transportFactory := thrift.NewTTransportFactory() transport = transportFactory.GetTransport(transport) err = transport.Open() assert.NoError(t, err) defer transport.Close() protoFactory := thrift.NewTBinaryProtocolFactoryDefault() client := srv.NewTSrvClientFactory(transport, protoFactory) req := srv.TestRep{ ID: "test", Data: []byte("mama myla ramy"), } res, err := client.Test(&req) assert.NoError(t, err) assert.EqualValues(t, req, *res) }
func Benchmark_Proto_Thrift_Buffered(b *testing.B) { b.Skip() server := &TServer{} err := server.Start(thrift.NewTBufferedTransportFactory(thrift_buffer)) assert.NoError(b, err) defer server.Server.Stop() var transport thrift.TTransport transport, err = thrift.NewTSocket(fmt.Sprintf("127.0.0.1:%d", server.Port)) assert.NoError(b, err) transportFactory := thrift.NewTBufferedTransportFactory(thrift_buffer) transport = transportFactory.GetTransport(transport) err = transport.Open() assert.NoError(b, err) defer transport.Close() protoFactory := thrift.NewTBinaryProtocolFactoryDefault() client := srv.NewTSrvClientFactory(transport, protoFactory) b.Log(server.Port, b.N) b.ResetTimer() for i := 0; i < b.N; i++ { b.StartTimer() req := srv.TestRep{ ID: fmt.Sprintf("%d", i), Data: []byte("mama myla ramy"), } res, err := client.Test(&req) b.StopTimer() assert.NoError(b, err) assert.EqualValues(b, req, *res) b.SetBytes(int64(len(req.Data) * 2)) } }
func main() { flag.Usage = Usage var host string var port int var protocol string var urlString string var framed bool var useHttp bool var parsedUrl url.URL var trans thrift.TTransport _ = strconv.Atoi _ = math.Abs flag.Usage = Usage flag.StringVar(&host, "h", "localhost", "Specify host and port") flag.IntVar(&port, "p", 9090, "Specify port") flag.StringVar(&protocol, "P", "binary", "Specify the protocol (binary, compact, simplejson, json)") flag.StringVar(&urlString, "u", "", "Specify the url") flag.BoolVar(&framed, "framed", false, "Use framed transport") flag.BoolVar(&useHttp, "http", false, "Use http") flag.Parse() if len(urlString) > 0 { parsedUrl, err := url.Parse(urlString) if err != nil { fmt.Fprintln(os.Stderr, "Error parsing URL: ", err) flag.Usage() } host = parsedUrl.Host useHttp = len(parsedUrl.Scheme) <= 0 || parsedUrl.Scheme == "http" } else if useHttp { _, err := url.Parse(fmt.Sprint("http://", host, ":", port)) if err != nil { fmt.Fprintln(os.Stderr, "Error parsing URL: ", err) flag.Usage() } } cmd := flag.Arg(0) var err error if useHttp { trans, err = thrift.NewTHttpClient(parsedUrl.String()) } else { portStr := fmt.Sprint(port) if strings.Contains(host, ":") { host, portStr, err = net.SplitHostPort(host) if err != nil { fmt.Fprintln(os.Stderr, "error with host:", err) os.Exit(1) } } trans, err = thrift.NewTSocket(net.JoinHostPort(host, portStr)) if err != nil { fmt.Fprintln(os.Stderr, "error resolving address:", err) os.Exit(1) } if framed { trans = thrift.NewTFramedTransport(trans) } } if err != nil { fmt.Fprintln(os.Stderr, "Error creating transport", err) os.Exit(1) } defer trans.Close() var protocolFactory thrift.TProtocolFactory switch protocol { case "compact": protocolFactory = thrift.NewTCompactProtocolFactory() break case "simplejson": protocolFactory = thrift.NewTSimpleJSONProtocolFactory() break case "json": protocolFactory = thrift.NewTJSONProtocolFactory() break case "binary", "": protocolFactory = thrift.NewTBinaryProtocolFactoryDefault() break default: fmt.Fprintln(os.Stderr, "Invalid protocol specified: ", protocol) Usage() os.Exit(1) } client := srv.NewTSrvClientFactory(trans, protocolFactory) if err := trans.Open(); err != nil { fmt.Fprintln(os.Stderr, "Error opening socket to ", host, ":", port, " ", err) os.Exit(1) } switch cmd { case "Test": if flag.NArg()-1 != 1 { fmt.Fprintln(os.Stderr, "Test requires 1 args") flag.Usage() } arg4 := flag.Arg(1) mbTrans5 := thrift.NewTMemoryBufferLen(len(arg4)) defer mbTrans5.Close() _, err6 := mbTrans5.WriteString(arg4) if err6 != nil { Usage() return } factory7 := thrift.NewTSimpleJSONProtocolFactory() jsProt8 := factory7.GetProtocol(mbTrans5) argvalue0 := srv.NewTestRep() err9 := argvalue0.Read(jsProt8) if err9 != nil { Usage() return } value0 := argvalue0 fmt.Print(client.Test(value0)) fmt.Print("\n") break case "": Usage() break default: fmt.Fprintln(os.Stderr, "Invalid function ", cmd) } }