llmessageconfig_tut.cpp

Go to the documentation of this file.
00001 
00033 #include "linden_common.h"
00034 #include "llmessageconfig.h"
00035 #include "lltut.h"
00036 #include "llsdserialize.h"
00037 #include "llfile.h"
00038 #include "lltimer.h"
00039 #include "llframetimer.h"
00040 #include "llsdutil.h"
00041 
00042 namespace tut
00043 {
00044         struct LLMessageConfigTestData {
00045                 std::string mTestConfigDir;
00046 
00047                 LLMessageConfigTestData()
00048                 {
00049                         LLUUID random;
00050                         random.generate();
00051                         // generate temp dir
00052                         std::ostringstream oStr;
00053 #if LL_WINDOWS 
00054                         oStr << "llmessage-config-test-" << random;
00055 #else
00056                         oStr << "/tmp/llmessage-config-test-" << random;
00057 #endif
00058                         mTestConfigDir = oStr.str();
00059                         LLFile::mkdir(mTestConfigDir.c_str());
00060                         writeConfigFile(LLSD());
00061                         LLMessageConfig::initClass("simulator", mTestConfigDir);
00062                 }
00063 
00064                 ~LLMessageConfigTestData()
00065                 {
00066                         // rm contents of temp dir
00067                         int rmfile = LLFile::remove((mTestConfigDir + "/message.xml").c_str());
00068                         ensure_equals("rmfile value", rmfile, 0);
00069                         // rm temp dir
00070                         int rmdir = LLFile::rmdir(mTestConfigDir.c_str());
00071                         ensure_equals("rmdir value", rmdir, 0);
00072                 }
00073 
00074                 void writeConfigFile(const LLSD& config)
00075                 {
00076                         llofstream file((mTestConfigDir + "/message.xml").c_str());
00077                         if (file.is_open())
00078                         {
00079                                 LLSDSerialize::toPrettyXML(config, file);
00080                         }
00081                         file.close();
00082                 }
00083         };
00084         
00085         typedef test_group<LLMessageConfigTestData> LLMessageConfigTestGroup;
00086         typedef LLMessageConfigTestGroup::object LLMessageConfigTestObject;
00087         LLMessageConfigTestGroup llMessageConfigTestGroup("LLMessageConfig");
00088         
00089         template<> template<>
00090         void LLMessageConfigTestObject::test<1>()
00091                 // tests server defaults
00092         {
00093                 LLSD config;
00094                 config["serverDefaults"]["simulator"] = "template";
00095                 LLMessageConfig::useConfig(config);
00096                 ensure_equals("Ensure server default is not template",
00097                                           LLMessageConfig::getServerDefaultFlavor(),
00098                                           LLMessageConfig::TEMPLATE_FLAVOR);
00099         }
00100 
00101         template<> template<>
00102         void LLMessageConfigTestObject::test<2>()
00103                 // tests message flavors
00104         {
00105                 LLSD config;
00106                 config["serverDefaults"]["simulator"] = "template";
00107                 config["messages"]["msg1"]["flavor"] = "template";
00108                 config["messages"]["msg2"]["flavor"] = "llsd";
00109                 LLMessageConfig::useConfig(config);
00110                 ensure_equals("Ensure msg template flavor",
00111                                           LLMessageConfig::getMessageFlavor("msg1"),
00112                                           LLMessageConfig::TEMPLATE_FLAVOR);
00113                 ensure_equals("Ensure msg llsd flavor",
00114                                           LLMessageConfig::getMessageFlavor("msg2"),
00115                                           LLMessageConfig::LLSD_FLAVOR);
00116         }
00117 
00118         template<> template<>
00119         void LLMessageConfigTestObject::test<4>()
00120                 // tests message flavor defaults
00121         {
00122                 LLSD config;
00123                 config["serverDefaults"]["simulator"] = "llsd";
00124                 config["messages"]["msg1"]["trusted-sender"] = true;
00125                 LLMessageConfig::useConfig(config);
00126                 ensure_equals("Ensure missing message gives no flavor",
00127                                           LLMessageConfig::getMessageFlavor("Test"),
00128                                           LLMessageConfig::NO_FLAVOR);
00129                 ensure_equals("Ensure missing flavor is NO_FLAVOR even with sender trustedness set",
00130                                           LLMessageConfig::getMessageFlavor("msg1"),
00131                                           LLMessageConfig::NO_FLAVOR);
00132                 ensure_equals("Ensure server default is llsd",
00133                                           LLMessageConfig::getServerDefaultFlavor(),
00134                                           LLMessageConfig::LLSD_FLAVOR);
00135         }
00136 
00137         template<> template<>
00138         void LLMessageConfigTestObject::test<3>()
00139                 // tests trusted/untrusted senders
00140         {
00141                 LLSD config;
00142                 config["serverDefaults"]["simulator"] = "template";
00143                 config["messages"]["msg1"]["flavor"] = "llsd";
00144                 config["messages"]["msg1"]["trusted-sender"] = false;
00145                 config["messages"]["msg2"]["flavor"] = "llsd";
00146                 config["messages"]["msg2"]["trusted-sender"] = true;
00147                 LLMessageConfig::useConfig(config);
00148                 ensure_equals("Ensure untrusted is untrusted",
00149                                           LLMessageConfig::getSenderTrustedness("msg1"),
00150                                           LLMessageConfig::UNTRUSTED);
00151                 ensure_equals("Ensure trusted is trusted",
00152                                           LLMessageConfig::getSenderTrustedness("msg2"),
00153                                           LLMessageConfig::TRUSTED);
00154                 ensure_equals("Ensure missing trustedness is NOT_SET",
00155                                           LLMessageConfig::getSenderTrustedness("msg3"),
00156                                           LLMessageConfig::NOT_SET);
00157         }
00158         
00159         template<> template<>
00160         void LLMessageConfigTestObject::test<5>()
00161                 // tests trusted/untrusted without flag, only flavor
00162         {
00163                 LLSD config;
00164                 config["serverDefaults"]["simulator"] = "template";
00165                 config["messages"]["msg1"]["flavor"] = "llsd";
00166                 LLMessageConfig::useConfig(config);
00167                 ensure_equals("Ensure msg1 exists, has llsd flavor",
00168                                           LLMessageConfig::getMessageFlavor("msg1"),
00169                                           LLMessageConfig::LLSD_FLAVOR);
00170                 ensure_equals("Ensure missing trusted is not set",
00171                                           LLMessageConfig::getSenderTrustedness("msg1"),
00172                                           LLMessageConfig::NOT_SET);
00173         }
00174 
00175         template<> template<>
00176         void LLMessageConfigTestObject::test<6>()
00177         {
00178                 LLSD config;
00179                 config["capBans"]["MapLayer"] = true;
00180                 config["capBans"]["MapLayerGod"] = false;
00181                 LLMessageConfig::useConfig(config);
00182                 ensure_equals("Ensure cap ban true MapLayer",
00183                                           LLMessageConfig::isCapBanned("MapLayer"),
00184                                           true);
00185                 ensure_equals("Ensure cap ban false",
00186                                           LLMessageConfig::isCapBanned("MapLayerGod"),
00187                                           false);
00188         }
00189 
00190         template<> template<>
00191         void LLMessageConfigTestObject::test<7>()
00192                 // tests that config changes are picked up/refreshed periodically
00193         {
00194                 LLSD config;
00195                 config["serverDefaults"]["simulator"] = "llsd";
00196                 writeConfigFile(config);
00197 
00198                 // wait for it to reload after N seconds
00199                 ms_sleep(6*1000);
00200                 LLFrameTimer::updateFrameTime();
00201                 ensure_equals("Ensure reload after 6 seconds",
00202                                           LLMessageConfig::getServerDefaultFlavor(),
00203                                           LLMessageConfig::LLSD_FLAVOR);
00204         }
00205 
00206         template<> template<>
00207         void LLMessageConfigTestObject::test<8>()
00208                 // tests that config changes are picked up/refreshed periodically
00209         {
00210                 LLSD config;
00211                 config["serverDefaults"]["simulator"] = "template";
00212                 config["messages"]["msg1"]["flavor"] = "llsd";
00213                 config["messages"]["msg1"]["only-send-latest"] = true;
00214                 config["messages"]["msg2"]["flavor"] = "llsd";
00215                 config["messages"]["msg2"]["only-send-latest"] = false;
00216                 LLMessageConfig::useConfig(config);
00217                 ensure_equals("Ensure msg1 exists, sent latest-only",
00218                                           LLMessageConfig::onlySendLatest("msg1"),
00219                                           true);
00220                 ensure_equals("Ensure msg2 exists, sent latest-only",
00221                                           LLMessageConfig::onlySendLatest("msg2"),
00222                                           false);
00223         }
00224 
00225         template<> template<>
00226         void LLMessageConfigTestObject::test<9>()
00227                  // tests that event queue max is reloaded
00228         {
00229                 LLSD config;
00230                 config["maxQueuedEvents"] = 200;
00231                 LLMessageConfig::useConfig(config);
00232                 ensure_equals("Ensure setting maxQueuedEvents",
00233                                           LLMessageConfig::getMaxQueuedEvents(),
00234                                           200);
00235 
00236                 LLMessageConfig::useConfig(LLSD());
00237                 ensure_equals("Ensure default of event queue max 100",
00238                                           LLMessageConfig::getMaxQueuedEvents(),
00239                                           100);
00240         }        
00241 }

Generated on Fri May 16 08:34:29 2008 for SecondLife by  doxygen 1.5.5