blob: c17082bf055c698c6204afa9aad880cbcac6da6d [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <log4cxx/mdc.h>
#include <log4cxx/file.h>
#include <log4cxx/logger.h>
#include <log4cxx/patternlayout.h>
#include "insertwide.h"
#include "logunit.h"
#include "util/compare.h"
using namespace log4cxx;
LOGUNIT_CLASS(MDCTestCase)
{
LOGUNIT_TEST_SUITE(MDCTestCase);
LOGUNIT_TEST(test1);
LOGUNIT_TEST(test2);
LOGUNIT_TEST_SUITE_END();
public:
void setUp()
{
}
void tearDown()
{
auto rep = Logger::getRootLogger()->getLoggerRepository();
if (rep)
{
rep->resetConfiguration();
}
}
/**
* log4cxx 0.10.0 did not replace previously set value.
*/
void test1()
{
std::string key("key1");
std::string expected("value2");
MDC item1(key, "value1");
MDC::put(key, expected);
std::string actual(MDC::get(key));
LOGUNIT_ASSERT_EQUAL(expected, actual);
}
/// Check MDC formatting skips entries that exceed the maximum field length.
void test2()
{
MDC item1("key1", "value1");
MDC item2("key2", "value2");
helpers::Pool p;
LogString output;
PatternLayout l{ LOG4CXX_STR("%-5p %c - %.30J %m") };
l.format(output, std::make_shared<spi::LoggingEvent>(LOG4CXX_STR("MDC.LayoutTest"), Level::getInfo(), LOG4CXX_STR("Message"), spi::LocationInfo::getLocationUnavailable()), p);
LOGUNIT_ASSERT_EQUAL(LOG4CXX_STR("INFO MDC.LayoutTest - {\"key1\":\"value1\"} Message"), output);
}
};
LOGUNIT_TEST_SUITE_REGISTRATION(MDCTestCase);