168 lines
4.2 KiB
Go
168 lines
4.2 KiB
Go
package remotefileupload
|
|
|
|
import (
|
|
"context"
|
|
"sync"
|
|
"testing"
|
|
)
|
|
|
|
var (
|
|
guard = make(chan struct{}, 100)
|
|
)
|
|
|
|
func TestAzureBlobURL(t *testing.T) {
|
|
backup := NewBackup("", "", "")
|
|
var inputs = []struct {
|
|
base string
|
|
filePath string
|
|
expected string
|
|
}{
|
|
{ // Test case 1: basePath is empty, filePath is empty
|
|
base: "",
|
|
filePath: "",
|
|
expected: "",
|
|
},
|
|
{ // Test case 2: basePath is not empty, filePath is empty
|
|
base: "/base",
|
|
filePath: "",
|
|
expected: "/base",
|
|
},
|
|
{ // Test case 3: basePath is not empty, filePath is not empty
|
|
base: "/base",
|
|
filePath: "dir1/dir2",
|
|
expected: "/base/dir1/dir2",
|
|
},
|
|
{ // Test case 4: basePath is empty, filePath is not empty
|
|
base: "",
|
|
filePath: "dir1/dir2/dir3/raw.csv",
|
|
expected: "dir1/dir2/dir3/raw.csv",
|
|
},
|
|
{ // Test case 4: worng basePath, filePath file path
|
|
base: "/base//",
|
|
filePath: "//dir1/dir2/dir3/raw.csv",
|
|
expected: "/base/dir1/dir2/dir3/raw.csv",
|
|
},
|
|
}
|
|
|
|
for _, input := range inputs {
|
|
result := backup.azureBlobURL(input.base, input.filePath)
|
|
if result != input.expected {
|
|
t.Errorf("Expected %s, got %s", input.expected, result)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
func TestRemove(t *testing.T) {
|
|
t.Skip()
|
|
ctx := context.Background()
|
|
backup := NewBackup("fakeAccount", "fakeAccountKey", "fakeContainer")
|
|
fakePath := "fakeDir1/fakeDir2/file.txt"
|
|
|
|
err := backup.remove(ctx, fakePath)
|
|
|
|
if err != nil {
|
|
t.Errorf("Expected no error, got %v", err.Error())
|
|
}
|
|
|
|
}
|
|
|
|
func TestSetTTL(t *testing.T) {
|
|
t.Skip()
|
|
ctx := context.Background()
|
|
backup := NewBackup("fakeAccount", "fakeAccountKey", "fakeContainer")
|
|
fakeFileUrl := "https://fakeAccount.blob.core.windows.net/fakeContainer/fakeDir1/fakeDir2/file.txt"
|
|
|
|
err := backup.setTTL(ctx, fakeFileUrl)
|
|
|
|
if err != nil {
|
|
t.Errorf("Expected no error, got %v", err.Error())
|
|
}
|
|
|
|
}
|
|
|
|
func TestGetContainerPath(t *testing.T) {
|
|
inputes := []struct {
|
|
containerName string
|
|
expected string
|
|
}{
|
|
{"container1", "https://fakeAccount.blob.core.windows.net/container1/"},
|
|
{"container2", "https://fakeAccount.blob.core.windows.net/container2/"},
|
|
{"container3", "https://fakeAccount.blob.core.windows.net/container3/"},
|
|
}
|
|
backup := NewBackup("fakeAccount", "fakeAccountKey", "fakeContainer")
|
|
|
|
for _, input := range inputes {
|
|
result := backup.getContainerPath(input.containerName)
|
|
if result != input.expected {
|
|
t.Errorf("Expected %v, got %v", input.expected, result)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestMove(t *testing.T) {
|
|
t.Skip()
|
|
ctx := context.Background()
|
|
backup := NewBackup("fakeAccount", "fakeAccountKey", "fakeContainer")
|
|
|
|
fakeFilePath := "fakeDir1/fakeDir2/file.txt"
|
|
|
|
err := backup.Move(ctx, fakeFilePath)
|
|
|
|
if err != nil {
|
|
t.Errorf("Expected no error, got %v", err.Error())
|
|
}
|
|
}
|
|
|
|
func TestChangeFileExt(t *testing.T) {
|
|
backup := NewBackup("fakeAccount", "fakeAccountKey", "fakeContainer")
|
|
inputs := []struct {
|
|
fileUrl string
|
|
ext string
|
|
expected string
|
|
}{
|
|
{"document.pdf", "txt", "document.txt"},
|
|
{"dir1/dir2/document.txt", "pdf", "dir1/dir2/document.pdf"},
|
|
{"", "pdf", ".pdf"},
|
|
{"document", "txt", "document.txt"},
|
|
{"document", ".txt", "document.txt"},
|
|
{"document.txt", ".pdf", "document.pdf"},
|
|
{"https://fakeAccount.blob.core.windows.net/fakeContainer/fakeVin/fakeVersion/yyyy/mm/dd/raw.csv", ".parquet", "https://fakeAccount.blob.core.windows.net/fakeContainer/fakeVin/fakeVersion/yyyy/mm/dd/raw.parquet"},
|
|
{"fakeVin/fakeVersion/yyyy/mm/dd/file.txt", "pdf", "fakeVin/fakeVersion/yyyy/mm/dd/file.pdf"},
|
|
}
|
|
|
|
for _, input := range inputs {
|
|
result := backup.changeFileExt(input.fileUrl, input.ext)
|
|
if result != input.expected {
|
|
t.Errorf("Expected %v, got %v", input.expected, result)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestToParquet(t *testing.T) {
|
|
|
|
t.Skip()
|
|
backup := NewBackup("fakeAccount", "fakeAccountKey", "fakeContainer")
|
|
|
|
fakeFilePath := []string{
|
|
"fakeVin1/fakeVersion1/yyyy/mm/dd/raw.csv",
|
|
"fakeVin2/fakeVersion2/yyyy/mm/dd/raw.csv",
|
|
"fakeVin3/fakeVersio3/yyyy/mm/dd/raw.csv",
|
|
}
|
|
|
|
var wg sync.WaitGroup
|
|
for _, url := range fakeFilePath {
|
|
wg.Add(1)
|
|
go func(url string) {
|
|
defer wg.Done()
|
|
err := backup.ToParquet(url, guard)
|
|
if err != nil {
|
|
t.Errorf("Expected nil error, got %v", err.Error())
|
|
}
|
|
}(url)
|
|
}
|
|
|
|
wg.Wait()
|
|
|
|
}
|