From adc975ff91ab89ebb3f0035110964e9aaea308b4 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 9 Dec 2009 10:20:08 -0500 Subject: Reduce likelihood of indefinite wait in viewer integration tests. Introduce LLStartupListener to allow viewerclient-based test script to query startup state. This handles the scenario in which, by the time the test script manages to connect, the viewer already IS in STATE_STARTED. Fix ViewerSession to invoke that query before waiting for STATE_STARTED. Make that wait time out eventually to deal with "System currently logging you off, please wait 5 minutes." Timeout raises new ViewerWontLogin exception. Fix testlangs to catch ViewerWontLogin and retry a limited number of times. --- indra/newview/llstartup.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'indra/newview/llstartup.cpp') diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 58df2ffb19..12ae12d4ae 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -193,6 +193,7 @@ #include "lllogin.h" #include "llevents.h" +#include "llstartuplistener.h" #if LL_WINDOWS #include "llwindebug.h" @@ -241,7 +242,8 @@ static std::string gFirstSimSeedCap; static LLVector3 gAgentStartLookAt(1.0f, 0.f, 0.f); static std::string gAgentStartLocation = "safe"; -static LLEventStream sStartupStateWatcher("StartupState"); +boost::scoped_ptr LLStartUp::sStateWatcher(new LLEventStream("StartupState")); +boost::scoped_ptr LLStartUp::sListener(new LLStartupListener()); // // local function declaration @@ -2725,10 +2727,15 @@ void LLStartUp::setStartupState( EStartupState state ) getStartupStateString() << " to " << startupStateToString(state) << LL_ENDL; gStartupState = state; + postStartupState(); +} + +void LLStartUp::postStartupState() +{ LLSD stateInfo; stateInfo["str"] = getStartupStateString(); - stateInfo["enum"] = state; - sStartupStateWatcher.post(stateInfo); + stateInfo["enum"] = gStartupState; + sStateWatcher->post(stateInfo); } -- cgit v1.2.3