@@ -146,3 +146,99 @@ func TestAppendTagWhenTagKeysAsField(t *testing.T) {
146146 expected := dbmodel.KeyValue {Key : "testing.key.2" , Type : "int64" , Value : "2" }
147147 assert .Equal (t , expected , tags [0 ])
148148}
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