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

Generated on Thu Jul 1 06:08:53 2010 for Second Life Viewer by  doxygen 1.4.7