micro: rewrite options to support multiple building blocks

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2021-01-29 13:17:32 +03:00
parent ac8a3a12c4
commit 827d467077
57 changed files with 1283 additions and 644 deletions

View File

@@ -8,15 +8,15 @@ import (
"net/http"
"testing"
"github.com/unistack-org/micro/v3/registry"
"github.com/unistack-org/micro/v3/registry/memory"
"github.com/unistack-org/micro/v3/register"
"github.com/unistack-org/micro/v3/register/memory"
"github.com/unistack-org/micro/v3/router"
regRouter "github.com/unistack-org/micro/v3/router/registry"
regRouter "github.com/unistack-org/micro/v3/router/register"
)
func TestRoundTripper(t *testing.T) {
m := memory.NewRegistry()
r := regRouter.NewRouter(router.Registry(m))
m := memory.NewRegister()
r := regRouter.NewRouter(router.Register(m))
rt := NewRoundTripper(WithRouter(r))
@@ -32,9 +32,9 @@ func TestRoundTripper(t *testing.T) {
go http.Serve(l, nil)
m.Register(&registry.Service{
m.Register(&register.Service{
Name: "example.com",
Nodes: []*registry.Node{
Nodes: []*register.Node{
{
Id: "1",
Address: l.Addr().String(),

View File

@@ -1,11 +1,11 @@
package registry
package register
import (
"github.com/unistack-org/micro/v3/registry"
"github.com/unistack-org/micro/v3/register"
)
func addNodes(old, neu []*registry.Node) []*registry.Node {
nodes := make([]*registry.Node, len(neu))
func addNodes(old, neu []*register.Node) []*register.Node {
nodes := make([]*register.Node, len(neu))
// add all new nodes
for i, n := range neu {
node := *n
@@ -35,8 +35,8 @@ func addNodes(old, neu []*registry.Node) []*registry.Node {
return nodes
}
func delNodes(old, del []*registry.Node) []*registry.Node {
var nodes []*registry.Node
func delNodes(old, del []*register.Node) []*register.Node {
var nodes []*register.Node
for _, o := range old {
var rem bool
for _, n := range del {
@@ -53,24 +53,24 @@ func delNodes(old, del []*registry.Node) []*registry.Node {
}
// CopyService make a copy of service
func CopyService(service *registry.Service) *registry.Service {
func CopyService(service *register.Service) *register.Service {
// copy service
s := &registry.Service{}
s := &register.Service{}
*s = *service
// copy nodes
nodes := make([]*registry.Node, len(service.Nodes))
nodes := make([]*register.Node, len(service.Nodes))
for j, node := range service.Nodes {
n := &registry.Node{}
n := &register.Node{}
*n = *node
nodes[j] = n
}
s.Nodes = nodes
// copy endpoints
eps := make([]*registry.Endpoint, len(service.Endpoints))
eps := make([]*register.Endpoint, len(service.Endpoints))
for j, ep := range service.Endpoints {
e := &registry.Endpoint{}
e := &register.Endpoint{}
*e = *ep
eps[j] = e
}
@@ -79,8 +79,8 @@ func CopyService(service *registry.Service) *registry.Service {
}
// Copy makes a copy of services
func Copy(current []*registry.Service) []*registry.Service {
services := make([]*registry.Service, len(current))
func Copy(current []*register.Service) []*register.Service {
services := make([]*register.Service, len(current))
for i, service := range current {
services[i] = CopyService(service)
}
@@ -88,14 +88,14 @@ func Copy(current []*registry.Service) []*registry.Service {
}
// Merge merges two lists of services and returns a new copy
func Merge(olist []*registry.Service, nlist []*registry.Service) []*registry.Service {
var srv []*registry.Service
func Merge(olist []*register.Service, nlist []*register.Service) []*register.Service {
var srv []*register.Service
for _, n := range nlist {
var seen bool
for _, o := range olist {
if o.Version == n.Version {
sp := &registry.Service{}
sp := &register.Service{}
// make copy
*sp = *o
// set nodes
@@ -106,25 +106,25 @@ func Merge(olist []*registry.Service, nlist []*registry.Service) []*registry.Ser
srv = append(srv, sp)
break
} else {
sp := &registry.Service{}
sp := &register.Service{}
// make copy
*sp = *o
srv = append(srv, sp)
}
}
if !seen {
srv = append(srv, Copy([]*registry.Service{n})...)
srv = append(srv, Copy([]*register.Service{n})...)
}
}
return srv
}
// Remove removes services and returns a new copy
func Remove(old, del []*registry.Service) []*registry.Service {
var services []*registry.Service
func Remove(old, del []*register.Service) []*register.Service {
var services []*register.Service
for _, o := range old {
srv := &registry.Service{}
srv := &register.Service{}
*srv = *o
var rem bool

View File

@@ -1,18 +1,18 @@
package registry
package register
import (
"os"
"testing"
"github.com/unistack-org/micro/v3/registry"
"github.com/unistack-org/micro/v3/register"
)
func TestRemove(t *testing.T) {
services := []*registry.Service{
services := []*register.Service{
{
Name: "foo",
Version: "1.0.0",
Nodes: []*registry.Node{
Nodes: []*register.Node{
{
Id: "foo-123",
Address: "localhost:9999",
@@ -22,7 +22,7 @@ func TestRemove(t *testing.T) {
{
Name: "foo",
Version: "1.0.0",
Nodes: []*registry.Node{
Nodes: []*register.Node{
{
Id: "foo-123",
Address: "localhost:6666",
@@ -31,7 +31,7 @@ func TestRemove(t *testing.T) {
},
}
servs := Remove([]*registry.Service{services[0]}, []*registry.Service{services[1]})
servs := Remove([]*register.Service{services[0]}, []*register.Service{services[1]})
if i := len(servs); i > 0 {
t.Errorf("Expected 0 nodes, got %d: %+v", i, servs)
}
@@ -41,11 +41,11 @@ func TestRemove(t *testing.T) {
}
func TestRemoveNodes(t *testing.T) {
services := []*registry.Service{
services := []*register.Service{
{
Name: "foo",
Version: "1.0.0",
Nodes: []*registry.Node{
Nodes: []*register.Node{
{
Id: "foo-123",
Address: "localhost:9999",
@@ -59,7 +59,7 @@ func TestRemoveNodes(t *testing.T) {
{
Name: "foo",
Version: "1.0.0",
Nodes: []*registry.Node{
Nodes: []*register.Node{
{
Id: "foo-123",
Address: "localhost:6666",

View File

@@ -1,7 +1,7 @@
package router
import (
"github.com/unistack-org/micro/v3/registry"
"github.com/unistack-org/micro/v3/register"
"github.com/unistack-org/micro/v3/router"
)
@@ -19,7 +19,7 @@ func (r *apiRouter) String() string {
}
// New router is a hack for API routing
func New(srvs []*registry.Service) router.Router {
func New(srvs []*register.Service) router.Router {
var routes []router.Route
for _, srv := range srvs {

View File

@@ -78,6 +78,11 @@ func (c *syncStore) Init(opts ...store.Option) error {
return nil
}
// Name returns the store name
func (c *syncStore) Name() string {
return c.storeOpts.Name
}
// Options returns the sync's store options
func (c *syncStore) Options() store.Options {
return c.storeOpts