diff options
| author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2014-05-13 10:02:26 -0400 | 
|---|---|---|
| committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2014-05-13 10:02:26 -0400 | 
| commit | 7b9708a2e3aede6faef04bd546c497dc68264f58 (patch) | |
| tree | c49b3779d7a1f2e94fa1d33396c882e3351a4797 /indra/test | |
| parent | d0eb9658f2698b9c200991e84c1a60be48788e2c (diff) | |
| parent | d0ef02c23a7a37c8c9bfe3a86bae88bb811fc9fe (diff) | |
sunshine-external merge WIP
Diffstat (limited to 'indra/test')
| -rwxr-xr-x | indra/test/CMakeLists.txt | 1 | ||||
| -rwxr-xr-x | indra/test/io.cpp | 63 | ||||
| -rwxr-xr-x | indra/test/llblowfish_tut.cpp | 4 | ||||
| -rwxr-xr-x | indra/test/lldatapacker_tut.cpp | 4 | ||||
| -rwxr-xr-x | indra/test/llhttpdate_tut.cpp | 7 | ||||
| -rwxr-xr-x | indra/test/lliohttpserver_tut.cpp | 9 | ||||
| -rwxr-xr-x | indra/test/llmessagetemplateparser_tut.cpp | 2 | ||||
| -rwxr-xr-x | indra/test/llpermissions_tut.cpp | 4 | ||||
| -rwxr-xr-x | indra/test/llpipeutil.cpp | 4 | ||||
| -rwxr-xr-x | indra/test/llsaleinfo_tut.cpp | 4 | ||||
| -rwxr-xr-x | indra/test/lltemplatemessagebuilder_tut.cpp | 7 | ||||
| -rwxr-xr-x | indra/test/lluuidhashmap_tut.cpp | 455 | ||||
| -rwxr-xr-x | indra/test/manageapr.h | 46 | ||||
| -rwxr-xr-x | indra/test/message_tut.cpp | 7 | ||||
| -rwxr-xr-x | indra/test/test.cpp | 20 | 
15 files changed, 76 insertions, 561 deletions
| diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt index 31e1d89c68..62b1d9db62 100755 --- a/indra/test/CMakeLists.txt +++ b/indra/test/CMakeLists.txt @@ -56,7 +56,6 @@ set(test_SOURCE_FILES      llstreamtools_tut.cpp      lltemplatemessagebuilder_tut.cpp      lltut.cpp -    lluuidhashmap_tut.cpp      message_tut.cpp      test.cpp      ) diff --git a/indra/test/io.cpp b/indra/test/io.cpp index e776a2a3be..97726c2b92 100755 --- a/indra/test/io.cpp +++ b/indra/test/io.cpp @@ -44,6 +44,7 @@  #include "llsdrpcclient.h"  #include "llsdrpcserver.h"  #include "llsdserialize.h" +#include "llcommon.h"  #include "lluuid.h"  #include "llinstantmessage.h" @@ -876,11 +877,11 @@ namespace tut  	public:  		double_construct()  		{ -			llinfos << "constructed" << llendl; +			LL_INFOS() << "constructed" << LL_ENDL;  		}  		~double_construct()  		{ -			llinfos << "destroyed" << llendl; +			LL_INFOS() << "destroyed" << LL_ENDL;  		}  	};  	typedef test_group<double_construct> double_construct_test_group; @@ -937,11 +938,11 @@ namespace tut  	template<> template<>  	void fitness_test_object::test<1>()  	{ -		lldebugs << "fitness_test_object::test<1>()" << llendl; +		LL_DEBUGS() << "fitness_test_object::test<1>()" << LL_ENDL;  		// Set up the server -		//lldebugs << "fitness_test_object::test<1> - setting up server." -		//	 << llendl; +		//LL_DEBUGS() << "fitness_test_object::test<1> - setting up server." +		//	 << LL_ENDL;  		LLPumpIO::chain_t chain;  		typedef LLCloneIOFactory<LLPipeStringInjector> emitter_t;  		emitter_t* emitter = new emitter_t( @@ -956,18 +957,18 @@ namespace tut  		mPump->addChain(chain, NEVER_CHAIN_EXPIRY_SECS);  		// We need to tickle the pump a little to set up the listen() -		//lldebugs << "fitness_test_object::test<1> - initializing server." -		//	 << llendl; +		//LL_DEBUGS() << "fitness_test_object::test<1> - initializing server." +		//	 << LL_ENDL;  		pump_loop(mPump, 0.1f);  		// Set up the client -		//lldebugs << "fitness_test_object::test<1> - connecting client." -		//	 << llendl; +		//LL_DEBUGS() << "fitness_test_object::test<1> - connecting client." +		//	 << LL_ENDL;  		LLSocket::ptr_t client = LLSocket::create(mPool, LLSocket::STREAM_TCP);  		LLHost server_host("127.0.0.1", SERVER_LISTEN_PORT);  		bool connected = client->blockingConnect(server_host);  		ensure("Connected to server", connected); -		lldebugs << "connected" << llendl; +		LL_DEBUGS() << "connected" << LL_ENDL;  		// We have connected, since the socket reader does not block,  		// the first call to read data will return EAGAIN, so we need @@ -987,7 +988,7 @@ namespace tut  	template<> template<>  	void fitness_test_object::test<2>()  	{ -		lldebugs << "fitness_test_object::test<2>()" << llendl; +		LL_DEBUGS() << "fitness_test_object::test<2>()" << LL_ENDL;  		// Set up the server  		LLPumpIO::chain_t chain; @@ -1010,7 +1011,7 @@ namespace tut  		LLHost server_host("127.0.0.1", SERVER_LISTEN_PORT);  		bool connected = client->blockingConnect(server_host);  		ensure("Connected to server", connected); -		lldebugs << "connected" << llendl; +		LL_DEBUGS() << "connected" << LL_ENDL;  		// We have connected, since the socket reader does not block,  		// the first call to read data will return EAGAIN, so we need @@ -1030,7 +1031,7 @@ namespace tut  	template<> template<>  	void fitness_test_object::test<3>()  	{ -		lldebugs << "fitness_test_object::test<3>()" << llendl; +		LL_DEBUGS() << "fitness_test_object::test<3>()" << LL_ENDL;  		// Set up the server  		LLPumpIO::chain_t chain; @@ -1053,7 +1054,7 @@ namespace tut  		LLHost server_host("127.0.0.1", SERVER_LISTEN_PORT);  		bool connected = client->blockingConnect(server_host);  		ensure("Connected to server", connected); -		lldebugs << "connected" << llendl; +		LL_DEBUGS() << "connected" << LL_ENDL;  		// We have connected, since the socket reader does not block,  		// the first call to read data will return EAGAIN, so we need @@ -1073,7 +1074,7 @@ namespace tut  	template<> template<>  	void fitness_test_object::test<4>()  	{ -		lldebugs << "fitness_test_object::test<4>()" << llendl; +		LL_DEBUGS() << "fitness_test_object::test<4>()" << LL_ENDL;  		// Set up the server  		LLPumpIO::chain_t chain; @@ -1096,7 +1097,7 @@ namespace tut  		LLHost server_host("127.0.0.1", SERVER_LISTEN_PORT);  		bool connected = client->blockingConnect(server_host);  		ensure("Connected to server", connected); -		lldebugs << "connected" << llendl; +		LL_DEBUGS() << "connected" << LL_ENDL;  		// We have connected, since the socket reader does not block,  		// the first call to read data will return EAGAIN, so we need @@ -1132,18 +1133,18 @@ namespace tut  		pump_loop(mPump, 0.1f);  		U32 count = mPump->runningChains();  		ensure_equals("server chain onboard", count, 1); -		lldebugs << "** Server is up." << llendl; +		LL_DEBUGS() << "** Server is up." << LL_ENDL;  		// Set up the client  		LLSocket::ptr_t client = LLSocket::create(mPool, LLSocket::STREAM_TCP);  		LLHost server_host("127.0.0.1", SERVER_LISTEN_PORT);  		bool connected = client->blockingConnect(server_host);  		ensure("Connected to server", connected); -		lldebugs << "connected" << llendl; +		LL_DEBUGS() << "connected" << LL_ENDL;  		pump_loop(mPump,0.1f);  		count = mPump->runningChains();  		ensure_equals("server chain onboard", count, 2); -		lldebugs << "** Client is connected." << llendl; +		LL_DEBUGS() << "** Client is connected." << LL_ENDL;  		// We have connected, since the socket reader does not block,  		// the first call to read data will return EAGAIN, so we need @@ -1159,20 +1160,20 @@ namespace tut  		pump_loop(mPump,0.1f);  		count = mPump->runningChains();  		// ensure_equals("client chain onboard", count, 3); commented out because it fails frequently - appears to be timing sensitive -		lldebugs << "** request should have been sent." << llendl; +		LL_DEBUGS() << "** request should have been sent." << LL_ENDL;  		// pump for long enough the the client socket closes, and the  		// server socket should not be closed yet.  		pump_loop(mPump,0.2f);  		count = mPump->runningChains();  		ensure_equals("client chain timed out ", count, 2); -		lldebugs << "** client chain should be closed." << llendl; +		LL_DEBUGS() << "** client chain should be closed." << LL_ENDL;  		// At this point, the socket should be closed by the timeout  		pump_loop(mPump,1.0f);  		count = mPump->runningChains();  		ensure_equals("accepted socked close", count, 1); -		lldebugs << "** Sleeper should have timed out.." << llendl; +		LL_DEBUGS() << "** Sleeper should have timed out.." << LL_ENDL;  	}  } @@ -1187,7 +1188,9 @@ namespace tut  				mResponsePtr(response)  			{  			} -			~LLSimpleRPCResponse() {} +			~LLSimpleRPCResponse()  +			{ +			}  			virtual bool response(LLPumpIO* pump)  			{  				*mResponsePtr = mReturnValue; @@ -1302,8 +1305,8 @@ namespace tut  		LLSD request;  		request = 1;  		pump_loop(request); -		//llinfos << "request: " << *request << llendl; -		//llinfos << "response: " << *mResponse << llendl; +		//LL_INFOS() << "request: " << *request << LL_ENDL; +		//LL_INFOS() << "response: " << *mResponse << LL_ENDL;  		ensure_equals("integer request response", mResponse.asInteger(), 1);  	} @@ -1556,7 +1559,7 @@ namespace tut  		mResponse->getString(actual);  		if(actual != expected)  		{ -			//llwarns << "iteration " << i << llendl; +			//LL_WARNS() << "iteration " << i << LL_ENDL;  			std::ostringstream e_str;  			std::string::iterator iter = expected.begin();  			std::string::iterator end = expected.end(); @@ -1566,8 +1569,8 @@ namespace tut  			}  			e_str << std::endl;  			llsd_serialize_string(e_str, expected); -			llwarns << "expected size: " << expected.size() << llendl; -			llwarns << "expected:	  " << e_str.str() << llendl; +			LL_WARNS() << "expected size: " << expected.size() << LL_ENDL; +			LL_WARNS() << "expected:	  " << e_str.str() << LL_ENDL;  			std::ostringstream a_str;  			iter = actual.begin(); @@ -1578,8 +1581,8 @@ namespace tut  			}  			a_str << std::endl;  			llsd_serialize_string(a_str, actual); -			llwarns << "actual size:	  " << actual.size() << llendl; -			llwarns << "actual:		" << a_str.str() << llendl; +			LL_WARNS() << "actual size:	  " << actual.size() << LL_ENDL; +			LL_WARNS() << "actual:		" << a_str.str() << LL_ENDL;  		}  		ensure_equals("binary string request response", actual, expected);  		delete request; diff --git a/indra/test/llblowfish_tut.cpp b/indra/test/llblowfish_tut.cpp index 20e7960829..18eb01363f 100755 --- a/indra/test/llblowfish_tut.cpp +++ b/indra/test/llblowfish_tut.cpp @@ -65,14 +65,14 @@ namespace tut  			}  			if (!fp)  			{ -				llwarns << "unable to open " << filename << llendl; +				LL_WARNS() << "unable to open " << filename << LL_ENDL;  				return false;  			}  			std::string good;  			good.resize(256);  			size_t got = fread(&good[0], 1, 256, fp); -			lldebugs << "matchFile read " << got << llendl; +			LL_DEBUGS() << "matchFile read " << got << LL_ENDL;  			fclose(fp);  			good.resize(got); diff --git a/indra/test/lldatapacker_tut.cpp b/indra/test/lldatapacker_tut.cpp index cf2b7870ef..b403660c13 100755 --- a/indra/test/lldatapacker_tut.cpp +++ b/indra/test/lldatapacker_tut.cpp @@ -349,7 +349,7 @@ namespace tut  		LLFILE* fp = LLFile::fopen(TEST_FILE_NAME, "w+");  		if(!fp)  		{ -			llerrs << "File couldnt be open" <<llendl; +			LL_ERRS() << "File couldnt be open" << LL_ENDL;  			return;  		} @@ -404,7 +404,7 @@ namespace tut  		LLFILE* fp = LLFile::fopen(TEST_FILE_NAME,"w+");  		if(!fp)  		{ -			llerrs << "File couldnt be open" <<llendl; +			LL_ERRS() << "File couldnt be open" << LL_ENDL;  			return;  		} diff --git a/indra/test/llhttpdate_tut.cpp b/indra/test/llhttpdate_tut.cpp index 46684bb9dc..ecf734ee90 100755 --- a/indra/test/llhttpdate_tut.cpp +++ b/indra/test/llhttpdate_tut.cpp @@ -29,6 +29,7 @@  #include "lltut.h"  #include "lldate.h" +#include "llcommon.h"  #include "llframetimer.h"  #include <time.h> @@ -38,6 +39,12 @@ namespace tut  {      struct httpdate_data      { +		httpdate_data()  +		{  +		} +		~httpdate_data()  +		{  +		}          LLDate some_date;      };      typedef test_group<httpdate_data> httpdate_test; diff --git a/indra/test/lliohttpserver_tut.cpp b/indra/test/lliohttpserver_tut.cpp index 2fdc455f45..1513446788 100755 --- a/indra/test/lliohttpserver_tut.cpp +++ b/indra/test/lliohttpserver_tut.cpp @@ -31,6 +31,7 @@  #include "lliohttpserver.h"  #include "llsdhttpserver.h"  #include "llsdserialize.h" +#include "llcommon.h"  #include "llpipeutil.h" @@ -81,6 +82,10 @@ namespace tut  			mRoot.addNode("/delayed/echo", new DelayedEcho(this));  			mRoot.addNode("/wire/hello", new LLHTTPNodeForPipe<WireHello>);  		} + +		~HTTPServiceTestData() +		{ +		}  		LLHTTPNode mRoot;  		LLHTTPNode::ResponsePtr mResponse; @@ -316,8 +321,8 @@ namespace tut  			stream << "<integer>42</integer>";  		}  		stream << "</array></llsd>"; -		llinfos << "HTTPServiceTestObject::test<7>" -				<< stream.str().length() << llendl; +		LL_INFOS() << "HTTPServiceTestObject::test<7>" +				<< stream.str().length() << LL_ENDL;  		std::string result = httpPOST("web/echo", stream.str());  		ensure_starts_with("large echo status", result, "HTTP/1.0 200 OK\r\n");  	} diff --git a/indra/test/llmessagetemplateparser_tut.cpp b/indra/test/llmessagetemplateparser_tut.cpp index da6d229fb5..39f834a9fc 100755 --- a/indra/test/llmessagetemplateparser_tut.cpp +++ b/indra/test/llmessagetemplateparser_tut.cpp @@ -171,7 +171,7 @@ namespace tut  		delete var; -		// *NOTE: the parsers call llerrs on invalid input, so we can't really +		// *NOTE: the parsers call LL_ERRS() on invalid input, so we can't really  		// test that  :-(  	} diff --git a/indra/test/llpermissions_tut.cpp b/indra/test/llpermissions_tut.cpp index bc2c87ba46..8d8d47a667 100755 --- a/indra/test/llpermissions_tut.cpp +++ b/indra/test/llpermissions_tut.cpp @@ -407,7 +407,7 @@ namespace tut  		LLFILE* fp = LLFile::fopen("linden_file.dat","w+");  		if(!fp)  		{ -			llerrs << "file couldn't be opened\n" << llendl; +			LL_ERRS() << "file couldn't be opened\n" << LL_ENDL;  			return;  		}  		LLPermissions perm,perm1; @@ -430,7 +430,7 @@ namespace tut  		fp = LLFile::fopen("linden_file.dat","r+");  		if(!fp)  		{ -			llerrs << "file couldn't be opened\n" << llendl; +			LL_ERRS() << "file couldn't be opened\n" << LL_ENDL;  			return;  		}  		ensure("Permissions import failed", perm1.importFile(fp)); diff --git a/indra/test/llpipeutil.cpp b/indra/test/llpipeutil.cpp index db76a370e0..bb706b58d5 100755 --- a/indra/test/llpipeutil.cpp +++ b/indra/test/llpipeutil.cpp @@ -170,13 +170,13 @@ LLIOPipe::EStatus LLIOSleeper::process_impl(  {  	if(!mRespond)  	{ -		lldebugs << "LLIOSleeper::process_impl() sleeping." << llendl; +		LL_DEBUGS() << "LLIOSleeper::process_impl() sleeping." << LL_ENDL;  		mRespond = true;  		static const F64 SLEEP_TIME = 2.0;  		pump->sleepChain(SLEEP_TIME);  		return STATUS_BREAK;  	} -	lldebugs << "LLIOSleeper::process_impl() responding." << llendl; +	LL_DEBUGS() << "LLIOSleeper::process_impl() responding." << LL_ENDL;  	LLBufferStream ostr(channels, buffer.get());  	ostr << "huh? sorry, I was sleeping." << std::endl;  	return STATUS_DONE; diff --git a/indra/test/llsaleinfo_tut.cpp b/indra/test/llsaleinfo_tut.cpp index 2488af1d7f..5f4d9186a8 100755 --- a/indra/test/llsaleinfo_tut.cpp +++ b/indra/test/llsaleinfo_tut.cpp @@ -111,7 +111,7 @@ namespace tut  		LLFILE* fp = LLFile::fopen("linden_file.dat","w+");  		if(!fp)  		{ -			llerrs << "file could not be opened\n" << llendl; +			LL_ERRS() << "file could not be opened\n" << LL_ENDL;  			return;  		} @@ -128,7 +128,7 @@ namespace tut  		if(!fp)  		{ -			llerrs << "file coudnt be opened\n" << llendl; +			LL_ERRS() << "file coudnt be opened\n" << LL_ENDL;  			return;  		} diff --git a/indra/test/lltemplatemessagebuilder_tut.cpp b/indra/test/lltemplatemessagebuilder_tut.cpp index dde70f98c8..01765974ea 100755 --- a/indra/test/lltemplatemessagebuilder_tut.cpp +++ b/indra/test/lltemplatemessagebuilder_tut.cpp @@ -35,7 +35,6 @@  #include "llquaternion.h"  #include "lltemplatemessagebuilder.h"  #include "lltemplatemessagereader.h" -#include "llversionserver.h"  #include "message_prehash.h"  #include "u64.h"  #include "v3dmath.h" @@ -59,9 +58,9 @@ namespace tut  				const F32 circuit_timeout=100;  				start_messaging_system("notafile", 13035, -									   LL_VERSION_MAJOR, -									   LL_VERSION_MINOR,         -									   LL_VERSION_PATCH,         +									   1, +									   0,         +									   0,          									   FALSE,          									   "notasharedsecret",  									   NULL, diff --git a/indra/test/lluuidhashmap_tut.cpp b/indra/test/lluuidhashmap_tut.cpp deleted file mode 100755 index 9712a613f4..0000000000 --- a/indra/test/lluuidhashmap_tut.cpp +++ /dev/null @@ -1,455 +0,0 @@ -/**  - * @file lluuidhashmap_tut.cpp - * @author Adroit - * @date 2007-02 - * @brief Test cases for LLUUIDHashMap - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include <tut/tut.hpp> -#include "linden_common.h" -#include "lluuidhashmap.h" -#include "llsdserialize.h" -#include "lldir.h" -#include "stringize.h" -#include <iostream> -#include <fstream> - -namespace tut -{ -	class UUIDTableEntry -	{ -	public: -		UUIDTableEntry() -		{ -			mID.setNull(); -			mValue = 0; -		} -		 -		UUIDTableEntry(const LLUUID& id, U32 value) -		{ -			mID = id; -			mValue = value; -		} - -		~UUIDTableEntry(){}; - -		static BOOL uuidEq(const LLUUID &uuid, const UUIDTableEntry &id_pair) -		{ -			if (uuid == id_pair.mID) -			{ -				return TRUE; -			} -			return FALSE; -		} - -		const LLUUID& getID() { return mID; } -		const U32& getValue() { return mValue; } - -	protected: -		LLUUID	mID; -		U32  mValue; -	}; - -	struct hashmap_test -	{ -	}; - -	typedef test_group<hashmap_test> hash_index_t; -	typedef hash_index_t::object hash_index_object_t; -	tut::hash_index_t tut_hash_index("hashmap_test"); - -	// stress test -	template<> template<> -	void hash_index_object_t::test<1>() -	{ -		set_test_name("stress test"); -		// As of 2012-10-10, I (nat) have observed sporadic failures of this -		// test: "set/get did not work." The trouble is that since test data -		// are randomly generated with every run, it is impossible to debug a -		// test failure. One is left with the uneasy suspicion that -		// LLUUID::generate() can sometimes produce duplicates even within the -		// moderately small number requested here. Since rerunning the test -		// generally allows it to pass, it's too easy to shrug and forget it. -		// The following code is intended to support reproducing such test -		// failures. The idea is that, on test failure, we save the generated -		// data to a canonical filename in a temp directory. Then on every -		// subsequent run, we check for that filename. If it exists, we reload -		// that specific data rather than generating fresh data -- which -		// should presumably reproduce the same test failure. But we inform -		// the user that to resume normal (random) test runs, s/he need only -		// delete that file. And since it's in a temp directory, sooner or -		// later the system will clean it up anyway. -		const char* tempvar = "TEMP"; -		const char* tempdir = getenv(tempvar); // Windows convention -		if (! tempdir) -		{ -			tempvar = "TMPDIR"; -			tempdir = getenv(tempvar); // Mac convention -		} -		if (! tempdir) -		{ -			// reset tempvar to the first var we check; it's just a -			// recommendation -			tempvar = "TEMP"; -			tempdir = "/tmp";		// Posix in general -		} -		std::string savefile(gDirUtilp->add(tempdir, "lluuidhashmap_tut.save.txt")); -		const int numElementsToCheck = 32*256*32; -		std::vector<LLUUID> idList; -		if ((! getenv("TEAMCITY_PROJECT_NAME")) && gDirUtilp->fileExists(savefile)) -		{ -			// This is not a TeamCity build, and we have saved data from a -			// previous failed run. Reload that data. -			std::ifstream inf(savefile.c_str()); -			if (! inf.is_open()) -			{ -				fail(STRINGIZE("Although save file '" << savefile << "' exists, it cannot be opened")); -			} -			std::string item; -			while (std::getline(inf, item)) -			{ -				idList.push_back(LLUUID(item)); -			} -			std::cout << "Reloaded " << idList.size() << " items from '" << savefile << "'"; -			if (idList.size() != numElementsToCheck) -			{ -				std::cout << " (expected " << numElementsToCheck << ")"; -			} -			std::cout << " -- delete this file to generate new data" << std::endl; -		} -		else -		{ -			// This is a TeamCity build, or (normal case) savefile does not -			// exist: regenerate idList from scratch. -			for (int i = 0; i < numElementsToCheck; ++i) -			{ -				LLUUID id; -				id.generate(); -				idList.push_back(id); -			} -		} - -		LLUUIDHashMap<UUIDTableEntry, 32>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry()); -		int i; -		 -		for (i = 0; i < idList.size(); ++i) -		{ -			UUIDTableEntry entry(idList[i], i); -			hashTable.set(idList[i], entry); -		} - -		try -		{ -			for (i = 0; i < idList.size(); i++) -			{ -				LLUUID idToCheck = idList[i]; -				UUIDTableEntry entryToCheck = hashTable.get(idToCheck); -				ensure_equals(STRINGIZE("set/get ID (entry " << i << ")").c_str(), -							  entryToCheck.getID(), idToCheck); -				ensure_equals(STRINGIZE("set/get value (ID " << idToCheck << ")").c_str(), -							  entryToCheck.getValue(), (size_t)i); -			} - -			for (i = 0; i < idList.size(); i++) -			{ -				LLUUID idToCheck = idList[i]; -				if (i % 2 != 0) -				{ -					hashTable.remove(idToCheck); -				} -			} - -			for (i = 0; i < idList.size(); i++) -			{ -				LLUUID idToCheck = idList[i]; -				ensure("remove or check did not work", (i % 2 == 0 && hashTable.check(idToCheck)) || (i % 2 != 0 && !hashTable.check(idToCheck))); -			} -		} -		catch (const failure&) -		{ -			// One of the above tests failed. Try to save idList to repro with -			// a later run. -			std::ofstream outf(savefile.c_str()); -			if (! outf.is_open()) -			{ -				// Sigh, don't use fail() here because we want to preserve -				// the original test failure. -				std::cout << "Cannot open file '" << savefile -						  << "' to save data -- check and fix " << tempvar << std::endl; -			} -			else -			{ -				// outf.is_open() -				for (int i = 0; i < idList.size(); ++i) -				{ -					outf << idList[i] << std::endl; -				} -				std::cout << "Saved " << idList.size() << " entries to '" << savefile -						  << "' -- rerun test to debug with these" << std::endl; -			} -			// re-raise the same exception -- we WANT this test failure to -			// be reported! We just needed to save the data on the way out. -			throw; -		} -	} - -	// test removing all but one element.  -	template<> template<> -	void hash_index_object_t::test<2>() -	{ -		LLUUIDHashMap<UUIDTableEntry, 2>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry()); -		const int numElementsToCheck = 5; -		std::vector<LLUUID> idList(numElementsToCheck*10); -		int i; -		 -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID id; -			id.generate(); -			UUIDTableEntry entry(id, i); -			hashTable.set(id, entry); -			idList[i] = id; -		} - -		ensure("getLength failed", hashTable.getLength() == numElementsToCheck); - -		// remove all but the last element -		for (i = 0; i < numElementsToCheck-1; i++) -		{ -			LLUUID idToCheck = idList[i]; -			hashTable.remove(idToCheck); -		} - -		// there should only be one element left now. -		ensure("getLength failed", hashTable.getLength() == 1); - -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID idToCheck = idList[i]; -			if (i != numElementsToCheck - 1) -			{ -				ensure("remove did not work", hashTable.check(idToCheck)  == FALSE); -			} -			else -			{ -				UUIDTableEntry entryToCheck = hashTable.get(idToCheck); -				ensure("remove did not work", entryToCheck.getID() == idToCheck && entryToCheck.getValue() == (size_t)i); -			} -		} -	} - -	// test overriding of value already set.  -	template<> template<> -	void hash_index_object_t::test<3>() -	{ -		LLUUIDHashMap<UUIDTableEntry, 5>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry()); -		const int numElementsToCheck = 10; -		std::vector<LLUUID> idList(numElementsToCheck); -		int i; -		 -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID id; -			id.generate(); -			UUIDTableEntry entry(id, i); -			hashTable.set(id, entry); -			idList[i] = id; -		} - -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID id = idList[i]; -			// set new entry with value = i+numElementsToCheck -			UUIDTableEntry entry(id, i+numElementsToCheck); -			hashTable.set(id, entry); -		} - -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID idToCheck = idList[i]; -			UUIDTableEntry entryToCheck = hashTable.get(idToCheck); -			ensure("set/get did not work", entryToCheck.getID() == idToCheck && entryToCheck.getValue() == (size_t)(i+numElementsToCheck)); -		} -	} - -	// test removeAll()  -	template<> template<> -	void hash_index_object_t::test<4>() -	{ -		LLUUIDHashMap<UUIDTableEntry, 5>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry()); -		const int numElementsToCheck = 10; -		std::vector<LLUUID> idList(numElementsToCheck); -		int i; -		 -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID id; -			id.generate(); -			UUIDTableEntry entry(id, i); -			hashTable.set(id, entry); -			idList[i] = id; -		} - -		hashTable.removeAll(); -		ensure("removeAll failed", hashTable.getLength() == 0); -	} - - -	// test sparse map - force it by creating 256 entries that fall into 256 different nodes  -	template<> template<> -	void hash_index_object_t::test<5>() -	{ -		LLUUIDHashMap<UUIDTableEntry, 2>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry()); -		const int numElementsToCheck = 256; -		std::vector<LLUUID> idList(numElementsToCheck); -		int i; -		 -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID id; -			id.generate(); -			// LLUUIDHashMap uses mData[0] to pick the bucket -			// overwrite mData[0] so that it ranges from 0 to 255 -			id.mData[0] = i;  -			UUIDTableEntry entry(id, i); -			hashTable.set(id, entry); -			idList[i] = id; -		} - -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID idToCheck = idList[i]; -			UUIDTableEntry entryToCheck = hashTable.get(idToCheck); -			ensure("set/get did not work for sparse map", entryToCheck.getID() == idToCheck && entryToCheck.getValue() == (size_t)i); -		} - -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID idToCheck = idList[i]; -			if (i % 2 != 0) -			{ -				hashTable.remove(idToCheck); -			} -		} - -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID idToCheck = idList[i]; -			ensure("remove or check did not work for sparse map", (i % 2 == 0 && hashTable.check(idToCheck)) || (i % 2 != 0 && !hashTable.check(idToCheck))); -		} -	} - -	// iterator -	template<> template<> -	void hash_index_object_t::test<6>() -	{ -		LLUUIDHashMap<UUIDTableEntry, 2>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry()); -		LLUUIDHashMapIter<UUIDTableEntry, 2> hashIter(&hashTable); -		const int numElementsToCheck = 256; -		std::vector<LLUUID> idList(numElementsToCheck); -		int i; -		 -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID id; -			id.generate(); -			// LLUUIDHashMap uses mData[0] to pick the bucket -			// overwrite mData[0] so that it ranges from 0 to 255 -			// to create a sparse map -			id.mData[0] = i;  -			UUIDTableEntry entry(id, i); -			hashTable.set(id, entry); -			idList[i] = id; -		} - -		hashIter.first(); -		int numElementsIterated = 0; -		while(!hashIter.done()) -		{ -			numElementsIterated++; -			UUIDTableEntry tableEntry = *hashIter; -			LLUUID id = tableEntry.getID(); -			hashIter.next(); -			ensure("Iteration failed for sparse map", tableEntry.getValue() < (size_t)numElementsToCheck && idList[tableEntry.getValue()] ==  tableEntry.getID()); -		} - -		ensure("iteration count failed", numElementsIterated == numElementsToCheck); -	} - -	// remove after middle of iteration -	template<> template<> -	void hash_index_object_t::test<7>() -	{ -		LLUUIDHashMap<UUIDTableEntry, 2>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry()); -		LLUUIDHashMapIter<UUIDTableEntry, 2> hashIter(&hashTable); -		const int numElementsToCheck = 256; -		std::vector<LLUUID> idList(numElementsToCheck); -		int i; -		 -		LLUUID uuidtoSearch; -		for (i = 0; i < numElementsToCheck; i++) -		{ -			LLUUID id; -			id.generate(); -			// LLUUIDHashMap uses mData[0] to pick the bucket -			// overwrite mData[0] so that it ranges from 0 to 255 -			// to create a sparse map -			id.mData[0] = i;  -			UUIDTableEntry entry(id, i); -			hashTable.set(id, entry); -			idList[i] = id; - -			// pick uuid somewhere in the middle -			if (i == 5) -			{ -				uuidtoSearch = id; -			} -		} - -		hashIter.first(); -		int numElementsIterated = 0; -		while(!hashIter.done()) -		{ -			numElementsIterated++; -			UUIDTableEntry tableEntry = *hashIter; -			LLUUID id = tableEntry.getID(); -			if (uuidtoSearch == id) -			{ -				break; -			} -			hashIter.next(); -		} - -		// current iterator implementation will not allow any remove operations -		// until ALL elements have been iterated over. this seems to be  -		// an unnecessary restriction. Iterator should have a method to -		// reset() its state so that further operations (inckuding remove) -		// can be performed on the HashMap without having to iterate thru  -		// all the remaining nodes.  -		 -//		 hashIter.reset(); -//		 hashTable.remove(uuidtoSearch); -//		 ensure("remove after iteration reset failed", hashTable.check(uuidtoSearch) == FALSE); -	} -} diff --git a/indra/test/manageapr.h b/indra/test/manageapr.h deleted file mode 100755 index 2452fb6ae4..0000000000 --- a/indra/test/manageapr.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * @file   manageapr.h - * @author Nat Goodspeed - * @date   2012-01-13 - * @brief  ManageAPR class for simple test programs - *  - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Copyright (c) 2012, Linden Research, Inc. - * $/LicenseInfo$ - */ - -#if ! defined(LL_MANAGEAPR_H) -#define LL_MANAGEAPR_H - -#include "llapr.h" -#include <boost/noncopyable.hpp> - -/** - * Declare a static instance of this class for dead-simple ll_init_apr() at - * program startup, ll_cleanup_apr() at termination. This is recommended for - * use only with simple test programs. Once you start introducing static - * instances of other classes that depend on APR already being initialized, - * the indeterminate static-constructor-order problem rears its ugly head. - */ -class ManageAPR: public boost::noncopyable -{ -public: -    ManageAPR() -    { -        ll_init_apr(); -    } - -    ~ManageAPR() -    { -        ll_cleanup_apr(); -    } - -    static std::string strerror(apr_status_t rv) -    { -        char errbuf[256]; -        apr_strerror(rv, errbuf, sizeof(errbuf)); -        return errbuf; -    } -}; - -#endif /* ! defined(LL_MANAGEAPR_H) */ diff --git a/indra/test/message_tut.cpp b/indra/test/message_tut.cpp index 0dae5178be..57e423e550 100755 --- a/indra/test/message_tut.cpp +++ b/indra/test/message_tut.cpp @@ -32,7 +32,6 @@  #include "llapr.h"  #include "llmessageconfig.h"  #include "llsdserialize.h" -#include "llversionserver.h"  #include "message.h"  #include "message_prehash.h" @@ -73,9 +72,9 @@ namespace tut  			// currently test disconnected message system  			start_messaging_system("notafile", 13035, -								   LL_VERSION_MAJOR, -								   LL_VERSION_MINOR,         -								   LL_VERSION_PATCH,         +								   1, +								   0,         +								   0,          								   FALSE,          								   "notasharedsecret",  								   NULL, diff --git a/indra/test/test.cpp b/indra/test/test.cpp index dc8580fe69..10f71a2843 100755 --- a/indra/test/test.cpp +++ b/indra/test/test.cpp @@ -40,6 +40,8 @@  #include "tests/wrapllerrs.h"             // RecorderProxy  #include "stringize.h"  #include "namedtempfile.h" +#include "lltrace.h" +#include "lltracethreadrecorder.h"  #include "apr_pools.h"  #include "apr_getopt.h" @@ -482,6 +484,8 @@ void wouldHaveCrashed(const std::string& message)  	tut::fail("llerrs message: " + message);  } +static LLTrace::ThreadRecorder* sMasterThreadRecorder = NULL; +  int main(int argc, char **argv)  {  	// The following line must be executed to initialize Google Mock @@ -512,15 +516,15 @@ int main(int argc, char **argv)  	ctype_workaround();  #endif -	apr_initialize(); -	apr_pool_t* pool = NULL; -	if(APR_SUCCESS != apr_pool_create(&pool, NULL)) +	ll_init_apr(); +	 +	if (!sMasterThreadRecorder)  	{ -		std::cerr << "Unable to initialize pool" << std::endl; -		return 1; +		sMasterThreadRecorder = new LLTrace::ThreadRecorder(); +		LLTrace::set_master_thread_recorder(sMasterThreadRecorder);  	}  	apr_getopt_t* os = NULL; -	if(APR_SUCCESS != apr_getopt_init(&os, pool, argc, argv)) +	if(APR_SUCCESS != apr_getopt_init(&os, gAPRPoolp, argc, argv))  	{  		std::cerr << "apr_getopt_init() failed" << std::endl;  		return 1; @@ -602,7 +606,7 @@ int main(int argc, char **argv)  	if (LOGFAIL)  	{  		LLError::ELevel level = LLError::decodeLevel(LOGFAIL); -		replayer.reset(new LLReplayLogReal(level, pool)); +		replayer.reset(new LLReplayLogReal(level, gAPRPoolp));  	}  	else  	{ @@ -646,7 +650,7 @@ int main(int argc, char **argv)  		s.close();  	} -	apr_terminate(); +	ll_cleanup_apr();  	int retval = (success ? 0 : 1);  	return retval; | 
