add test case for concurrent logins

This commit is contained in:
Nicola Murino 2020-06-27 12:36:42 +02:00
parent cf541d62ea
commit 6ab4e9f533
2 changed files with 51 additions and 1 deletions

View file

@ -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)

View file

@ -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)