Commit Graph

187 Commits (22a851663cddecced21acd88ed8ae4fa9fc733fd)

Author SHA1 Message Date
Oz Linden 5c2c85c6f7 integrate Nats improvements to test logging with mine 2012-06-26 09:41:35 -04:00
Oz Linden 0f958faacd merge up to 3.3.3-release + pathfinding 2012-06-25 17:16:29 -04:00
Oz Linden f92e7d30a8 Add logging during tests (debug level, to test-specific files) 2012-06-24 07:27:34 -04:00
Oz Linden 6abcd55b50 merge changes for DRTVWR-162 2012-06-08 11:41:10 -04:00
Nat Goodspeed 89ea7ccfc7 Automated merge with file:///Users/nat/linden/viewer-maint-1144 2012-06-06 23:21:07 -04:00
Nat Goodspeed cd05a244da MAINT-1144: Break out llhttpclient_tut as standalone integration test.
indra/test/llhttpclient_tut.cpp ==> indra/llmessage/tests/llhttpclient_test.cpp,
with corresponding CMakeLists.txt changes in their respective directories.
This first commit merely moves the test source file without changing it --
separating out moves from edits simplifies code review.
2012-06-06 19:57:58 -04:00
Nat Goodspeed da6c5fbf7f MAINT-1144: Unblock build for previous commit.
Today, 2012-06-06, LLHTTPClient::get("http://www.google.com/") has stopped
working. This is unrelated to viewer code changes: it crosses repo boundaries.
Skip the afflicted tests to get builds working until we can recast the tests
to avoid the flaky dependency.
2012-06-06 19:05:51 -04:00
Nat Goodspeed 95a147dea7 CHOP-900: Fix test.cpp merge errors merging up to viewer-release 2012-05-09 23:03:37 -04:00
Nat Goodspeed a5b0147df4 Automated merge with http://hg.secondlife.com/viewer-release 2012-05-09 22:33:04 -04:00
Nat Goodspeed eb1bea2223 IQA-463: LLError::addRecorder() claims ownership of passed Recorder*.
That is, when the underlying LLError::Settings object is destroyed -- possibly
at termination, possibly on LLError::restoreSettings() -- the passed Recorder*
is deleted.
There was much existing code that seemed as unaware of this alarming fact as I
was myself. Passing to addRecorder() a pointer to a stack object, or to a
member of some other object, is just Bad. It might be preferable to make
addRecorder() accept std::auto_ptr<Recorder> to make the ownership transfer
more explicit -- or even boost::shared_ptr<Recorder> instead, which would
allow the caller to either forget or retain the passed Recorder.
This preliminary pass retains the Recorder* dumb pointer API, but documents
the ownership issue, and eliminates known instances of passing pointers to
anything but a standalone heap Recorder subclass object.
2012-04-23 11:26:18 -04:00
Nat Goodspeed f02ded46fe Make test.cpp support LOGFAIL env var: only failed tests show log.
Set LOGFAIL= one of ALL, DEBUG, INFO, WARN, ERROR, NONE. A passing test will
run silently, as now; but a failing test will replay log output at the
specified level or higher.
While at it, support LOGTEST environment variable, same values. This is like
setting --debug (or -d), but allows specifying an arbitrary level -- and,
unlike --debug, can be set for a TeamCity build config without modifying any
scripts or code.
Publish LLError::decodeLevel(std::string), previously private to llerror.cpp.
2012-03-05 13:07:14 -05:00
Nat Goodspeed c8032de94e Add NamedExtTempFile to invent arbitrary name with specified ext.
This arises, for instance, if you want to be able to create a temporary Python
module you can import from test scripts. The Python module file MUST have the
.py extension.
2012-03-01 14:37:41 -05:00
Nat Goodspeed 5adc39753b Update llevents_tut.cpp to use StringVec, not local StringList. 2012-02-24 16:02:39 -05:00
Nat Goodspeed 10ab4adc86 Fix llprocess_test.cpp's exception catching for Linux.
In the course of re-enabling the indra/test tests last year, Log generalized a
workaround I'd introduced in llsdmessage_test.cpp. In Linux viewer land, a
test program trying to catch an expected exception can't seem to catch it by
its specific class (across the libllcommon.so boundary), but must instead
catch std::runtime_error and validate the typeid().name() string. Log added a
macro for this idiom in llevents_tut.cpp. Generalize that macro further for
normal-case processing as well, move it to a header file of its own and use it
in all known places -- plus the new exception-catching tests in
llprocess_test.cpp.
2012-02-15 13:44:43 -05:00
Nat Goodspeed 0fe14d9d70 Echo group_started, group_completed to test-program output file.
This isn't recent oversight; in viewer-development the output file never
contained those lines either. But it should.
Using scoped_ptr is more robust than using a dumb pointer with inline "Oh
yeah, don't forget to clean up that pointer" logic.
2012-02-08 10:33:46 -05:00
Nat Goodspeed 2681d5403c Automated merge with file:C%3A%5CUsers%5CNat%5Clinden%5Cviewer-tut-fix 2012-02-07 14:31:27 -05:00
Nat Goodspeed 33a42b32ca Disable MSVC warning C4702 (unreachable code) in Boost headers. 2012-02-07 13:06:38 -05:00
Nat Goodspeed d99acd56cd ManageAPR should be noncopyable. Make that explicit.
Any RAII class should either be noncopyable or should deal appropriately with
a copy operation. ManageAPR is intended only for extremely simple cases, and
hence should be noncopyable.
2012-02-06 17:06:55 -05:00
Nat Goodspeed f65028e38e Automated merge with file:///Users/nat/linden/viewer-tut-fix 2012-02-03 13:11:04 -05:00
Nat Goodspeed 90ba675da4 Escape all strings embedded in TeamCity service messages.
TeamCity requires that certain characters (notably "'") must be escaped when
embedded in service messages:
http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ServiceMessages
TUT frequently outputs messages containing "'", e.g. from ensure_equals()
failure. We've seen TC output nesting get confused when it fails to process
service messages properly due to parsing unescaped messages.
Along with test<n> number, report test name (from set_test_name()) when
available.
Eliminate horsing around to produce normal output on both std::cout and
possible output file. When output file is specified, use
boost::iostreams::tee_device to do fanout for us.
Improve placement (and possibly reliability) of service messages.
Clean up a startling amount of redundancy in service-message production.
2012-02-03 13:09:20 -05:00
Nat Goodspeed 51b26cab9a Any proper RAII class must either handle copying or be noncopyable.
NamedTempFile makes no attempt to deal with copying, therefore make it
noncopyable.
2012-01-17 20:30:46 -05:00
Nat Goodspeed a01dd3549c Make NamedTempFile::peep() a public member for debugging unit tests. 2012-01-17 18:40:05 -05:00
Nat Goodspeed b6a08ad007 Extract APR and temp-fixture-file helper code to indra/test.
Specifically:
Introduce ManageAPR class in indra/test/manageapr.h. This is useful for a
simple test program without lots of static constructors.
Extract NamedTempFile from llsdserialize_test.cpp to indra/test/
namedtempfile.h. Refactor to use APR file operations rather than platform-
dependent APIs.
Use NamedTempFile for llprocesslauncher_test.cpp.
2012-01-13 12:41:54 -05:00
Nat Goodspeed 8cbc54d519 Automated merge with http://hg.secondlife.com/viewer-development 2011-12-01 16:53:28 -05:00
Nat Goodspeed 95fb0249e9 LLSD-14: Move LLSD::(outstanding|allocation)Count() to free functions.
Free functions can be unconditionally compiled into the .o file, but
conditionally hidden in the header file. Static class methods don't have that
flexibility: without a declaration in the header file, you can't compile a
function definition in the .cpp file. That makes it awkward to use the same
llcommon build for production and for unit tests.
Why make the function declarations conditional at all? These are debugging
functions. They break the abstraction, they peek under the covers. Production
code should not use them. Making them conditional on an #ifdef symbol in the
unit-test source file means the compiler would reject any use by production
code. Put differently, it allows us to assert with confidence that only unit
tests do use them.
Put new free functions in (lowercase) llsd namespace so as not to clutter
global namespace.
Tweak the one known consumer (llsd_new_tut.cpp) accordingly.
2011-12-01 16:50:27 -05:00
Logan Dethrow 182566800a Re-added some missing calls to apr_pool_destroy() that I failed to readd after the thread local storage rollback. Also added a call to LLProxy::cleanupClass() to prevent indra/test from segfaulting on exit. 2011-11-18 12:33:07 -05:00
Nat Goodspeed b0d869554b LLSD-14: Add tests from Simon's server-trunk changeset 3852648182db.
That changeset provides most of the changes previously checked in on this Jira
(viewer changeset 22b293aae639). Bring over the code he added to
llsd_new_tut.cpp as well.
2011-11-17 11:10:39 -05:00
Nat Goodspeed cc1fb7bcac LLSD-14: Bring over llsd.{h,cpp} enhancements from server-trunk.
Because new enum values have been added to the LLSD type field, a few external
switch statements must be adjusted to suppress fatal warnings, even though we
never expect to encounter an LLSD instance containing any of the new values.
2011-11-17 08:06:31 -05:00
Logan Dethrow 620b63a316 Fixed test build issues caused by merging. Still encountering pthread assert after running indra/test 2011-10-20 11:20:41 -04:00
Logan Dethrow 77876a3c4f Merged with viewer-development. 2011-10-19 13:04:54 -04:00
Logan Dethrow e0f6e44959 Removed one ugly const_cast, the other one is needed for the time being. 2011-10-12 15:38:37 -04:00
Logan Dethrow d1ccfc5495 Changed the handling of the different naming of fpclassify on windows and Linux in llsd_new_tut.cpp to be more clean at Nat's recommendation. 2011-10-05 15:33:53 -04:00
Logan Dethrow c7dd3aac83 Removed the bool version of the linux exception catching macro in llevents_tut.cpp. 2011-09-16 15:06:43 -04:00
Logan Dethrow 997a588732 Fixed linux exception catching macros in llevents_tut.cpp. All tests now pass on a lenny build
machine.
2011-09-16 01:49:14 +00:00
Logan Dethrow 51055b51f7 Changed extra linux exception handling into a pair of macros. 2011-09-15 19:38:56 -04:00
Logan Dethrow 04d18d0d0d Added extra exception catching code to llevents_tut.cpp to fix linux test failures. 2011-09-15 14:16:53 -04:00
Logan Dethrow 85c8c97f7a Fixed CMakeLists.txt line ending. 2011-09-15 14:14:55 -04:00
Logan Dethrow 5afffabc1a Backed out changeset 19aa1a773410 2011-09-15 14:14:15 -04:00
Logan Dethrow ec065bdfda Copied newer version of llevents_tut from server. Fixed line ending in CMakeLists.txt. 2011-09-14 14:09:50 -04:00
Logan Dethrow 15a3df2f08 Always build indra/test, run if LL_TESTS is enabled. Removed python test run command since there are no python tests in the viewer. 2011-09-13 14:41:00 -04:00
Logan Dethrow dc58b5207b Re-enabled llapp_tut.cpp test for testing. Copied llapp_tut.cpp from server directory.
The commented line indicates threading breakage in the LLApp test, but I have not seen evidence of this so far while testing on linux.
2011-09-09 17:22:37 -04:00
Logan Dethrow 8a289a161d Re-enabled and fixed llsd_new_tut.cpp by copying the fixed version from the server test directory. 2011-09-09 15:52:36 -04:00
Logan Dethrow 3151b6ce50 Fixed llhttpclient_tut.cpp by initializing the LLCurl class during test setup. 2011-09-09 15:22:11 -04:00
Logan Dethrow 8a952e42e9 Removed some spurious newlines that I introduced into CMakeLists.txt. 2011-09-09 14:20:19 -04:00
Logan Dethrow 2291d5a9be Fixed indra test dynamic library issues. 2011-09-09 11:56:47 -04:00
Logan Dethrow 44d7267cd9 Got indra/test to build. Fails to run due to missing .so files. 2011-06-29 17:22:39 -04:00
Xiaohong Bao 95838efeaa Merge 2011-02-23 14:39:42 -07:00
Merov Linden 896bc12a2b STORM-937 : Fix python scripts shebang line and license header for consistency 2011-02-09 15:23:07 -08:00
Aleric Inglewood ef490e308c Introduces a LLThreadLocalData class that can be
accessed through the static LLThread::tldata().
Currently this object contains two (public) thread-local
objects: a LLAPRRootPool and a LLVolatileAPRPool.

The first is the general memory pool used by this thread
(and this thread alone), while the second is intended
for short lived memory allocations (needed for APR).
The advantages of not mixing those two is that the latter
is used most frequently, and as a result of it's nature
can be destroyed and reconstructed on a "regular" basis.

This patch adds LLAPRPool (completely replacing the old one),
which is a wrapper around apr_pool_t* and has complete
thread-safity checking.

Whenever an apr call requires memory for some resource,
a memory pool in the form of an LLAPRPool object can
be created with the same life-time as this resource;
assuring clean up of the memory no sooner, but also
not much later than the life-time of the resource
that needs the memory.

Many, many function calls and constructors had the
pool parameter simply removed (it is no longer the
concern of the developer, if you don't write code
that actually does an libapr call then you are no
longer bothered with memory pools at all).

However, I kept the notion of short-lived and
long-lived allocations alive (see my remark in
the jira here: https://jira.secondlife.com/browse/STORM-864?focusedCommentId=235356&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-235356
which requires that the LLAPRFile API needs
to allow the user to specify how long they
think a file will stay open. By choosing
'short_lived' as default for the constructor
that immediately opens a file, the number of
instances where this needs to be specified is
drastically reduced however (obviously, any
automatic LLAPRFile is short lived).

***

Addressed Boroondas remarks in https://codereview.secondlife.com/r/99/
regarding (doxygen) comments. This patch effectively only changes comments.

Includes some 'merge' stuff that ended up in llvocache.cpp
(while starting as a bug fix, now only resulting in a cleanup).

***

Added comment 'The use of apr_pool_t is OK here'.

Added this comment on every line where apr_pool_t
is correctly being used.

This should make it easier to spot (future) errors
where someone started to use apr_pool_t; you can
just grep all sources for 'apr_pool_t' and immediately
see where it's being used while LLAPRPool should
have been used.

Note that merging this patch is very easy:
If there are no other uses of apr_pool_t in the code
(one grep) and it compiles, then it will work.

***

Second Merge (needed to remove 'delete mCreationMutex'
from LLImageDecodeThread::~LLImageDecodeThread).

***

Added back #include <apr_pools.h>.

Apparently that is needed on libapr version 1.2.8.,
the version used by Linden Lab, for calls to
apr_queue_*. This is a bug in libapr (we also
include <apr_queue.h>, that is fixed in (at least) 1.3.7.

Note that 1.2.8 is VERY old. Even 1.3.x is old.

***

License fixes (GPL -> LGPL). And typo in comments.
Addresses merov's comments on the review board.

***

Added Merov's compile fixes for windows.
2011-02-05 15:58:07 +01:00
Aleric Inglewood a902160723 VWR-24251: Fix -DLL_TESTS:BOOL=ON on standalone when Tut is installed in a non-standard directory.
If tut/tut.hpp isn't installed in a standard include directory all tests
fail because the found include directory for tut isn't passed to the compiler.

This patch fixes this by passing it.
Note that using include_directories() in a Find*.cmake file is bad practise.
The correct way is to set an include dir variable and call
include_directories() once. It certainly doesn't work for the tests anyway
because the tests are all over the place and include_directories is on a
per folder basis.  What is needed is to set it for each (test) target.

However, there is no TARGET_INCLUDE_DIRECTORIES. The closest thing that we
have is to set the COMPILE_FLAGS property for a target.

Fortunately, standalone is only used for linux, so we can just use
-I${TUT_INCLUDE_DIR} to get the effect we want.
2010-12-16 15:43:18 +01:00