Skip to content

Commit 6bc3fb2

Browse files
phlogistonjohnmergify[bot]
authored andcommitted
rbd: clean up rbd encryption load test case
Restructure the existing rbd encryption load test function so that it makes use of defer and uses subtests to divide things up more clearly. I needed to make this change in preparation for adding a binding for rbd_encryption_load2 and a similar test - but I couldn't make sense of the existing test in it's more monolithic form. Signed-off-by: John Mulligan <[email protected]>
1 parent 1e053bb commit 6bc3fb2

File tree

1 file changed

+47
-41
lines changed

1 file changed

+47
-41
lines changed

rbd/encryption_test.go

Lines changed: 47 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,16 @@ func TestEncryptionFormat(t *testing.T) {
4949

5050
func TestEncryptionLoad(t *testing.T) {
5151
conn := radosConnect(t)
52+
defer conn.Shutdown()
5253

5354
poolname := GetUUID()
5455
err := conn.MakePool(poolname)
5556
assert.NoError(t, err)
57+
defer conn.DeletePool(poolname)
5658

5759
ioctx, err := conn.OpenIOContext(poolname)
5860
require.NoError(t, err)
61+
defer ioctx.Destroy()
5962

6063
name := GetUUID()
6164
testImageSize := uint64(1 << 23) // format requires more than 4194304 bytes
@@ -78,55 +81,58 @@ func TestEncryptionLoad(t *testing.T) {
7881
// then write some encrypted data at the end of the image
7982
err = img.Close()
8083
assert.NoError(t, err)
81-
img, err = OpenImage(ioctx, name, NoSnapshot)
82-
err = img.EncryptionLoad(opts)
83-
assert.NoError(t, err)
84+
defer func() {
85+
assert.NoError(t, img.Remove())
86+
}()
8487

85-
outData := []byte("Hi rbd! Nice to talk through go-ceph :)")
86-
87-
stats, err := img.Stat()
88-
require.NoError(t, err)
89-
offset := int64(stats.Size) - int64(len(outData))
90-
91-
nOut, err := img.WriteAt(outData, offset)
92-
assert.Equal(t, len(outData), nOut)
93-
assert.NoError(t, err)
94-
95-
err = img.Close()
96-
assert.NoError(t, err)
88+
testData := []byte("Hi rbd! Nice to talk through go-ceph :)")
89+
var offset int64
9790

98-
// Re-open the image, load the encryption format, and read the encrypted data
99-
img, err = OpenImage(ioctx, name, NoSnapshot)
100-
assert.NoError(t, err)
101-
err = img.EncryptionLoad(opts)
102-
assert.NoError(t, err)
91+
t.Run("prepare", func(t *testing.T) {
92+
img, err = OpenImage(ioctx, name, NoSnapshot)
93+
assert.NoError(t, err)
94+
defer img.Close()
95+
err = img.EncryptionLoad(opts)
96+
assert.NoError(t, err)
10397

104-
inData := make([]byte, len(outData))
105-
nIn, err := img.ReadAt(inData, offset)
106-
assert.Equal(t, nIn, len(inData))
107-
assert.Equal(t, inData, outData)
108-
assert.NoError(t, err)
98+
stats, err := img.Stat()
99+
require.NoError(t, err)
100+
offset = int64(stats.Size) - int64(len(testData))
109101

110-
err = img.Close()
111-
assert.NoError(t, err)
102+
nOut, err := img.WriteAt(testData, offset)
103+
assert.Equal(t, len(testData), nOut)
104+
assert.NoError(t, err)
105+
})
112106

113-
// Re-open the image and attempt to read the encrypted data without loading the encryption
114-
img, err = OpenImage(ioctx, name, NoSnapshot)
115-
assert.NoError(t, err)
107+
t.Run("readEnc", func(t *testing.T) {
108+
require.NotEqual(t, offset, 0)
109+
// Re-open the image, load the encryption format, and read the encrypted data
110+
img, err = OpenImage(ioctx, name, NoSnapshot)
111+
assert.NoError(t, err)
112+
defer img.Close()
113+
err = img.EncryptionLoad(opts)
114+
assert.NoError(t, err)
116115

117-
nIn, err = img.ReadAt(inData, offset)
118-
assert.Equal(t, nIn, len(inData))
119-
assert.NotEqual(t, inData, outData)
120-
assert.NoError(t, err)
116+
inData := make([]byte, len(testData))
117+
nIn, err := img.ReadAt(inData, offset)
118+
assert.Equal(t, nIn, len(inData))
119+
assert.Equal(t, inData, testData)
120+
assert.NoError(t, err)
121+
})
121122

122-
err = img.Close()
123-
assert.NoError(t, err)
124-
err = img.Remove()
125-
assert.NoError(t, err)
123+
t.Run("noEnc", func(t *testing.T) {
124+
require.NotEqual(t, offset, 0)
125+
// Re-open the image and attempt to read the encrypted data without loading the encryption
126+
img, err = OpenImage(ioctx, name, NoSnapshot)
127+
assert.NoError(t, err)
128+
defer img.Close()
126129

127-
ioctx.Destroy()
128-
conn.DeletePool(poolname)
129-
conn.Shutdown()
130+
inData := make([]byte, len(testData))
131+
nIn, err := img.ReadAt(inData, offset)
132+
assert.Equal(t, nIn, len(inData))
133+
assert.NotEqual(t, inData, testData)
134+
assert.NoError(t, err)
135+
})
130136
}
131137

132138
func TestEncryptedResize(t *testing.T) {

0 commit comments

Comments
 (0)