llmessageconfig_tut.cpp
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:8k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llmessageconfig_tut.cpp
  3.  * @date   March 2007
  4.  * @brief LLMessageConfig unit tests
  5.  *
  6.  * $LicenseInfo:firstyear=2006&license=viewergpl$
  7.  * 
  8.  * Copyright (c) 2006-2010, Linden Research, Inc.
  9.  * 
  10.  * Second Life Viewer Source Code
  11.  * The source code in this file ("Source Code") is provided by Linden Lab
  12.  * to you under the terms of the GNU General Public License, version 2.0
  13.  * ("GPL"), unless you have obtained a separate licensing agreement
  14.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  15.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  16.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  17.  * 
  18.  * There are special exceptions to the terms and conditions of the GPL as
  19.  * it is applied to this Source Code. View the full text of the exception
  20.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  21.  * online at
  22.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  23.  * 
  24.  * By copying, modifying or distributing this software, you acknowledge
  25.  * that you have read and understood your obligations described above,
  26.  * and agree to abide by those obligations.
  27.  * 
  28.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  29.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  30.  * COMPLETENESS OR PERFORMANCE.
  31.  * $/LicenseInfo$
  32.  */
  33. #include "linden_common.h"
  34. #include "llmessageconfig.h"
  35. #include "lltut.h"
  36. #include "llsdserialize.h"
  37. #include "llfile.h"
  38. #include "lltimer.h"
  39. #include "llframetimer.h"
  40. #include "llsdutil.h"
  41. namespace tut
  42. {
  43. struct LLMessageConfigTestData {
  44. std::string mTestConfigDir;
  45. LLMessageConfigTestData()
  46. {
  47. LLUUID random;
  48. random.generate();
  49. // generate temp dir
  50. std::ostringstream oStr;
  51. #if LL_WINDOWS 
  52. oStr << "llmessage-config-test-" << random;
  53. #else
  54. oStr << "/tmp/llmessage-config-test-" << random;
  55. #endif
  56. mTestConfigDir = oStr.str();
  57. LLFile::mkdir(mTestConfigDir);
  58. writeConfigFile(LLSD());
  59. LLMessageConfig::initClass("simulator", mTestConfigDir);
  60. }
  61. ~LLMessageConfigTestData()
  62. {
  63. // rm contents of temp dir
  64. int rmfile = LLFile::remove((mTestConfigDir + "/message.xml"));
  65. ensure_equals("rmfile value", rmfile, 0);
  66. // rm temp dir
  67. int rmdir = LLFile::rmdir(mTestConfigDir);
  68. ensure_equals("rmdir value", rmdir, 0);
  69. }
  70. void writeConfigFile(const LLSD& config)
  71. {
  72. llofstream file((mTestConfigDir + "/message.xml"));
  73. if (file.is_open())
  74. {
  75. LLSDSerialize::toPrettyXML(config, file);
  76. }
  77. file.close();
  78. }
  79. };
  80. typedef test_group<LLMessageConfigTestData> LLMessageConfigTestGroup;
  81. typedef LLMessageConfigTestGroup::object LLMessageConfigTestObject;
  82. LLMessageConfigTestGroup llMessageConfigTestGroup("LLMessageConfig");
  83. template<> template<>
  84. void LLMessageConfigTestObject::test<1>()
  85. // tests server defaults
  86. {
  87. LLSD config;
  88. config["serverDefaults"]["simulator"] = "template";
  89. LLMessageConfig::useConfig(config);
  90. ensure_equals("Ensure server default is not template",
  91.   LLMessageConfig::getServerDefaultFlavor(),
  92.   LLMessageConfig::TEMPLATE_FLAVOR);
  93. }
  94. template<> template<>
  95. void LLMessageConfigTestObject::test<2>()
  96. // tests message flavors
  97. {
  98. LLSD config;
  99. config["serverDefaults"]["simulator"] = "template";
  100. config["messages"]["msg1"]["flavor"] = "template";
  101. config["messages"]["msg2"]["flavor"] = "llsd";
  102. LLMessageConfig::useConfig(config);
  103. ensure_equals("Ensure msg template flavor",
  104.   LLMessageConfig::getMessageFlavor("msg1"),
  105.   LLMessageConfig::TEMPLATE_FLAVOR);
  106. ensure_equals("Ensure msg llsd flavor",
  107.   LLMessageConfig::getMessageFlavor("msg2"),
  108.   LLMessageConfig::LLSD_FLAVOR);
  109. }
  110. template<> template<>
  111. void LLMessageConfigTestObject::test<4>()
  112. // tests message flavor defaults
  113. {
  114. LLSD config;
  115. config["serverDefaults"]["simulator"] = "llsd";
  116. config["messages"]["msg1"]["trusted-sender"] = true;
  117. LLMessageConfig::useConfig(config);
  118. ensure_equals("Ensure missing message gives no flavor",
  119.   LLMessageConfig::getMessageFlavor("Test"),
  120.   LLMessageConfig::NO_FLAVOR);
  121. ensure_equals("Ensure missing flavor is NO_FLAVOR even with sender trustedness set",
  122.   LLMessageConfig::getMessageFlavor("msg1"),
  123.   LLMessageConfig::NO_FLAVOR);
  124. ensure_equals("Ensure server default is llsd",
  125.   LLMessageConfig::getServerDefaultFlavor(),
  126.   LLMessageConfig::LLSD_FLAVOR);
  127. }
  128. template<> template<>
  129. void LLMessageConfigTestObject::test<3>()
  130. // tests trusted/untrusted senders
  131. {
  132. LLSD config;
  133. config["serverDefaults"]["simulator"] = "template";
  134. config["messages"]["msg1"]["flavor"] = "llsd";
  135. config["messages"]["msg1"]["trusted-sender"] = false;
  136. config["messages"]["msg2"]["flavor"] = "llsd";
  137. config["messages"]["msg2"]["trusted-sender"] = true;
  138. LLMessageConfig::useConfig(config);
  139. ensure_equals("Ensure untrusted is untrusted",
  140.   LLMessageConfig::getSenderTrustedness("msg1"),
  141.   LLMessageConfig::UNTRUSTED);
  142. ensure_equals("Ensure trusted is trusted",
  143.   LLMessageConfig::getSenderTrustedness("msg2"),
  144.   LLMessageConfig::TRUSTED);
  145. ensure_equals("Ensure missing trustedness is NOT_SET",
  146.   LLMessageConfig::getSenderTrustedness("msg3"),
  147.   LLMessageConfig::NOT_SET);
  148. }
  149. template<> template<>
  150. void LLMessageConfigTestObject::test<5>()
  151. // tests trusted/untrusted without flag, only flavor
  152. {
  153. LLSD config;
  154. config["serverDefaults"]["simulator"] = "template";
  155. config["messages"]["msg1"]["flavor"] = "llsd";
  156. LLMessageConfig::useConfig(config);
  157. ensure_equals("Ensure msg1 exists, has llsd flavor",
  158.   LLMessageConfig::getMessageFlavor("msg1"),
  159.   LLMessageConfig::LLSD_FLAVOR);
  160. ensure_equals("Ensure missing trusted is not set",
  161.   LLMessageConfig::getSenderTrustedness("msg1"),
  162.   LLMessageConfig::NOT_SET);
  163. }
  164. template<> template<>
  165. void LLMessageConfigTestObject::test<6>()
  166. {
  167. LLSD config;
  168. config["capBans"]["MapLayer"] = true;
  169. config["capBans"]["MapLayerGod"] = false;
  170. LLMessageConfig::useConfig(config);
  171. ensure_equals("Ensure cap ban true MapLayer",
  172.   LLMessageConfig::isCapBanned("MapLayer"),
  173.   true);
  174. ensure_equals("Ensure cap ban false",
  175.   LLMessageConfig::isCapBanned("MapLayerGod"),
  176.   false);
  177. }
  178. template<> template<>
  179. void LLMessageConfigTestObject::test<7>()
  180. // tests that config changes are picked up/refreshed periodically
  181. {
  182. LLSD config;
  183. config["serverDefaults"]["simulator"] = "llsd";
  184. writeConfigFile(config);
  185. // wait for it to reload after N seconds
  186. ms_sleep(6*1000);
  187. LLFrameTimer::updateFrameTime();
  188. ensure_equals("Ensure reload after 6 seconds",
  189.   LLMessageConfig::getServerDefaultFlavor(),
  190.   LLMessageConfig::LLSD_FLAVOR);
  191. }
  192. template<> template<>
  193. void LLMessageConfigTestObject::test<8>()
  194. // tests that config changes are picked up/refreshed periodically
  195. {
  196. LLSD config;
  197. config["serverDefaults"]["simulator"] = "template";
  198. config["messages"]["msg1"]["flavor"] = "llsd";
  199. config["messages"]["msg1"]["only-send-latest"] = true;
  200. config["messages"]["msg2"]["flavor"] = "llsd";
  201. config["messages"]["msg2"]["only-send-latest"] = false;
  202. LLMessageConfig::useConfig(config);
  203. ensure_equals("Ensure msg1 exists, sent latest-only",
  204.   LLMessageConfig::onlySendLatest("msg1"),
  205.   true);
  206. ensure_equals("Ensure msg2 exists, sent latest-only",
  207.   LLMessageConfig::onlySendLatest("msg2"),
  208.   false);
  209. }
  210. template<> template<>
  211. void LLMessageConfigTestObject::test<9>()
  212.  // tests that event queue max is reloaded
  213. {
  214. LLSD config;
  215. config["maxQueuedEvents"] = 200;
  216. LLMessageConfig::useConfig(config);
  217. ensure_equals("Ensure setting maxQueuedEvents",
  218.   LLMessageConfig::getMaxQueuedEvents(),
  219.   200);
  220. LLMessageConfig::useConfig(LLSD());
  221. ensure_equals("Ensure default of event queue max 100",
  222.   LLMessageConfig::getMaxQueuedEvents(),
  223.   100);
  224. }  
  225. }