From d7001cac978c522a5b886f84cb554b2dee15ae7d Mon Sep 17 00:00:00 2001 From: Xian Chaobo Date: Wed, 27 May 2015 22:06:15 +0800 Subject: [PATCH] fix import unit test Signed-off-by: Xian Chaobo --- cluster/swarm/cluster.go | 11 ++++------- cluster/swarm/cluster_test.go | 4 ++-- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/cluster/swarm/cluster.go b/cluster/swarm/cluster.go index f407d9e20a..32e0ed7946 100644 --- a/cluster/swarm/cluster.go +++ b/cluster/swarm/cluster.go @@ -382,12 +382,11 @@ func (c *Cluster) Import(source string, repository string, tag string, imageRead var wg sync.WaitGroup c.RLock() pipeWriters := []*io.PipeWriter{} - pipeReaders := []*io.PipeReader{} + for _, n := range c.engines { wg.Add(1) pipeReader, pipeWriter := io.Pipe() - pipeReaders = append(pipeReaders, pipeReader) pipeWriters = append(pipeWriters, pipeWriter) go func(reader *io.PipeReader, nn *cluster.Engine) { @@ -406,16 +405,17 @@ func (c *Cluster) Import(source string, repository string, tag string, imageRead }(pipeReader, n) } + c.RUnlock() // create multi-writer listWriter := []io.Writer{} for _, pipeW := range pipeWriters { listWriter = append(listWriter, pipeW) } - mutiWriter := io.MultiWriter(listWriter...) + multiWriter := io.MultiWriter(listWriter...) // copy image-reader to muti-writer - _, err := io.Copy(mutiWriter, imageReader) + _, err := io.Copy(multiWriter, imageReader) if err != nil { log.Error(err) } @@ -425,10 +425,7 @@ func (c *Cluster) Import(source string, repository string, tag string, imageRead pipeW.Close() } - c.RUnlock() - wg.Wait() - } // Containers returns all the containers in the cluster. diff --git a/cluster/swarm/cluster_test.go b/cluster/swarm/cluster_test.go index 5efa80458e..aaab11a471 100644 --- a/cluster/swarm/cluster_test.go +++ b/cluster/swarm/cluster_test.go @@ -131,7 +131,7 @@ func TestImportImage(t *testing.T) { // import success readCloser := nopCloser{bytes.NewBufferString("ok")} - client.On("ImportImage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(readCloser, nil).Once() + client.On("ImportImage", mock.Anything, mock.Anything, mock.Anything, mock.AnythingOfType("*io.PipeReader")).Return(readCloser, nil).Once() callback := func(what, status string) { // import success @@ -142,7 +142,7 @@ func TestImportImage(t *testing.T) { // import error readCloser = nopCloser{bytes.NewBufferString("error")} err := fmt.Errorf("Import error") - client.On("ImportImage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(readCloser, err).Once() + client.On("ImportImage", mock.Anything, mock.Anything, mock.Anything, mock.AnythingOfType("*io.PipeReader")).Return(readCloser, err).Once() callback = func(what, status string) { // import error