On Mon, Jun 20, 2011 at 08:18:11PM +0200, Roger Meier wrote: > 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
Okay, well I can use relative paths to get to those share .thrift files, but what about .thrift files for specific unit tests. I assume keeping those in the lib/<lang>/test directory is fine. > 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/ One thing here, in most cases the tests are run with 'make check' so its not always the case that 'make' will build the test code. And I think it should stay like that, unless you are actually running 'make check' it a bit of overhead to compile more stuff when you don't want it. > 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 This seems reasonable, because of the ordering of SUBDIRS in the top-level Makefile.am, the lib hierarchy is traversed first whn you make check. So the code which the scripts in test/<lang>/ can then be run as the code they probably rely on will have been built. I'll structure the erlang code in this manner when I move it, and maybe try to get to these scripts in test/<lang> -Anthony -- ------------------------------------------------------------------------ Anthony Molinaro <[email protected]>
