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
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
00067 int rmfile = LLFile::remove((mTestConfigDir + "/message.xml").c_str());
00068 ensure_equals("rmfile value", rmfile, 0);
00069
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
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
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
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
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
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
00193 {
00194 LLSD config;
00195 config["serverDefaults"]["simulator"] = "llsd";
00196 writeConfigFile(config);
00197
00198
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
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
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 }