add test case for concurrent logins
This commit is contained in:
parent
cf541d62ea
commit
6ab4e9f533
2 changed files with 51 additions and 1 deletions
|
@ -1115,7 +1115,10 @@ func TestUpdateFolderQuotaUsage(t *testing.T) {
|
|||
f.UsedQuotaFiles = usedQuotaFiles
|
||||
f.UsedQuotaSize = usedQuotaSize
|
||||
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)
|
||||
assert.NoError(t, err)
|
||||
_, err = httpd.UpdateFolderQuotaUsage(f, "reset", http.StatusOK)
|
||||
|
|
|
@ -21,7 +21,9 @@ import (
|
|||
"path"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
|
@ -344,6 +346,51 @@ func TestBasicSFTPHandling(t *testing.T) {
|
|||
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) {
|
||||
usePubKey := false
|
||||
user, _, err := httpd.AddUser(getTestUser(usePubKey), http.StatusOK)
|
||||
|
|
Loading…
Add table
Reference in a new issue