thrift/test
jfarrell e0e8316838 THRIFT-2421: Tree/Recursive struct support in thrift
Client: cpp
Patch:  Dave Watson

Github Pull Request: This closes #84
----
commit b6134cedf292845e5ed01052919894df6b561bf2
Date:   2014-03-20T18:12:04Z

    Recursive structs support in parser

    A common complaint is that you can't express trees or other recursive structures in thrift easily - unlike protobufs. This diff loosens up the parser to allow using structs before they are defined (and uses typedef as a forward declaration).
    This diff is actually enough to make recursive types work for some dyamic languages (I tried php, works out of the box!)

    Other languages will need forward declarations, or ways to box types, to make this work (i.e. C++ needs both forward decls and a way to express structs as pointers)
2014-04-08 22:45:01 -04:00
..
cpp THRIFT-2029 Port C++ tests to Windows 2014-03-11 21:20:35 +01:00
hs THRIFT-2002: Update Maybe to use Data.Maybe to prevent failure of the debug test 2013-06-06 20:53:32 -04:00
keys THRIFT-2325: SSL test certificates 2014-04-07 23:45:19 +02:00
lua THRIFT-1681: Add Lua Support Patch: Dave Watson 2014-04-05 00:50:35 +02:00
ocaml THRIFT-387. Add license headers to a bunch of files 2009-03-30 21:35:00 +00:00
perl THRIFT-847 Test Framework harmonization across all languages 2012-01-10 21:30:02 +00:00
php THRIFT-1822 PHP unit test does not work 2013-01-06 20:10:42 +01:00
py THRIFT-2325 SSL test certificates 2014-02-19 19:59:25 +01:00
py.tornado THRIFT-1704: Tornado support (Python) 2013-03-07 11:32:48 -05:00
py.twisted THRIFT-581 Add a testsuite for txThrift (Twisted) / py.twisted 2010-10-08 17:46:06 +00:00
rb THRIFT-1810 add ruby to test/test.sh 2014-01-19 21:53:02 +01:00
threads Thrift-2029:Port C++ tests to Windows 2014-01-07 21:42:01 -05:00
AnnotationTest.thrift THRIFT-1651 Support annotations on all elements 2012-09-17 21:18:05 +00:00
BrokenConstants.thrift THRIFT-387. Add license headers to a bunch of files 2009-03-30 21:35:00 +00:00
ConstantsDemo.thrift THRIFT-918 : better haskell tests 2010-09-27 19:27:40 +00:00
DebugProtoTest.thrift THRIFT-2352 msvc failed to compile thrift tests 2014-02-09 11:31:02 +01:00
DenseLinkingTest.thrift THRIFT-420. Remove all negative structure field ids from the code 2009-04-02 19:24:02 +00:00
DocTest.thrift THRIFT-1755 Comment parsing bug - the missing test case from Brian's patch 2013-09-18 23:53:14 +02:00
FastbinaryTest.py THRIFT-420. Remove all negative structure field ids from the code 2009-04-02 19:24:02 +00:00
Include.thrift THRIFT-1995: IDL can generate uncompilable ocde 2013-06-09 05:28:47 -07:00
JavaBeansTest.thrift THRIFT-734. java: Can't use primitive types in service definitions for bean generated code 2010-03-16 03:13:26 +00:00
Makefile.am THRIFT-2327 nodejs: nodejs test suite should be bundled with the library 2014-01-26 11:44:27 +01:00
ManyOptionals.thrift THRIFT-1469. java: Java isset space optimization 2011-12-21 18:13:29 +00:00
ManyTypedefs.thrift THRIFT-387. Add license headers to a bunch of files 2009-03-30 21:35:00 +00:00
OptionalRequiredTest.thrift THRIFT-1394:Treatment of optional fields is not consistent between C++ and Java 2012-01-27 04:48:26 +00:00
README.md THRIFT-847 Test Framework harmonization across all languages 2014-03-01 17:00:46 +01:00
Recursive.thrift THRIFT-2421: Tree/Recursive struct support in thrift 2014-04-08 22:45:01 -04:00
ReuseObjects.thrift THRIFT-2368 New option: reuse-objects for Java generator 2014-03-31 16:21:37 +02:00
SmallTest.thrift THRIFT-387. Add license headers to a bunch of files 2009-03-30 21:35:00 +00:00
StressTest.thrift THRIFT-1500: d programming language support 2012-03-22 21:49:10 +00:00
test.sh THRIFT-847: Test Framework harmonization across all languages 2014-04-08 00:28:17 +02:00
ThriftTest.thrift THRIFT-1681: Add Lua Support Patch: Dave Watson 2014-04-05 00:50:35 +02:00

Apache Thrift - integration test suite

This is the cross everything integration test suite for Apache Thrift. executed by

make cross

at the moment, this starts the test.sh script which does the real cross test with different transports, protocols and languages.

Unit tests for languages ar usually located under lib//test/ cross language tests acording to ThriftTest.thrift shall be provided for every language including executables with the following command line interface for servers:

$ ./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, compact, 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

and this for clients:

$ ./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, evhttp
  --protocol arg (=binary)    Protocol: binary, compact, json
  --ssl                       Encrypted Transport using SSL
  -n [ --testloops ] arg (=1) Number of Tests

If you have executed the make check or make cross then you will be able to browse gen-html/ThriftTest.html with the test documentation.

SSL

Test Keys and Certificates are provided in multiple formats under the following directory

test/keys