Ben Craig created THRIFT-2029:
---------------------------------

             Summary: Port C++ tests to Windows
                 Key: THRIFT-2029
                 URL: https://issues.apache.org/jira/browse/THRIFT-2029
             Project: Thrift
          Issue Type: Improvement
          Components: C++ - Library
    Affects Versions: 0.9
         Environment: Windows
            Reporter: Ben Craig
             Fix For: 1.0
         Attachments: porting_tests.patch

The attached patch makes the Thrift tests buildable with Visual Studio 2008 
(msvc9) + Boost 1.50, and Visual Studio 2012 Update 1 (msvc11) + Boost 1.50.  
It will likely build with other versions of msvc and older boosts.  I don't 
have usable project files, but the code changes that are attached should go a 
long way to making the project files easier for someone else.

Tests addressed:
* stress test
* nonblocking stress test
* fd transport test
* piped transport test
* debug proto test
* json proto test
* optional required test
* specialization test
* all protocol test
* transport test (mostly)
* zlib test
* unit test
* thread test
* "TestClient" + "TestServer" over binary, json, buffered, framed, simple, 
thread-pool, threaded, and nonblocking+binary+framed.

Tests not addressed:
* Other variants of "TestClient" + "TestServer", notably "http".  There are 
also some variations that the existing test.sh doesn't try, and I haven't 
tested those variations either.
* TFileTransportTest.  File transport isn't quite working on Windows right now, 
and I haven't the time to try and fix it.
* processor_test and concurrency_test.  Makefile.am says these tests are too 
strong, so I haven't attempted to port them yet.
* FileTransport and FDTransport parts of the transport test.  These aren't 
really working on Windows right now, so I left them mostly broken.

General changes:
* Lots of migration from snprintf to THRIFT_SNPRINTF.
* Lots of min / max parenthisizing to be able to build without NOMINMAX.
* #define of _USE_MATH_DEFINES to get access to _M_PI
* assorted size_t issues.
* No longer using getopt in the transport test or zlib test.  The scripts 
didn't use the getopt functionality.  The main loss is that you will no longer 
be able to manually set a seed.
* Rewrote transport test's trigger / alarm facility to use threads instead of 
sigalarm.
* tr1 -> thrift::stdcxx changes
* lots of apache::thrift::transport::TWinsockSingleton::create();
* Fixed a race in stress test where the client could try to connect before the 
server had started to listen.
* removed lots of "using namespace boost" to address uint8_t ambiguities.
* Shortened "simulated work" sleeps significantly to make "TestClient" + 
"TestServer" test iterations go lots faster.
* Making it so that "TestServer" can be shut down in a way other than with 
"kill" or task manager.  Now, hitting enter on the keyboard will stop the 
server.  This shouldn't break existing scripts, but it makes it possible for 
new scripts to gracefully tear down a server and check the exit status.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to