summaryrefslogtreecommitdiff
path: root/indra/llmessage/tests/message_test.cpp
diff options
context:
space:
mode:
authorErik Kundiman <erik@megapahit.org>2026-09-01 18:35:23 +0800
committerErik Kundiman <erik@megapahit.org>2026-09-04 21:58:53 +0800
commit00bb3bb6f07660bd914d29a1389342bb3060d254 (patch)
tree431f574922494d2201718f13085f17bc6bd7fb42 /indra/llmessage/tests/message_test.cpp
parenta8636720129952c10cf49ab80da21bf8b340b96c (diff)
parent4ef9f8f14b35ed388c294d53767a0dca0e890924 (diff)
Merge remote-tracking branch 'secondlife/release/26.4' into 26.4
Diffstat (limited to 'indra/llmessage/tests/message_test.cpp')
-rw-r--r--indra/llmessage/tests/message_test.cpp147
1 files changed, 147 insertions, 0 deletions
diff --git a/indra/llmessage/tests/message_test.cpp b/indra/llmessage/tests/message_test.cpp
new file mode 100644
index 0000000000..6fb2b92803
--- /dev/null
+++ b/indra/llmessage/tests/message_test.cpp
@@ -0,0 +1,147 @@
+/**
+ * @file lldatapacker_tut.cpp
+ * @date 2007-04
+ * @brief LLDataPacker test cases.
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include <tut/tut.hpp>
+#include "linden_common.h"
+#include "lltut.h"
+#include "llhttpconstants.h"
+#include "llapr.h"
+#include "llmessageconfig.h"
+#include "llsdserialize.h"
+#include "message.h"
+#include "message_prehash.h"
+
+namespace
+{
+ struct Response : public LLHTTPNode::Response
+ {
+ virtual void result(const LLSD&) {}
+ virtual void status(S32 code, const std::string& message)
+ {
+ mStatus = code;
+ }
+ virtual void extendedResult(S32 code, const std::string& message, const LLSD& headers) { }
+ virtual void extendedResult(S32 code, const LLSD& result, const LLSD& headers) { }
+ S32 mStatus;
+ };
+}
+
+namespace tut
+{
+ struct LLMessageSystemTestData
+ {
+ std::string mTestConfigDir;
+ std::string mSep;
+
+ LLMessageSystemTestData()
+ {
+ static bool init = false;
+ if(!init)
+ {
+ ll_init_apr();
+ //init_prehash_data();
+ init = true;
+ }
+ const F32 circuit_heartbeat_interval=5;
+ const F32 circuit_timeout=100;
+
+
+ // currently test disconnected message system
+ start_messaging_system("notafile", 13035,
+ 1,
+ 0,
+ 0,
+ false,
+ "notasharedsecret",
+ NULL,
+ false,
+ circuit_heartbeat_interval,
+ circuit_timeout
+ );
+ // generate temp dir
+ std::ostringstream ostr;
+#if LL_WINDOWS
+ mSep = "\\";
+ ostr << "C:" << mSep;
+#else
+ mSep = "/";
+ ostr << mSep << "tmp" << mSep;
+#endif
+ LLUUID random;
+ random.generate();
+ ostr << "message-test-" << random;
+ mTestConfigDir = ostr.str();
+ LLFile::mkdir(mTestConfigDir);
+ writeConfigFile(LLSD());
+ LLMessageConfig::initClass("simulator", ostr.str());
+ }
+
+ ~LLMessageSystemTestData()
+ {
+ // not end_messaging_system()
+ delete static_cast<LLMessageSystem*>(gMessageSystem);
+ gMessageSystem = NULL;
+
+ // rm contents of temp dir
+ std::ostringstream ostr;
+ ostr << mTestConfigDir << mSep << "message.xml";
+ int rmfile = LLFile::remove(ostr.str());
+ ensure_equals("rmfile value", rmfile, 0);
+
+ // rm temp dir
+ int rmdir = LLFile::remove(mTestConfigDir);
+ ensure_equals("rmdir value", rmdir, 0);
+ }
+
+ void writeConfigFile(const LLSD& config)
+ {
+ std::string ostr(mTestConfigDir + mSep + "message.xml");
+ llofstream file(ostr.c_str());
+ if (file.is_open())
+ {
+ LLSDSerialize::toPrettyXML(config, file);
+ }
+ file.close();
+ }
+ };
+
+ typedef test_group<LLMessageSystemTestData> LLMessageSystemTestGroup;
+ typedef LLMessageSystemTestGroup::object LLMessageSystemTestObject;
+ LLMessageSystemTestGroup messageTestGroup("LLMessageSystem");
+
+ template<> template<>
+ void LLMessageSystemTestObject::test<1>()
+ // dispatch unknown message
+ {
+ const char* name = "notamessasge";
+ const LLSD message;
+ const LLPointer<Response> response = new Response();
+ gMessageSystem->dispatch(name, message, response);
+ ensure_equals(response->mStatus, HTTP_NOT_FOUND);
+ }
+}
+