Skip to content

Commit

Permalink
add unit-tests for peerblockpool
Browse files Browse the repository at this point in the history
Signed-off-by: Rewant Soni <[email protected]>
  • Loading branch information
rewantsoni committed May 14, 2024
1 parent c681a2b commit cdf297c
Showing 1 changed file with 95 additions and 0 deletions.
95 changes: 95 additions & 0 deletions services/provider/server/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
"k8s.io/apimachinery/pkg/types"
"strconv"
"testing"

Expand Down Expand Up @@ -939,3 +940,97 @@ func TestOCSProviderServerGetStorageClaimConfig(t *testing.T) {
assert.Equal(t, errCode.Code(), codes.Internal)
assert.Nil(t, storageConRes)
}

func TestPeerBlockPool(t *testing.T) {

cephBlockPoolName := "ocs-storagecluster-cephblockpool"
bootstrapSecretName := "bootstrap-secret-UUID"

cephBlockPool := rookCephv1.CephBlockPool{
ObjectMeta: metav1.ObjectMeta{
Name: cephBlockPoolName,
Namespace: serverNamespace,
},
}

cephRBDMirror := rookCephv1.CephRBDMirror{}

testCases := []struct {
label string
objects []crClient.Object
req *pb.PeerBlockPoolRequest
errMessage string
}{
{
label: "No CephBlockPool found - Empty Pool Name",
objects: nil,
req: &pb.PeerBlockPoolRequest{SecretName: "", Pool: nil, Token: nil},
errMessage: "Failed to find CephBlockPool",
},
{
label: "No CephBlockPool found - BlockPool not present",
objects: nil,
req: &pb.PeerBlockPoolRequest{SecretName: "", Pool: []byte(cephBlockPoolName), Token: nil},
errMessage: "Failed to find CephBlockPool",
},
{
label: "Invalid Secret Name",
objects: []crClient.Object{&cephBlockPool},
req: &pb.PeerBlockPoolRequest{SecretName: "", Pool: []byte(cephBlockPoolName), Token: nil},
errMessage: "failed to create/update the bootstrap secret",
},
{
label: "Valid Cephblockpool",
objects: []crClient.Object{&cephBlockPool},
req: &pb.PeerBlockPoolRequest{SecretName: bootstrapSecretName, Pool: []byte(cephBlockPoolName), Token: nil},
errMessage: "",
},
}

ctx := context.TODO()

for i := 0; i < len(testCases); i++ {

// Create a fake client to mock API calls.
client := newFakeClient(t, testCases[i].objects...)

cephBlockPoolManager, err := newCephBlockPoolManager(client, serverNamespace)
assert.NoError(t, err)

cephRBDMirrorManager, err := newCephRBDMirrorManager(client, serverNamespace)
assert.NoError(t, err)

server := &OCSProviderServer{
client: client,
cephBlockPoolManager: cephBlockPoolManager,
cephRBDMirrorManager: cephRBDMirrorManager,
namespace: serverNamespace,
}

_, err = server.PeerBlockPool(ctx, testCases[i].req)
if testCases[i].errMessage != "" {
assert.ErrorContains(t, err, testCases[i].errMessage)
} else {
assert.NoError(t, err)

//validate that cephRBDMirror is created
err := client.Get(ctx, types.NamespacedName{Name: rBDMirrorName, Namespace: serverNamespace}, &cephRBDMirror)
assert.NoError(t, err)

//validate that mirroring is enabled with mirror mode as "image" on the block pool and the bootstrap secret is set
actualCephBlockPool := rookCephv1.CephBlockPool{}
err = client.Get(ctx, types.NamespacedName{Name: cephBlockPoolName, Namespace: serverNamespace}, &actualCephBlockPool)
assert.NoError(t, err)

assert.Equal(t, rookCephv1.MirroringSpec{
Enabled: true,
Mode: "image",
Peers: &rookCephv1.MirroringPeerSpec{
SecretNames: []string{bootstrapSecretName},
}},
actualCephBlockPool.Spec.Mirroring)
}

}

}

0 comments on commit cdf297c

Please sign in to comment.