Refactor id generator to it's own package

This commit is contained in:
Jonathan Leibiusky @xetorthio
2017-09-14 10:20:20 -03:00
parent 3ca50eae2e
commit 86a0f7d1e9
9 changed files with 64 additions and 60 deletions

View File

@@ -8,6 +8,7 @@ import (
"github.com/play-with-docker/play-with-docker/config"
"github.com/play-with-docker/play-with-docker/docker"
"github.com/play-with-docker/play-with-docker/event"
"github.com/play-with-docker/play-with-docker/id"
"github.com/play-with-docker/play-with-docker/provisioner"
"github.com/play-with-docker/play-with-docker/pwd/types"
"github.com/play-with-docker/play-with-docker/storage"
@@ -18,11 +19,11 @@ import (
func TestClientNew(t *testing.T) {
_s := &storage.Mock{}
_f := &docker.FactoryMock{}
_g := &mockGenerator{}
_g := &id.MockGenerator{}
_d := &docker.Mock{}
_e := &event.Mock{}
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_f, _s))
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_g, _f, _s))
sp := provisioner.NewOverlaySessionProvisioner(_f)
_g.On("NewId").Return("aaaabbbbcccc")
@@ -59,10 +60,10 @@ func TestClientNew(t *testing.T) {
func TestClientCount(t *testing.T) {
_s := &storage.Mock{}
_f := &docker.FactoryMock{}
_g := &mockGenerator{}
_g := &id.MockGenerator{}
_d := &docker.Mock{}
_e := &event.Mock{}
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_f, _s))
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_g, _f, _s))
sp := provisioner.NewOverlaySessionProvisioner(_f)
_g.On("NewId").Return("aaaabbbbcccc")
@@ -98,10 +99,10 @@ func TestClientCount(t *testing.T) {
func TestClientResizeViewPort(t *testing.T) {
_s := &storage.Mock{}
_f := &docker.FactoryMock{}
_g := &mockGenerator{}
_g := &id.MockGenerator{}
_d := &docker.Mock{}
_e := &event.Mock{}
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_f, _s))
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_g, _f, _s))
sp := provisioner.NewOverlaySessionProvisioner(_f)
_g.On("NewId").Return("aaaabbbbcccc")

View File

@@ -9,6 +9,7 @@ import (
"github.com/play-with-docker/play-with-docker/config"
"github.com/play-with-docker/play-with-docker/docker"
"github.com/play-with-docker/play-with-docker/event"
"github.com/play-with-docker/play-with-docker/id"
"github.com/play-with-docker/play-with-docker/provisioner"
"github.com/play-with-docker/play-with-docker/pwd/types"
"github.com/play-with-docker/play-with-docker/router"
@@ -21,9 +22,9 @@ func TestInstanceResizeTerminal(t *testing.T) {
_d := &docker.Mock{}
_f := &docker.FactoryMock{}
_s := &storage.Mock{}
_g := &mockGenerator{}
_g := &id.MockGenerator{}
_e := &event.Mock{}
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_f, _s))
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_g, _f, _s))
sp := provisioner.NewOverlaySessionProvisioner(_f)
_d.On("ContainerResize", "foobar", uint(24), uint(80)).Return(nil)
@@ -45,9 +46,9 @@ func TestInstanceNew(t *testing.T) {
_d := &docker.Mock{}
_f := &docker.FactoryMock{}
_s := &storage.Mock{}
_g := &mockGenerator{}
_g := &id.MockGenerator{}
_e := &event.Mock{}
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_f, _s))
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_g, _f, _s))
sp := provisioner.NewOverlaySessionProvisioner(_f)
_g.On("NewId").Return("aaaabbbbcccc")
@@ -71,7 +72,7 @@ func TestInstanceNew(t *testing.T) {
assert.Nil(t, err)
expectedInstance := types.Instance{
Name: fmt.Sprintf("%s_node1", session.Id[:8]),
Name: fmt.Sprintf("%s_aaaabbbbcccc", session.Id[:8]),
Hostname: "node1",
IP: "10.0.0.1",
RoutableIP: "10.0.0.1",
@@ -95,7 +96,7 @@ func TestInstanceNew(t *testing.T) {
_d.On("CreateContainer", expectedContainerOpts).Return(nil)
_d.On("GetContainerIPs", expectedInstance.Name).Return(map[string]string{session.Id: "10.0.0.1"}, nil)
_s.On("InstancePut", mock.AnythingOfType("*types.Instance")).Return(nil)
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_node1", "10.0.0.1", "node1", "ip10-0-0-1-aaaabbbbcccc"}).Return()
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_aaaabbbbcccc", "10.0.0.1", "node1", "ip10-0-0-1-aaaabbbbcccc"}).Return()
instance, err := p.InstanceNew(session, types.InstanceConfig{PlaygroundFQDN: "something.play-with-docker.com"})
assert.Nil(t, err)
@@ -113,9 +114,9 @@ func TestInstanceNew_WithNotAllowedImage(t *testing.T) {
_d := &docker.Mock{}
_f := &docker.FactoryMock{}
_s := &storage.Mock{}
_g := &mockGenerator{}
_g := &id.MockGenerator{}
_e := &event.Mock{}
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_f, _s))
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_g, _f, _s))
sp := provisioner.NewOverlaySessionProvisioner(_f)
_g.On("NewId").Return("aaaabbbbcccc")
@@ -140,7 +141,7 @@ func TestInstanceNew_WithNotAllowedImage(t *testing.T) {
assert.Nil(t, err)
expectedInstance := types.Instance{
Name: fmt.Sprintf("%s_node1", session.Id[:8]),
Name: fmt.Sprintf("%s_aaaabbbbcccc", session.Id[:8]),
Hostname: "node1",
IP: "10.0.0.1",
RoutableIP: "10.0.0.1",
@@ -163,7 +164,7 @@ func TestInstanceNew_WithNotAllowedImage(t *testing.T) {
_d.On("CreateContainer", expectedContainerOpts).Return(nil)
_d.On("GetContainerIPs", expectedInstance.Name).Return(map[string]string{session.Id: "10.0.0.1"}, nil)
_s.On("InstancePut", mock.AnythingOfType("*types.Instance")).Return(nil)
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_node1", "10.0.0.1", "node1", "ip10-0-0-1-aaaabbbbcccc"}).Return()
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_aaaabbbbcccc", "10.0.0.1", "node1", "ip10-0-0-1-aaaabbbbcccc"}).Return()
instance, err := p.InstanceNew(session, types.InstanceConfig{ImageName: "redis"})
assert.Nil(t, err)
@@ -181,10 +182,10 @@ func TestInstanceNew_WithCustomHostname(t *testing.T) {
_d := &docker.Mock{}
_f := &docker.FactoryMock{}
_s := &storage.Mock{}
_g := &mockGenerator{}
_g := &id.MockGenerator{}
_e := &event.Mock{}
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_f, _s))
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_g, _f, _s))
sp := provisioner.NewOverlaySessionProvisioner(_f)
_g.On("NewId").Return("aaaabbbbcccc")
@@ -208,7 +209,7 @@ func TestInstanceNew_WithCustomHostname(t *testing.T) {
assert.Nil(t, err)
expectedInstance := types.Instance{
Name: fmt.Sprintf("%s_redis-master", session.Id[:8]),
Name: fmt.Sprintf("%s_aaaabbbbcccc", session.Id[:8]),
Hostname: "redis-master",
IP: "10.0.0.1",
RoutableIP: "10.0.0.1",
@@ -232,7 +233,7 @@ func TestInstanceNew_WithCustomHostname(t *testing.T) {
_d.On("CreateContainer", expectedContainerOpts).Return(nil)
_d.On("GetContainerIPs", expectedInstance.Name).Return(map[string]string{session.Id: "10.0.0.1"}, nil)
_s.On("InstancePut", mock.AnythingOfType("*types.Instance")).Return(nil)
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_redis-master", "10.0.0.1", "redis-master", "ip10-0-0-1-aaaabbbbcccc"}).Return()
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_aaaabbbbcccc", "10.0.0.1", "redis-master", "ip10-0-0-1-aaaabbbbcccc"}).Return()
instance, err := p.InstanceNew(session, types.InstanceConfig{ImageName: "redis", Hostname: "redis-master"})

View File

@@ -8,12 +8,11 @@ import (
"github.com/play-with-docker/play-with-docker/docker"
"github.com/play-with-docker/play-with-docker/event"
"github.com/play-with-docker/play-with-docker/id"
"github.com/play-with-docker/play-with-docker/provisioner"
"github.com/play-with-docker/play-with-docker/pwd/types"
"github.com/play-with-docker/play-with-docker/storage"
"github.com/prometheus/client_golang/prometheus"
"github.com/rs/xid"
"github.com/stretchr/testify/mock"
)
var (
@@ -52,7 +51,7 @@ type pwd struct {
dockerFactory docker.FactoryApi
event event.EventApi
storage storage.StorageApi
generator IdGenerator
generator id.Generator
clientCount int32
sessionProvisioner provisioner.SessionProvisionerApi
instanceProvisionerFactory provisioner.InstanceProvisionerFactoryApi
@@ -60,26 +59,6 @@ type pwd struct {
dindProvisioner provisioner.InstanceProvisionerApi
}
type IdGenerator interface {
NewId() string
}
type xidGenerator struct {
}
func (x xidGenerator) NewId() string {
return xid.New().String()
}
type mockGenerator struct {
mock.Mock
}
func (m *mockGenerator) NewId() string {
args := m.Called()
return args.String(0)
}
var sessionComplete = errors.New("Session is complete")
func SessionComplete(e error) bool {
@@ -118,18 +97,11 @@ type PWDApi interface {
func NewPWD(f docker.FactoryApi, e event.EventApi, s storage.StorageApi, sp provisioner.SessionProvisionerApi, ipf provisioner.InstanceProvisionerFactoryApi) *pwd {
// windowsProvisioner: provisioner.NewWindowsASG(f, s), dindProvisioner: provisioner.NewDinD(f)
return &pwd{dockerFactory: f, event: e, storage: s, generator: xidGenerator{}, sessionProvisioner: sp, instanceProvisionerFactory: ipf}
return &pwd{dockerFactory: f, event: e, storage: s, generator: id.XIDGenerator{}, sessionProvisioner: sp, instanceProvisionerFactory: ipf}
}
func (p *pwd) getProvisioner(t string) (provisioner.InstanceProvisionerApi, error) {
return p.instanceProvisionerFactory.GetProvisioner(t)
/*
if t == "windows" {
return p.windowsProvisioner, nil
} else {
return p.dindProvisioner, nil
}
*/
}
func (p *pwd) setGauges() {

View File

@@ -8,6 +8,7 @@ import (
"github.com/play-with-docker/play-with-docker/config"
"github.com/play-with-docker/play-with-docker/docker"
"github.com/play-with-docker/play-with-docker/event"
"github.com/play-with-docker/play-with-docker/id"
"github.com/play-with-docker/play-with-docker/provisioner"
"github.com/play-with-docker/play-with-docker/storage"
"github.com/stretchr/testify/assert"
@@ -20,10 +21,10 @@ func TestSessionNew(t *testing.T) {
_d := &docker.Mock{}
_f := &docker.FactoryMock{}
_s := &storage.Mock{}
_g := &mockGenerator{}
_g := &id.MockGenerator{}
_e := &event.Mock{}
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_f, _s))
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(_f, _s), provisioner.NewDinD(_g, _f, _s))
sp := provisioner.NewOverlaySessionProvisioner(_f)
_g.On("NewId").Return("aaaabbbbcccc")