mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2024-12-25 12:59:06 +01:00
Fix bug in fsBackend and add tests for file utils
This commit is contained in:
parent
ab1a9fa781
commit
6d8a3aa256
1
.gitignore
vendored
1
.gitignore
vendored
@ -16,3 +16,4 @@ var/job.db-shm
|
|||||||
var/job.db-wal
|
var/job.db-wal
|
||||||
|
|
||||||
dist/
|
dist/
|
||||||
|
*.db
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg.
|
// Copyright (C) 2023 NHR@FAU, University Erlangen-Nuremberg.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
// Use of this source code is governed by a MIT-style
|
// Use of this source code is governed by a MIT-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
@ -20,6 +20,7 @@ func GetFilesize(filePath string) int64 {
|
|||||||
fileInfo, err := os.Stat(filePath)
|
fileInfo, err := os.Stat(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("Error on Stat %s: %v", filePath, err)
|
log.Errorf("Error on Stat %s: %v", filePath, err)
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
return fileInfo.Size()
|
return fileInfo.Size()
|
||||||
}
|
}
|
||||||
@ -28,6 +29,7 @@ func GetFilecount(path string) int {
|
|||||||
files, err := os.ReadDir(path)
|
files, err := os.ReadDir(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("Error on ReadDir %s: %v", path, err)
|
log.Errorf("Error on ReadDir %s: %v", path, err)
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
return len(files)
|
return len(files)
|
||||||
|
71
internal/util/util_test.go
Normal file
71
internal/util/util_test.go
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
// Copyright (C) 2023 NHR@FAU, University Erlangen-Nuremberg.
|
||||||
|
// All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
package util_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ClusterCockpit/cc-backend/internal/util"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCheckFileExists(t *testing.T) {
|
||||||
|
tmpdir := t.TempDir()
|
||||||
|
filePath := filepath.Join(tmpdir, "version.txt")
|
||||||
|
|
||||||
|
if err := os.WriteFile(filePath, []byte(fmt.Sprintf("%d", 1)), 0666); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if !util.CheckFileExists(filePath) {
|
||||||
|
t.Fatal("expected true, got false")
|
||||||
|
}
|
||||||
|
|
||||||
|
filePath = filepath.Join(tmpdir, "version-test.txt")
|
||||||
|
if util.CheckFileExists(filePath) {
|
||||||
|
t.Fatal("expected false, got true")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetFileSize(t *testing.T) {
|
||||||
|
tmpdir := t.TempDir()
|
||||||
|
filePath := filepath.Join(tmpdir, "data.json")
|
||||||
|
|
||||||
|
if s := util.GetFilesize(filePath); s > 0 {
|
||||||
|
t.Fatalf("expected 0, got %d", s)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := os.WriteFile(filePath, []byte(fmt.Sprintf("%d", 1)), 0666); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if s := util.GetFilesize(filePath); s == 0 {
|
||||||
|
t.Fatal("expected not 0, got 0")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetFileCount(t *testing.T) {
|
||||||
|
tmpdir := t.TempDir()
|
||||||
|
|
||||||
|
if c := util.GetFilecount(tmpdir); c != 0 {
|
||||||
|
t.Fatalf("expected 0, got %d", c)
|
||||||
|
}
|
||||||
|
|
||||||
|
filePath := filepath.Join(tmpdir, "data-1.json")
|
||||||
|
if err := os.WriteFile(filePath, []byte(fmt.Sprintf("%d", 1)), 0666); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
filePath = filepath.Join(tmpdir, "data-2.json")
|
||||||
|
if err := os.WriteFile(filePath, []byte(fmt.Sprintf("%d", 1)), 0666); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if c := util.GetFilecount(tmpdir); c != 2 {
|
||||||
|
t.Fatalf("expected 2, got %d", c)
|
||||||
|
}
|
||||||
|
|
||||||
|
if c := util.GetFilecount(filePath); c != 0 {
|
||||||
|
t.Fatalf("expected 0, got %d", c)
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg.
|
// Copyright (C) 2023 NHR@FAU, University Erlangen-Nuremberg.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
// Use of this source code is governed by a MIT-style
|
// Use of this source code is governed by a MIT-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
@ -348,7 +348,7 @@ func (fsa *FsArchive) Compress(jobs []*schema.Job) {
|
|||||||
|
|
||||||
for _, job := range jobs {
|
for _, job := range jobs {
|
||||||
fileIn := getPath(job, fsa.path, "data.json")
|
fileIn := getPath(job, fsa.path, "data.json")
|
||||||
if !util.CheckFileExists(fileIn) && util.GetFilesize(fileIn) > 2000 {
|
if util.CheckFileExists(fileIn) && util.GetFilesize(fileIn) > 2000 {
|
||||||
util.CompressFile(fileIn, getPath(job, fsa.path, "data.json.gz"))
|
util.CompressFile(fileIn, getPath(job, fsa.path, "data.json.gz"))
|
||||||
cnt++
|
cnt++
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user