summaryrefslogtreecommitdiff
path: root/indra/newview/tests
AgeCommit message (Collapse)Author
2020-03-25SL-11216: Convert LLVersionInfo to an LLSingleton.Nat Goodspeed
This changeset is meant to exemplify how to convert a "namespace" class whose methods are static -- and whose data are module-static -- to an LLSingleton. LLVersionInfo has no initClass() or cleanupClass() methods, but the general idea is the same. * Derive the class from LLSingleton<T>: class LLSomeSingleton: public LLSingleton<LLSomeSingleton> { ... }; * Add LLSINGLETON(LLSomeSingleton); in the private section of the class. This usage implies a separate LLSomeSingleton::LLSomeSingleton() definition, as described in indra/llcommon/llsingleton.h. * Move module-scope data in the .cpp file to non-static class members. Change any sVariableName to mVariableName to avoid being outright misleading. * Make static class methods non-static. Remove '//static' comments from method definitions as needed. * For LLVersionInfo specifically, the 'const std::string&' return type was replaced with 'std::string'. Returning a reference to a static or a member, const or otherwise, is an anti-pattern: the interface constrains the implementation, prohibiting possibly later returning a temporary (an expression). * For LLVersionInfo specifically, 'const S32' return type was replaced with simple 'S32'. 'const' is just noise in that usage. * Simple member initialization (e.g. the original initializer expressions for static variables) can be done with member{ value } initializers (no examples here though). * Delete initClass() method. * LLSingleton's forté is of course lazy initialization. It might work to simply delete any calls to initClass(). But if there are side effects that must happen at that moment, replace LLSomeSingleton::initClass() with (void)LLSomeSingleton::instance(); * Most initClass() initialization can be done in the constructor, as would normally be the case. * Initialization that might cause a circular LLSingleton reference should be moved to initSingleton(). Override 'void initSingleton();' should be private. * For LLVersionInfo specifically, certain initialization that used to be lazily performed was made unconditional, due to its low cost. * For LLVersionInfo specifically, certain initialization involved calling methods that have become non-static. This was moved to initSingleton() because, in a constructor body, 'this' does not yet point to the enclosing class. * Delete cleanupClass() method. * There is already a generic LLSingletonBase::deleteAll() call in LLAppViewer::cleanup(). It might work to let this new LLSingleton be cleaned up with all the rest. But if there are side effects that must happen at that moment, replace LLSomeSingleton::cleanupClass() with LLSomeSingleton::deleteSingleton(). That said, much of the benefit of converting to LLSingleton is deleteAll()'s guarantee that cross-LLSingleton dependencies will be properly honored: we're trying to migrate the code base away from the present fragile manual cleanup sequence. * Most cleanupClass() cleanup can be done in the destructor, as would normally be the case. * Cleanup that might throw an exception should be moved to cleanupSingleton(). Override 'void cleanupSingleton();' should be private. * Within LLSomeSingleton methods, remove any existing LLSomeSingleton::methodName() qualification: simple methodName() is better. * In the rest of the code base, convert most LLSomeSingleton::methodName() references to LLSomeSingleton::instance().methodName(). (Prefer instance() to getInstance() because a reference does not admit the possibility of NULL.) * Of course, LLSomeSingleton::ENUM_VALUE can remain unchanged. In general, for many successive references to an LLSingleton instance, it can be useful to capture the instance() as in: auto& versionInfo{LLVersionInfo::instance()}; // ... versionInfo.getVersion() ... We did not do that here only to simplify the code review. The STRINGIZE(expression) macro encapsulates: std::ostringstream out; out << expression; return out.str(); We used that in a couple places. For LLVersionInfo specifically, lllogininstance_test.cpp used to dummy out a couple specific static methods. It's harder to dummy out LLSingleton::instance() references, so we add the real class to that test.
2020-01-08SL-12486 Fix unit test build issuesandreykproductengine
2019-11-12Downstream merge from 494-maint-wassailAndreyL ProductEngine
2019-08-12DRTVWR-493: Make catch_llerrs() a member of WrapLLErrs.Nat Goodspeed
2019-08-10DRTVWR-493: Introduce test catch_what(), catch_llerrs() functions.Nat Goodspeed
Use them in place of awkward try/catch test boilerplate.
2019-08-09SL-9699 Login selectionandreykproductengine
2018-09-26Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2018-08-29MAINT-9044 Update Aditi helper_uri to ↵AndreyL ProductEngine
https://secondlife.aditi.lindenlab.com/helpers/
2018-08-02Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2018-06-21DRTVWR-447: Merge up to latest viewer-releaseNat Goodspeed
2018-05-24Merged in oz_linden/maint-8675AndreyL ProductEngine
2018-05-23Automated merge with ssh://bitbucket.org/oz_linden/maint-8675Nat Goodspeed
2018-05-23fix tests broken by argument added to LLTrans::getStringOz Linden
2018-05-23MAINT-8675: update expired certs in integration testOz Linden
2018-05-17SL-821: Add LL_TO_WSTRING() macro to llpreprocessor.h.Nat Goodspeed
Also use existing LL_TO_STRING() macro to stringize LL_VIEWER_CHANNEL in llversioninfo.cpp and its tests.
2018-06-13network test fixesMnikolenko ProductEngine
2018-01-17merge 5.1.0-releaseOz Linden
2017-08-24merge changes for MAINT-7594Oz Linden
2017-08-23merge changes for MAINT-7594Oz Linden
2017-08-22MAINT-7594: add platform name string to login request (and add request ↵Oz Linden
parameter logging at DEBUG)
2017-08-14MAINT-7640: Notify the user if login is blocked for a required viewer updateOz Linden
2017-06-20merge changes for 5.0.6-releaseOz Linden
2017-06-20pull from v64 gateGlenn Glazer
2017-06-20Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2017-04-14remove obsolete type cast that upsets VS sensibilitiesOz Linden
2017-04-14Change certificate store infrastructure to key off of the Subject KeyOz Linden
Id rather than sha1 hash, since that is rarely used in modern certs. The previous form was storing trusted certs using an empty sha1 hash value as the key, which meant most certificates matched... not good. Modify the LLCertException to pass certificate information back as LLSD rather than an LLPointer<LLCertificate>, because when the exception is being thown from the certificate constructor that results in one of a couple of other exceptions (even refcounting won't save you when the problem is that the thing you're pointing to never finished coming into being properly). Update the certificates in the llsechandler_basic_test to modern conventions, and extend the classes to allow for an optional validation date so that the test can use a fixed date. Also make all the certificates include the plain text form for ease of reference.
2017-03-02SL-409 - viewer asset stats test build fixBrad Payne (Vir Linden)
2017-02-27SL-409 - viewer asset stats updates to distinguish http and udp fetchesBrad Payne (Vir Linden)
2017-02-03Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2016-12-07Automated merge with ssh://bitbucket.org/lindenlab/viewer-skip-llcorehttp-testNat Goodspeed
2016-12-07DRTVWR-418: Apparently (some) Windows hosts still need freeport().Nat Goodspeed
This is the function in indra/llmessage/tests/testrunner.py that iterates through ports in a specified range, looking for an available one. Other platforms understand a specification of port 0 to mean: "You pick one. I'll just use whichever one you picked."
2016-12-07merge nats even newer fix for the llcorehttp testOz Linden
2016-12-07DRTVWR-418: Revamp testrunner to shutdown server Thread at end.Nat Goodspeed
Instead of having testrunner.run()'s caller pass a Thread object on which to run the caller's server instance's serve_forever() method, just pass the server instance. testrunner.run() now constructs the Thread. This API change allows run() to also call shutdown() on the server instance when done, and then join() the Thread. The hope is that this will avoid the Python runtime forcing the process termination code to 1 due to forcibly killing the daemon thread still running serve_forever(). While at it, eliminate calls to testrunner.freeport() -- just make the runtime pick a suitable port instead.
2016-11-30DRTVWR-418: Adjust for LL_VIEWER_CHANNEL coming in unquoted.Nat Goodspeed
Evidently the LL_VIEWER_CHANNEL macro (defined on the compiler command line) used to contain enclosing double quotes. Something changed (newer CMake version?) so that the macro now expands as Second Life Release rather than as "Second Life Release". That leads to syntax errors when it's used. Add C++ preprocessor trickery to stringize the value of the macro.
2016-12-08Automated merge with ssh://bitbucket.org/lindenlab/viewer-skip-llcorehttp-testNat Goodspeed
2017-03-06SL-321: reintegration of autobuild as package, build changes for mac integrationGlenn Glazer
2017-03-01SL-321: remove redundant const declaration of MD5HEX_STR_SIZE in ↵Glenn Glazer
llversioninfo, remove extraneous python variable assignment in CMakeLists, run tests with INFO
2017-03-01SL-321: fix merge removal of llhasheduniqueid from from llloginstance_test's ↵Glenn Glazer
include path
2017-02-28mergecoyot@coyot-sager-PC
2016-11-14Merged in lindenlab/viewer-cleanupAndreyL ProductEngine
2016-09-14MAINT-6731 Use web profile URLs from the grid configurationNatty Linden
2016-08-30Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2016-08-22SL-323: ripping out old code completedGlenn Glazer
2016-08-18SL-323: first pass at ripping out old updaterGlenn Glazer
2016-04-04merge with 4.0.3-releaseOz Linden
2016-01-15merge changes for 4.0.1-releaseOz Linden
2015-12-18MergeRider Linden
2015-11-10Added code to initiate controlled shutdown of plugins with timeouts for ↵Rider Linden
misbeahving plugin.
2015-11-10remove execute permission from many files that should not have itOz Linden
2015-11-02Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed