diff options
author | Valery Piashchynski <[email protected]> | 2020-12-21 19:42:23 +0300 |
---|---|---|
committer | Valery Piashchynski <[email protected]> | 2020-12-21 19:42:23 +0300 |
commit | ee8b4075c0f836d698d1ae505c87c17147de447a (patch) | |
tree | 531d980e5bfb94ee39b03952a97e0445f7955409 /plugins/informer | |
parent | 0ad45031047bb479e06ce0a0f496c6db9b2641c9 (diff) |
Move plugins to the roadrunner-plugins repository
Diffstat (limited to 'plugins/informer')
-rw-r--r-- | plugins/informer/plugin.go | 56 | ||||
-rw-r--r-- | plugins/informer/rpc.go | 53 | ||||
-rw-r--r-- | plugins/informer/tests/.rr-informer.yaml | 16 | ||||
-rw-r--r-- | plugins/informer/tests/informer_test.go | 97 | ||||
-rw-r--r-- | plugins/informer/tests/test_plugin.go | 59 |
5 files changed, 0 insertions, 281 deletions
diff --git a/plugins/informer/plugin.go b/plugins/informer/plugin.go deleted file mode 100644 index 449be085..00000000 --- a/plugins/informer/plugin.go +++ /dev/null @@ -1,56 +0,0 @@ -package informer - -import ( - "github.com/spiral/endure" - "github.com/spiral/errors" - "github.com/spiral/roadrunner/v2/interfaces/informer" - "github.com/spiral/roadrunner/v2/interfaces/log" - "github.com/spiral/roadrunner/v2/interfaces/worker" -) - -const PluginName = "informer" - -type Plugin struct { - registry map[string]informer.Informer - log log.Logger -} - -func (p *Plugin) Init(log log.Logger) error { - p.registry = make(map[string]informer.Informer) - p.log = log - return nil -} - -// Workers provides BaseProcess slice with workers for the requested plugin -func (p *Plugin) Workers(name string) ([]worker.BaseProcess, error) { - const op = errors.Op("get workers") - svc, ok := p.registry[name] - if !ok { - return nil, errors.E(op, errors.Errorf("no such service: %s", name)) - } - - return svc.Workers(), nil -} - -// CollectTarget resettable service. -func (p *Plugin) CollectTarget(name endure.Named, r informer.Informer) error { - p.registry[name.Name()] = r - return nil -} - -// Collects declares services to be collected. -func (p *Plugin) Collects() []interface{} { - return []interface{}{ - p.CollectTarget, - } -} - -// Name of the service. -func (p *Plugin) Name() string { - return PluginName -} - -// RPCService returns associated rpc service. -func (p *Plugin) RPC() interface{} { - return &rpc{srv: p, log: p.log} -} diff --git a/plugins/informer/rpc.go b/plugins/informer/rpc.go deleted file mode 100644 index d6b7bf01..00000000 --- a/plugins/informer/rpc.go +++ /dev/null @@ -1,53 +0,0 @@ -package informer - -import ( - "github.com/spiral/roadrunner/v2" - "github.com/spiral/roadrunner/v2/interfaces/log" -) - -type rpc struct { - srv *Plugin - log log.Logger -} - -// WorkerList contains list of workers. -type WorkerList struct { - // Workers is list of workers. - Workers []roadrunner.ProcessState `json:"workers"` -} - -// List all resettable services. -func (rpc *rpc) List(_ bool, list *[]string) error { - rpc.log.Debug("Started List method") - *list = make([]string, 0, len(rpc.srv.registry)) - - for name := range rpc.srv.registry { - *list = append(*list, name) - } - rpc.log.Debug("list of services", "list", *list) - - rpc.log.Debug("successfully finished List method") - return nil -} - -// Workers state of a given service. -func (rpc *rpc) Workers(service string, list *WorkerList) error { - rpc.log.Debug("started Workers method", "service", service) - workers, err := rpc.srv.Workers(service) - if err != nil { - return err - } - - list.Workers = make([]roadrunner.ProcessState, 0) - for _, w := range workers { - ps, err := roadrunner.WorkerProcessState(w) - if err != nil { - continue - } - - list.Workers = append(list.Workers, ps) - } - rpc.log.Debug("list of workers", "workers", list.Workers) - rpc.log.Debug("successfully finished Workers method") - return nil -} diff --git a/plugins/informer/tests/.rr-informer.yaml b/plugins/informer/tests/.rr-informer.yaml deleted file mode 100644 index 266933fd..00000000 --- a/plugins/informer/tests/.rr-informer.yaml +++ /dev/null @@ -1,16 +0,0 @@ -server: - command: "php ../../../tests/client.php echo pipes" - user: "" - group: "" - env: - "RR_CONFIG": "/some/place/on/the/C134" - "RR_CONFIG2": "C138" - relay: "pipes" - relayTimeout: "20s" - -rpc: - listen: tcp://127.0.0.1:6001 - disabled: false -logs: - mode: development - level: error
\ No newline at end of file diff --git a/plugins/informer/tests/informer_test.go b/plugins/informer/tests/informer_test.go deleted file mode 100644 index dd06f1c4..00000000 --- a/plugins/informer/tests/informer_test.go +++ /dev/null @@ -1,97 +0,0 @@ -package tests - -import ( - "net" - "net/rpc" - "os" - "os/signal" - "syscall" - "testing" - "time" - - "github.com/spiral/endure" - goridgeRpc "github.com/spiral/goridge/v3/pkg/rpc" - "github.com/spiral/roadrunner/v2" - "github.com/spiral/roadrunner/v2/plugins/config" - "github.com/spiral/roadrunner/v2/plugins/informer" - "github.com/spiral/roadrunner/v2/plugins/logger" - rpcPlugin "github.com/spiral/roadrunner/v2/plugins/rpc" - "github.com/spiral/roadrunner/v2/plugins/server" - "github.com/stretchr/testify/assert" -) - -func TestInformerInit(t *testing.T) { - cont, err := endure.NewContainer(nil, endure.SetLogLevel(endure.ErrorLevel)) - if err != nil { - t.Fatal(err) - } - - cfg := &config.Viper{ - Path: ".rr-informer.yaml", - Prefix: "rr", - } - - err = cont.RegisterAll( - cfg, - &server.Plugin{}, - &logger.ZapLogger{}, - &informer.Plugin{}, - &rpcPlugin.Plugin{}, - &Plugin1{}, - ) - assert.NoError(t, err) - - err = cont.Init() - if err != nil { - t.Fatal(err) - } - - ch, err := cont.Serve() - assert.NoError(t, err) - - sig := make(chan os.Signal, 1) - signal.Notify(sig, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) - - tt := time.NewTimer(time.Second * 15) - - t.Run("InformerRpcTest", informerRPCTest) - - for { - select { - case e := <-ch: - assert.Fail(t, "error", e.Error.Error()) - err = cont.Stop() - if err != nil { - assert.FailNow(t, "error", err.Error()) - } - case <-sig: - err = cont.Stop() - if err != nil { - assert.FailNow(t, "error", err.Error()) - } - return - case <-tt.C: - // timeout - err = cont.Stop() - if err != nil { - assert.FailNow(t, "error", err.Error()) - } - return - } - } -} - -func informerRPCTest(t *testing.T) { - conn, err := net.Dial("tcp", "127.0.0.1:6001") - assert.NoError(t, err) - client := rpc.NewClientWithCodec(goridgeRpc.NewClientCodec(conn)) - // WorkerList contains list of workers. - list := struct { - // Workers is list of workers. - Workers []roadrunner.ProcessState `json:"workers"` - }{} - - err = client.Call("informer.Workers", "informer.plugin1", &list) - assert.NoError(t, err) - assert.Len(t, list.Workers, 10) -} diff --git a/plugins/informer/tests/test_plugin.go b/plugins/informer/tests/test_plugin.go deleted file mode 100644 index 31643952..00000000 --- a/plugins/informer/tests/test_plugin.go +++ /dev/null @@ -1,59 +0,0 @@ -package tests - -import ( - "context" - "time" - - "github.com/spiral/roadrunner/v2/interfaces/config" - "github.com/spiral/roadrunner/v2/interfaces/server" - "github.com/spiral/roadrunner/v2/interfaces/worker" - poolImpl "github.com/spiral/roadrunner/v2/pkg/pool" -) - -var testPoolConfig = poolImpl.Config{ - NumWorkers: 10, - MaxJobs: 100, - AllocateTimeout: time.Second * 10, - DestroyTimeout: time.Second * 10, - Supervisor: &poolImpl.SupervisorConfig{ - WatchTick: 60, - TTL: 1000, - IdleTTL: 10, - ExecTTL: 10, - MaxWorkerMemory: 1000, - }, -} - -// Gauge ////////////// -type Plugin1 struct { - config config.Configurer - server server.Server -} - -func (p1 *Plugin1) Init(cfg config.Configurer, server server.Server) error { - p1.config = cfg - p1.server = server - return nil -} - -func (p1 *Plugin1) Serve() chan error { - errCh := make(chan error, 1) - return errCh -} - -func (p1 *Plugin1) Stop() error { - return nil -} - -func (p1 *Plugin1) Name() string { - return "informer.plugin1" -} - -func (p1 *Plugin1) Workers() []worker.BaseProcess { - pool, err := p1.server.NewWorkerPool(context.Background(), testPoolConfig, nil) - if err != nil { - panic(err) - } - - return pool.Workers() -} |