@@ -755,6 +755,64 @@ func Test_FieldIPWithTextTemplate(t *testing.T) {
755755 }
756756}
757757
758+ func Test_FieldLongCounterResetAfterN5WithTextTemplate (t * testing.T ) {
759+ fld := Field {
760+ Name : "counter_reset_test" ,
761+ Type : FieldTypeLong ,
762+ }
763+
764+ afterN := 5
765+
766+ template := []byte (`{{$counter_reset_test := generate "counter_reset_test"}}{"counter_reset_test":"{{$counter_reset_test}}"}` )
767+ configYaml := []byte (fmt .Sprintf (`fields:
768+ - name: counter_reset_test
769+ counter: true
770+ counter_reset:
771+ strategy: after_n
772+ reset_after_n: %d` , afterN ))
773+ t .Logf ("with template: %s" , string (template ))
774+
775+ cfg , err := config .LoadConfigFromYaml (configYaml )
776+ if err != nil {
777+ t .Fatal (err )
778+ }
779+
780+ g := makeGeneratorWithTextTemplate (t , cfg , []Field {fld }, template , 10 )
781+
782+ var buf bytes.Buffer
783+
784+ nSpins := int64 (10 )
785+
786+ var shouldReset bool
787+
788+ for i := int64 (0 ); i < nSpins ; i ++ {
789+ if err := g .Emit (& buf ); err != nil {
790+ t .Fatal (err )
791+ }
792+
793+ m := unmarshalJSONT [string ](t , buf .Bytes ())
794+ buf .Reset ()
795+
796+ if len (m ) != 1 {
797+ t .Errorf ("Expected map size 1, got %d" , len (m ))
798+ }
799+
800+ v , ok := m [fld .Name ]
801+ if ! ok {
802+ t .Errorf ("Missing key %v" , fld .Name )
803+ }
804+
805+ if i >= int64 (afterN ) && ! shouldReset {
806+ if v != "0" {
807+ t .Errorf ("Expected counter to reset to 1, got %v" , v )
808+ }
809+ shouldReset = true
810+ }
811+
812+ t .Logf ("counter value: %v" , v )
813+ }
814+ }
815+
758816func Test_FieldFloatsWithTextTemplate (t * testing.T ) {
759817 _testNumericWithTextTemplate [float64 ](t , FieldTypeDouble )
760818 _testNumericWithTextTemplate [float32 ](t , FieldTypeFloat )
0 commit comments