2015-07-16 07:38:33 +08:00
|
|
|
package sftp
|
2015-07-16 07:36:15 +08:00
|
|
|
|
|
|
|
import (
|
|
|
|
"syscall"
|
|
|
|
"testing"
|
2020-10-11 18:42:49 +08:00
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
2015-07-16 07:36:15 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestClientStatVFS(t *testing.T) {
|
2016-01-01 22:31:52 +08:00
|
|
|
if *testServerImpl {
|
|
|
|
t.Skipf("go server does not support FXP_EXTENDED")
|
|
|
|
}
|
2019-08-30 23:04:37 +08:00
|
|
|
sftp, cmd := testClient(t, READWRITE, NODELAY)
|
2015-07-16 07:36:15 +08:00
|
|
|
defer cmd.Wait()
|
|
|
|
defer sftp.Close()
|
|
|
|
|
2020-10-11 18:42:49 +08:00
|
|
|
_, ok := sftp.HasExtension("statvfs@openssh.com")
|
|
|
|
require.True(t, ok, "server doesn't list statvfs extension")
|
|
|
|
|
2015-07-16 07:36:15 +08:00
|
|
|
vfs, err := sftp.StatVFS("/")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
// get system stats
|
|
|
|
s := syscall.Statfs_t{}
|
|
|
|
err = syscall.Statfs("/", &s)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
// check some stats
|
|
|
|
if vfs.Frsize != uint64(s.Frsize) {
|
2016-09-23 07:33:00 +08:00
|
|
|
t.Fatalf("fr_size does not match, expected: %v, got: %v", s.Frsize, vfs.Frsize)
|
2015-07-16 07:36:15 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
if vfs.Bsize != uint64(s.Bsize) {
|
2016-09-23 07:33:00 +08:00
|
|
|
t.Fatalf("f_bsize does not match, expected: %v, got: %v", s.Bsize, vfs.Bsize)
|
2015-07-16 07:36:15 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
if vfs.Namemax != uint64(s.Namelen) {
|
2016-09-23 07:33:00 +08:00
|
|
|
t.Fatalf("f_namemax does not match, expected: %v, got: %v", s.Namelen, vfs.Namemax)
|
2015-07-16 07:36:15 +08:00
|
|
|
}
|
|
|
|
}
|