@@ -146,3 +146,99 @@ func TestAppendTagWhenTagKeysAsField(t *testing.T) {
146
146
expected := dbmodel.KeyValue {Key : "testing.key.2" , Type : "int64" , Value : "2" }
147
147
assert .Equal (t , expected , tags [0 ])
148
148
}
149
+
150
+ func TestAppendTag (t * testing.T ) {
151
+ t .Run ("allTagsAsFields=true" , func (t * testing.T ) {
152
+ testAppendTags (t , true )
153
+ })
154
+ t .Run ("allTagsAsFields=false" , func (t * testing.T ) {
155
+ testAppendTags (t , false )
156
+ })
157
+ }
158
+
159
+ func testAppendTags (t * testing.T , allTagsAsFields bool ) {
160
+ tests := []struct {
161
+ name string
162
+ value pcommon.Value
163
+ dbType dbmodel.ValueType
164
+ }{
165
+ {
166
+ name : "int.val" ,
167
+ value : pcommon .NewValueInt (1 ),
168
+ dbType : dbmodel .Int64Type ,
169
+ },
170
+ {
171
+ name : "string.val" ,
172
+ value : pcommon .NewValueStr ("testing-string" ),
173
+ dbType : dbmodel .StringType ,
174
+ },
175
+ {
176
+ name : "bool.val" ,
177
+ value : pcommon .NewValueBool (true ),
178
+ dbType : dbmodel .BoolType ,
179
+ },
180
+ {
181
+ name : "double.val" ,
182
+ value : pcommon .NewValueDouble (1.2 ),
183
+ dbType : dbmodel .Float64Type ,
184
+ },
185
+ {
186
+ name : "bytes.val" ,
187
+ value : pcommon .NewValueBytes (),
188
+ dbType : dbmodel .BinaryType ,
189
+ },
190
+ {
191
+ name : "map.val" ,
192
+ value : pcommon .NewValueMap (),
193
+ dbType : dbmodel .StringType ,
194
+ },
195
+ {
196
+ name : "slice.val" ,
197
+ value : pcommon .NewValueSlice (),
198
+ dbType : dbmodel .StringType ,
199
+ },
200
+ }
201
+ for _ , test := range tests {
202
+ t .Run (test .name , func (t * testing.T ) {
203
+ tagAppender := newTagAppender (allTagsAsFields , nil , "." )
204
+ tagAppender .appendTag (test .name , test .value )
205
+ tags , tagMap := tagAppender .getTags ()
206
+ if allTagsAsFields && test .dbType != dbmodel .BinaryType {
207
+ assert .Empty (t , tags )
208
+ assert .Len (t , tagMap , 1 )
209
+ switch test .dbType {
210
+ case dbmodel .StringType :
211
+ assert .Equal (t , test .value .AsString (), tagMap [test .name ])
212
+ case dbmodel .Int64Type :
213
+ assert .Equal (t , test .value .Int (), tagMap [test .name ])
214
+ case dbmodel .BoolType :
215
+ assert .Equal (t , test .value .Bool (), tagMap [test .name ])
216
+ case dbmodel .Float64Type :
217
+ assert .InDelta (t , test .value .Double (), tagMap [test .name ], 0.01 )
218
+ default :
219
+ t .Errorf ("unknown db type: %v" , test .dbType )
220
+ }
221
+ } else {
222
+ assert .Len (t , tags , 1 )
223
+ assert .Empty (t , tagMap )
224
+ expected := dbmodel.KeyValue {
225
+ Key : test .name ,
226
+ Type : test .dbType ,
227
+ Value : test .value .AsString (),
228
+ }
229
+ assert .Equal (t , expected , tags [0 ])
230
+ }
231
+ })
232
+ }
233
+ }
234
+
235
+ func TestAttributeToDbType_UnknownType (t * testing.T ) {
236
+ dbType := attributeToDbType (pcommon .ValueType (13 ))
237
+ assert .Equal (t , dbmodel .ValueType ("" ), dbType )
238
+ }
239
+
240
+ func TestAttributeToDbValue_UnknownType (t * testing.T ) {
241
+ val := pcommon .NewValueEmpty ()
242
+ dbValue := attributeToDbValue (pcommon .NewValueEmpty ())
243
+ assert .Equal (t , val .AsString (), dbValue )
244
+ }
0 commit comments