Refactor id generator to it's own package
This commit is contained in:
3
api.go
3
api.go
@@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/play-with-docker/play-with-docker/docker"
|
"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/event"
|
||||||
"github.com/play-with-docker/play-with-docker/handlers"
|
"github.com/play-with-docker/play-with-docker/handlers"
|
||||||
|
"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/provisioner"
|
||||||
"github.com/play-with-docker/play-with-docker/pwd"
|
"github.com/play-with-docker/play-with-docker/pwd"
|
||||||
"github.com/play-with-docker/play-with-docker/scheduler"
|
"github.com/play-with-docker/play-with-docker/scheduler"
|
||||||
@@ -22,7 +23,7 @@ func main() {
|
|||||||
s := initStorage()
|
s := initStorage()
|
||||||
f := initFactory(s)
|
f := initFactory(s)
|
||||||
|
|
||||||
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(f, s), provisioner.NewDinD(f, s))
|
ipf := provisioner.NewInstanceProvisionerFactory(provisioner.NewWindowsASG(f, s), provisioner.NewDinD(id.XIDGenerator{}, f, s))
|
||||||
sp := provisioner.NewOverlaySessionProvisioner(f)
|
sp := provisioner.NewOverlaySessionProvisioner(f)
|
||||||
|
|
||||||
core := pwd.NewPWD(f, e, s, sp, ipf)
|
core := pwd.NewPWD(f, e, s, sp, ipf)
|
||||||
|
|||||||
5
id/generator.go
Normal file
5
id/generator.go
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package id
|
||||||
|
|
||||||
|
type Generator interface {
|
||||||
|
NewId() string
|
||||||
|
}
|
||||||
12
id/mock.go
Normal file
12
id/mock.go
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package id
|
||||||
|
|
||||||
|
import "github.com/stretchr/testify/mock"
|
||||||
|
|
||||||
|
type MockGenerator struct {
|
||||||
|
mock.Mock
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MockGenerator) NewId() string {
|
||||||
|
args := m.Called()
|
||||||
|
return args.String(0)
|
||||||
|
}
|
||||||
10
id/xid.go
Normal file
10
id/xid.go
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package id
|
||||||
|
|
||||||
|
import "github.com/rs/xid"
|
||||||
|
|
||||||
|
type XIDGenerator struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x XIDGenerator) NewId() string {
|
||||||
|
return xid.New().String()
|
||||||
|
}
|
||||||
@@ -12,19 +12,20 @@ import (
|
|||||||
|
|
||||||
"github.com/play-with-docker/play-with-docker/config"
|
"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/docker"
|
||||||
|
"github.com/play-with-docker/play-with-docker/id"
|
||||||
"github.com/play-with-docker/play-with-docker/pwd/types"
|
"github.com/play-with-docker/play-with-docker/pwd/types"
|
||||||
"github.com/play-with-docker/play-with-docker/router"
|
"github.com/play-with-docker/play-with-docker/router"
|
||||||
"github.com/play-with-docker/play-with-docker/storage"
|
"github.com/play-with-docker/play-with-docker/storage"
|
||||||
"github.com/rs/xid"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type DinD struct {
|
type DinD struct {
|
||||||
factory docker.FactoryApi
|
factory docker.FactoryApi
|
||||||
storage storage.StorageApi
|
storage storage.StorageApi
|
||||||
|
generator id.Generator
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDinD(f docker.FactoryApi, s storage.StorageApi) *DinD {
|
func NewDinD(generator id.Generator, f docker.FactoryApi, s storage.StorageApi) *DinD {
|
||||||
return &DinD{factory: f, storage: s}
|
return &DinD{generator: generator, factory: f, storage: s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkHostnameExists(sessionId, hostname string, instances []*types.Instance) bool {
|
func checkHostnameExists(sessionId, hostname string, instances []*types.Instance) bool {
|
||||||
@@ -59,7 +60,7 @@ func (d *DinD) InstanceNew(session *types.Session, conf types.InstanceConfig) (*
|
|||||||
}
|
}
|
||||||
conf.Hostname = nodeName
|
conf.Hostname = nodeName
|
||||||
}
|
}
|
||||||
containerName := fmt.Sprintf("%s_%s", session.Id[:8], xid.New().String())
|
containerName := fmt.Sprintf("%s_%s", session.Id[:8], d.generator.NewId())
|
||||||
opts := docker.CreateContainerOpts{
|
opts := docker.CreateContainerOpts{
|
||||||
Image: conf.ImageName,
|
Image: conf.ImageName,
|
||||||
SessionId: session.Id,
|
SessionId: session.Id,
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/play-with-docker/play-with-docker/config"
|
"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/docker"
|
||||||
"github.com/play-with-docker/play-with-docker/event"
|
"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/provisioner"
|
||||||
"github.com/play-with-docker/play-with-docker/pwd/types"
|
"github.com/play-with-docker/play-with-docker/pwd/types"
|
||||||
"github.com/play-with-docker/play-with-docker/storage"
|
"github.com/play-with-docker/play-with-docker/storage"
|
||||||
@@ -18,11 +19,11 @@ import (
|
|||||||
func TestClientNew(t *testing.T) {
|
func TestClientNew(t *testing.T) {
|
||||||
_s := &storage.Mock{}
|
_s := &storage.Mock{}
|
||||||
_f := &docker.FactoryMock{}
|
_f := &docker.FactoryMock{}
|
||||||
_g := &mockGenerator{}
|
_g := &id.MockGenerator{}
|
||||||
_d := &docker.Mock{}
|
_d := &docker.Mock{}
|
||||||
_e := &event.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)
|
sp := provisioner.NewOverlaySessionProvisioner(_f)
|
||||||
|
|
||||||
_g.On("NewId").Return("aaaabbbbcccc")
|
_g.On("NewId").Return("aaaabbbbcccc")
|
||||||
@@ -59,10 +60,10 @@ func TestClientNew(t *testing.T) {
|
|||||||
func TestClientCount(t *testing.T) {
|
func TestClientCount(t *testing.T) {
|
||||||
_s := &storage.Mock{}
|
_s := &storage.Mock{}
|
||||||
_f := &docker.FactoryMock{}
|
_f := &docker.FactoryMock{}
|
||||||
_g := &mockGenerator{}
|
_g := &id.MockGenerator{}
|
||||||
_d := &docker.Mock{}
|
_d := &docker.Mock{}
|
||||||
_e := &event.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)
|
sp := provisioner.NewOverlaySessionProvisioner(_f)
|
||||||
|
|
||||||
_g.On("NewId").Return("aaaabbbbcccc")
|
_g.On("NewId").Return("aaaabbbbcccc")
|
||||||
@@ -98,10 +99,10 @@ func TestClientCount(t *testing.T) {
|
|||||||
func TestClientResizeViewPort(t *testing.T) {
|
func TestClientResizeViewPort(t *testing.T) {
|
||||||
_s := &storage.Mock{}
|
_s := &storage.Mock{}
|
||||||
_f := &docker.FactoryMock{}
|
_f := &docker.FactoryMock{}
|
||||||
_g := &mockGenerator{}
|
_g := &id.MockGenerator{}
|
||||||
_d := &docker.Mock{}
|
_d := &docker.Mock{}
|
||||||
_e := &event.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)
|
sp := provisioner.NewOverlaySessionProvisioner(_f)
|
||||||
|
|
||||||
_g.On("NewId").Return("aaaabbbbcccc")
|
_g.On("NewId").Return("aaaabbbbcccc")
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/play-with-docker/play-with-docker/config"
|
"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/docker"
|
||||||
"github.com/play-with-docker/play-with-docker/event"
|
"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/provisioner"
|
||||||
"github.com/play-with-docker/play-with-docker/pwd/types"
|
"github.com/play-with-docker/play-with-docker/pwd/types"
|
||||||
"github.com/play-with-docker/play-with-docker/router"
|
"github.com/play-with-docker/play-with-docker/router"
|
||||||
@@ -21,9 +22,9 @@ func TestInstanceResizeTerminal(t *testing.T) {
|
|||||||
_d := &docker.Mock{}
|
_d := &docker.Mock{}
|
||||||
_f := &docker.FactoryMock{}
|
_f := &docker.FactoryMock{}
|
||||||
_s := &storage.Mock{}
|
_s := &storage.Mock{}
|
||||||
_g := &mockGenerator{}
|
_g := &id.MockGenerator{}
|
||||||
_e := &event.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)
|
sp := provisioner.NewOverlaySessionProvisioner(_f)
|
||||||
|
|
||||||
_d.On("ContainerResize", "foobar", uint(24), uint(80)).Return(nil)
|
_d.On("ContainerResize", "foobar", uint(24), uint(80)).Return(nil)
|
||||||
@@ -45,9 +46,9 @@ func TestInstanceNew(t *testing.T) {
|
|||||||
_d := &docker.Mock{}
|
_d := &docker.Mock{}
|
||||||
_f := &docker.FactoryMock{}
|
_f := &docker.FactoryMock{}
|
||||||
_s := &storage.Mock{}
|
_s := &storage.Mock{}
|
||||||
_g := &mockGenerator{}
|
_g := &id.MockGenerator{}
|
||||||
_e := &event.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)
|
sp := provisioner.NewOverlaySessionProvisioner(_f)
|
||||||
|
|
||||||
_g.On("NewId").Return("aaaabbbbcccc")
|
_g.On("NewId").Return("aaaabbbbcccc")
|
||||||
@@ -71,7 +72,7 @@ func TestInstanceNew(t *testing.T) {
|
|||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
expectedInstance := types.Instance{
|
expectedInstance := types.Instance{
|
||||||
Name: fmt.Sprintf("%s_node1", session.Id[:8]),
|
Name: fmt.Sprintf("%s_aaaabbbbcccc", session.Id[:8]),
|
||||||
Hostname: "node1",
|
Hostname: "node1",
|
||||||
IP: "10.0.0.1",
|
IP: "10.0.0.1",
|
||||||
RoutableIP: "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("CreateContainer", expectedContainerOpts).Return(nil)
|
||||||
_d.On("GetContainerIPs", expectedInstance.Name).Return(map[string]string{session.Id: "10.0.0.1"}, 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)
|
_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"})
|
instance, err := p.InstanceNew(session, types.InstanceConfig{PlaygroundFQDN: "something.play-with-docker.com"})
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
@@ -113,9 +114,9 @@ func TestInstanceNew_WithNotAllowedImage(t *testing.T) {
|
|||||||
_d := &docker.Mock{}
|
_d := &docker.Mock{}
|
||||||
_f := &docker.FactoryMock{}
|
_f := &docker.FactoryMock{}
|
||||||
_s := &storage.Mock{}
|
_s := &storage.Mock{}
|
||||||
_g := &mockGenerator{}
|
_g := &id.MockGenerator{}
|
||||||
_e := &event.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)
|
sp := provisioner.NewOverlaySessionProvisioner(_f)
|
||||||
|
|
||||||
_g.On("NewId").Return("aaaabbbbcccc")
|
_g.On("NewId").Return("aaaabbbbcccc")
|
||||||
@@ -140,7 +141,7 @@ func TestInstanceNew_WithNotAllowedImage(t *testing.T) {
|
|||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
expectedInstance := types.Instance{
|
expectedInstance := types.Instance{
|
||||||
Name: fmt.Sprintf("%s_node1", session.Id[:8]),
|
Name: fmt.Sprintf("%s_aaaabbbbcccc", session.Id[:8]),
|
||||||
Hostname: "node1",
|
Hostname: "node1",
|
||||||
IP: "10.0.0.1",
|
IP: "10.0.0.1",
|
||||||
RoutableIP: "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("CreateContainer", expectedContainerOpts).Return(nil)
|
||||||
_d.On("GetContainerIPs", expectedInstance.Name).Return(map[string]string{session.Id: "10.0.0.1"}, 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)
|
_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"})
|
instance, err := p.InstanceNew(session, types.InstanceConfig{ImageName: "redis"})
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
@@ -181,10 +182,10 @@ func TestInstanceNew_WithCustomHostname(t *testing.T) {
|
|||||||
_d := &docker.Mock{}
|
_d := &docker.Mock{}
|
||||||
_f := &docker.FactoryMock{}
|
_f := &docker.FactoryMock{}
|
||||||
_s := &storage.Mock{}
|
_s := &storage.Mock{}
|
||||||
_g := &mockGenerator{}
|
_g := &id.MockGenerator{}
|
||||||
_e := &event.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)
|
sp := provisioner.NewOverlaySessionProvisioner(_f)
|
||||||
|
|
||||||
_g.On("NewId").Return("aaaabbbbcccc")
|
_g.On("NewId").Return("aaaabbbbcccc")
|
||||||
@@ -208,7 +209,7 @@ func TestInstanceNew_WithCustomHostname(t *testing.T) {
|
|||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
expectedInstance := types.Instance{
|
expectedInstance := types.Instance{
|
||||||
Name: fmt.Sprintf("%s_redis-master", session.Id[:8]),
|
Name: fmt.Sprintf("%s_aaaabbbbcccc", session.Id[:8]),
|
||||||
Hostname: "redis-master",
|
Hostname: "redis-master",
|
||||||
IP: "10.0.0.1",
|
IP: "10.0.0.1",
|
||||||
RoutableIP: "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("CreateContainer", expectedContainerOpts).Return(nil)
|
||||||
_d.On("GetContainerIPs", expectedInstance.Name).Return(map[string]string{session.Id: "10.0.0.1"}, 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)
|
_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"})
|
instance, err := p.InstanceNew(session, types.InstanceConfig{ImageName: "redis", Hostname: "redis-master"})
|
||||||
|
|
||||||
|
|||||||
34
pwd/pwd.go
34
pwd/pwd.go
@@ -8,12 +8,11 @@ import (
|
|||||||
|
|
||||||
"github.com/play-with-docker/play-with-docker/docker"
|
"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/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/provisioner"
|
||||||
"github.com/play-with-docker/play-with-docker/pwd/types"
|
"github.com/play-with-docker/play-with-docker/pwd/types"
|
||||||
"github.com/play-with-docker/play-with-docker/storage"
|
"github.com/play-with-docker/play-with-docker/storage"
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
"github.com/rs/xid"
|
|
||||||
"github.com/stretchr/testify/mock"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -52,7 +51,7 @@ type pwd struct {
|
|||||||
dockerFactory docker.FactoryApi
|
dockerFactory docker.FactoryApi
|
||||||
event event.EventApi
|
event event.EventApi
|
||||||
storage storage.StorageApi
|
storage storage.StorageApi
|
||||||
generator IdGenerator
|
generator id.Generator
|
||||||
clientCount int32
|
clientCount int32
|
||||||
sessionProvisioner provisioner.SessionProvisionerApi
|
sessionProvisioner provisioner.SessionProvisionerApi
|
||||||
instanceProvisionerFactory provisioner.InstanceProvisionerFactoryApi
|
instanceProvisionerFactory provisioner.InstanceProvisionerFactoryApi
|
||||||
@@ -60,26 +59,6 @@ type pwd struct {
|
|||||||
dindProvisioner provisioner.InstanceProvisionerApi
|
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")
|
var sessionComplete = errors.New("Session is complete")
|
||||||
|
|
||||||
func SessionComplete(e error) bool {
|
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 {
|
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)
|
// 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) {
|
func (p *pwd) getProvisioner(t string) (provisioner.InstanceProvisionerApi, error) {
|
||||||
return p.instanceProvisionerFactory.GetProvisioner(t)
|
return p.instanceProvisionerFactory.GetProvisioner(t)
|
||||||
/*
|
|
||||||
if t == "windows" {
|
|
||||||
return p.windowsProvisioner, nil
|
|
||||||
} else {
|
|
||||||
return p.dindProvisioner, nil
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *pwd) setGauges() {
|
func (p *pwd) setGauges() {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/play-with-docker/play-with-docker/config"
|
"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/docker"
|
||||||
"github.com/play-with-docker/play-with-docker/event"
|
"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/provisioner"
|
||||||
"github.com/play-with-docker/play-with-docker/storage"
|
"github.com/play-with-docker/play-with-docker/storage"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@@ -20,10 +21,10 @@ func TestSessionNew(t *testing.T) {
|
|||||||
_d := &docker.Mock{}
|
_d := &docker.Mock{}
|
||||||
_f := &docker.FactoryMock{}
|
_f := &docker.FactoryMock{}
|
||||||
_s := &storage.Mock{}
|
_s := &storage.Mock{}
|
||||||
_g := &mockGenerator{}
|
_g := &id.MockGenerator{}
|
||||||
_e := &event.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)
|
sp := provisioner.NewOverlaySessionProvisioner(_f)
|
||||||
|
|
||||||
_g.On("NewId").Return("aaaabbbbcccc")
|
_g.On("NewId").Return("aaaabbbbcccc")
|
||||||
|
|||||||
Reference in New Issue
Block a user