@@ -99,3 +99,105 @@ impl From<&SpanContext> for TraceContext {
99
99
}
100
100
}
101
101
}
102
+
103
+ #[ cfg( test) ]
104
+ mod tests {
105
+ use super :: * ;
106
+ use opentelemetry:: logs:: { AnyValue , LogRecord , Severity } ;
107
+ use opentelemetry:: trace:: { SpanContext , SpanId , TraceFlags , TraceId } ;
108
+ use std:: borrow:: Cow ;
109
+ use std:: time:: SystemTime ;
110
+
111
+ // Helper function to create a TraceId from a u128 number
112
+ fn trace_id_from_u128 ( num : u128 ) -> TraceId {
113
+ TraceId :: from_bytes ( num. to_be_bytes ( ) )
114
+ }
115
+
116
+ // Helper function to create a SpanId from a u64 number
117
+ fn span_id_from_u64 ( num : u64 ) -> SpanId {
118
+ SpanId :: from_bytes ( num. to_be_bytes ( ) )
119
+ }
120
+
121
+ #[ test]
122
+ fn test_set_timestamp ( ) {
123
+ let mut log_record = SdkLogRecord :: default ( ) ;
124
+ let now = SystemTime :: now ( ) ;
125
+ log_record. set_timestamp ( now) ;
126
+ assert_eq ! ( log_record. timestamp, Some ( now) ) ;
127
+ }
128
+
129
+ #[ test]
130
+ fn test_set_observed_timestamp ( ) {
131
+ let mut log_record = SdkLogRecord :: default ( ) ;
132
+ let now = SystemTime :: now ( ) ;
133
+ log_record. set_observed_timestamp ( now) ;
134
+ assert_eq ! ( log_record. observed_timestamp, Some ( now) ) ;
135
+ }
136
+
137
+ #[ test]
138
+ fn test_set_span_context ( ) {
139
+ let mut log_record = SdkLogRecord :: default ( ) ;
140
+ let span_context = SpanContext :: new (
141
+ trace_id_from_u128 ( 123 ) ,
142
+ span_id_from_u64 ( 456 ) ,
143
+ TraceFlags :: default ( ) ,
144
+ true ,
145
+ Default :: default ( ) ,
146
+ ) ;
147
+ log_record. set_span_context ( & span_context) ;
148
+ assert_eq ! (
149
+ log_record. trace_context. clone( ) . unwrap( ) . trace_id,
150
+ span_context. trace_id( )
151
+ ) ;
152
+ assert_eq ! (
153
+ log_record. trace_context. clone( ) . unwrap( ) . span_id,
154
+ span_context. span_id( )
155
+ ) ;
156
+ assert_eq ! (
157
+ log_record. trace_context. unwrap( ) . trace_flags,
158
+ Some ( span_context. trace_flags( ) )
159
+ ) ;
160
+ }
161
+
162
+ #[ test]
163
+ fn test_set_severity_text ( ) {
164
+ let mut log_record = SdkLogRecord :: default ( ) ;
165
+ let severity_text: Cow < ' static , str > = "ERROR" . into ( ) ; // Explicitly typed
166
+ log_record. set_severity_text ( severity_text) ;
167
+ assert_eq ! ( log_record. severity_text, Some ( Cow :: Borrowed ( "ERROR" ) ) ) ;
168
+ }
169
+
170
+ #[ test]
171
+ fn test_set_severity_number ( ) {
172
+ let mut log_record = SdkLogRecord :: default ( ) ;
173
+ let severity_number = Severity :: Error ;
174
+ log_record. set_severity_number ( severity_number) ;
175
+ assert_eq ! ( log_record. severity_number, Some ( Severity :: Error ) ) ;
176
+ }
177
+
178
+ #[ test]
179
+ fn test_set_body ( ) {
180
+ let mut log_record = SdkLogRecord :: default ( ) ;
181
+ let body = AnyValue :: String ( "Test body" . into ( ) ) ;
182
+ log_record. set_body ( body. clone ( ) ) ;
183
+ assert_eq ! ( log_record. body, Some ( body) ) ;
184
+ }
185
+
186
+ #[ test]
187
+ fn test_set_attributes ( ) {
188
+ let mut log_record = SdkLogRecord :: default ( ) ;
189
+ let attributes = vec ! [ ( Key :: new( "key" ) , AnyValue :: String ( "value" . into( ) ) ) ] ;
190
+ log_record. set_attributes ( attributes. clone ( ) ) ;
191
+ assert_eq ! ( log_record. attributes, Some ( attributes) ) ;
192
+ }
193
+
194
+ #[ test]
195
+ fn test_set_attribute ( ) {
196
+ let mut log_record = SdkLogRecord :: default ( ) ;
197
+ log_record. set_attribute ( "key" , "value" ) ;
198
+ assert_eq ! (
199
+ log_record. attributes,
200
+ Some ( vec![ ( Key :: new( "key" ) , AnyValue :: String ( "value" . into( ) ) ) ] )
201
+ ) ;
202
+ }
203
+ }
0 commit comments