Skip to content

Commit 66ffbfa

Browse files
phlogistonjohnmergify[bot]
authored andcommitted
nfs admin: create directories used by nfs tests
Recent changes to ceph check that a directory exists in cephfs before it will allow an NFS export of the dir to be created. It was a pretty shaky practice of ours to create NFS exports without dirs backing them anyhow. This change ensures the dirs exist before the test cases are run and clean them up afterwards. Signed-off-by: John Mulligan <[email protected]>
1 parent 3d47f9d commit 66ffbfa

File tree

1 file changed

+52
-1
lines changed

1 file changed

+52
-1
lines changed

common/admin/nfs/export_test.go

+52-1
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,16 @@ import (
1313
"github.com/stretchr/testify/assert"
1414
tsuite "github.com/stretchr/testify/suite"
1515

16+
"github.com/ceph/go-ceph/cephfs"
1617
"github.com/ceph/go-ceph/internal/admintest"
1718
"github.com/ceph/go-ceph/internal/commands"
1819
"github.com/ceph/go-ceph/rados"
1920
)
2021

21-
var radosConnector = admintest.NewConnector()
22+
var (
23+
radosConnector = admintest.NewConnector()
24+
usableDirNames = []string{"january", "february", "march", "sept"}
25+
)
2226

2327
func TestNFSAdmin(t *testing.T) {
2428
tsuite.Run(t, new(NFSAdminSuite))
@@ -51,6 +55,11 @@ func (suite *NFSAdminSuite) SetupSuite() {
5155
if suite.mockConfig {
5256
suite.setupMockNFSConfig()
5357
}
58+
suite.setupDirs()
59+
}
60+
61+
func (suite *NFSAdminSuite) TearDownSuite() {
62+
suite.removeDirs()
5463
}
5564

5665
func (suite *NFSAdminSuite) setupMockNFSConfig() {
@@ -74,6 +83,48 @@ func (suite *NFSAdminSuite) setupMockNFSConfig() {
7483
require.NoError(err)
7584
}
7685

86+
func (suite *NFSAdminSuite) setupDirs() {
87+
require := suite.Require()
88+
conn := radosConnector.GetConn(suite.T())
89+
fs, err := cephfs.CreateFromRados(conn)
90+
require.NoError(err)
91+
defer func() {
92+
require.NoError(fs.Release())
93+
}()
94+
err = fs.Mount()
95+
require.NoError(err)
96+
defer func() {
97+
require.NoError(fs.Unmount())
98+
}()
99+
100+
// establish a "random" list of dir names to work with
101+
for _, name := range usableDirNames {
102+
err = fs.MakeDir(name, 0777)
103+
require.NoError(err, "failed to make dir "+name)
104+
}
105+
}
106+
107+
func (suite *NFSAdminSuite) removeDirs() {
108+
require := suite.Require()
109+
conn := radosConnector.GetConn(suite.T())
110+
fs, err := cephfs.CreateFromRados(conn)
111+
require.NoError(err)
112+
defer func() {
113+
require.NoError(fs.Release())
114+
}()
115+
err = fs.Mount()
116+
require.NoError(err)
117+
defer func() {
118+
require.NoError(fs.Unmount())
119+
}()
120+
121+
// establish a "random" list of dir names to work with
122+
for _, name := range usableDirNames {
123+
err = fs.RemoveDir(name)
124+
require.NoError(err, "failed to remove dir "+name)
125+
}
126+
}
127+
77128
func (suite *NFSAdminSuite) TestCreateDeleteCephFSExport() {
78129
require := suite.Require()
79130
ra := radosConnector.Get(suite.T())

0 commit comments

Comments
 (0)