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
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
00064 int rmfile = LLFile::remove((mTestConfigDir + "/message.xml").c_str());
00065 ensure_equals("rmfile value", rmfile, 0);
00066
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
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
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
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
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
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
00190 {
00191 LLSD config;
00192 config["serverDefaults"]["simulator"] = "llsd";
00193 writeConfigFile(config);
00194
00195
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 }