To make easily testing without manual intervention possible, it would be great if the ThriftTest clients actually checked the results of the RPC calls, instead of just printing them to the console like C++/Java currently do.

Also, it would be great if either all the functions from the ThriftTest interface only returned a copy from their arguments (testMapMap and testInsanity currently don't), or the return values were the same across all implementations (e.g. by defining them as constants in ThriftTest.thrift), so that these checks could also be active when doing cross-language testing.

David


On 6/20/11 8:18 PM, Roger Meier wrote:


-----Ursprüngliche Nachricht-----
Von: Anthony Molinaro [mailto:antho...@alumni.caltech.edu]
Gesendet: Sonntag, 19. Juni 2011 21:17
An: dev@thrift.apache.org
Cc:<dev@thrift.apache.org>
Betreff: Re: AW: AW: Use rebar with erlang code?


 From my perspective everything should be moved from test/erl to
lib/erl/test/

The test directory should only contain test definitions like the
ThriftTest.thrift




Doesn't that sort of make testing harder if the thrift files are in a
different
place from the tests? Also if cross language tests are ever implemented
where would you expect those to live?
I might suggest that pure unit tests (including thrift files for those
tests) live
in the lib/*/test directories but the test servers and clients for cross
language
testing continue to live in top level test directory (possibly with
something
which runs all combinations against each other).

-Anthony

 From my perspective test/ is the directory that keeps all IDL files for
UnitTests, which will be used across languages.
e.g. the ThriftTest.thrift is used by several unit tests

I think it's much easier to build all the tests when they are part of the
usual build procedure of a specific language.
It's probably a bit difficult to keep test under test/ in sync with the
build process of the library,
that's why a propose to put all the tests in lib/<lang>/test/

  The get a cross language test capability I suggest the following approach:
-  The language specific build procedures should create an executable with
the name TestClient  and TestServer
-  They should be placed under test/<lang>/ or a shell script with the same
name calls corresponding Client or Server
-  The test client and servers should have a unified set of arguments, so
that cross language tests could easily be automated, e.g.
roger@slave:~/software/thrift/thrift-trunk$ ./test/cpp/TestServer -h
Allowed options:
   -h [ --help ]               produce help message
   --port arg (=9090)                    Port number to listen
   --domain-socket arg               Unix Domain Socket (e.g.
/tmp/ThriftTest.thrift)
   --server-type arg (=simple) type of server, "simple", "thread-pool",
"threaded", or "nonblocking"
   --transport arg (=buffered) transport: buffered, framed, http
   --protocol arg (=binary)        protocol: binary, json
   --ssl                                               Encrypted Transport
using SSL
   --processor-events                processor-events
   -n [ --workers ] arg (=4)        Number of thread pools workers. Only
valid for thread-pool server type

roger@slave:~/software/thrift/thrift-trunk$ ./test/cpp/TestClient -h
Allowed options:
   -h [ --help ]                                 produce help message
   --host arg (=localhost)           Host to connect
   --port arg (=9090)                    Port number to connect
   --domain-socket arg               Domain Socket (e.g.
/tmp/ThriftTest.thrift), instead of host and port
   --transport arg (=buffered) Transport: buffered, framed, http
   --protocol arg (=binary)         Protocol: binary, json
   --ssl                                                Encrypted Transport
using SSL
   -n [ --testloops ] arg (=1)      Number of Tests


-Roger




Reply via email to