summaryrefslogtreecommitdiff
path: root/indra
AgeCommit message (Collapse)Author
2020-03-25DRTVWR-476: Re-enable an llcoproceduremanager_test case.Nat Goodspeed
Use new Sync class to make the driving logic wait for the coprocedure to run.
2020-03-25DRTVWR-476: Add Sync class to help with stepwise coroutine tests.Nat Goodspeed
Sync is specifically intended for test programs. It is based on an LLScalarCond<int>. The idea is that each of two coroutines can watch for the other to get a chance to run, indicated by incrementing the wrapped int and notifying the wrapped condition_variable. This is less hand-wavy than calling llcoro::suspend() and hoping that the other routine will have had a chance to run. Use Sync in lleventcoro_test.cpp. Also refactor lleventcoro_test.cpp so that instead of a collection of static data requiring a clear() call at start of each individual test function, the relevant data is all part of the test_data struct common to all test functions. Make the helper coroutine functions members of test_data too. Introduce llcoro::logname(), a convenience function to log the name of the currently executing coroutine or "main" if in the thread's main coroutine.
2020-03-25DRTVWR-476: Improve llprocess_test.cpp diagnostic output.Nat Goodspeed
If the test<1>() child process terminates with nonzero rc, also report any stdout/stderr it might have emitted first.
2020-03-25DRTVWR-476: Add basic tests for LLCond.Nat Goodspeed
2020-03-25DRTVWR-476: Fix first round of compile errors.Nat Goodspeed
2020-03-25DRTVWR-476: Fix convert(F32Milliseconds)Nat Goodspeed
2020-03-25DRTVWR-476: Review response: remove wait_until() methods and LLDate.Nat Goodspeed
2020-03-25DRTVWR-476: Review response: support LLDate and llunits.h durations.Nat Goodspeed
Also introduce value_type typedef.
2020-03-25DRTVWR-476: WIP: Untested preliminary implementation of LLCond.Nat Goodspeed
LLCond encapsulates the usage patterns required to properly use condition_variable. We also provide LLScalarCond, LLBoolCond and LLOneShotCond.
2020-03-25DRTVWR-476: Fix confusing comment in LLProcess::handle_status().Nat Goodspeed
The global replace in changeset bd80903cf987 was a bit too sweeping: a comment mentioning the OS function wait() (which exists) was inadvertently changed to talk about an OS function suspend() (which does not).
2020-03-25Tweaks to VSTool source and executable for compatibility with VS 2017callum_linden
2020-03-25[DRTVWR-476] - temp fix to test. comment it out. access violation in releaseAnchor
2020-03-25[DRTVWR-476] - temp fix to a testAnchor
2020-03-25DRTVWR-476: Disable test_httprequest.hpp on Mac Release builds.Nat Goodspeed
For reasons not yet diagnosed, specifically in Mac Release builds, the tests in test_httprequest.hpp consistently crash with a backtrace suggesting that the worker thread is calling LLCore::HttpLibcurl::completeRequest() after the foreground thread calls HttpRequest::destroyService(). Weirdly, even executing a tut::skip() call in every test<n>() function up to the point of the crash does not eliminate the crash.
2020-03-25DRTVWR-476: Remove special llcorehttp test memory manager.Nat Goodspeed
NickyD discovered that the substitute default allocator used for llcorehttp tests was returning badly-aligned storage, which caused access violations on alignment-sensitive data such as std::atomic. Thanks Nicky!! Moreover, the llcorehttp test assertions regarding memory usage, well- intentioned though they are, have been causing us trouble for years. Many have already been disabled. The problem is that use of test_allocator.h affected *everything* defined with that header file's declarations visible. That inevitably included specific functions in other subsystems. Those functions then (unintentionally) consumed the special allocator, throwing off the memory tracking and making certain memory-related assertions consistently fail. This is a particular, observable bad effect of One Definition Rule violations. Within a given program, C++ allows multiple definitions for the same entity, but requires that all such definitions be the same. Partial visibility of the global operator new() and operator delete() overrides meant that some definitions of certain entities used the default global allocator, some used llcorehttp's. There may have been other, more subtle bad effects of these ODR violations. If one wanted to reimplement verification of the memory consumption of llcorehttp classes: * Each llcorehttp class (for which memory tracking was desired) should declare class-specific operator new() and operator delete() methods. Naturally, these would all consume a central llcorehttp-specific allocator, but that allocator should *not* be named global operator new(). * Presumably that would require runtime indirection to allow using the default allocator in production while substituting the special allocator for tests. * Recording and verifying the memory consumption in each test should be performed in the test-object constructor and destructor, rather than being sprinkled throughout the test<n>() methods. * With that mechanism in place, the test object should provide methods to adjust (or entirely disable) memory verification for a particular test. * The test object should also provide a "yes, we're still consuming llcorehttp memory" method to be used for spot checks in the middle of tests -- instead of sprinkling in explicit comparisons as before. * In fact, the llcorehttp test object in each test_*.hpp file should be derived from a central llcorehttp test-object base class providing those methods.
2020-03-25DRTVWR-476: On Mac, copy libhunspell-1.3.0.dylib for test programs.Nat Goodspeed
2020-03-25DRTVWR-476: Add LLCOREHTTP_TESTS CMake var, OFF by default on Mac.Nat Goodspeed
Hopefully this is temporary until we solve the problem of crashy llcorehttp test executable on Mac.
2020-03-25General cleanup. Delete commented out code.Nicky
2020-03-25Replace boost::fibers::unbuffered_channel with boost::fibers::buffered_channel.Nicky
Using boost::fibers::unbuffered_channel can block the mainthread when calling mPendingCoprocs.push (LLCoprocedurePool::enqueueCoprocedure) From the documentation: - If a fiber attempts to send a value through an unbuffered channel and no fiber is waiting to receive the value, the channel will block the sending fiber. This can happen if LLCoprocedurePool::coprocedureInvokerCoro is running a coroutine and this coroutine calls yield, resuming the viewers main loop. If inside the main loop someone calls LLCoprocedurePool::enqueueCoprocedure now push will block, as there's no one waiting for a result right now. The wait would be in LLCoprocedurePool::coprocedureInvokerCoro at the start of the while loop, but we have not reached that yet again as LLCoprocedurePool::coprocedureInvokerCoro did yield before reaching pop_wait_for. The result is a deadlock. boost::fibers::buffered_channel will not block as long as there's space in the channel. A size of 4096 (DEFAULT_QUEUE_SIZE) should be plenty enough for this.
2020-03-25[DRTVWR-476] - fix compiler errors 32 bit windows buildAnchor
2020-03-25SL-1968: Extend lllogin_test login-failed cases for new sync timing.Nat Goodspeed
On login failure, LLLogin now tries to sync up with SLVersionChecker. It waits for up to 10 seconds before shrugging and giving up. Since that coroutine can now block for that long, make the llogin_test failure cases wait at least that long too.
2020-03-25Do not use string/chrono literals, sadly that won't work with GCC (4.9)Nicky
2020-03-25Use reinterpret_cast to pass pthread_self (pthread_t) into ↵Nicky
CRYPTO_THREADID_set_pointer (void*).
2020-03-25[DRTVWR-476] - fix compiler errorAnchor
2020-03-25[DRTVWR-476] - update cef, fix mergeAnchor
2020-03-25[DRTVWR-476] - temporary skip failing llinstancetracker tests to get TC ↵Anchor
build working
2020-03-25[DRTVWR-476] - suppress dbghelp.h compiler warningsAnchor
2020-03-25[DRTVWR-476] - revertAnchor
2020-03-25[DRTVWR-476] - disable llcorehttp test on macAnchor
2020-03-25[DRTVWR-476] - temporarily disable llcorehttptest on macAnchor
2020-03-25[DRTVWR-476] - conflicts with a mac macroAnchor
2020-03-25Implemented some code review suggested cleanups.Brad Kittenbrink
2020-03-25Fix stall during login by yielding when needed from the LLXXMLRPCListener's ↵Brad Kittenbrink
Poller.
2020-03-25Removed unnecessary disconnection of listener in postAndSuspendSetupBrad Kittenbrink
2020-03-25Improved aggregate init syntax for DefaultPoolSizes map.Brad Kittenbrink
2020-03-25Switched LL_ERRS to LL_WARNS for case where promise is fulfilled multiple ↵Brad Kittenbrink
times by multiple events.
2020-03-25Improved shutdown behavior of LLCoprocedureManagerBrad Kittenbrink
2020-03-25First draft of boost::fibers::unbuffered_channel based implementation of ↵Brad Kittenbrink
LLCoprocedureManager
2020-03-25Fixed variadic macro usage in LL_ERRS_IF and LL_WARNS_IF and improved ↵Brad Kittenbrink
LLError::shouldLogToStderr() behavior under xcode.
2020-03-25Lint fixes on new test file.Brad Kittenbrink
2020-03-25Attempt to close LLEventCoro's LLBoundListener connection when promise has ↵Brad Kittenbrink
been fulfilled.
2020-03-25Added try/catch closer to source of error so LL_ERRS fatal can be more ↵Brad Kittenbrink
useful for debugging;
2020-03-25Fix failure when building packages-info.txt when autobuild can't be found in ↵Brad Kittenbrink
xcode's PATH
2020-03-25Began work for adding a test covering LLCoprocedureManagerBrad Kittenbrink
2020-03-25[DRTVWR-476] - disable dbghelp.h warningsAnchor
2020-03-25Backed out changeset: de49423bb5aeAnchor
2020-03-25Backed out changeset: 02ef251a64b5Anchor
2020-03-25[DRTVWR-476] - skip a math testAnchor
2020-03-25[DRTVWR-476] - fix linkingAnchor
2020-03-25[DRTVWR-476] - test adding at beginiing of listAnchor