1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
package tests
import (
"context"
"errors"
"fmt"
"time"
"github.com/spiral/roadrunner/v2"
"github.com/spiral/roadrunner/v2/plugins/config"
"github.com/spiral/roadrunner/v2/plugins/factory"
)
type Foo2 struct {
configProvider config.Provider
wf factory.AppFactory
}
func (f *Foo2) Init(p config.Provider, workerFactory factory.AppFactory) error {
f.configProvider = p
f.wf = workerFactory
return nil
}
func (f *Foo2) Serve() chan error {
errCh := make(chan error, 1)
r := &factory.Config{}
err := f.configProvider.UnmarshalKey("app", r)
if err != nil {
errCh <- err
return errCh
}
cmd, err := f.wf.NewCmdFactory(nil)
if err != nil {
errCh <- err
return errCh
}
if cmd == nil {
errCh <- errors.New("command is nil")
return errCh
}
a := cmd()
out, err := a.Output()
if err != nil {
errCh <- err
return errCh
}
w, err := f.wf.NewWorker(context.Background(), nil)
if err != nil {
errCh <- err
return errCh
}
_ = w
poolConfig := roadrunner.Config{
NumWorkers: 10,
MaxJobs: 100,
AllocateTimeout: time.Second * 10,
DestroyTimeout: time.Second * 10,
Supervisor: &roadrunner.SupervisorConfig{
WatchTick: 60,
TTL: 1000,
IdleTTL: 10,
ExecTTL: 10,
MaxWorkerMemory: 1000,
},
}
pool, err := f.wf.NewWorkerPool(context.Background(), poolConfig, nil)
if err != nil {
errCh <- err
return errCh
}
_ = pool
fmt.Println(string(out))
return errCh
}
func (f *Foo2) Stop() error {
return nil
}
|