You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Roger Meier (JIRA)" <ji...@apache.org> on 2012/11/02 01:20:14 UTC
[jira] [Commented] (THRIFT-1745) Python JSON protocol
[ https://issues.apache.org/jira/browse/THRIFT-1745?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13489162#comment-13489162 ]
Roger Meier commented on THRIFT-1745:
-------------------------------------
Committed the file, thanks for the contribution!
I did some integration into our cross language test suite and some alignments of parameters within test/py/TestServer.py and test/py/TestClient.py according to test/ThriftTest.thrift(see THRIFT-847).
On my host the python test fails with json (hangs), so I did not add json to test/py/RunClientServer.py yet.
Any idea why?
JSON does not pass all cross language test yet, see:
{noformat}
thrift-trunk/test$ sh test.sh
Apache Thrift - integration test suite
Fri Nov 2 00:49:00 CET 2012
======================================================
client-server: protocol: transport: result:
cpp-cpp binary buffered-ip success
cpp-cpp binary buffered-domain success
cpp-cpp binary framed-ip success
cpp-cpp binary framed-domain success
cpp-cpp binary http-ip success
cpp-cpp binary http-domain success
cpp-cpp json buffered-ip success
cpp-cpp json buffered-domain success
cpp-cpp json framed-ip success
cpp-cpp json framed-domain success
cpp-cpp json http-ip success
cpp-cpp json http-domain success
py-py binary buffered-ip success
py-py json buffered-ip success
py-cpp binary buffered-ip success
py-cpp json buffered-ip failure
=================== server message ===================
Starting "simple" server (buffered/json) listen on: 9090
Thrift: Fri Nov 2 00:54:50 2012 TSimpleServer client died: No more data to read.
=================== client message ===================
File "py/gen-py/ThriftTest/ThriftTest.py", line 1995, in read
(fname, ftype, fid) = iprot.readFieldBegin()
File "py/../../lib/py/build/lib.linux-x86_64-2.6/thrift/protocol/TJSONProtocol.py", line 322, in readFieldBegin
type = JTYPES[self.readJSONString(False)]
KeyError: 'rec'
----------------------------------------------------------------------
Ran 18 tests in 2.016s
FAILED (errors=4)
======================================================
client-server: protocol: transport: result:
cpp-py binary buffered-ip failure
=================== server message ===================
Traceback (most recent call last):
File "py/../../lib/py/build/lib.linux-x86_64-2.6/thrift/server/TServer.py", line 84, in serve
self.processor.process(iprot, oprot)
File "py/gen-py/ThriftTest/ThriftTest.py", line 1006, in process
self._processMap[name](self, seqid, iprot, oprot)
File "py/gen-py/ThriftTest/ThriftTest.py", line 1170, in process_testMapMap
result.write(oprot)
File "py/gen-py/ThriftTest/ThriftTest.py", line 3054, in write
oprot.writeMapBegin(TType.I32, TType.MAP, len(self.success))
TypeError: object of type 'int' has no len()
=================== client message ===================
testMap({0 => -10, 1 => -9, 2 => -8, 3 => -7, 4 => -6}) = {0 => -10, 1 => -9, 2 => -8, 3 => -7, 4 => -6}
testSet({-2, -1, 0, 1, 2}) = {-2, -1, 0, 1, 2}
testList({-2, -1, 0, 1, 2}) = {-2, -1, 0, 1, 2}
testEnum(ONE) = 1
testEnum(TWO) = 2
testEnum(THREE) = 3
testEnum(FIVE) = 5
testEnum(EIGHT) = 8
testTypedef(309858235082523) = 309858235082523
testMapMap(1)Aborted
======================================================
client-server: protocol: transport: result:
cpp-py json buffered-ip failure
=================== server message ===================
self.processor.process(iprot, oprot)
File "py/gen-py/ThriftTest/ThriftTest.py", line 1006, in process
self._processMap[name](self, seqid, iprot, oprot)
File "py/gen-py/ThriftTest/ThriftTest.py", line 1077, in process_testStruct
args.read(iprot)
File "py/gen-py/ThriftTest/ThriftTest.py", line 1935, in read
(fname, ftype, fid) = iprot.readFieldBegin()
File "py/../../lib/py/build/lib.linux-x86_64-2.6/thrift/protocol/TJSONProtocol.py", line 322, in readFieldBegin
type = JTYPES[self.readJSONString(False)]
KeyError: 'rec'
=================== client message ===================
terminate called after throwing an instance of 'apache::thrift::transport::TTransportException'
what(): No more data to read.
Test #1, connect localhost:9090
testVoid() = void
testString("Test") = "Test"
testByte(1) = 1
testI32(-1) = -1
testI64(-34359738368) = -34359738368
testDouble(-5.2098523) = -5.209852
testStruct({"Zero", 1, -3, -5})Aborted
======================================================
client-server: protocol: transport: result:
py-java binary buffered-ip success
py-java json buffered-ip failure
=================== server message ===================
[javac] Compiling 2 source files to thrift-trunk/lib/java/build/test
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[jar] Building jar: thrift-trunk/lib/java/build/libthrift-1.0.0-test.jar
testserver:
[java] Starting the server on port 9090...
[java] TServerEventHandler.preServe - called only once before server starts accepting connections
[java] TServerEventHandler.createContext - connection #1 established
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
=================== client message ===================
File "py/../../lib/py/build/lib.linux-x86_64-2.6/thrift/transport/TTransport.py", line 149, in open
return self.__trans.open()
File "py/../../lib/py/build/lib.linux-x86_64-2.6/thrift/transport/TSocket.py", line 99, in open
message=message)
TTransportException: Could not connect to localhost:9090
----------------------------------------------------------------------
Ran 18 tests in 10.389s
FAILED (errors=18)
======================================================
client-server: protocol: transport: result:
java-py binary buffered-ip success
java-java binary buffered-ip success
cpp-java binary buffered-ip failure
=================== server message ===================
[java] testMultiException(Xception2, test 2)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testMultiException(success, test 3)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testOneway(3) => sleeping...
[java] Done sleeping!
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testI32(-1)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] TServerEventHandler.deleteContext - connection #1 terminated
=================== client message ===================
testClient.testMultiException("Xception2", "test 2") => {2002, {"This is an Xception2"}}
testClient.testMultiException("success", "test 3") => {{"test 3"}}
testClient.testOneway(3) => success - took 0.01 ms
re-test testI32(-1) = -1
Total time: 3194210 us
All tests done.
Min time: 3194210 us
Max time: 3194210 us
Avg time: 3194210 us
======================================================
client-server: protocol: transport: result:
cpp-java json buffered-ip failure
=================== server message ===================
[java] testMultiException(Xception2, test 2)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testMultiException(success, test 3)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testOneway(3) => sleeping...
[java] Done sleeping!
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testI32(-1)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] TServerEventHandler.deleteContext - connection #1 terminated
=================== client message ===================
testClient.testMultiException("Xception2", "test 2") => {2002, {"This is an Xception2"}}
testClient.testMultiException("success", "test 3") => {{"test 3"}}
testClient.testOneway(3) => success - took 0.00 ms
re-test testI32(-1) = -1
Total time: 3213776 us
All tests done.
Min time: 3213776 us
Max time: 3213776 us
Avg time: 3213776 us
======================================================
client-server: protocol: transport: result:
js-java json http-ip success
cpp-java binary buffered-ip failure
=================== server message ===================
[java] testMultiException(Xception2, test 2)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testMultiException(success, test 3)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testOneway(3) => sleeping...
[java] Done sleeping!
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testI32(-1)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] TServerEventHandler.deleteContext - connection #1 terminated
=================== client message ===================
testClient.testMultiException("Xception2", "test 2") => {2002, {"This is an Xception2"}}
testClient.testMultiException("success", "test 3") => {{"test 3"}}
testClient.testOneway(3) => success - took 0.01 ms
re-test testI32(-1) = -1
Total time: 3194210 us
All tests done.
Min time: 3194210 us
Max time: 3194210 us
Avg time: 3194210 us
======================================================
client-server: protocol: transport: result:
cpp-java json buffered-ip failure
=================== server message ===================
[java] testMultiException(Xception2, test 2)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testMultiException(success, test 3)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testOneway(3) => sleeping...
[java] Done sleeping!
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] testI32(-1)
[java] TServerEventHandler.processContext - connection #1 is ready to process next request
[java] TServerEventHandler.deleteContext - connection #1 terminated
=================== client message ===================
testClient.testMultiException("Xception2", "test 2") => {2002, {"This is an Xception2"}}
testClient.testMultiException("success", "test 3") => {{"test 3"}}
testClient.testOneway(3) => success - took 0.00 ms
re-test testI32(-1) = -1
Total time: 3213776 us
All tests done.
Min time: 3213776 us
Max time: 3213776 us
Avg time: 3213776 us
======================================================
client-server: protocol: transport: result:
js-java json http-ip success
java-cpp binary buffered-ip success
perl-cpp binary buffered-ip success
{noformat}
> Python JSON protocol
> ---------------------
>
> Key: THRIFT-1745
> URL: https://issues.apache.org/jira/browse/THRIFT-1745
> Project: Thrift
> Issue Type: New Feature
> Components: Python - Library
> Affects Versions: 1.0
> Reporter: Frederic Delbos
> Assignee: Roger Meier
> Priority: Minor
> Attachments: TJSONProtocol.py
>
>
> I write a JSON protocol for Python available here : https://gist.github.com/3948701 So far it passes all the tests.
> Also you need to add json to the python test suit and 'TJSONProtocol' in lib/py/src/protocol/__init__.py
> cheers
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira