Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker Devfile Component Sync and Execution #2922

Merged
merged 17 commits into from
Apr 27, 2020
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix current tests for devfile docker exec sync
Signed-off-by: Maysun J Faisal <maysun.j.faisal@ibm.com>
maysunfaisal committed Apr 27, 2020
commit 3b5a181c11cb512119704a61ba352ada10c3a1ec
33 changes: 29 additions & 4 deletions pkg/devfile/adapters/docker/component/utils_test.go
Original file line number Diff line number Diff line change
@@ -125,7 +125,7 @@ func TestUpdateComponent(t *testing.T) {
}

componentAdapter := New(adapterCtx, *tt.client)
err := componentAdapter.updateComponent()
_, err := componentAdapter.updateComponent()

// Checks for unexpected error cases
if !tt.wantErr == (err != nil) {
@@ -307,17 +307,22 @@ func TestGenerateAndGetHostConfig(t *testing.T) {
testComponentName := "test"
componentType := versionsCommon.DevfileComponentTypeDockerimage

endpointName := []string{"8080/tcp", "9090/tcp", "9080/tcp"}
var endpointPort = []int32{8080, 9090, 9080}

tests := []struct {
name string
urlValue []envinfo.EnvInfoURL
expectResult nat.PortMap
client *lclient.Client
endpoints []versionsCommon.DockerimageEndpoint
}{
{
name: "Case 1: no port mappings",
urlValue: []envinfo.EnvInfoURL{},
expectResult: nil,
client: fakeClient,
endpoints: []versionsCommon.DockerimageEndpoint{},
},
{
name: "Case 2: only one port mapping",
@@ -333,6 +338,12 @@ func TestGenerateAndGetHostConfig(t *testing.T) {
},
},
client: fakeClient,
endpoints: []versionsCommon.DockerimageEndpoint{
{
Name: &endpointName[0],
Port: &endpointPort[0],
},
},
},
{
name: "Case 3: multiple port mappings",
@@ -362,6 +373,20 @@ func TestGenerateAndGetHostConfig(t *testing.T) {
},
},
client: fakeClient,
endpoints: []versionsCommon.DockerimageEndpoint{
{
Name: &endpointName[0],
Port: &endpointPort[0],
},
{
Name: &endpointName[1],
Port: &endpointPort[1],
},
{
Name: &endpointName[2],
Port: &endpointPort[2],
},
},
},
}
for _, tt := range tests {
@@ -382,14 +407,14 @@ func TestGenerateAndGetHostConfig(t *testing.T) {
if err != nil {
t.Error(err)
}
for _, element := range tt.urlValue {
err = esi.SetConfiguration("URL", element)
for _, url := range tt.urlValue {
err = esi.SetConfiguration("URL", url)
if err != nil {
t.Error(err)
}
}
componentAdapter := New(adapterCtx, *tt.client)
hostConfig, err := componentAdapter.generateAndGetHostConfig()
hostConfig, err := componentAdapter.generateAndGetHostConfig(tt.endpoints)
if err != nil {
t.Error(err)
}
68 changes: 39 additions & 29 deletions pkg/devfile/adapters/docker/utils/utils_test.go
Original file line number Diff line number Diff line change
@@ -44,10 +44,12 @@ func TestComponentExists(t *testing.T) {
}

for _, tt := range tests {
cmpExists := ComponentExists(*tt.client, tt.componentName)
if tt.want != cmpExists {
t.Errorf("expected %v, wanted %v", cmpExists, tt.want)
}
t.Run(tt.name, func(t *testing.T) {
cmpExists := ComponentExists(*tt.client, tt.componentName)
if tt.want != cmpExists {
t.Errorf("expected %v, wanted %v", cmpExists, tt.want)
}
})
}
}

@@ -95,10 +97,12 @@ func TestConvertEnvs(t *testing.T) {
}

for _, tt := range tests {
envVars := ConvertEnvs(tt.envVars)
if !reflect.DeepEqual(tt.want, envVars) {
t.Errorf("expected %v, wanted %v", envVars, tt.want)
}
t.Run(tt.name, func(t *testing.T) {
envVars := ConvertEnvs(tt.envVars)
if !reflect.DeepEqual(tt.want, envVars) {
t.Errorf("expected %v, wanted %v", envVars, tt.want)
}
})
}
}

@@ -369,16 +373,18 @@ func TestDoesContainerNeedUpdating(t *testing.T) {
}

for _, tt := range tests {
component := common.DevfileComponent{
DevfileComponentDockerimage: common.DevfileComponentDockerimage{
Image: &tt.image,
Env: tt.envVars,
},
}
needsUpdating := DoesContainerNeedUpdating(component, &tt.containerConfig, &tt.hostConfig, tt.mounts, tt.containerMounts, tt.portmap)
if needsUpdating != tt.want {
t.Errorf("expected %v, wanted %v", needsUpdating, tt.want)
}
t.Run(tt.name, func(t *testing.T) {
component := common.DevfileComponent{
DevfileComponentDockerimage: common.DevfileComponentDockerimage{
Image: &tt.image,
Env: tt.envVars,
},
}
needsUpdating := DoesContainerNeedUpdating(component, &tt.containerConfig, &tt.hostConfig, tt.mounts, tt.containerMounts, tt.portmap)
if needsUpdating != tt.want {
t.Errorf("expected %v, wanted %v", needsUpdating, tt.want)
}
})
}
}

@@ -463,13 +469,15 @@ func TestAddProjectVolumeToComp(t *testing.T) {
},
}
for _, tt := range tests {
hostConfig := container.HostConfig{
Mounts: tt.mounts,
}
AddVolumeToContainer(projectVolumeName, lclient.OdoSourceVolumeMount, &hostConfig)
if !reflect.DeepEqual(tt.want, hostConfig) {
t.Errorf("expected %v, actual %v", tt.want, hostConfig)
}
t.Run(tt.name, func(t *testing.T) {
hostConfig := container.HostConfig{
Mounts: tt.mounts,
}
AddVolumeToContainer(projectVolumeName, lclient.OdoSourceVolumeMount, &hostConfig)
if !reflect.DeepEqual(tt.want, hostConfig) {
t.Errorf("expected %v, actual %v", tt.want, hostConfig)
}
})
}

}
@@ -499,10 +507,12 @@ func TestGetProjectVolumeLabels(t *testing.T) {
},
}
for _, tt := range tests {
labels := GetProjectVolumeLabels(tt.componentName)
if !reflect.DeepEqual(tt.want, labels) {
t.Errorf("expected %v, actual %v", tt.want, labels)
}
t.Run(tt.name, func(t *testing.T) {
labels := GetProjectVolumeLabels(tt.componentName)
if !reflect.DeepEqual(tt.want, labels) {
t.Errorf("expected %v, actual %v", tt.want, labels)
}
})
}

}
59 changes: 33 additions & 26 deletions pkg/lclient/containers_test.go
Original file line number Diff line number Diff line change
@@ -195,15 +195,17 @@ func TestGetContainersList(t *testing.T) {
},
}
for _, tt := range tests {
containers, err := tt.client.GetContainerList()
t.Run(tt.name, func(t *testing.T) {
containers, err := tt.client.GetContainerList()

if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}

if !reflect.DeepEqual(tt.wantContainers, containers) {
t.Errorf("Expected %v, got %v", tt.wantContainers, containers)
}
if !reflect.DeepEqual(tt.wantContainers, containers) {
t.Errorf("Expected %v, got %v", tt.wantContainers, containers)
}
})
}
}

@@ -229,10 +231,12 @@ func TestStartContainer(t *testing.T) {
},
}
for _, tt := range tests {
err := tt.client.StartContainer(&fakeContainer, nil, nil)
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}
t.Run(tt.name, func(t *testing.T) {
err := tt.client.StartContainer(&fakeContainer, nil, nil)
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}
})
}
}

@@ -258,10 +262,12 @@ func TestRemoveContainer(t *testing.T) {
},
}
for _, tt := range tests {
err := tt.client.RemoveContainer(fakeContainerID)
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}
t.Run(tt.name, func(t *testing.T) {
err := tt.client.RemoveContainer(fakeContainerID)
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}
})
}
}

@@ -283,21 +289,22 @@ func TestRemoveVolume(t *testing.T) {
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {

ctrl := gomock.NewController(t)
defer ctrl.Finish()

client, mockDockerClient := FakeNewMockClient(ctrl)
ctrl := gomock.NewController(t)
defer ctrl.Finish()

if !tt.wantErr {
mockDockerClient.EXPECT().VolumeRemove(gomock.Any(), gomock.Eq(tt.volumeToRemove), gomock.Eq(true)).Return(nil)
}
client, mockDockerClient := FakeNewMockClient(ctrl)

err := client.RemoveVolume(tt.volumeToRemove)
if !tt.wantErr {
mockDockerClient.EXPECT().VolumeRemove(gomock.Any(), gomock.Eq(tt.volumeToRemove), gomock.Eq(true)).Return(nil)
}

if !tt.wantErr == (err != nil) {
t.Errorf("expected %v but wanted %v", err, tt.wantErr)
}
err := client.RemoveVolume(tt.volumeToRemove)

if !tt.wantErr == (err != nil) {
t.Errorf("expected %v but wanted %v", err, tt.wantErr)
}
})
}
}
21 changes: 13 additions & 8 deletions pkg/lclient/generators_test.go
Original file line number Diff line number Diff line change
@@ -76,14 +76,17 @@ func TestGenerateContainerConfig(t *testing.T) {
"8080/tcp": struct{}{},
"9080/tcp": struct{}{},
},
User: "root",
},
},
}
for _, tt := range tests {
config := fakeClient.GenerateContainerConfig(tt.image, tt.entrypoint, tt.cmd, tt.envVars, tt.labels, tt.portset)
if !reflect.DeepEqual(tt.want, config) {
t.Errorf("expected %v, actual %v", tt.want, config)
}
t.Run(tt.name, func(t *testing.T) {
config := fakeClient.GenerateContainerConfig(tt.image, tt.entrypoint, tt.cmd, tt.envVars, tt.labels, tt.portset)
if !reflect.DeepEqual(tt.want, config) {
t.Errorf("expected %v, actual %v", tt.want, config)
}
})
}
}

@@ -142,9 +145,11 @@ func TestGenerateHostConfig(t *testing.T) {
},
}
for _, tt := range tests {
config := fakeClient.GenerateHostConfig(tt.want.Privileged, tt.want.PublishAllPorts, tt.want.PortBindings)
if !reflect.DeepEqual(tt.want, config) {
t.Errorf("expected %v, actual %v", tt.want, config)
}
t.Run(tt.name, func(t *testing.T) {
config := fakeClient.GenerateHostConfig(tt.want.Privileged, tt.want.PublishAllPorts, tt.want.PortBindings)
if !reflect.DeepEqual(tt.want, config) {
t.Errorf("expected %v, actual %v", tt.want, config)
}
})
}
}
10 changes: 6 additions & 4 deletions pkg/lclient/images_test.go
Original file line number Diff line number Diff line change
@@ -24,9 +24,11 @@ func TestPullImage(t *testing.T) {
},
}
for _, tt := range tests {
err := tt.client.PullImage("dummyImage")
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}
t.Run(tt.name, func(t *testing.T) {
err := tt.client.PullImage("dummyImage")
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}
})
}
}
32 changes: 18 additions & 14 deletions pkg/lclient/storage_test.go
Original file line number Diff line number Diff line change
@@ -55,14 +55,16 @@ func TestCreateVolume(t *testing.T) {
},
}
for _, tt := range tests {
volume, err := tt.client.CreateVolume("", tt.labels)
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}
t.Run(tt.name, func(t *testing.T) {
volume, err := tt.client.CreateVolume("", tt.labels)
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}

if !reflect.DeepEqual(volume, tt.wantVolume) {
t.Errorf("expected %v, wanted %v", volume, tt.wantVolume)
}
if !reflect.DeepEqual(volume, tt.wantVolume) {
t.Errorf("expected %v, wanted %v", volume, tt.wantVolume)
}
})
}
}

@@ -131,13 +133,15 @@ func TestGetVolumesByLabel(t *testing.T) {
},
}
for _, tt := range tests {
volumes, err := tt.client.GetVolumesByLabel(tt.labels)
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}
t.Run(tt.name, func(t *testing.T) {
volumes, err := tt.client.GetVolumesByLabel(tt.labels)
if !tt.wantErr == (err != nil) {
t.Errorf("expected %v, wanted %v", err, tt.wantErr)
}

if !reflect.DeepEqual(volumes, tt.wantVolumes) {
t.Errorf("expected %v, wanted %v", volumes, tt.wantVolumes)
}
if !reflect.DeepEqual(volumes, tt.wantVolumes) {
t.Errorf("expected %v, wanted %v", volumes, tt.wantVolumes)
}
})
}
}