Skip to content
This repository has been archived by the owner on Jul 3, 2023. It is now read-only.

Commit

Permalink
Extend backup tests
Browse files Browse the repository at this point in the history
  • Loading branch information
atanasdinov committed Sep 13, 2022
1 parent 698f555 commit 35729a8
Showing 1 changed file with 128 additions and 14 deletions.
142 changes: 128 additions & 14 deletions backupService_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,20 @@ func TestBackup_Ok(t *testing.T) {
//nolint: staticcheck
ctx := context.WithValue(context.Background(), "source", "test")
mockedStorageService := new(mockStorageService)
mockedStorageService.On("Upload", mock.MatchedBy(isTestContext), mock.AnythingOfType("string"), "database1", "collection1", mock.AnythingOfType("*io.PipeReader")).Return(nil)
mockedStorageService.On("Upload",
mock.MatchedBy(isTestContext),
mock.AnythingOfType("string"),
"database1",
"collection1",
mock.AnythingOfType("*io.PipeReader"),
).Return(nil)
mockedMongoService := new(mockMongoService)
mockedMongoService.On("SaveCollection", mock.MatchedBy(isTestContext), "database1", "collection1", mock.AnythingOfType("*main.snappyWriteCloser")).Return(nil)
mockedMongoService.On("SaveCollection",
mock.MatchedBy(isTestContext),
"database1",
"collection1",
mock.AnythingOfType("*main.snappyWriteCloser"),
).Return(nil)
mockedStatusKeeper := new(mockStatusKeeper)
mockedStatusKeeper.On("Save",
mock.MatchedBy(func(result backupResult) bool {
Expand All @@ -30,13 +41,24 @@ func TestBackup_Ok(t *testing.T) {
assert.NoError(t, err, "Error wasn't expected during backup.")
}

func TestBackup_ErrorOnDump(t *testing.T) {
func TestBackup_ErrorOnSavingCollection(t *testing.T) {
//nolint: staticcheck
ctx := context.WithValue(context.Background(), "source", "test")
mockedStorageService := new(mockStorageService)
mockedStorageService.On("Upload", mock.MatchedBy(isTestContext), mock.AnythingOfType("string"), "database1", "collection1", mock.AnythingOfType("*io.PipeReader")).Return(nil)
mockedStorageService.On("Upload",
mock.MatchedBy(isTestContext),
mock.AnythingOfType("string"),
"database1",
"collection1",
mock.AnythingOfType("*io.PipeReader")).
Return(nil)
mockedMongoService := new(mockMongoService)
mockedMongoService.On("SaveCollection", mock.MatchedBy(isTestContext), "database1", "collection1", mock.AnythingOfType("*main.snappyWriteCloser")).Return(fmt.Errorf("couldn't dump db"))
mockedMongoService.On("SaveCollection",
mock.MatchedBy(isTestContext),
"database1",
"collection1",
mock.AnythingOfType("*main.snappyWriteCloser")).
Return(fmt.Errorf("error saving collection"))
mockedStatusKeeper := new(mockStatusKeeper)
mockedStatusKeeper.On("Save",
mock.MatchedBy(func(result backupResult) bool {
Expand All @@ -49,16 +71,60 @@ func TestBackup_ErrorOnDump(t *testing.T) {
err := backupService.Backup(ctx, []dbColl{{"database1", "collection1"}})

assert.Error(t, err, "Error was expected during backup.")
assert.EqualError(t, err, "dumping failed for database1/collection1: couldn't dump db")
assert.EqualError(t, err, "dumping failed for database1/collection1: error saving collection")
}

func TestBackup_ErrorOnUploadingCollection(t *testing.T) {
//nolint: staticcheck
ctx := context.WithValue(context.Background(), "source", "test")
mockedStorageService := new(mockStorageService)
mockedStorageService.On("Upload",
mock.MatchedBy(isTestContext),
mock.AnythingOfType("string"),
"database1",
"collection1",
mock.AnythingOfType("*io.PipeReader")).
Return(fmt.Errorf("error uploading collection"))
mockedMongoService := new(mockMongoService)
mockedMongoService.On("SaveCollection",
mock.MatchedBy(isTestContext),
"database1",
"collection1",
mock.AnythingOfType("*main.snappyWriteCloser")).
Return(nil)
mockedStatusKeeper := new(mockStatusKeeper)
mockedStatusKeeper.On("Save",
mock.MatchedBy(func(result backupResult) bool {
return !result.Success &&
result.Collection.collection == "collection1" &&
result.Collection.database == "database1"
})).Return(nil)

backupService := newMongoBackupService(mockedMongoService, mockedStorageService, mockedStatusKeeper)
err := backupService.Backup(ctx, []dbColl{{"database1", "collection1"}})

assert.Error(t, err, "Error was expected during backup.")
assert.EqualError(t, err, "dumping failed for database1/collection1: error uploading collection")
}

func TestBackup_ErrorOnSavingStatus(t *testing.T) {
//nolint: staticcheck
ctx := context.WithValue(context.Background(), "source", "test")
mockedStorageService := new(mockStorageService)
mockedStorageService.On("Upload", mock.MatchedBy(isTestContext), mock.AnythingOfType("string"), "database1", "collection1", mock.AnythingOfType("*io.PipeReader")).Return(nil)
mockedStorageService.On("Upload",
mock.MatchedBy(isTestContext),
mock.AnythingOfType("string"),
"database1",
"collection1",
mock.AnythingOfType("*io.PipeReader"),
).Return(nil)
mockedMongoService := new(mockMongoService)
mockedMongoService.On("SaveCollection", mock.MatchedBy(isTestContext), "database1", "collection1", mock.AnythingOfType("*main.snappyWriteCloser")).Return(nil)
mockedMongoService.On("SaveCollection",
mock.MatchedBy(isTestContext),
"database1",
"collection1",
mock.AnythingOfType("*main.snappyWriteCloser"),
).Return(nil)
mockedStatusKeeper := new(mockStatusKeeper)
mockedStatusKeeper.On("Save",
mock.MatchedBy(func(result backupResult) bool {
Expand All @@ -78,29 +144,77 @@ func TestRestore_OK(t *testing.T) {
//nolint: staticcheck
ctx := context.WithValue(context.Background(), "source", "test")
mockedStorageService := new(mockStorageService)
mockedStorageService.On("Download", mock.MatchedBy(isTestContext), "2017-09-04T12-40-36", "database1", "collection1", mock.AnythingOfType("*io.PipeWriter")).Return(nil)
mockedStorageService.On("Download",
mock.MatchedBy(isTestContext),
"2017-09-04T12-40-36",
"database1",
"collection1",
mock.AnythingOfType("*io.PipeWriter"),
).Return(nil)
mockedMongoService := new(mockMongoService)
mockedMongoService.On("RestoreCollection", mock.MatchedBy(isTestContext), "database1", "collection1", mock.AnythingOfType("*main.snappyReadCloser")).Return(nil)
mockedMongoService.On("RestoreCollection",
mock.MatchedBy(isTestContext),
"database1",
"collection1",
mock.AnythingOfType("*main.snappyReadCloser"),
).Return(nil)

backupService := newMongoBackupService(mockedMongoService, mockedStorageService, nil)
err := backupService.Restore(ctx, "2017-09-04T12-40-36", []dbColl{{"database1", "collection1"}})

assert.NoError(t, err, "Error wasn't expected during backup.")
}

func TestRestore_ErrorOnRestore(t *testing.T) {
func TestRestore_ErrorOnRestoringCollection(t *testing.T) {
//nolint: staticcheck
ctx := context.WithValue(context.Background(), "source", "test")
mockedStorageService := new(mockStorageService)
mockedStorageService.On("Download",
mock.MatchedBy(isTestContext),
"2017-09-04T12-40-36",
"database1",
"collection1",
mock.AnythingOfType("*io.PipeWriter"),
).Return(nil)
mockedMongoService := new(mockMongoService)
mockedMongoService.On("RestoreCollection",
mock.MatchedBy(isTestContext),
"database1",
"collection1",
mock.AnythingOfType("*main.snappyReadCloser"),
).Return(fmt.Errorf("error restoring collection"))

backupService := newMongoBackupService(mockedMongoService, mockedStorageService, nil)
err := backupService.Restore(ctx, "2017-09-04T12-40-36", []dbColl{{"database1", "collection1"}})

assert.Error(t, err)
assert.EqualError(t, err, "error restoring collection")
}

func TestRestore_ErrorOnDownloadingCollection(t *testing.T) {
//nolint: staticcheck
ctx := context.WithValue(context.Background(), "source", "test")
mockedStorageService := new(mockStorageService)
mockedStorageService.On("Download", mock.MatchedBy(isTestContext), "2017-09-04T12-40-36", "database1", "collection1", mock.AnythingOfType("*io.PipeWriter")).Return(nil)
mockedStorageService.On("Download",
mock.MatchedBy(isTestContext),
"2017-09-04T12-40-36",
"database1",
"collection1",
mock.AnythingOfType("*io.PipeWriter"),
).Return(fmt.Errorf("error downloading collection"))
mockedMongoService := new(mockMongoService)
mockedMongoService.On("RestoreCollection", mock.MatchedBy(isTestContext), "database1", "collection1", mock.AnythingOfType("*main.snappyReadCloser")).Return(fmt.Errorf("error while restoring"))
mockedMongoService.On("RestoreCollection",
mock.MatchedBy(isTestContext),
"database1",
"collection1",
mock.AnythingOfType("*main.snappyReadCloser"),
).Return(nil)

backupService := newMongoBackupService(mockedMongoService, mockedStorageService, nil)
err := backupService.Restore(ctx, "2017-09-04T12-40-36", []dbColl{{"database1", "collection1"}})

assert.Error(t, err)
assert.EqualError(t, err, "error while restoring")
assert.EqualError(t, err, "error downloading collection")
}

func isTestContext(ctx context.Context) bool {
Expand Down

0 comments on commit 35729a8

Please sign in to comment.