1+ # Copyright The OpenTelemetry Authors
2+ #
3+ # Licensed under the Apache License, Version 2.0 (the "License");
4+ # you may not use this file except in compliance with the License.
5+ # You may obtain a copy of the License at
6+ #
7+ # http://www.apache.org/licenses/LICENSE-2.0
8+ #
9+ # Unless required by applicable law or agreed to in writing, software
10+ # distributed under the License is distributed on an "AS IS" BASIS,
11+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+ # See the License for the specific language governing permissions and
13+ # limitations under the License.
14+
15+ import unittest
16+ from opentelemetry .instrumentation .boto import BotoInstrumentor
17+ from opentelemetry .sdk .trace import NoOpTracerProvider
18+ import boto3
19+
20+ class TestBotoInstrumentationNoOpTracerProvider (unittest .TestCase ):
21+ def setUp (self ):
22+ # Set the NoOpTracerProvider
23+ self .noop_tracer_provider = NoOpTracerProvider ()
24+ BotoInstrumentor ().instrument (tracer_provider = self .noop_tracer_provider )
25+
26+ def tearDown (self ):
27+ BotoInstrumentor ().uninstrument ()
28+
29+ def test_boto_with_noop_tracer_provider (self ):
30+ # Create a boto3 client
31+ client = boto3 .client ('s3' )
32+
33+ # Perform a simple operation
34+ try :
35+ client .list_buckets ()
36+ except Exception :
37+ pass # Ignore any exceptions for this test
38+
39+ # Ensure no spans are created
40+ spans = self .noop_tracer_provider .get_tracer ("test" ).get_span_processor ().spans
41+ self .assertEqual (len (spans ), 0 )
42+
43+ if __name__ == "__main__" :
44+ unittest .main ()
0 commit comments