Skip to content

Commit

Permalink
MGMT-2977 unit-test for regenerating iso template
Browse files Browse the repository at this point in the history
Added "Regenerates the iso for a new type" unit-test.
  • Loading branch information
danielerez committed Jan 21, 2021
1 parent 0c00277 commit 0942ead
Showing 1 changed file with 43 additions and 13 deletions.
56 changes: 43 additions & 13 deletions internal/bminventory/inventory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,13 @@ var _ = Describe("GenerateClusterISO", func() {
fmt.Sprintf(s3wrapper.DiscoveryImageTemplate, cluster.ID.String())).Return(returnValue).Times(1)
}

rollbackClusterImageCreationDate := func(clusterID *strfmt.UUID) {
updatedTime := time.Now().Add(-11 * time.Second)
updates := map[string]interface{}{}
updates["image_created_at"] = updatedTime
db.Model(&common.Cluster{}).Where("id = ?", clusterID).Updates(updates)
}

It("success", func() {
cluster := registerCluster(true)
clusterId := cluster.ID
Expand Down Expand Up @@ -362,10 +369,7 @@ var _ = Describe("GenerateClusterISO", func() {
})
Expect(generateReply).Should(BeAssignableToTypeOf(installer.NewGenerateClusterISOCreated()))

updatedTime := time.Now().Add(-11 * time.Second)
updates := map[string]interface{}{}
updates["image_created_at"] = updatedTime
db.Model(&common.Cluster{}).Where("id = ?", clusterId).Updates(updates)
rollbackClusterImageCreationDate(clusterId)

newStaticIPsConfig := []*models.StaticIPConfig{{DNS: "dns2",
Gateway: "gateway2",
Expand Down Expand Up @@ -463,11 +467,11 @@ var _ = Describe("GenerateClusterISO", func() {
os.RemoveAll(bm.ISOCacheDir)
})

generateClusterISO := func() middleware.Responder {
generateClusterISO := func(imageType models.ImageType) middleware.Responder {
return bm.GenerateClusterISO(ctx, installer.GenerateClusterISOParams{
ClusterID: *cluster.ID,
ImageCreateParams: &models.ImageCreateParams{
ImageType: models.ImageTypeMinimalIso,
ImageType: imageType,
},
})
}
Expand All @@ -484,14 +488,40 @@ var _ = Describe("GenerateClusterISO", func() {
mockS3Client.EXPECT().GetObjectSizeBytes(gomock.Any(), gomock.Any()).Return(int64(100), nil).Times(1)
mockEvents.EXPECT().AddEvent(gomock.Any(), *cluster.ID, nil, models.EventSeverityInfo, "Generated image (Image type is \"minimal-iso\", SSH public key is not set)", gomock.Any())

generateReply := generateClusterISO()
generateReply := generateClusterISO(models.ImageTypeMinimalIso)
Expect(generateReply).Should(BeAssignableToTypeOf(installer.NewGenerateClusterISOCreated()))
_, err := os.Stat(isoFilePath)
Expect(os.IsNotExist(err)).To(BeTrue())
})

It("Regenerates the iso for a new type", func() {
//TODO
mockS3Client.EXPECT().Upload(gomock.Any(), gomock.Any(), fmt.Sprintf("%s/discovery.ign", cluster.ID)).Times(2)
mockS3Client.EXPECT().GetObjectSizeBytes(gomock.Any(), gomock.Any()).Return(int64(100), nil).Times(2)
mockS3Client.EXPECT().IsAwsS3().Return(false).Times(2)

// Generate full-iso
mockUploadIso(cluster, nil)
mockEvents.EXPECT().AddEvent(gomock.Any(), *cluster.ID, nil, models.EventSeverityInfo, "Generated image (Image type is \"full-iso\", SSH public key is not set)", gomock.Any())
generateReply := generateClusterISO(models.ImageTypeFullIso)
Expect(generateReply).Should(BeAssignableToTypeOf(installer.NewGenerateClusterISOCreated()))

// Rollback cluster's ImageInfo.CreatedAt by 10 seconds to avoid "request came too soon" error
// (see GenerateClusterISOInternal func)
rollbackClusterImageCreationDate(cluster.ID)

// Generate minimal-iso
editor := isoeditor.NewMockEditor(ctrl)
mockIsoEditorFactory.EXPECT().NewEditor(gomock.Any(), cluster.OpenshiftVersion, gomock.Any()).Return(editor, nil)
editor.EXPECT().CreateClusterMinimalISO(gomock.Any()).Return(isoFilePath, nil)
mockS3Client.EXPECT().UploadFile(gomock.Any(), isoFilePath, fmt.Sprintf("discovery-image-%s.iso", cluster.ID))
mockS3Client.EXPECT().GetMinimalIsoObjectName(cluster.OpenshiftVersion).Return("rhcos-minimal.iso", nil)
mockS3Client.EXPECT().DownloadPublic(gomock.Any(), "rhcos-minimal.iso").Return(ioutil.NopCloser(strings.NewReader("totallyaniso")), int64(12), nil)
mockEvents.EXPECT().AddEvent(gomock.Any(), *cluster.ID, nil, models.EventSeverityInfo, "Generated image (Image type is \"minimal-iso\", SSH public key is not set)", gomock.Any())

generateReply = generateClusterISO(models.ImageTypeMinimalIso)
Expect(generateReply).Should(BeAssignableToTypeOf(installer.NewGenerateClusterISOCreated()))
_, err := os.Stat(isoFilePath)
Expect(os.IsNotExist(err)).To(BeTrue())
})

It("Failed to get minimal ISO object name", func() {
Expand All @@ -500,7 +530,7 @@ var _ = Describe("GenerateClusterISO", func() {
mockS3Client.EXPECT().Upload(gomock.Any(), gomock.Any(), fmt.Sprintf("%s/discovery.ign", cluster.ID))
mockS3Client.EXPECT().GetMinimalIsoObjectName(cluster.OpenshiftVersion).Return("", errors.New(expectedErrMsg))

generateReply := generateClusterISO()
generateReply := generateClusterISO(models.ImageTypeMinimalIso)
Expect(generateReply).To(BeAssignableToTypeOf(&common.ApiErrorResponse{}))
Expect(generateReply.(*common.ApiErrorResponse).Error()).Should(Equal(expectedErrMsg))
})
Expand All @@ -512,7 +542,7 @@ var _ = Describe("GenerateClusterISO", func() {
mockS3Client.EXPECT().GetMinimalIsoObjectName(cluster.OpenshiftVersion).Return("rhcos-minimal.iso", nil)
mockS3Client.EXPECT().DownloadPublic(gomock.Any(), "rhcos-minimal.iso").Return(nil, int64(0), errors.New(expectedErrMsg))

generateReply := generateClusterISO()
generateReply := generateClusterISO(models.ImageTypeMinimalIso)
Expect(generateReply).To(BeAssignableToTypeOf(&common.ApiErrorResponse{}))
Expect(generateReply.(*common.ApiErrorResponse).Error()).Should(Equal(expectedErrMsg))
})
Expand All @@ -525,7 +555,7 @@ var _ = Describe("GenerateClusterISO", func() {
mockS3Client.EXPECT().DownloadPublic(gomock.Any(), "rhcos-minimal.iso").Return(ioutil.NopCloser(strings.NewReader("totallyaniso")), int64(12), nil)
mockIsoEditorFactory.EXPECT().NewEditor(gomock.Any(), cluster.OpenshiftVersion, gomock.Any()).Return(nil, errors.New(expectedErrMsg))

generateReply := generateClusterISO()
generateReply := generateClusterISO(models.ImageTypeMinimalIso)
Expect(generateReply).To(BeAssignableToTypeOf(&common.ApiErrorResponse{}))
Expect(generateReply.(*common.ApiErrorResponse).Error()).Should(Equal(expectedErrMsg))
})
Expand All @@ -540,7 +570,7 @@ var _ = Describe("GenerateClusterISO", func() {
mockIsoEditorFactory.EXPECT().NewEditor(gomock.Any(), cluster.OpenshiftVersion, gomock.Any()).Return(editor, nil)
editor.EXPECT().CreateClusterMinimalISO(gomock.Any()).Return("", errors.New(expectedErrMsg))

generateReply := generateClusterISO()
generateReply := generateClusterISO(models.ImageTypeMinimalIso)
Expect(generateReply).To(BeAssignableToTypeOf(&common.ApiErrorResponse{}))
Expect(generateReply.(*common.ApiErrorResponse).Error()).Should(Equal(expectedErrMsg))
})
Expand All @@ -556,7 +586,7 @@ var _ = Describe("GenerateClusterISO", func() {
editor.EXPECT().CreateClusterMinimalISO(gomock.Any()).Return(isoFilePath, nil)
mockS3Client.EXPECT().UploadFile(gomock.Any(), isoFilePath, fmt.Sprintf("discovery-image-%s.iso", cluster.ID)).Return(errors.New(expectedErrMsg))

generateReply := generateClusterISO()
generateReply := generateClusterISO(models.ImageTypeMinimalIso)
Expect(generateReply).To(BeAssignableToTypeOf(&common.ApiErrorResponse{}))
Expect(generateReply.(*common.ApiErrorResponse).Error()).Should(Equal(expectedErrMsg))
})
Expand Down

0 comments on commit 0942ead

Please sign in to comment.