[ 
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
* csharp
* lua
* perl
* ruby

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):

* 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


> 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
> * csharp
> * lua
> * perl
> * ruby
> 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)

Reply via email to