Skip to content

Commit fdffbea

Browse files
author
agarkov.pavel3
committed
envelope queue naming
1 parent c655907 commit fdffbea

File tree

6 files changed

+396
-383
lines changed

6 files changed

+396
-383
lines changed

acceptanse_test.go

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,67 +13,77 @@ func Test_Acceptance(t *testing.T) {
1313
patent, cancel := context.WithCancel(context.Background())
1414
defer cancel()
1515

16-
emailTask := &pkg.PoolTask{Id: 1, Interval: 5 * time.Second, Deadline: 3 * time.Second, Type: "email",
17-
Call: func(ctx context.Context) error {
16+
emailEnvelope := &pkg.Envelope{Id: 1, Interval: 5 * time.Second, Deadline: 3 * time.Second, Type: "email",
17+
Invoke: func(ctx context.Context) error {
1818
time.Sleep(5 * time.Second)
1919
fmt.Println("📧 Email v1", time.Now())
2020
return nil
21-
}}
22-
tasks := map[string]*pkg.PoolTask{
23-
"Email": emailTask,
21+
},
22+
BeforeHook: func(ctx context.Context, item *pkg.Envelope) error {
23+
fmt.Println("hook before email", item.Id, time.Now())
24+
//return pkg.ErrStopTask
25+
return nil
26+
},
27+
AfterHook: func(ctx context.Context, item *pkg.Envelope) error {
28+
fmt.Println("hook after email", item.Id, time.Now())
29+
return pkg.ErrStopEnvelope
30+
},
31+
}
32+
envelops := map[string]*pkg.Envelope{
33+
"Email": emailEnvelope,
2434
"Metrics": {Id: 2, Interval: 3 * time.Second, Deadline: 1 * time.Second, Type: "metrics",
25-
Call: func(ctx context.Context) error {
35+
Invoke: func(ctx context.Context) error {
2636
fmt.Println("📧 Metrics", time.Now())
2737
return nil
2838
}},
2939
"Food": {Id: 3, Interval: 2 * time.Second, Deadline: 1 * time.Second, Type: "food",
30-
Call: func(ctx context.Context) error {
40+
Invoke: func(ctx context.Context) error {
3141
fmt.Println("📧Fooding", time.Now())
3242
return nil
3343
}},
3444
}
35-
pool := pkg.NewPool(
45+
envelopeQueue := pkg.NewRateEnvelopeQueue(
3646
pkg.WithLimitOption(3),
3747
pkg.WithWaitingOption(true),
3848
pkg.WithStopModeOption(pkg.Drain),
3949
pkg.WithLimiterOption(nil),
4050
pkg.WithWorkqueueConfigOption(nil),
4151
)
4252

43-
pool.Start(patent)
44-
err := pool.Add(tasks["Email"], tasks["Metrics"], tasks["Food"], emailTask)
53+
envelopeQueue.Start(patent)
54+
err := envelopeQueue.Add(envelops["Email"], envelops["Metrics"], envelops["Food"], emailEnvelope)
4555
if err != nil {
4656
fmt.Println("add err:", err)
4757
}
4858

4959
time.Sleep(1 * time.Second)
50-
pool.Stop()
60+
envelopeQueue.Stop()
5161

52-
pool = pkg.NewPool(
62+
envelopeQueue = pkg.NewRateEnvelopeQueue(
5363
pkg.WithLimitOption(3),
5464
pkg.WithWaitingOption(true),
5565
pkg.WithStopModeOption(pkg.Drain),
5666
pkg.WithLimiterOption(nil),
5767
pkg.WithWorkqueueConfigOption(nil),
5868
)
5969

60-
pool.Start(patent)
61-
err = pool.Add(tasks["Email"], tasks["Metrics"], tasks["Food"])
70+
envelopeQueue.Start(patent)
71+
err = envelopeQueue.Add(envelops["Email"], envelops["Metrics"], envelops["Food"])
6272
if err != nil {
6373
fmt.Println("add err:", err)
6474
}
6575

6676
go func() {
6777
select {
68-
case <-time.After(15 * time.Second):
78+
case <-time.After(25 * time.Second):
6979
fmt.Println("main: timeout")
7080
cancel()
7181
}
7282
}()
7383

7484
<-patent.Done()
7585
fmt.Println("parent: done")
76-
pool.Stop()
86+
envelopeQueue.Stop()
7787
//time.Sleep(5 * time.Second)
7888
fmt.Println("queue: done")
7989
}

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ go 1.24.0
55
toolchain go1.24.6
66

77
require (
8-
golang.org/x/time v0.9.0
8+
golang.org/x/time v0.12.0
99
k8s.io/client-go v0.33.4
1010
)
1111

1212
require (
13-
github.com/go-logr/logr v1.4.2 // indirect
13+
github.com/go-logr/logr v1.4.3 // indirect
1414
k8s.io/apimachinery v0.33.4 // indirect
1515
k8s.io/klog/v2 v2.130.1 // indirect
16-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
16+
k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d // indirect
1717
)

go.sum

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
22
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3-
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
4-
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
3+
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
4+
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
55
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
66
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
77
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
88
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
99
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
1010
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
11-
golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
12-
golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
11+
golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
12+
golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
1313
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
1414
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
1515
k8s.io/apimachinery v0.33.4 h1:SOf/JW33TP0eppJMkIgQ+L6atlDiP/090oaX0y9pd9s=
@@ -18,5 +18,5 @@ k8s.io/client-go v0.33.4 h1:TNH+CSu8EmXfitntjUPwaKVPN0AYMbc9F1bBS8/ABpw=
1818
k8s.io/client-go v0.33.4/go.mod h1:LsA0+hBG2DPwovjd931L/AoaezMPX9CmBgyVyBZmbCY=
1919
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
2020
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
21-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro=
22-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
21+
k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0=
22+
k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=

pkg/contract.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package pkg
22

33
import "context"
44

5-
type Pool interface {
5+
type QueuePool interface {
66
Start(ctx context.Context)
7-
Add(task ...*PoolTask) error
7+
Add(task ...*Envelope) error
88
Stop()
99
}

0 commit comments

Comments
 (0)