opentelemetry-java-instrume.../instrumentation/log4j/log4j-1.2/src/test/groovy/Log4j1MdcTest.groovy

89 lines
2.6 KiB
Groovy

/*
* Copyright The OpenTelemetry Authors
*
* Licensed 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.
*/
import io.opentelemetry.auto.test.AgentTestRunner
import io.opentelemetry.auto.test.utils.TraceUtils
import io.opentelemetry.trace.TracingContextUtils
import org.apache.log4j.LogManager
class Log4j1MdcTest extends AgentTestRunner {
def cleanup() {
ListAppender.clearEvents()
}
def "no ids when no span"() {
given:
def logger = LogManager.getLogger('TestLogger')
when:
logger.info("log message 1")
logger.info("log message 2")
then:
def events = ListAppender.events
events.size() == 2
events[0].message == "log message 1"
events[0].getMDC("traceId") == null
events[0].getMDC("spanId") == null
events[0].getMDC("traceFlags") == null
events[1].message == "log message 2"
events[1].getMDC("traceId") == null
events[1].getMDC("spanId") == null
events[1].getMDC("traceFlags") == null
}
def "ids when span"() {
given:
def logger = LogManager.getLogger('TestLogger')
when:
def span1 = TraceUtils.runUnderTrace("test") {
logger.info("log message 1")
TracingContextUtils.currentSpan
}
logger.info("log message 2")
def span2 = TraceUtils.runUnderTrace("test 2") {
logger.info("log message 3")
TracingContextUtils.currentSpan
}
then:
def events = ListAppender.events
events.size() == 3
events[0].message == "log message 1"
events[0].getMDC("traceId") == span1.context.traceIdAsHexString
events[0].getMDC("spanId") == span1.context.spanIdAsHexString
events[0].getMDC("sampled") == "true"
events[1].message == "log message 2"
events[1].getMDC("traceId") == null
events[1].getMDC("spanId") == null
events[1].getMDC("sampled") == null
events[2].message == "log message 3"
// this explicit getMDCCopy() call here is to make sure that whole instrumentation is tested
events[2].getMDCCopy()
events[2].getMDC("traceId") == span2.context.traceIdAsHexString
events[2].getMDC("spanId") == span2.context.spanIdAsHexString
events[2].getMDC("sampled") == "true"
}
}