mirror of
https://github.com/skidoodle/safebin.git
synced 2026-04-28 11:17:42 +02:00
@@ -13,10 +13,19 @@ import (
|
||||
func TestCleanup_AbandonedMerge(t *testing.T) {
|
||||
tmpDir := t.TempDir()
|
||||
tmpStorage := filepath.Join(tmpDir, TempDirName)
|
||||
os.MkdirAll(tmpStorage, 0700)
|
||||
if err := os.MkdirAll(tmpStorage, 0700); err != nil {
|
||||
t.Fatalf("MkdirAll failed: %v", err)
|
||||
}
|
||||
|
||||
db, _ := InitDB(tmpDir)
|
||||
defer db.Close()
|
||||
db, err := InitDB(tmpDir)
|
||||
if err != nil {
|
||||
t.Fatalf("InitDB failed: %v", err)
|
||||
}
|
||||
defer func() {
|
||||
if err := db.Close(); err != nil {
|
||||
t.Errorf("Failed to close DB: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
app := &App{
|
||||
Conf: Config{StorageDir: tmpDir},
|
||||
@@ -44,10 +53,19 @@ func TestCleanup_AbandonedMerge(t *testing.T) {
|
||||
func TestCleanup_AbandonedChunks(t *testing.T) {
|
||||
tmpDir := t.TempDir()
|
||||
tmpStorage := filepath.Join(tmpDir, TempDirName)
|
||||
os.MkdirAll(tmpStorage, 0700)
|
||||
if err := os.MkdirAll(tmpStorage, 0700); err != nil {
|
||||
t.Fatalf("MkdirAll failed: %v", err)
|
||||
}
|
||||
|
||||
db, _ := InitDB(tmpDir)
|
||||
defer db.Close()
|
||||
db, err := InitDB(tmpDir)
|
||||
if err != nil {
|
||||
t.Fatalf("InitDB failed: %v", err)
|
||||
}
|
||||
defer func() {
|
||||
if err := db.Close(); err != nil {
|
||||
t.Errorf("Failed to close DB: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
app := &App{
|
||||
Conf: Config{StorageDir: tmpDir},
|
||||
@@ -56,11 +74,17 @@ func TestCleanup_AbandonedChunks(t *testing.T) {
|
||||
}
|
||||
|
||||
chunkDir := filepath.Join(tmpStorage, "some_upload_id")
|
||||
os.MkdirAll(chunkDir, 0700)
|
||||
os.WriteFile(filepath.Join(chunkDir, "0"), []byte("chunk data"), 0600)
|
||||
if err := os.MkdirAll(chunkDir, 0700); err != nil {
|
||||
t.Fatalf("MkdirAll chunkDir failed: %v", err)
|
||||
}
|
||||
if err := os.WriteFile(filepath.Join(chunkDir, "0"), []byte("chunk data"), 0600); err != nil {
|
||||
t.Fatalf("WriteFile chunk failed: %v", err)
|
||||
}
|
||||
|
||||
oldTime := time.Now().Add(-TempExpiry - time.Hour)
|
||||
os.Chtimes(chunkDir, oldTime, oldTime)
|
||||
if err := os.Chtimes(chunkDir, oldTime, oldTime); err != nil {
|
||||
t.Fatalf("Chtimes failed: %v", err)
|
||||
}
|
||||
|
||||
app.CleanTemp(tmpStorage)
|
||||
|
||||
@@ -71,8 +95,15 @@ func TestCleanup_AbandonedChunks(t *testing.T) {
|
||||
|
||||
func TestCleanup_ExpiredStorage(t *testing.T) {
|
||||
storageDir := t.TempDir()
|
||||
db, _ := InitDB(storageDir)
|
||||
defer db.Close()
|
||||
db, err := InitDB(storageDir)
|
||||
if err != nil {
|
||||
t.Fatalf("InitDB failed: %v", err)
|
||||
}
|
||||
defer func() {
|
||||
if err := db.Close(); err != nil {
|
||||
t.Errorf("Failed to close DB: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
app := &App{
|
||||
Conf: Config{
|
||||
@@ -85,9 +116,16 @@ func TestCleanup_ExpiredStorage(t *testing.T) {
|
||||
|
||||
filename := "large_file_id"
|
||||
path := filepath.Join(storageDir, filename)
|
||||
f, _ := os.Create(path)
|
||||
f.Truncate(100 * MegaByte)
|
||||
f.Close()
|
||||
f, err := os.Create(path)
|
||||
if err != nil {
|
||||
t.Fatalf("Create file failed: %v", err)
|
||||
}
|
||||
if err := f.Truncate(100 * MegaByte); err != nil {
|
||||
t.Fatalf("Truncate failed: %v", err)
|
||||
}
|
||||
if err := f.Close(); err != nil {
|
||||
t.Fatalf("Close file failed: %v", err)
|
||||
}
|
||||
|
||||
expiredMeta := FileMeta{
|
||||
ID: filename,
|
||||
@@ -96,11 +134,13 @@ func TestCleanup_ExpiredStorage(t *testing.T) {
|
||||
ExpiresAt: time.Now().Add(-time.Hour),
|
||||
}
|
||||
|
||||
app.DB.Update(func(tx *bbolt.Tx) error {
|
||||
if err := app.DB.Update(func(tx *bbolt.Tx) error {
|
||||
b := tx.Bucket([]byte(DBBucketName))
|
||||
data, _ := json.Marshal(expiredMeta)
|
||||
return b.Put([]byte(filename), data)
|
||||
})
|
||||
}); err != nil {
|
||||
t.Fatalf("DB Update failed: %v", err)
|
||||
}
|
||||
|
||||
app.CleanStorage()
|
||||
|
||||
@@ -108,11 +148,13 @@ func TestCleanup_ExpiredStorage(t *testing.T) {
|
||||
t.Error("Cleanup failed to remove expired large file")
|
||||
}
|
||||
|
||||
app.DB.View(func(tx *bbolt.Tx) error {
|
||||
if err := app.DB.View(func(tx *bbolt.Tx) error {
|
||||
b := tx.Bucket([]byte(DBBucketName))
|
||||
if v := b.Get([]byte(filename)); v != nil {
|
||||
t.Error("Cleanup failed to remove metadata")
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}); err != nil {
|
||||
t.Fatalf("DB View failed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user