@@ -11,6 +11,7 @@ import (
1111 "github.com/bytedance/gg/gptr"
1212 "github.com/bytedance/sonic"
1313 "github.com/stretchr/testify/assert"
14+ "github.com/stretchr/testify/require"
1415
1516 kitCommon "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/common"
1617 "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/domain/dataset"
@@ -219,15 +220,41 @@ func TestTaskConfigDO2DTO_EvaluationExperimentConfig(t *testing.T) {
219220 EvaluationExperimentConfig : & entity.EvaluationExperimentConfig {
220221 ItemConcurrencyCount : gptr .Of (int32 (5 )),
221222 ItemMaxRetryCount : gptr .Of (int32 (6 )),
223+ SourceTargetID : gptr .Of ("target-123" ),
224+ ExptTemplateID : gptr .Of (int64 (999 )),
225+ SourceTargetVersion : gptr .Of ("v1.0" ),
226+ FullEvalSetFieldMappings : []* entity.EvaluateFieldMapping {
227+ {
228+ FieldSchema : & dataset.FieldSchema {
229+ Key : gptr .Of ("key1" ),
230+ Name : gptr .Of ("field1" ),
231+ },
232+ TraceFieldKey : "Input" ,
233+ TraceFieldJsonpath : "$.input" ,
234+ EvalSetName : gptr .Of ("field1" ),
235+ },
236+ },
222237 },
223238 }
224239 dto := TaskConfigDO2DTO (do )
225240 if assert .NotNil (t , dto ) {
226- if assert .NotNil (t , dto .EvaluationExperimentConfig ) {
227- assert .Equal (t , int32 (5 ), ptr .From (dto .EvaluationExperimentConfig .ItemConcurrencyCount ))
228- assert .Equal (t , int32 (6 ), ptr .From (dto .EvaluationExperimentConfig .ItemMaxRetryCount ))
241+ ec := dto .EvaluationExperimentConfig
242+ if assert .NotNil (t , ec ) {
243+ assert .Equal (t , int32 (5 ), ptr .From (ec .ItemConcurrencyCount ))
244+ assert .Equal (t , int32 (6 ), ptr .From (ec .ItemMaxRetryCount ))
245+ assert .Equal (t , "target-123" , ptr .From (ec .SourceTargetID ))
246+ assert .Equal (t , int64 (999 ), ptr .From (ec .ExptTemplateID ))
247+ assert .Equal (t , "v1.0" , ptr .From (ec .SourceTargetVersion ))
248+ if assert .Len (t , ec .FullEvalSetFieldMappings , 1 ) {
249+ fm := ec .FullEvalSetFieldMappings [0 ]
250+ assert .Equal (t , "Input" , fm .TraceFieldKey )
251+ assert .Equal (t , "$.input" , fm .TraceFieldJsonpath )
252+ assert .Equal (t , "field1" , ptr .From (fm .EvalSetName ))
253+ }
229254 }
230255 }
256+
257+ assert .Nil (t , EvaluationExperimentConfigDO2DTO (nil ))
231258}
232259
233260func TestTaskDTO2DO (t * testing.T ) {
@@ -429,3 +456,127 @@ func TestSpanFilterDTO2DO(t *testing.T) {
429456 }
430457 })
431458}
459+
460+ func TestSourceInfoListDTO2DO (t * testing.T ) {
461+ t .Parallel ()
462+
463+ t .Run ("nil input returns nil" , func (t * testing.T ) {
464+ t .Parallel ()
465+ assert .Nil (t , SourceInfoListDTO2DO (nil ))
466+ })
467+
468+ t .Run ("empty input returns nil" , func (t * testing.T ) {
469+ t .Parallel ()
470+ assert .Nil (t , SourceInfoListDTO2DO ([]* kitTask.SourceInfo {}))
471+ })
472+
473+ t .Run ("skips nil elements" , func (t * testing.T ) {
474+ t .Parallel ()
475+ result := SourceInfoListDTO2DO ([]* kitTask.SourceInfo {
476+ nil ,
477+ {Name : gptr .Of ("svc" ), Version : gptr .Of ("v1" )},
478+ })
479+ if assert .Len (t , result , 1 ) {
480+ assert .Equal (t , "svc" , ptr .From (result [0 ].Name ))
481+ assert .Equal (t , "v1" , ptr .From (result [0 ].Version ))
482+ }
483+ })
484+
485+ t .Run ("normal conversion" , func (t * testing.T ) {
486+ t .Parallel ()
487+ result := SourceInfoListDTO2DO ([]* kitTask.SourceInfo {
488+ {Name : gptr .Of ("a" ), Version : gptr .Of ("1.0" )},
489+ {Name : gptr .Of ("b" ), Version : gptr .Of ("2.0" )},
490+ })
491+ if assert .Len (t , result , 2 ) {
492+ assert .Equal (t , "a" , ptr .From (result [0 ].Name ))
493+ assert .Equal (t , "1.0" , ptr .From (result [0 ].Version ))
494+ assert .Equal (t , "b" , ptr .From (result [1 ].Name ))
495+ assert .Equal (t , "2.0" , ptr .From (result [1 ].Version ))
496+ }
497+ })
498+ }
499+
500+ func TestTaskConfigDTO2DO_FullEvalSetAndSourceInfo (t * testing.T ) {
501+ t .Parallel ()
502+
503+ schema := & dataset.FieldSchema {
504+ Key : gptr .Of ("output_key" ),
505+ Name : gptr .Of ("Output" ),
506+ ContentType : gptr .Of ("Text" ),
507+ }
508+
509+ dto := & kitTask.TaskConfig {
510+ AutoEvaluateConfigs : []* kitTask.AutoEvaluateConfig {
511+ {
512+ EvaluatorVersionID : 1 ,
513+ EvaluatorID : 2 ,
514+ FieldMappings : []* kitTask.EvaluateFieldMapping {
515+ {
516+ FieldSchema : schema ,
517+ TraceFieldKey : "Input" ,
518+ TraceFieldJsonpath : "$.input" ,
519+ EvalSetName : gptr .Of ("input_field" ),
520+ },
521+ },
522+ },
523+ },
524+ EvaluationExperimentConfig : & kitTask.EvaluationExperimentConfig {
525+ ItemConcurrencyCount : gptr .Of (int32 (5 )),
526+ ItemMaxRetryCount : gptr .Of (int32 (3 )),
527+ ExptTemplateID : gptr .Of (int64 (888 )),
528+ SourceTargetID : gptr .Of ("target-1" ),
529+ SourceTargetVersion : gptr .Of ("v2" ),
530+ FullEvalSetFieldMappings : []* kitTask.EvaluateFieldMapping {
531+ {
532+ FieldSchema : schema ,
533+ TraceFieldKey : "Output" ,
534+ TraceFieldJsonpath : "$.output" ,
535+ EvalSetName : gptr .Of ("output_field" ),
536+ },
537+ {
538+ FieldSchema : schema ,
539+ TraceFieldKey : "Output" ,
540+ TraceFieldJsonpath : "$.output" ,
541+ },
542+ },
543+ },
544+ SourceInfo : []* kitTask.SourceInfo {
545+ {Name : gptr .Of ("my-service" ), Version : gptr .Of ("1.0.0" )},
546+ },
547+ IsWorkflowScheduled : gptr .Of (true ),
548+ }
549+
550+ cfg := TaskConfigDTO2DO (dto )
551+ require .NotNil (t , cfg )
552+
553+ ec := cfg .EvaluationExperimentConfig
554+ if assert .NotNil (t , ec ) {
555+ assert .Equal (t , int32 (5 ), ptr .From (ec .ItemConcurrencyCount ))
556+ assert .Equal (t , int32 (3 ), ptr .From (ec .ItemMaxRetryCount ))
557+ assert .Equal (t , int64 (888 ), ptr .From (ec .ExptTemplateID ))
558+ assert .Equal (t , "target-1" , ptr .From (ec .SourceTargetID ))
559+ assert .Equal (t , "v2" , ptr .From (ec .SourceTargetVersion ))
560+ if assert .Len (t , ec .FullEvalSetFieldMappings , 2 ) {
561+ assert .Equal (t , "output_field" , ptr .From (ec .FullEvalSetFieldMappings [0 ].EvalSetName ))
562+ assert .Equal (t , "output" , ptr .From (ec .FullEvalSetFieldMappings [0 ].DatasetKey ))
563+ assert .Equal (t , "output" , ptr .From (ec .FullEvalSetFieldMappings [1 ].DatasetKey ))
564+ }
565+ }
566+
567+ if assert .Len (t , cfg .SourceInfo , 1 ) {
568+ assert .Equal (t , "my-service" , ptr .From (cfg .SourceInfo [0 ].Name ))
569+ assert .Equal (t , "1.0.0" , ptr .From (cfg .SourceInfo [0 ].Version ))
570+ }
571+
572+ assert .Equal (t , true , ptr .From (cfg .IsWorkflowScheduled ))
573+
574+ if assert .Len (t , cfg .AutoEvaluateConfigs , 1 ) {
575+ fm := cfg .AutoEvaluateConfigs [0 ].FieldMappings
576+ if assert .Len (t , fm , 1 ) {
577+ assert .Equal (t , "input_field" , ptr .From (fm [0 ].EvalSetName ))
578+ }
579+ }
580+
581+ assert .Nil (t , TaskConfigDTO2DO (nil ))
582+ }
0 commit comments