Files
crawlab/core/grpc/test/base.go
2024-06-14 15:42:50 +08:00

78 lines
1.4 KiB
Go

package test
import (
"github.com/crawlab-team/crawlab/core/entity"
"github.com/crawlab-team/crawlab/core/grpc/client"
"github.com/crawlab-team/crawlab/core/grpc/server"
"github.com/crawlab-team/crawlab/core/interfaces"
"github.com/crawlab-team/crawlab/core/node/test"
"testing"
"time"
)
type Test struct {
Server interfaces.GrpcServer
Client interfaces.GrpcClient
MasterNodeInfo *entity.NodeInfo
WorkerNodeInfo *entity.NodeInfo
}
func (t *Test) Setup(t2 *testing.T) {
test.T.Cleanup()
t2.Cleanup(t.Cleanup)
if !T.Client.IsStarted() {
_ = T.Client.Start()
} else if T.Client.IsClosed() {
_ = T.Client.Restart()
}
}
func (t *Test) Cleanup() {
_ = t.Client.Stop()
_ = t.Server.Stop()
test.T.Cleanup()
// wait to avoid caching
time.Sleep(200 * time.Millisecond)
}
var T *Test
func NewTest() (res *Test, err error) {
// test
t := &Test{}
// server
t.Server, err = server.NewServer(
server.WithConfigPath(test.T.MasterSvc.GetConfigPath()),
server.WithAddress(test.T.MasterSvc.GetAddress()),
)
if err != nil {
return nil, err
}
if err := t.Server.Start(); err != nil {
return nil, err
}
// client
t.Client, err = client.GetClient(test.T.WorkerSvc.GetConfigPath())
if err != nil {
return nil, err
}
// master node info
t.MasterNodeInfo = &entity.NodeInfo{
Key: "master",
IsMaster: true,
}
// worker node info
t.WorkerNodeInfo = &entity.NodeInfo{
Key: "worker",
IsMaster: false,
}
return t, nil
}