unittests: Fixes unit tests for Windows (part 3)

Currently, there are some unit tests that are failing on Windows due to
various reasons:

- paths not properly joined (filepath.Join should be used).
- Proxy Mode IPVS not supported on Windows.
- DeadlineExceeded can occur when trying to read data from an UDP
  socket. This can be used to detect whether the port was closed or not.
- In Windows, with long file name support enabled, file names can have
  up to 32,767 characters. In this case, the error
  windows.ERROR_FILENAME_EXCED_RANGE will be encountered instead.
- files not closed, which means that they cannot be removed / renamed.
- time.Now() is not as precise on Windows, which means that 2
  consecutive calls may return the same timestamp.
- path.Base() will return the same path. filepath.Base() should be used
  instead.
- path.Join() will always join the paths with a / instead of the OS
  specific separator. filepath.Join() should be used instead.
This commit is contained in:
Claudiu Belu
2022-06-06 10:51:42 +03:00
parent 83415e5c9e
commit 9f95b7b18c
14 changed files with 134 additions and 53 deletions

View File

@@ -20,7 +20,6 @@ limitations under the License.
package fs
import (
"fmt"
"os"
"path/filepath"
"syscall"
@@ -105,7 +104,7 @@ func diskUsage(currPath string, info os.FileInfo) (int64, error) {
for _, file := range files {
if file.IsDir() {
s, err := diskUsage(fmt.Sprintf("%s/%s", currPath, file.Name()), file)
s, err := diskUsage(filepath.Join(currPath, file.Name()), file)
if err != nil {
return size, err
}

View File

@@ -47,6 +47,12 @@ func TestDiskUsage(t *testing.T) {
t.Fatalf("TestDiskUsage failed: %s", err.Error())
}
// File creation is not atomic. If we're calculating the DiskUsage before the data is flushed,
// we'd get zeroes for sizes, and fail with this error:
// TestDiskUsage failed: expected 0, got -1
tmpfile1.Sync()
tmpfile2.Sync()
dirInfo1, err := os.Lstat(dir1)
if err != nil {
t.Fatalf("TestDiskUsage failed: %s", err.Error())