mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 23:00:55 +03:00
add test case for concurrent logins
This commit is contained in:
@@ -1115,7 +1115,10 @@ func TestUpdateFolderQuotaUsage(t *testing.T) {
|
|||||||
f.UsedQuotaFiles = usedQuotaFiles
|
f.UsedQuotaFiles = usedQuotaFiles
|
||||||
f.UsedQuotaSize = usedQuotaSize
|
f.UsedQuotaSize = usedQuotaSize
|
||||||
folder, _, err := httpd.AddFolder(f, http.StatusOK)
|
folder, _, err := httpd.AddFolder(f, http.StatusOK)
|
||||||
assert.NoError(t, err)
|
if assert.NoError(t, err) {
|
||||||
|
assert.Equal(t, usedQuotaFiles, folder.UsedQuotaFiles)
|
||||||
|
assert.Equal(t, usedQuotaSize, folder.UsedQuotaSize)
|
||||||
|
}
|
||||||
_, err = httpd.UpdateFolderQuotaUsage(folder, "invalid mode", http.StatusBadRequest)
|
_, err = httpd.UpdateFolderQuotaUsage(folder, "invalid mode", http.StatusBadRequest)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = httpd.UpdateFolderQuotaUsage(f, "reset", http.StatusOK)
|
_, err = httpd.UpdateFolderQuotaUsage(f, "reset", http.StatusOK)
|
||||||
|
|||||||
@@ -21,7 +21,9 @@ import (
|
|||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -344,6 +346,51 @@ func TestBasicSFTPHandling(t *testing.T) {
|
|||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestConcurrentLogins(t *testing.T) {
|
||||||
|
usePubKey := true
|
||||||
|
u := getTestUser(usePubKey)
|
||||||
|
user, _, err := httpd.AddUser(u, http.StatusOK)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
numLogins := 50
|
||||||
|
testFileName := "test_file.dat"
|
||||||
|
testFilePath := filepath.Join(homeBasePath, testFileName)
|
||||||
|
testFileSize := int64(65535)
|
||||||
|
err = createTestFile(testFilePath, testFileSize)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
for i := 0; i < numLogins; i++ {
|
||||||
|
wg.Add(1)
|
||||||
|
go func(counter int) {
|
||||||
|
client, err := getSftpClient(user, usePubKey)
|
||||||
|
if assert.NoError(t, err) {
|
||||||
|
defer wg.Done()
|
||||||
|
defer client.Close()
|
||||||
|
err = checkBasicSFTP(client)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
err = sftpUploadFile(testFilePath, testFileName+strconv.Itoa(counter), testFileSize, client)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
}(i)
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
|
||||||
|
client, err := getSftpClient(user, usePubKey)
|
||||||
|
if assert.NoError(t, err) {
|
||||||
|
defer client.Close()
|
||||||
|
files, err := client.ReadDir(".")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Len(t, files, numLogins)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = os.Remove(testFilePath)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
_, err = httpd.RemoveUser(user, http.StatusOK)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
err = os.RemoveAll(user.GetHomeDir())
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
func TestProxyProtocol(t *testing.T) {
|
func TestProxyProtocol(t *testing.T) {
|
||||||
usePubKey := false
|
usePubKey := false
|
||||||
user, _, err := httpd.AddUser(getTestUser(usePubKey), http.StatusOK)
|
user, _, err := httpd.AddUser(getTestUser(usePubKey), http.StatusOK)
|
||||||
|
|||||||
Reference in New Issue
Block a user