This is an automated email from the ASF dual-hosted git repository.

fokko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to refs/heads/master by this push:
     new fd80ae5  AVRO-2507: Add Python3 to the RPC interop test (#608)
fd80ae5 is described below

commit fd80ae5939270a4af993465ca625f50f46a791b6
Author: Kengo Seki <[email protected]>
AuthorDate: Thu Aug 29 17:19:23 2019 +0900

    AVRO-2507: Add Python3 to the RPC interop test (#608)
---
 lang/py/src/avro/ipc.py                    | 11 +--------
 lang/py3/avro/tool.py                      | 36 ++++++++++++++----------------
 share/test/interop/bin/test_rpc_interop.sh | 13 ++++++-----
 3 files changed, 25 insertions(+), 35 deletions(-)

diff --git a/lang/py/src/avro/ipc.py b/lang/py/src/avro/ipc.py
index 8cbf07b..ffc74ae 100644
--- a/lang/py/src/avro/ipc.py
+++ b/lang/py/src/avro/ipc.py
@@ -443,16 +443,7 @@ class HTTPTransceiver(object):
     self.req_resource = req_resource
     self.conn = httplib.HTTPConnection(host, port)
     self.conn.connect()
-
-  # read-only properties
-  sock = property(lambda self: self.conn.sock)
-  remote_name = property(lambda self: self.sock.getsockname())
-
-  # read/write properties
-  def set_conn(self, new_conn):
-    self._conn = new_conn
-  conn = property(lambda self: self._conn, set_conn)
-  req_resource = '/'
+    self.remote_name = self.conn.sock.getsockname()
 
   def transceive(self, request):
     self.write_framed_message(request)
diff --git a/lang/py3/avro/tool.py b/lang/py3/avro/tool.py
index 6bfce0d..36b996b 100644
--- a/lang/py3/avro/tool.py
+++ b/lang/py3/avro/tool.py
@@ -25,21 +25,21 @@ NOTE: The API for the command-line tool is experimental.
 
 import sys
 import urllib
-from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
+from http.server import BaseHTTPRequestHandler, HTTPServer
 
 from avro import datafile, io, ipc, protocol
 
 
 class GenericResponder(ipc.Responder):
   def __init__(self, proto, msg, datum):
-    proto_json = file(proto, 'r').read()
+    proto_json = open(proto, 'r').read()
     ipc.Responder.__init__(self, protocol.Parse(proto_json))
     self.msg = msg
     self.datum = datum
 
-  def invoke(self, message, request):
+  def Invoke(self, message, request):
     if message.name == self.msg:
-      print >> sys.stderr, "Message: %s Datum: %s" % (message.name, self.datum)
+      print("Message: %s Datum: %s" % (message.name, self.datum), sys.stderr)
       # server will shut down after processing a single Avro request
       global server_should_shutdown
       server_should_shutdown = True
@@ -49,15 +49,15 @@ class GenericHandler(BaseHTTPRequestHandler):
   def do_POST(self):
     self.responder = responder
     call_request_reader = ipc.FramedReader(self.rfile)
-    call_request = call_request_reader.read_framed_message()
-    resp_body = self.responder.respond(call_request)
+    call_request = call_request_reader.Read()
+    resp_body = self.responder.Respond(call_request)
     self.send_response(200)
     self.send_header('Content-Type', 'avro/binary')
     self.end_headers()
     resp_writer = ipc.FramedWriter(self.wfile)
-    resp_writer.write_framed_message(resp_body)
+    resp_writer.Write(resp_body)
     if server_should_shutdown:
-      print >> sys.stderr, "Shutting down server."
+      print("Shutting down server.", sys.stderr)
       self.server.force_stop()
 
 class StoppableHTTPServer(HTTPServer):
@@ -88,15 +88,15 @@ def run_server(uri, proto, msg, datum):
   print("Port: %s" % server.server_port)
   sys.stdout.flush()
   server.allow_reuse_address = True
-  print >> sys.stderr, "Starting server."
+  print("Starting server.", sys.stderr)
   server.serve_forever()
 
 def send_message(uri, proto, msg, datum):
   url_obj = urllib.parse.urlparse(uri)
   client = ipc.HTTPTransceiver(url_obj.hostname, url_obj.port)
-  proto_json = file(proto, 'r').read()
+  proto_json = open(proto, 'r').read()
   requestor = ipc.Requestor(protocol.Parse(proto_json), client)
-  print(requestor.request(msg, datum))
+  print(requestor.Request(msg, datum))
 
 def file_or_stdin(f):
   if f == "-":
@@ -125,10 +125,9 @@ def main(args=sys.argv):
     datum = None
     if len(args) > 5:
       if args[5] == "-file":
-        reader = open(args[6], 'rb')
-        datum_reader = io.DatumReader()
-        dfr = datafile.DataFileReader(reader, datum_reader)
-        datum = dfr.next()
+        with open(args[6], 'rb') as reader:
+          with datafile.DataFileReader(reader, io.DatumReader()) as dfr:
+            datum = next(dfr)
       elif args[5] == "-data":
         print("JSON Decoder not yet implemented.")
         return 1
@@ -146,10 +145,9 @@ def main(args=sys.argv):
     datum = None
     if len(args) > 5:
       if args[5] == "-file":
-        reader = open(args[6], 'rb')
-        datum_reader = io.DatumReader()
-        dfr = datafile.DataFileReader(reader, datum_reader)
-        datum = dfr.next()
+        with open(args[6], 'rb') as reader:
+          with datafile.DataFileReader(reader, io.DatumReader()) as dfr:
+            datum = next(dfr)
       elif args[5] == "-data":
         print("JSON Decoder not yet implemented.")
         return 1
diff --git a/share/test/interop/bin/test_rpc_interop.sh 
b/share/test/interop/bin/test_rpc_interop.sh
index e6d5c32..adc450d 100755
--- a/share/test/interop/bin/test_rpc_interop.sh
+++ b/share/test/interop/bin/test_rpc_interop.sh
@@ -24,16 +24,17 @@ VERSION=`cat share/VERSION.txt`
 java_client="java -jar lang/java/tools/target/avro-tools-$VERSION.jar rpcsend"
 java_server="java -jar lang/java/tools/target/avro-tools-$VERSION.jar 
rpcreceive"
 
-py_client="python lang/py/build/src/avro/tool.py rpcsend"
-py_server="python lang/py/build/src/avro/tool.py rpcreceive"
+py_client="env PYTHONPATH=lang/py/build/src python 
lang/py/build/src/avro/tool.py rpcsend"
+py_server="env PYTHONPATH=lang/py/build/src python 
lang/py/build/src/avro/tool.py rpcreceive"
+
+py3_client="env PYTHONPATH=lang/py3 python3 lang/py3/avro/tool.py rpcsend"
+py3_server="env PYTHONPATH=lang/py3 python3 lang/py3/avro/tool.py rpcreceive"
 
 ruby_client="ruby -rubygems -Ilang/ruby/lib lang/ruby/test/tool.rb rpcsend"
 ruby_server="ruby -rubygems -Ilang/ruby/lib lang/ruby/test/tool.rb rpcreceive"
 
-export PYTHONPATH=lang/py/build/src      # path to avro Python module
-
-clients=("$java_client" "$py_client" "$ruby_client")
-servers=("$java_server" "$py_server" "$ruby_server")
+clients=("$java_client" "$py_client" "$py3_client" "$ruby_client")
+servers=("$java_server" "$py_server" "$py3_server" "$ruby_server")
 
 proto=share/test/schemas/simple.avpr
 

Reply via email to