From 44b19df535fa83855f91d11c2ecf2e73360a5444 Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Fri, 26 Jul 2013 23:05:00 +0200 Subject: [PATCH] THRIFT-2083 Improve the go lib: Testcase for buffered Transport Patch: Feng Shen --- ...fed_transport.go => buffered_transport.go} | 19 ++++++++++++ lib/go/thrift/buffered_transport_test.go | 29 +++++++++++++++++++ tutorial/go/src/client.go | 4 +-- tutorial/go/src/main.go | 15 ++++++++-- tutorial/go/src/server.go | 4 +-- 5 files changed, 64 insertions(+), 7 deletions(-) rename lib/go/thrift/{buffed_transport.go => buffered_transport.go} (70%) create mode 100644 lib/go/thrift/buffered_transport_test.go diff --git a/lib/go/thrift/buffed_transport.go b/lib/go/thrift/buffered_transport.go similarity index 70% rename from lib/go/thrift/buffed_transport.go rename to lib/go/thrift/buffered_transport.go index 1ba30537995..e3546a51cb1 100644 --- a/lib/go/thrift/buffed_transport.go +++ b/lib/go/thrift/buffered_transport.go @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 thrift type TBufferedTransportFactory struct { diff --git a/lib/go/thrift/buffered_transport_test.go b/lib/go/thrift/buffered_transport_test.go new file mode 100644 index 00000000000..95ec0cbd2c0 --- /dev/null +++ b/lib/go/thrift/buffered_transport_test.go @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 thrift + +import ( + "testing" +) + +func TestBufferedTransport(t *testing.T) { + trans := NewTBufferedTransport(NewTMemoryBuffer(), 10240) + TransportTest(t, trans, trans) +} diff --git a/tutorial/go/src/client.go b/tutorial/go/src/client.go index 114de19f98a..7f8d28fa830 100644 --- a/tutorial/go/src/client.go +++ b/tutorial/go/src/client.go @@ -69,9 +69,9 @@ func handleClient(client *tutorial.CalculatorClient) (err error) { return err } -func runClient(transportFactory thrift.TTransportFactory, protocolFactory thrift.TProtocolFactory) error { +func runClient(transportFactory thrift.TTransportFactory, protocolFactory thrift.TProtocolFactory, addr string) error { var transport thrift.TTransport - transport, err := thrift.NewTSocket("localhost:9090") + transport, err := thrift.NewTSocket(addr) if err != nil { fmt.Println("Error opening socket:", err) return err diff --git a/tutorial/go/src/main.go b/tutorial/go/src/main.go index 4b9576eef8f..d3713946089 100644 --- a/tutorial/go/src/main.go +++ b/tutorial/go/src/main.go @@ -37,6 +37,8 @@ func main() { server := flag.Bool("server", false, "Run server") protocol := flag.String("P", "binary", "Specify the protocol (binary, compact, simplejson)") framed := flag.Bool("framed", false, "Use framed transport") + buffered := flag.Bool("buffered", false, "Use buffered transport") + addr := flag.String("addr", "localhost:9090", "Address to listen to") flag.Parse() @@ -55,17 +57,24 @@ func main() { Usage() os.Exit(1) } - transportFactory := thrift.NewTTransportFactory() + + var transportFactory thrift.TTransportFactory + if *buffered { + transportFactory = thrift.NewTBufferedTransportFactory(8192) + } else { + transportFactory = thrift.NewTTransportFactory() + } + if *framed { transportFactory = thrift.NewTFramedTransportFactory(transportFactory) } if *server { - if err := runServer(transportFactory, protocolFactory); err != nil { + if err := runServer(transportFactory, protocolFactory, *addr); err != nil { fmt.Println("error running server:", err) } } else { - if err := runClient(transportFactory, protocolFactory); err != nil { + if err := runClient(transportFactory, protocolFactory, *addr); err != nil { fmt.Println("error running client:", err) } } diff --git a/tutorial/go/src/server.go b/tutorial/go/src/server.go index 929e223d6fa..aea749e89e2 100644 --- a/tutorial/go/src/server.go +++ b/tutorial/go/src/server.go @@ -25,8 +25,8 @@ import ( "tutorial" ) -func runServer(transportFactory thrift.TTransportFactory, protocolFactory thrift.TProtocolFactory) error { - transport, err := thrift.NewTServerSocket("localhost:9090") +func runServer(transportFactory thrift.TTransportFactory, protocolFactory thrift.TProtocolFactory, addr string) error { + transport, err := thrift.NewTServerSocket(addr) if err != nil { return err }