89 lines
2.6 KiB
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"
|
|
}
|
|
}
|