diff options
Diffstat (limited to 'indra/newview/tests/llviewernetwork_test.cpp')
-rw-r--r-- | indra/newview/tests/llviewernetwork_test.cpp | 900 |
1 files changed, 450 insertions, 450 deletions
diff --git a/indra/newview/tests/llviewernetwork_test.cpp b/indra/newview/tests/llviewernetwork_test.cpp index ddaa2a40da..40c2059d27 100644 --- a/indra/newview/tests/llviewernetwork_test.cpp +++ b/indra/newview/tests/llviewernetwork_test.cpp @@ -1,450 +1,450 @@ -/**
- * @file llviewernetwork_test.cpp
- * @author Roxie
- * @date 2009-03-9
- * @brief Test the viewernetwork functionality
- *
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2014, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-#include "../llviewerprecompiledheaders.h"
-#include "../llviewernetwork.h"
-#include "../test/lltut.h"
-#include "../../llxml/llcontrol.h"
-#include "llfile.h"
-
-namespace
-{
-
-// Should not collide with other test programs creating temp files.
-static const char * const TEST_FILENAME("llviewernetwork_test.xml");
-
-}
-
-//
-// Stub implementation for LLTrans
-//
-class LLTrans
-{
-public:
- static std::string getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args, bool def_string = false);
-};
-
-std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args, bool def_string)
-{
- std::string grid_label = std::string();
- if(xml_desc == "AgniGridLabel")
- {
- grid_label = "Second Life Main Grid (Agni)";
- }
- else if(xml_desc == "AditiGridLabel")
- {
- grid_label = "Second Life Beta Test Grid (Aditi)";
- }
-
- return grid_label;
-}
-
-//----------------------------------------------------------------------------
-// Mock objects for the dependencies of the code we're testing
-
-LLControlGroup::LLControlGroup(const std::string& name)
-: LLInstanceTracker<LLControlGroup, std::string>(name) {}
-LLControlGroup::~LLControlGroup() {}
-LLControlVariable* LLControlGroup::declareString(const std::string& name,
- const std::string& initial_val,
- const std::string& comment,
- LLControlVariable::ePersist persist) {return NULL;}
-void LLControlGroup::setString(std::string_view name, const std::string& val){}
-
-std::string gCmdLineLoginURI;
-std::string gCmdLineGridChoice;
-std::string gCmdLineHelperURI;
-std::string gLoginPage;
-std::string gCurrentGrid;
-std::string LLControlGroup::getString(std::string_view name)
-{
- if (name == "CmdLineGridChoice")
- return gCmdLineGridChoice;
- else if (name == "CmdLineHelperURI")
- return gCmdLineHelperURI;
- else if (name == "LoginPage")
- return gLoginPage;
- else if (name == "CurrentGrid")
- return gCurrentGrid;
- return "";
-}
-
-LLSD LLControlGroup::getLLSD(std::string_view name)
-{
- if (name == "CmdLineLoginURI")
- {
- if(!gCmdLineLoginURI.empty())
- {
- return LLSD(gCmdLineLoginURI);
- }
- }
- return LLSD();
-}
-
-LLPointer<LLControlVariable> LLControlGroup::getControl(std::string_view name)
-{
- ctrl_name_table_t::iterator iter = mNameTable.find(name.data());
- return iter == mNameTable.end() ? LLPointer<LLControlVariable>() : iter->second;
-}
-
-LLControlGroup gSavedSettings("test");
-
-const char *gSampleGridFile =
- "<?xml version=\"1.0\"?>"
- "<llsd>"
- " <map>"
- " <key>altgrid.long.name</key>"
- " <map>"
- " <key>helper_uri</key><string>https://helper1/helpers/</string>"
- " <key>label</key><string>Alternative Grid</string>"
- " <key>login_page</key><string>altgrid/loginpage</string>"
- " <key>login_uri</key>"
- " <array>"
- " <string>altgrid/myloginuri1</string>"
- " <string>altgrid/myloginuri2</string>"
- " </array>"
- " <key>keyname</key><string>altgrid.long.name</string>"
- " <key>credential_type</key><string>agent</string>"
- " <key>grid_login_id</key><string>AltGrid</string>"
- " </map>"
- " <key>minimal.long.name</key>"
- " <map>"
- " <key>keyname</key><string>minimal.long.name</string>"
- " </map>"
- " <!-- Note that the values for agni and aditi below are deliberately"
- " incorrect to test that they are not overwritten -->"
- " <key>util.agni.lindenlab.com</key> <!-- conflict -->"
- " <map>"
- " <key>helper_uri</key><string>https://helper1/helpers/</string>"
- " <key>grid_login_id</key><string>mylabel</string>"
- " <key>label</key><string>mylabel</string>"
- " <key>login_page</key><string>loginpage</string>"
- " <key>login_uri</key>"
- " <array>"
- " <string>myloginuri</string>"
- " </array>"
- " <key>keyname</key><string>util.agni.lindenlab.com</string> <!-- conflict -->"
- " </map>"
- " <key>util.foobar.lindenlab.com</key>"
- " <map>"
- " <key>helper_uri</key><string>https://helper1/helpers/</string>"
- " <key>grid_login_id</key><string>Aditi</string> <!-- conflict -->"
- " <key>label</key><string>mylabel</string>"
- " <key>login_page</key><string>loginpage</string>"
- " <key>login_uri</key>"
- " <array>"
- " <string>myloginuri</string>"
- " </array>"
- " <key>update_query_url_base</key><string>https://update.secondlife.com/update</string>"
- " <key>keyname</key><string>util.foobar.lindenlab.com</string>"
- " </map>"
- " </map>"
- "</llsd>"
- ;
-// -------------------------------------------------------------------------------------------
-// TUT
-// -------------------------------------------------------------------------------------------
-namespace tut
-{
- // Test wrapper declaration : wrapping nothing for the moment
- struct viewerNetworkTest
- {
- viewerNetworkTest()
- {
- LLFile::remove(TEST_FILENAME);
- gCmdLineLoginURI.clear();
- gCmdLineGridChoice.clear();
- gCmdLineHelperURI.clear();
- gLoginPage.clear();
- gCurrentGrid.clear();
- }
- ~viewerNetworkTest()
- {
- LLFile::remove(TEST_FILENAME);
- }
- };
-
- // Tut templating thingamagic: test group, object and test instance
- typedef test_group<viewerNetworkTest> viewerNetworkTestFactory;
- typedef viewerNetworkTestFactory::object viewerNetworkTestObject;
- tut::viewerNetworkTestFactory tut_test("LLViewerNetwork");
-
- // ---------------------------------------------------------------------------------------
- // Test functions
- // ---------------------------------------------------------------------------------------
- // initialization without a grid file
- template<> template<>
- void viewerNetworkTestObject::test<1>()
- {
- LLGridManager *manager = LLGridManager::getInstance();
- // grid file doesn't exist
- manager->initialize(TEST_FILENAME);
- // validate that some of the defaults are available.
- std::map<std::string, std::string> known_grids = manager->getKnownGrids();
- ensure_equals("Known grids is a string-string map of size 2", known_grids.size(), 2);
- ensure_equals("Agni has the right name and label",
- known_grids[std::string("util.agni.lindenlab.com")],
- std::string("Second Life Main Grid (Agni)"));
- ensure_equals("Aditi has the right name and label",
- known_grids[std::string("util.aditi.lindenlab.com")],
- std::string("Second Life Beta Test Grid (Aditi)"));
- ensure_equals("name for agni",
- LLGridManager::getInstance()->getGrid("util.agni.lindenlab.com"),
- std::string("util.agni.lindenlab.com"));
- ensure_equals("id for agni",
- std::string("Agni"),
- LLGridManager::getInstance()->getGridId("util.agni.lindenlab.com"));
- ensure_equals("update url base for Agni", // relies on agni being the default
- std::string("https://update.secondlife.com/update"),
- LLGridManager::getInstance()->getUpdateServiceURL());
- ensure_equals("label for agni",
- LLGridManager::getInstance()->getGridLabel("util.agni.lindenlab.com"),
- std::string("Second Life Main Grid (Agni)"));
-
- std::vector<std::string> login_uris;
- LLGridManager::getInstance()->getLoginURIs(std::string("util.agni.lindenlab.com"), login_uris);
- ensure_equals("Number of login uris for agni", 1, login_uris.size());
- ensure_equals("Agni login uri",
- login_uris[0],
- std::string("https://login.agni.lindenlab.com/cgi-bin/login.cgi"));
- ensure_equals("Agni helper uri",
- LLGridManager::getInstance()->getHelperURI("util.agni.lindenlab.com"),
- std::string("https://secondlife.com/helpers/"));
- ensure_equals("Agni login page",
- LLGridManager::getInstance()->getLoginPage("util.agni.lindenlab.com"),
- std::string("https://viewer-splash.secondlife.com/"));
- ensure("Agni is a system grid",
- LLGridManager::getInstance()->isSystemGrid("util.agni.lindenlab.com"));
-
- ensure_equals("name for aditi",
- LLGridManager::getInstance()->getGrid("util.aditi.lindenlab.com"),
- std::string("util.aditi.lindenlab.com"));
- ensure_equals("id for aditi",
- LLGridManager::getInstance()->getGridId("util.aditi.lindenlab.com"),
- std::string("Aditi"));
- ensure_equals("label for aditi",
- LLGridManager::getInstance()->getGridLabel("util.aditi.lindenlab.com"),
- std::string("Second Life Beta Test Grid (Aditi)"));
-
- LLGridManager::getInstance()->getLoginURIs(std::string("util.aditi.lindenlab.com"), login_uris);
-
- ensure_equals("Number of login uris for aditi", 1, login_uris.size());
- ensure_equals("Aditi login uri",
- login_uris[0],
- std::string("https://login.aditi.lindenlab.com/cgi-bin/login.cgi"));
- ensure_equals("Aditi helper uri",
- LLGridManager::getInstance()->getHelperURI("util.aditi.lindenlab.com"),
- std::string("https://secondlife.aditi.lindenlab.com/helpers/"));
- ensure_equals("Aditi login page",
- LLGridManager::getInstance()->getLoginPage("util.aditi.lindenlab.com"),
- std::string("https://viewer-splash.secondlife.com/"));
- ensure("Aditi is a system grid",
- LLGridManager::getInstance()->isSystemGrid("util.aditi.lindenlab.com"));
- }
-
- // initialization with a grid file
- template<> template<>
- void viewerNetworkTestObject::test<2>()
- {
- llofstream gridfile(TEST_FILENAME);
- gridfile << gSampleGridFile;
- gridfile.close();
-
- LLGridManager::getInstance()->initialize(TEST_FILENAME);
- std::map<std::string, std::string> known_grids = LLGridManager::getInstance()->getKnownGrids();
- ensure_equals("adding a grid via a grid file increases known grid size",4,
- known_grids.size());
-
- // Verify that Agni and Aditi were not overwritten
- ensure_equals("Agni has the right name and label",
- known_grids[std::string("util.agni.lindenlab.com")],
- std::string("Second Life Main Grid (Agni)"));
- ensure_equals("Aditi has the right name and label",
- known_grids[std::string("util.aditi.lindenlab.com")],
- std::string("Second Life Beta Test Grid (Aditi)"));
- ensure_equals("name for agni",
- LLGridManager::getInstance()->getGrid("util.agni.lindenlab.com"),
- std::string("util.agni.lindenlab.com"));
- ensure_equals("id for agni",
- LLGridManager::getInstance()->getGridId("util.agni.lindenlab.com"),
- std::string("Agni"));
- ensure_equals("update url base for Agni", // relies on agni being the default
- std::string("https://update.secondlife.com/update"),
- LLGridManager::getInstance()->getUpdateServiceURL());
- ensure_equals("label for agni",
- LLGridManager::getInstance()->getGridLabel("util.agni.lindenlab.com"),
- std::string("Second Life Main Grid (Agni)"));
- std::vector<std::string> login_uris;
- LLGridManager::getInstance()->getLoginURIs(std::string("util.agni.lindenlab.com"), login_uris);
- ensure_equals("Number of login uris for agni", 1, login_uris.size());
- ensure_equals("Agni login uri",
- login_uris[0],
- std::string("https://login.agni.lindenlab.com/cgi-bin/login.cgi"));
- ensure_equals("Agni helper uri",
- LLGridManager::getInstance()->getHelperURI("util.agni.lindenlab.com"),
- std::string("https://secondlife.com/helpers/"));
- ensure_equals("Agni login page",
- LLGridManager::getInstance()->getLoginPage("util.agni.lindenlab.com"),
- std::string("https://viewer-splash.secondlife.com/"));
- ensure("Agni is a system grid",
- LLGridManager::getInstance()->isSystemGrid("util.agni.lindenlab.com"));
-
- ensure_equals("name for aditi",
- LLGridManager::getInstance()->getGrid("util.aditi.lindenlab.com"),
- std::string("util.aditi.lindenlab.com"));
- ensure_equals("id for aditi",
- LLGridManager::getInstance()->getGridId("util.aditi.lindenlab.com"),
- std::string("Aditi"));
- ensure_equals("label for aditi",
- LLGridManager::getInstance()->getGridLabel("util.aditi.lindenlab.com"),
- std::string("Second Life Beta Test Grid (Aditi)"));
-
- LLGridManager::getInstance()->getLoginURIs(std::string("util.aditi.lindenlab.com"), login_uris);
- ensure_equals("Number of login uris for aditi", 1, login_uris.size());
- ensure_equals("Aditi login uri",
- login_uris[0],
- std::string("https://login.aditi.lindenlab.com/cgi-bin/login.cgi"));
- ensure_equals("Aditi helper uri",
- LLGridManager::getInstance()->getHelperURI("util.aditi.lindenlab.com"),
- std::string("https://secondlife.aditi.lindenlab.com/helpers/"));
- ensure_equals("Aditi login page",
- LLGridManager::getInstance()->getLoginPage("util.aditi.lindenlab.com"),
- std::string("https://viewer-splash.secondlife.com/"));
- ensure("Aditi is a system grid",
- LLGridManager::getInstance()->isSystemGrid("util.aditi.lindenlab.com"));
-
- // Check the additional grid from the file
- ensure_equals("alternative grid is in name<->label map",
- known_grids["altgrid.long.name"],
- std::string("Alternative Grid"));
- ensure_equals("alternative grid name is set",
- LLGridManager::getInstance()->getGrid("altgrid.long.name"),
- std::string("altgrid.long.name"));
- ensure_equals("alternative grid id",
- LLGridManager::getInstance()->getGridId("altgrid.long.name"),
- std::string("AltGrid"));
- ensure_equals("alternative grid label",
- LLGridManager::getInstance()->getGridLabel("altgrid.long.name"),
- std::string("Alternative Grid"));
- std::vector<std::string> alt_login_uris;
- LLGridManager::getInstance()->getLoginURIs(std::string("altgrid.long.name"), alt_login_uris);
- ensure_equals("Number of login uris for altgrid", 2, alt_login_uris.size());
- ensure_equals("alternative grid first login uri",
- alt_login_uris[0],
- std::string("altgrid/myloginuri1"));
- ensure_equals("alternative grid second login uri",
- alt_login_uris[1],
- std::string("altgrid/myloginuri2"));
- ensure_equals("alternative grid helper uri",
- LLGridManager::getInstance()->getHelperURI("altgrid.long.name"),
- std::string("https://helper1/helpers/"));
- ensure_equals("alternative grid login page",
- LLGridManager::getInstance()->getLoginPage("altgrid.long.name"),
- std::string("altgrid/loginpage"));
- ensure("alternative grid is NOT a system grid",
- ! LLGridManager::getInstance()->isSystemGrid("altgrid.long.name"));
-
- ensure_equals("minimal grid is in name<->label map",
- known_grids["minimal.long.name"],
- std::string("minimal.long.name"));
- ensure_equals("minimal grid name is set",
- LLGridManager::getInstance()->getGrid("minimal.long.name"),
- std::string("minimal.long.name"));
- ensure_equals("minimal grid id",
- LLGridManager::getInstance()->getGridId("minimal.long.name"),
- std::string("minimal.long.name"));
- ensure_equals("minimal grid label",
- LLGridManager::getInstance()->getGridLabel("minimal.long.name"),
- std::string("minimal.long.name"));
-
- LLGridManager::getInstance()->getLoginURIs(std::string("minimal.long.name"), alt_login_uris);
- ensure_equals("Number of login uris for altgrid", 1, alt_login_uris.size());
- ensure_equals("minimal grid login uri",
- alt_login_uris[0],
- std::string("https://minimal.long.name/cgi-bin/login.cgi"));
- ensure_equals("minimal grid helper uri",
- LLGridManager::getInstance()->getHelperURI("minimal.long.name"),
- std::string("https://minimal.long.name/helpers/"));
- ensure_equals("minimal grid login page",
- LLGridManager::getInstance()->getLoginPage("minimal.long.name"),
- std::string("http://minimal.long.name/app/login/"));
-
- }
-
-
- // validate grid selection
- template<> template<>
- void viewerNetworkTestObject::test<7>()
- {
- // adding a grid with simply a name will populate the values.
- llofstream gridfile(TEST_FILENAME);
- gridfile << gSampleGridFile;
- gridfile.close();
-
- LLGridManager::getInstance()->initialize(TEST_FILENAME);
-
- LLGridManager::getInstance()->setGridChoice("util.agni.lindenlab.com");
- ensure_equals("getGridLabel",
- LLGridManager::getInstance()->getGridLabel(),
- std::string("Second Life Main Grid (Agni)"));
- ensure_equals("getGridId",
- LLGridManager::getInstance()->getGridId(),
- std::string("Agni"));
- ensure_equals("getGrid",
- LLGridManager::getInstance()->getGrid(),
- std::string("util.agni.lindenlab.com"));
- ensure_equals("getHelperURI",
- LLGridManager::getInstance()->getHelperURI(),
- std::string("https://secondlife.com/helpers/"));
- ensure_equals("getLoginPage",
- LLGridManager::getInstance()->getLoginPage(),
- std::string("https://viewer-splash.secondlife.com/"));
- ensure_equals("update url base for Agni", // relies on agni being the default
- std::string("https://update.secondlife.com/update"),
- LLGridManager::getInstance()->getUpdateServiceURL());
- ensure("Is Agni a production grid", LLGridManager::getInstance()->isInProductionGrid());
- std::vector<std::string> uris;
- LLGridManager::getInstance()->getLoginURIs(uris);
- ensure_equals("getLoginURIs size", 1, uris.size());
- ensure_equals("getLoginURIs",
- uris[0],
- std::string("https://login.agni.lindenlab.com/cgi-bin/login.cgi"));
-
- LLGridManager::getInstance()->setGridChoice("altgrid.long.name");
- ensure_equals("getGridLabel",
- LLGridManager::getInstance()->getGridLabel(),
- std::string("Alternative Grid"));
- ensure_equals("getGridId",
- LLGridManager::getInstance()->getGridId(),
- std::string("AltGrid"));
- ensure("alternative grid is not a system grid",
- !LLGridManager::getInstance()->isSystemGrid());
- ensure("alternative grid is not a production grid",
- !LLGridManager::getInstance()->isInProductionGrid());
- }
-
-}
+/** + * @file llviewernetwork_test.cpp + * @author Roxie + * @date 2009-03-9 + * @brief Test the viewernetwork functionality + * + * $LicenseInfo:firstyear=2009&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2014, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ +#include "../llviewerprecompiledheaders.h" +#include "../llviewernetwork.h" +#include "../test/lltut.h" +#include "../../llxml/llcontrol.h" +#include "llfile.h" + +namespace +{ + +// Should not collide with other test programs creating temp files. +static const char * const TEST_FILENAME("llviewernetwork_test.xml"); + +} + +// +// Stub implementation for LLTrans +// +class LLTrans +{ +public: + static std::string getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args, bool def_string = false); +}; + +std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args, bool def_string) +{ + std::string grid_label = std::string(); + if(xml_desc == "AgniGridLabel") + { + grid_label = "Second Life Main Grid (Agni)"; + } + else if(xml_desc == "AditiGridLabel") + { + grid_label = "Second Life Beta Test Grid (Aditi)"; + } + + return grid_label; +} + +//---------------------------------------------------------------------------- +// Mock objects for the dependencies of the code we're testing + +LLControlGroup::LLControlGroup(const std::string& name) +: LLInstanceTracker<LLControlGroup, std::string>(name) {} +LLControlGroup::~LLControlGroup() {} +LLControlVariable* LLControlGroup::declareString(const std::string& name, + const std::string& initial_val, + const std::string& comment, + LLControlVariable::ePersist persist) {return NULL;} +void LLControlGroup::setString(std::string_view name, const std::string& val){} + +std::string gCmdLineLoginURI; +std::string gCmdLineGridChoice; +std::string gCmdLineHelperURI; +std::string gLoginPage; +std::string gCurrentGrid; +std::string LLControlGroup::getString(std::string_view name) +{ + if (name == "CmdLineGridChoice") + return gCmdLineGridChoice; + else if (name == "CmdLineHelperURI") + return gCmdLineHelperURI; + else if (name == "LoginPage") + return gLoginPage; + else if (name == "CurrentGrid") + return gCurrentGrid; + return ""; +} + +LLSD LLControlGroup::getLLSD(std::string_view name) +{ + if (name == "CmdLineLoginURI") + { + if(!gCmdLineLoginURI.empty()) + { + return LLSD(gCmdLineLoginURI); + } + } + return LLSD(); +} + +LLPointer<LLControlVariable> LLControlGroup::getControl(std::string_view name) +{ + ctrl_name_table_t::iterator iter = mNameTable.find(name.data()); + return iter == mNameTable.end() ? LLPointer<LLControlVariable>() : iter->second; +} + +LLControlGroup gSavedSettings("test"); + +const char *gSampleGridFile = + "<?xml version=\"1.0\"?>" + "<llsd>" + " <map>" + " <key>altgrid.long.name</key>" + " <map>" + " <key>helper_uri</key><string>https://helper1/helpers/</string>" + " <key>label</key><string>Alternative Grid</string>" + " <key>login_page</key><string>altgrid/loginpage</string>" + " <key>login_uri</key>" + " <array>" + " <string>altgrid/myloginuri1</string>" + " <string>altgrid/myloginuri2</string>" + " </array>" + " <key>keyname</key><string>altgrid.long.name</string>" + " <key>credential_type</key><string>agent</string>" + " <key>grid_login_id</key><string>AltGrid</string>" + " </map>" + " <key>minimal.long.name</key>" + " <map>" + " <key>keyname</key><string>minimal.long.name</string>" + " </map>" + " <!-- Note that the values for agni and aditi below are deliberately" + " incorrect to test that they are not overwritten -->" + " <key>util.agni.lindenlab.com</key> <!-- conflict -->" + " <map>" + " <key>helper_uri</key><string>https://helper1/helpers/</string>" + " <key>grid_login_id</key><string>mylabel</string>" + " <key>label</key><string>mylabel</string>" + " <key>login_page</key><string>loginpage</string>" + " <key>login_uri</key>" + " <array>" + " <string>myloginuri</string>" + " </array>" + " <key>keyname</key><string>util.agni.lindenlab.com</string> <!-- conflict -->" + " </map>" + " <key>util.foobar.lindenlab.com</key>" + " <map>" + " <key>helper_uri</key><string>https://helper1/helpers/</string>" + " <key>grid_login_id</key><string>Aditi</string> <!-- conflict -->" + " <key>label</key><string>mylabel</string>" + " <key>login_page</key><string>loginpage</string>" + " <key>login_uri</key>" + " <array>" + " <string>myloginuri</string>" + " </array>" + " <key>update_query_url_base</key><string>https://update.secondlife.com/update</string>" + " <key>keyname</key><string>util.foobar.lindenlab.com</string>" + " </map>" + " </map>" + "</llsd>" + ; +// ------------------------------------------------------------------------------------------- +// TUT +// ------------------------------------------------------------------------------------------- +namespace tut +{ + // Test wrapper declaration : wrapping nothing for the moment + struct viewerNetworkTest + { + viewerNetworkTest() + { + LLFile::remove(TEST_FILENAME); + gCmdLineLoginURI.clear(); + gCmdLineGridChoice.clear(); + gCmdLineHelperURI.clear(); + gLoginPage.clear(); + gCurrentGrid.clear(); + } + ~viewerNetworkTest() + { + LLFile::remove(TEST_FILENAME); + } + }; + + // Tut templating thingamagic: test group, object and test instance + typedef test_group<viewerNetworkTest> viewerNetworkTestFactory; + typedef viewerNetworkTestFactory::object viewerNetworkTestObject; + tut::viewerNetworkTestFactory tut_test("LLViewerNetwork"); + + // --------------------------------------------------------------------------------------- + // Test functions + // --------------------------------------------------------------------------------------- + // initialization without a grid file + template<> template<> + void viewerNetworkTestObject::test<1>() + { + LLGridManager *manager = LLGridManager::getInstance(); + // grid file doesn't exist + manager->initialize(TEST_FILENAME); + // validate that some of the defaults are available. + std::map<std::string, std::string> known_grids = manager->getKnownGrids(); + ensure_equals("Known grids is a string-string map of size 2", known_grids.size(), 2); + ensure_equals("Agni has the right name and label", + known_grids[std::string("util.agni.lindenlab.com")], + std::string("Second Life Main Grid (Agni)")); + ensure_equals("Aditi has the right name and label", + known_grids[std::string("util.aditi.lindenlab.com")], + std::string("Second Life Beta Test Grid (Aditi)")); + ensure_equals("name for agni", + LLGridManager::getInstance()->getGrid("util.agni.lindenlab.com"), + std::string("util.agni.lindenlab.com")); + ensure_equals("id for agni", + std::string("Agni"), + LLGridManager::getInstance()->getGridId("util.agni.lindenlab.com")); + ensure_equals("update url base for Agni", // relies on agni being the default + std::string("https://update.secondlife.com/update"), + LLGridManager::getInstance()->getUpdateServiceURL()); + ensure_equals("label for agni", + LLGridManager::getInstance()->getGridLabel("util.agni.lindenlab.com"), + std::string("Second Life Main Grid (Agni)")); + + std::vector<std::string> login_uris; + LLGridManager::getInstance()->getLoginURIs(std::string("util.agni.lindenlab.com"), login_uris); + ensure_equals("Number of login uris for agni", 1, login_uris.size()); + ensure_equals("Agni login uri", + login_uris[0], + std::string("https://login.agni.lindenlab.com/cgi-bin/login.cgi")); + ensure_equals("Agni helper uri", + LLGridManager::getInstance()->getHelperURI("util.agni.lindenlab.com"), + std::string("https://secondlife.com/helpers/")); + ensure_equals("Agni login page", + LLGridManager::getInstance()->getLoginPage("util.agni.lindenlab.com"), + std::string("https://viewer-splash.secondlife.com/")); + ensure("Agni is a system grid", + LLGridManager::getInstance()->isSystemGrid("util.agni.lindenlab.com")); + + ensure_equals("name for aditi", + LLGridManager::getInstance()->getGrid("util.aditi.lindenlab.com"), + std::string("util.aditi.lindenlab.com")); + ensure_equals("id for aditi", + LLGridManager::getInstance()->getGridId("util.aditi.lindenlab.com"), + std::string("Aditi")); + ensure_equals("label for aditi", + LLGridManager::getInstance()->getGridLabel("util.aditi.lindenlab.com"), + std::string("Second Life Beta Test Grid (Aditi)")); + + LLGridManager::getInstance()->getLoginURIs(std::string("util.aditi.lindenlab.com"), login_uris); + + ensure_equals("Number of login uris for aditi", 1, login_uris.size()); + ensure_equals("Aditi login uri", + login_uris[0], + std::string("https://login.aditi.lindenlab.com/cgi-bin/login.cgi")); + ensure_equals("Aditi helper uri", + LLGridManager::getInstance()->getHelperURI("util.aditi.lindenlab.com"), + std::string("https://secondlife.aditi.lindenlab.com/helpers/")); + ensure_equals("Aditi login page", + LLGridManager::getInstance()->getLoginPage("util.aditi.lindenlab.com"), + std::string("https://viewer-splash.secondlife.com/")); + ensure("Aditi is a system grid", + LLGridManager::getInstance()->isSystemGrid("util.aditi.lindenlab.com")); + } + + // initialization with a grid file + template<> template<> + void viewerNetworkTestObject::test<2>() + { + llofstream gridfile(TEST_FILENAME); + gridfile << gSampleGridFile; + gridfile.close(); + + LLGridManager::getInstance()->initialize(TEST_FILENAME); + std::map<std::string, std::string> known_grids = LLGridManager::getInstance()->getKnownGrids(); + ensure_equals("adding a grid via a grid file increases known grid size",4, + known_grids.size()); + + // Verify that Agni and Aditi were not overwritten + ensure_equals("Agni has the right name and label", + known_grids[std::string("util.agni.lindenlab.com")], + std::string("Second Life Main Grid (Agni)")); + ensure_equals("Aditi has the right name and label", + known_grids[std::string("util.aditi.lindenlab.com")], + std::string("Second Life Beta Test Grid (Aditi)")); + ensure_equals("name for agni", + LLGridManager::getInstance()->getGrid("util.agni.lindenlab.com"), + std::string("util.agni.lindenlab.com")); + ensure_equals("id for agni", + LLGridManager::getInstance()->getGridId("util.agni.lindenlab.com"), + std::string("Agni")); + ensure_equals("update url base for Agni", // relies on agni being the default + std::string("https://update.secondlife.com/update"), + LLGridManager::getInstance()->getUpdateServiceURL()); + ensure_equals("label for agni", + LLGridManager::getInstance()->getGridLabel("util.agni.lindenlab.com"), + std::string("Second Life Main Grid (Agni)")); + std::vector<std::string> login_uris; + LLGridManager::getInstance()->getLoginURIs(std::string("util.agni.lindenlab.com"), login_uris); + ensure_equals("Number of login uris for agni", 1, login_uris.size()); + ensure_equals("Agni login uri", + login_uris[0], + std::string("https://login.agni.lindenlab.com/cgi-bin/login.cgi")); + ensure_equals("Agni helper uri", + LLGridManager::getInstance()->getHelperURI("util.agni.lindenlab.com"), + std::string("https://secondlife.com/helpers/")); + ensure_equals("Agni login page", + LLGridManager::getInstance()->getLoginPage("util.agni.lindenlab.com"), + std::string("https://viewer-splash.secondlife.com/")); + ensure("Agni is a system grid", + LLGridManager::getInstance()->isSystemGrid("util.agni.lindenlab.com")); + + ensure_equals("name for aditi", + LLGridManager::getInstance()->getGrid("util.aditi.lindenlab.com"), + std::string("util.aditi.lindenlab.com")); + ensure_equals("id for aditi", + LLGridManager::getInstance()->getGridId("util.aditi.lindenlab.com"), + std::string("Aditi")); + ensure_equals("label for aditi", + LLGridManager::getInstance()->getGridLabel("util.aditi.lindenlab.com"), + std::string("Second Life Beta Test Grid (Aditi)")); + + LLGridManager::getInstance()->getLoginURIs(std::string("util.aditi.lindenlab.com"), login_uris); + ensure_equals("Number of login uris for aditi", 1, login_uris.size()); + ensure_equals("Aditi login uri", + login_uris[0], + std::string("https://login.aditi.lindenlab.com/cgi-bin/login.cgi")); + ensure_equals("Aditi helper uri", + LLGridManager::getInstance()->getHelperURI("util.aditi.lindenlab.com"), + std::string("https://secondlife.aditi.lindenlab.com/helpers/")); + ensure_equals("Aditi login page", + LLGridManager::getInstance()->getLoginPage("util.aditi.lindenlab.com"), + std::string("https://viewer-splash.secondlife.com/")); + ensure("Aditi is a system grid", + LLGridManager::getInstance()->isSystemGrid("util.aditi.lindenlab.com")); + + // Check the additional grid from the file + ensure_equals("alternative grid is in name<->label map", + known_grids["altgrid.long.name"], + std::string("Alternative Grid")); + ensure_equals("alternative grid name is set", + LLGridManager::getInstance()->getGrid("altgrid.long.name"), + std::string("altgrid.long.name")); + ensure_equals("alternative grid id", + LLGridManager::getInstance()->getGridId("altgrid.long.name"), + std::string("AltGrid")); + ensure_equals("alternative grid label", + LLGridManager::getInstance()->getGridLabel("altgrid.long.name"), + std::string("Alternative Grid")); + std::vector<std::string> alt_login_uris; + LLGridManager::getInstance()->getLoginURIs(std::string("altgrid.long.name"), alt_login_uris); + ensure_equals("Number of login uris for altgrid", 2, alt_login_uris.size()); + ensure_equals("alternative grid first login uri", + alt_login_uris[0], + std::string("altgrid/myloginuri1")); + ensure_equals("alternative grid second login uri", + alt_login_uris[1], + std::string("altgrid/myloginuri2")); + ensure_equals("alternative grid helper uri", + LLGridManager::getInstance()->getHelperURI("altgrid.long.name"), + std::string("https://helper1/helpers/")); + ensure_equals("alternative grid login page", + LLGridManager::getInstance()->getLoginPage("altgrid.long.name"), + std::string("altgrid/loginpage")); + ensure("alternative grid is NOT a system grid", + ! LLGridManager::getInstance()->isSystemGrid("altgrid.long.name")); + + ensure_equals("minimal grid is in name<->label map", + known_grids["minimal.long.name"], + std::string("minimal.long.name")); + ensure_equals("minimal grid name is set", + LLGridManager::getInstance()->getGrid("minimal.long.name"), + std::string("minimal.long.name")); + ensure_equals("minimal grid id", + LLGridManager::getInstance()->getGridId("minimal.long.name"), + std::string("minimal.long.name")); + ensure_equals("minimal grid label", + LLGridManager::getInstance()->getGridLabel("minimal.long.name"), + std::string("minimal.long.name")); + + LLGridManager::getInstance()->getLoginURIs(std::string("minimal.long.name"), alt_login_uris); + ensure_equals("Number of login uris for altgrid", 1, alt_login_uris.size()); + ensure_equals("minimal grid login uri", + alt_login_uris[0], + std::string("https://minimal.long.name/cgi-bin/login.cgi")); + ensure_equals("minimal grid helper uri", + LLGridManager::getInstance()->getHelperURI("minimal.long.name"), + std::string("https://minimal.long.name/helpers/")); + ensure_equals("minimal grid login page", + LLGridManager::getInstance()->getLoginPage("minimal.long.name"), + std::string("http://minimal.long.name/app/login/")); + + } + + + // validate grid selection + template<> template<> + void viewerNetworkTestObject::test<7>() + { + // adding a grid with simply a name will populate the values. + llofstream gridfile(TEST_FILENAME); + gridfile << gSampleGridFile; + gridfile.close(); + + LLGridManager::getInstance()->initialize(TEST_FILENAME); + + LLGridManager::getInstance()->setGridChoice("util.agni.lindenlab.com"); + ensure_equals("getGridLabel", + LLGridManager::getInstance()->getGridLabel(), + std::string("Second Life Main Grid (Agni)")); + ensure_equals("getGridId", + LLGridManager::getInstance()->getGridId(), + std::string("Agni")); + ensure_equals("getGrid", + LLGridManager::getInstance()->getGrid(), + std::string("util.agni.lindenlab.com")); + ensure_equals("getHelperURI", + LLGridManager::getInstance()->getHelperURI(), + std::string("https://secondlife.com/helpers/")); + ensure_equals("getLoginPage", + LLGridManager::getInstance()->getLoginPage(), + std::string("https://viewer-splash.secondlife.com/")); + ensure_equals("update url base for Agni", // relies on agni being the default + std::string("https://update.secondlife.com/update"), + LLGridManager::getInstance()->getUpdateServiceURL()); + ensure("Is Agni a production grid", LLGridManager::getInstance()->isInProductionGrid()); + std::vector<std::string> uris; + LLGridManager::getInstance()->getLoginURIs(uris); + ensure_equals("getLoginURIs size", 1, uris.size()); + ensure_equals("getLoginURIs", + uris[0], + std::string("https://login.agni.lindenlab.com/cgi-bin/login.cgi")); + + LLGridManager::getInstance()->setGridChoice("altgrid.long.name"); + ensure_equals("getGridLabel", + LLGridManager::getInstance()->getGridLabel(), + std::string("Alternative Grid")); + ensure_equals("getGridId", + LLGridManager::getInstance()->getGridId(), + std::string("AltGrid")); + ensure("alternative grid is not a system grid", + !LLGridManager::getInstance()->isSystemGrid()); + ensure("alternative grid is not a production grid", + !LLGridManager::getInstance()->isInProductionGrid()); + } + +} |