fix import unit test

Signed-off-by: Xian Chaobo <xianchaobo@huawei.com>
This commit is contained in:
Xian Chaobo
2015-05-27 22:06:15 +08:00
parent 8da3de3cc4
commit d7001cac97
2 changed files with 6 additions and 9 deletions

View File

@@ -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.

View File

@@ -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