Instances in a session should be created sequentially

This commit is contained in:
Jonathan Leibiusky @xetorthio
2017-06-09 10:18:30 -03:00
parent f14e3a137d
commit 84b532b887
2 changed files with 46 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ package pwd
import (
"fmt"
"sync"
"testing"
"time"
@@ -86,6 +87,48 @@ func TestInstanceNew(t *testing.T) {
assert.Equal(t, expectedContainerOpts, containerOpts)
}
func TestInstanceNew_Concurrency(t *testing.T) {
i := 0
dock := &mockDocker{}
dock.createContainer = func(opts docker.CreateContainerOpts) (string, error) {
time.Sleep(time.Second)
i++
return fmt.Sprintf("10.0.0.%d", i), nil
}
tasks := &mockTasks{}
broadcast := &mockBroadcast{}
storage := &mockStorage{}
p := NewPWD(dock, tasks, broadcast, storage)
session, err := p.SessionNew(time.Hour, "", "")
assert.Nil(t, err)
var instance1 *Instance
var instance2 *Instance
wg := sync.WaitGroup{}
wg.Add(2)
go func() {
defer wg.Done()
instance, err := p.InstanceNew(session, InstanceConfig{})
assert.Nil(t, err)
instance1 = instance
}()
go func() {
defer wg.Done()
instance, err := p.InstanceNew(session, InstanceConfig{})
assert.Nil(t, err)
instance2 = instance
}()
wg.Wait()
assert.Subset(t, []string{"node1", "node2"}, []string{instance1.Hostname, instance2.Hostname})
}
func TestInstanceNew_WithNotAllowedImage(t *testing.T) {
containerOpts := docker.CreateContainerOpts{}
dock := &mockDocker{}