[ 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): * dart * 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 (was only sending unique sequence IDs for Concurrent clients, now it does for the regular one too) * csharp (seqid_ was not bring incremented with each use) * lua (seqid_ was not bring incremented with each use) * perl (seqid_ was not bring incremented with each use) * ruby (seqid_ was not bring incremented with each use and a unit test was updated to no longer be pending) Languages left to do: * c_glib * erlang * haskell * php * python * python3 * any non-cross tested languages 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): * dart * 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 * csharp * lua * perl * ruby Languages left to do: * c_glib * erlang * haskell * php * python * python3 * any non-cross tested languages > 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): > * dart > * 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 (was only sending unique sequence IDs for Concurrent clients, now it > does for the regular one too) > * csharp (seqid_ was not bring incremented with each use) > * lua (seqid_ was not bring incremented with each use) > * perl (seqid_ was not bring incremented with each use) > * ruby (seqid_ was not bring incremented with each use and a unit test was > updated to no longer be pending) > Languages left to do: > * c_glib > * erlang > * haskell > * php > * python > * python3 > * any non-cross tested languages -- This message was sent by Atlassian JIRA (v6.4.14#64029)