namespace isc {
namespace log {
-// Constructor. Add the pointer to the message array to the global array.
-// This method will trigger an assertion failure if the array overflows.
-
MessageInitializer::MessageInitializer(const char* values[])
: values_(values),
global_dictionary_(MessageDictionary::globalDictionary()),
global_logger_values_(getNonConstLoggerValues()),
global_logger_duplicates_(getNonConstDuplicates()) {
- assert(global_logger_values_->size() < MAX_MESSAGE_ARRAYS);
global_logger_values_->push_back(values);
}
/// called to populate the messages defined in various instances of the
/// \c MessageInitializer class to the global dictionary.
///
-/// \note The maximum number of message arrays that can be added to the
-/// dictionary in this way is defined by the constant
-/// MessageInitializer::MAX_MESSAGE_ARRAYS. This is set to 256 as a compromise
-/// between wasted space and allowing for future expansion, but can be
-/// changed (by editing the source file) to any value desired.
-///
/// When messages are added to the dictionary, the are added via the
/// MessageDictionary::add() method, so any duplicates are stored in the
/// global dictionary's overflow lince whence they can be retrieved at
class MessageInitializer : public boost::noncopyable {
public:
- /// Maximum number of message arrays that can be initialized in this way
- static const size_t MAX_MESSAGE_ARRAYS = 256;
/// \brief Constructor
///
+++ /dev/null
-// Copyright (C) 2012,2015 Internet Systems Consortium, Inc. ("ISC")
-//
-// Permission to use, copy, modify, and/or distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-// PERFORMANCE OF THIS SOFTWARE.
-
-#include <config.h>
-
-#include <log/message_initializer.h>
-#include <gtest/gtest.h>
-
-#include <util/unittests/resource.h>
-#include <util/unittests/check_valgrind.h>
-
-using namespace isc::log;
-
-// Declare a set of messages to go into the global dictionary.
-
-namespace {
-const char* values[] = {
- "GLOBAL1", "global message one",
- "GLOBAL2", "global message two",
- NULL
-};
-}
-
-TEST(MessageInitializerTest2, MessageLoadTest) {
- // Create the list where the initializers will be held.
- std::list<boost::shared_ptr<MessageInitializer> > initializers;
-
- // Load the maximum number of message arrays allowed. Some arrays may
- // already have been loaded because of static initialization from modules
- // in libraries linked against the test program, hence the reason for the
- // loop starting from the value returned by getPendingCount() instead of 0
- for (size_t i = MessageInitializer::getPendingCount();
- i < MessageInitializer::MAX_MESSAGE_ARRAYS; ++i) {
- boost::shared_ptr<MessageInitializer> initializer(new MessageInitializer(values));
- initializers.push_back(initializer);
- }
-
- // Note: Not all systems have EXPECT_DEATH. As it is a macro we can just
- // test for its presence and bypass the test if not available.
-#ifdef EXPECT_DEATH
- // Adding one more should take us over the limit.
- if (!isc::util::unittests::runningOnValgrind()) {
- EXPECT_DEATH({
- isc::util::unittests::dontCreateCoreDumps();
-
- MessageInitializer initializer(values);
- }, ".*");
- }
-#endif
-}