3
3
package smb
4
4
5
5
import (
6
+ "strings"
6
7
"testing"
7
8
"time"
8
9
9
10
"github.com/stretchr/testify/assert"
10
11
"github.com/stretchr/testify/require"
11
12
tsuite "github.com/stretchr/testify/suite"
12
13
14
+ fsadmin "github.com/ceph/go-ceph/cephfs/admin"
13
15
"github.com/ceph/go-ceph/common/admin/manager"
14
16
"github.com/ceph/go-ceph/internal/admintest"
15
17
"github.com/ceph/go-ceph/internal/commands"
@@ -33,10 +35,12 @@ func (suite *SMBAdminSuite) SetupSuite() {
33
35
suite .vconn = admintest .NewConnector ()
34
36
suite .disableOrch ()
35
37
suite .enableSMB ()
36
- suite .waitForSMB ()
38
+ suite .waitForSMBResponsive ()
39
+ suite .configureSubVolume ()
37
40
}
38
41
39
42
func (suite * SMBAdminSuite ) TearDownSuite () {
43
+ suite .removeSubVolume ()
40
44
suite .disableSMB ()
41
45
}
42
46
@@ -45,10 +49,13 @@ func (suite *SMBAdminSuite) enableSMB() {
45
49
t .Logf ("enabling smb module" )
46
50
mgradmin := manager .NewFromConn (suite .vconn .Get (t ))
47
51
err := mgradmin .EnableModule (modName , true )
52
+ if err != nil && strings .Contains (err .Error (), "already enabled" ) {
53
+ return
54
+ }
48
55
assert .NoError (t , err )
49
56
}
50
57
51
- func (suite * SMBAdminSuite ) waitForSMB () {
58
+ func (suite * SMBAdminSuite ) waitForSMBOLD () {
52
59
t := suite .T ()
53
60
t .Logf ("waiting for smb module" )
54
61
time .Sleep (100 * time .Millisecond )
@@ -68,6 +75,19 @@ func (suite *SMBAdminSuite) waitForSMB() {
68
75
t .Fatalf ("timed out waiting for smb module" )
69
76
}
70
77
78
+ func (suite * SMBAdminSuite ) waitForSMBResponsive () {
79
+ // wait until smb module is responsive
80
+ sa := NewFromConn (suite .vconn .Get (suite .T ()))
81
+ for i := 0 ; i < 30 ; i ++ {
82
+ _ , err := sa .Show (nil , nil )
83
+ if err == nil {
84
+ return
85
+ }
86
+ time .Sleep (200 * time .Millisecond )
87
+ }
88
+ suite .T ().Fatalf ("show command never succeeded - module not ready?" )
89
+ }
90
+
71
91
func (suite * SMBAdminSuite ) disableSMB () {
72
92
suite .T ().Logf ("disabling smb module" )
73
93
mgradmin := manager .NewFromConn (suite .vconn .Get (suite .T ()))
@@ -92,16 +112,25 @@ func (suite *SMBAdminSuite) disableOrch() {
92
112
assert .NoError (suite .T (), err )
93
113
}
94
114
115
+ func (suite * SMBAdminSuite ) configureSubVolume () {
116
+ // set up a subvolume for use by smb commands
117
+ fsa := fsadmin .NewFromConn (suite .vconn .Get (suite .T ()))
118
+ err := fsa .CreateSubVolumeGroup ("cephfs" , "smb" , nil )
119
+ assert .NoError (suite .T (), err )
120
+ err = fsa .CreateSubVolume ("cephfs" , "smb" , "v1" , nil )
121
+ assert .NoError (suite .T (), err )
122
+ }
123
+
124
+ func (suite * SMBAdminSuite ) removeSubVolume () {
125
+ fsa := fsadmin .NewFromConn (suite .vconn .Get (suite .T ()))
126
+ err := fsa .RemoveSubVolume ("cephfs" , "smb" , "v1" )
127
+ assert .NoError (suite .T (), err )
128
+ err = fsa .RemoveSubVolumeGroup ("cephfs" , "smb" )
129
+ assert .NoError (suite .T (), err )
130
+ }
131
+
95
132
func (suite * SMBAdminSuite ) SetupTest () {
96
- // wait until smb module is responsive
97
- sa := NewFromConn (suite .vconn .Get (suite .T ()))
98
- for i := 0 ; i < 30 ; i ++ {
99
- _ , err := sa .Show (nil , nil )
100
- if err == nil {
101
- return
102
- }
103
- time .Sleep (200 * time .Millisecond )
104
- }
133
+ suite .waitForSMBResponsive ()
105
134
}
106
135
107
136
func (suite * SMBAdminSuite ) TearDownTest () {
@@ -173,7 +202,7 @@ func (suite *SMBAdminSuite) TestRemoveShare() {
173
202
174
203
r := []Resource {
175
204
NewActiveDirectoryCluster ("cc1" , "zoid" ),
176
- NewShare ("cc1" , "zap" ).SetCephFS ("cephfs" , "" , "" , "/" ),
205
+ NewShare ("cc1" , "zap" ).SetCephFS ("cephfs" , "smb " , "v1 " , "/" ),
177
206
}
178
207
rg , err := sa .Apply (r , nil )
179
208
assert .NoError (t , err )
@@ -231,7 +260,7 @@ func (suite *SMBAdminSuite) TestShowSelect() {
231
260
},
232
261
[]GroupInfo {{"clients" }},
233
262
)
234
- share := NewShare ("cc1" , "ss1" ).SetCephFS ("cephfs" , "" , "" , "/" )
263
+ share := NewShare ("cc1" , "ss1" ).SetCephFS ("cephfs" , "smb " , "v1 " , "/" )
235
264
rgroup , err := sa .Apply ([]Resource {cluster , ug , share }, nil )
236
265
assert .NoError (t , err )
237
266
assert .True (t , rgroup .Ok ())
0 commit comments