[ https://issues.apache.org/jira/browse/THRIFT-4405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James E. King, III updated THRIFT-4405: --------------------------------------- Description: Create a feature test that verifies sequence numbers are used properly. Write a server that verifies clients are generating unique sequence IDs. Write a client that makes sure servers return the same sequence ID that was given. To do this, I enhanced the C++ TProcessorEventHandler class to include a preReadSeq, which is like preRead but carries the sequence ID. In the C++ TestServer, I check to see if the sequence numbers are unique and do not repeat; if any of them do, the cpp test fails. The following languages properly send sequence IDs (for the binary protocol): * go * nodejs * java * rs The rest of the languages do not. Now, one could argue that unless a language has a concurrent-safe client and server, sequence IDs are unnecessary. While that is true, all languages should respect that the protocol has a sequence ID and there could be future implementations that will require all clients are well-behaved, which is why I am putting this test in. Languages fixed up so unique sequence IDs are sent by the client, and verified by the tests: * cpp * perl was: Create a feature test that verifies sequence numbers are used properly. Write a server that verifies clients are generating unique sequence IDs. Write a client that makes sure servers return the same sequence ID that was given. To do this, I enhanced the C++ TProcessorEventHandler class to include a preReadSeq, which is like preRead but carries the sequence ID. In the C++ TestServer, I check to see if the sequence numbers are unique and do not repeat; if any of them do, the cpp test fails. The following languages properly send sequence IDs (for the binary protocol): * go * nodejs * java * rs The rest of the languages do not. Now, one could argue that unless a language has a concurrent-safe client and server, sequence IDs are unnecessary. While that is true, all languages should respect that the protocol has a sequence ID and there could be future implementations that will require all clients are well-behaved, which is why I am putting this test in. > Create a feature test that verifies sequence numbers are used properly and > fix problems that are discovered > ----------------------------------------------------------------------------------------------------------- > > Key: THRIFT-4405 > URL: https://issues.apache.org/jira/browse/THRIFT-4405 > Project: Thrift > Issue Type: Test > Components: Test Suite > Affects Versions: 0.10.0 > Environment: docker ubuntu-xenial > Reporter: James E. King, III > Assignee: James E. King, III > > Create a feature test that verifies sequence numbers are used properly. > Write a server that verifies clients are generating unique sequence IDs. > Write a client that makes sure servers return the same sequence ID that was > given. > To do this, I enhanced the C++ TProcessorEventHandler class to include a > preReadSeq, which is like preRead but carries the sequence ID. > In the C++ TestServer, I check to see if the sequence numbers are unique and > do not repeat; if any of them do, the cpp test fails. > The following languages properly send sequence IDs (for the binary protocol): > * go > * nodejs > * java > * rs > The rest of the languages do not. Now, one could argue that unless a > language has a concurrent-safe client and server, sequence IDs are > unnecessary. While that is true, all languages should respect that the > protocol has a sequence ID and there could be future implementations that > will require all clients are well-behaved, which is why I am putting this > test in. > Languages fixed up so unique sequence IDs are sent by the client, and > verified by the tests: > * cpp > * perl -- This message was sent by Atlassian JIRA (v6.4.14#64029)