summaryrefslogtreecommitdiff
path: root/indra/llcommon/tests
AgeCommit message (Collapse)Author
2011-12-23Automated merge with ssh://hg.lindenlab.com/nat/viewer-leapNat Goodspeed
2011-12-23Make pipe-management logic more robust.Nat Goodspeed
Previous logic was vulnerable to the case in which both pipes reached EOF in the same loop iteration. Now we use std::list instead of std::vector, allowing us to iterate and delete with a single pass.
2011-12-22Comment out lookup table used only by commented-out code.Nat Goodspeed
Otherwise the unreferenced declaration causes a fatal warning.
2011-12-22Never call apr_proc_wait() inside child_status_callback().Nat Goodspeed
Quiet the temporary child_status_callback() output. Add a bit of diagnostic info if apr_proc_wait() returns anything but APR_CHILD_DONE.
2011-12-22Add child_status_callback() function and arrange to call periodically.Nat Goodspeed
At least on OS X 10.7, a call to apr_proc_wait(APR_NOWAIT) in fact seems to block the caller. So instead of polling apr_proc_wait(), use APR callback mechanism (apr_proc_other_child_register() et al.) and poll that using apr_proc_other_child_refresh_all(). Evidently this polls the underlying system waitpid(), but the internal call seems to better support nonblocking. On arrival in the child_status_callback(APR_OC_REASON_DEATH) call, though, apr_proc_wait() produces ECHILD: the child process in question has already been reaped. The OS-encoded wait() status does get passed to the callback, but then we have to use OS-dependent macros to tease apart voluntary termination vs. killed by signal... a bit of a hole in APR's abstraction layer. Wrap ensure_equals() calls with a macro to explain which comparison failed.
2011-12-21Tweak llprocesslauncher_test.cpp to run properly on Windows.Nat Goodspeed
Fix EOL issues: "\r\n" vs. "\n". On Windows, requesting a read in nonblocking mode can produce EAGAIN instead of EWOULDBLOCK.
2011-12-21Change llprocesslauncher_test.cpp eyeballing to program verification.Nat Goodspeed
That is, where before we just flung stuff to stdout with the expectation that a human user would verify, replace with assertions in the test code itself. Quiet previous noise on stdout. Introduce a temp script file that produces output on both stdout and stderr, with sleep() calls so we predictably have to wait for it. Track and then verify the history of our interaction with the child process, noting especially EWOULDBLOCK attempts.
2011-12-21Fix llprocesslauncher_test.cpp to work on Windows.Nat Goodspeed
2011-12-21Add unit-test module for LLProcessLauncher.Nat Goodspeed
As always with llcommon, this is expressed as an "integration test" to sidestep a circular dependency: the llcommon build depends on its unit tests, but all our unit tests depend on llcommon. Initial test code is more for human verification than automated verification: does APR's child-process management in fact support nonblocking operations?
2011-09-09merge changes for storm-1590Oz Linden
2011-09-08Corrected license information in llsingleton_test.cpp.Logan Dethrow
2011-09-07Automated merge with http://hg.secondlife.com/viewer-developmentNat Goodspeed
2011-09-07STORM-1541: Add LLInstanceTracker tests for active-iterator asserts.Nat Goodspeed
The recent class-static LLInstanceTracker::instance_iter and key_iter reference count is intended to guard against deleting an instance of an LLInstanceTracker subclass during iteration. Add tests for that functionality.
2011-09-07Merge. Fixed issue with LLProxy code related to changes to the LLSocket ↵Logan Dethrow
interface.
2011-09-01MergeLogan Dethrow
2011-09-01Clarified the reason for adding the deleteSingleton method to LLSingleton. ↵Logan Dethrow
Added a simple unit test to verify the functionality of the deleteSingleton method.
2011-08-31Automated merge with http://hg.secondlife.com/viewer-developmentRichard Nelson
2011-08-24Re-add 3 llinstancetracker tests disabled by changeset 1ead63777bf6.Nat Goodspeed
Fix LLInstanceTracker::key_iter constructor param; accepting InstanceMap::iterator by non-const reference relied on Microsoft extension that accepts non-const reference to an rvalue. Given typical iterator implementation, simply accept by value instead, which makes gcc happy too.
2011-08-19better unit test for nested brackets in string replacementRichard Linden
2011-08-19fix for not properly handling nested brackets inRichard Linden
string replacement, e.g. [[FOO]]
2011-07-27fix for gccRichard Nelson
2011-07-26fixed buildRichard Nelson
2011-07-26mergeRichard Nelson
2011-07-26removed last vestiges of llinstancetracerscopedguardRichard Nelson
2011-07-19More FormatMessage compile errors, try again to fixNat Goodspeed
2011-07-19Fix copy/paste error in swiped FormatMessage() example code.Nat Goodspeed
2011-07-19Per Josh's comments in http://codereview.lindenlab.com/6510035/Nat Goodspeed
Instead of low-level open(O_CREAT | O_EXCL) loop on all platforms, use GetTempFileName() on Windows and mkstemp() elsewhere. Don't append a final newline to NamedTempFile: use caller's data literally. Tweak a couple comments.
2011-07-16Use raw-string syntax for other Windows pathnames inserted to Python.Nat Goodspeed
2011-07-16Use raw-string syntax for Python string containing Windows pathname.Nat Goodspeed
Consider this pathname for llsdserialize_test.cpp: C:\nats\indra\llcommon\tests\llsdserialize_test.cpp Embed that in a Python string literal: 'C:\nats\indra\llcommon\tests\llsdserialize_test.cpp' and you get a string containing: C: ats\indra\llcommon ests\llsdserialize_test.cpp where the \n became a newline and the \t became a tab character. Hopefully Python raw-string syntax r'C:\etc\etc' works better.
2011-07-15Use C++ __FILE__ rather than Python __file__ to find indra work area.Nat Goodspeed
In this case, the Python code in question is being written from a C++ string literal to a temp script file in a platform-dependent temp directory -- so the Python __file__ value tells you nothing about the location of the repository checkout. Embedding __FILE__ from the containing C++ source file works better.
2011-07-15If we're going to need indra.base.llsd, have to munge sys.path.Nat Goodspeed
And at that point, the Python logic needed to bring in the llsd module is big enough to warrant capturing it in a separate string variable common to multiple tests.
2011-07-15Not all TC agents have llbase.llsd, fall back to indra.base.llsdNat Goodspeed
2011-07-15Try again to pacify VS fatal warning.Nat Goodspeed
2011-07-15Muzzle VS warningNat Goodspeed
2011-07-15Add test to verify Python-to-C++ LLSD notation sequence.Nat Goodspeed
Verify that an LLSD::String containing newlines works; verify that newlines between items are accepted.
2011-07-15Add test to verify C++-to-Python LLSD notation sequence.Nat Goodspeed
Write a sequence of LLSDSerialize::toNotation() calls separated by newlines to a data file, then read lines and parse using llbase.llsd.parse(). Verify that this produces expected data even when one item is a string containing newlines. Generalize python() helper function to allow using any of the NamedTempFile constructor forms. Allow specifying expected Python rc (default 0) and use this to verify an intentional sys.exit(17). This is better than previous sys.exit(0) test because when, at one point, NamedTempFile failed to write file data, running Python on an empty script file still terminates with rc 0. A nonzero rc verifies that we've written the file, that Python is running it and that we're retrieving its rc.
2011-07-15Change NamedTempScript to NamedTempFile; allow streaming to it.Nat Goodspeed
The only thing about NamedTempScript that was specific to script files was the hardcoded ".py" extension. Renaming it to NamedTempFile with an explicit extension argument addresses that. Allow constructing NamedTempFile with either a std::string, as before, or an expression of the form (lambda::_1 << some << stuff). If Linden's Boost package included the Boost.Iostreams lib, we could even stream such an expression directly to an ostream constructed around the fd. But oh well.
2011-07-14Pacify Linux gcc more thoroughly.Nat Goodspeed
2011-07-14#include correct headers for Windows _open() et al.Nat Goodspeed
Also mollify Linux build, which gets alarmed when you implicitly ignore write()'s return value. Ignore it explicitly.
2011-07-14Avoid Boost.Filesystem: Boost package improperly built on Windows?Nat Goodspeed
Seems Linden's Boost package and the viewer build might use different settings of the /Zc:wchar_t switch. Anyway, this implementation using open(O_CREAT | O_EXCL) should be more robust. I'm surprised Boost.Filesystem doesn't seem to offer "create a unique file"; all I found was "generate a random filename fairly likely to be unique."
2011-07-14wstring_to_utf8str() accepts LLWString rather than std::wstring.Nat Goodspeed
2011-07-14Use Linden wstring-to-string conversion, not boost::filesystem's.Nat Goodspeed
On Windows, calling boost::filesystem::path::string() implicitly requests code conversion between std::wstring (the boost::filesystem::path::string_type selected on Windows) and std::string. At least for integration-test program, that produces link errors. Use Linden's wstring_to_utf8str() instead.
2011-07-14Attempt to fix minor build errors on Windows.Nat Goodspeed
2011-07-14Eliminate use of PATH_MAX, which is bogus anyway.Nat Goodspeed
2011-07-14Work around broken Windows command-line processing.Nat Goodspeed
It's wonderful that the Python interpreter will accept a whole multi-line script as a composite -c argument... but because Windows command-line processing is fundamentally flawed, we simply can't count on it for Windows. Instead, accept script text, write a temporary script file in a system- dependent temp directory, ask Python to run that script and delete the file. Also, on Windows, use _spawnl(), much simpler than adding bizarre Windows wait logic to LLProcessLauncher. Use LLProcessLauncher only on Mac & Linux, with waitpid() to capture rc.
2011-07-13Still trying to fix Windows header-file-order problem.Nat Goodspeed
2011-07-13Attempt to fix confusing header-file-order problems on Windows.Nat Goodspeed
2011-07-13Introduce support for C++ integration tests running Python scripts.Nat Goodspeed
This is in its infancy; tested on Mac; needs to be ironed out on Windows and Linux. Goal is to test at least some cross-language LLSD serialization.
2011-04-05merge changes for STORM-1051Oz Linden
2011-02-17Autobuild: fix for Mac build using XCodeMerov Linden