5849898283
Unit tests functional and coverage back to 100% Add more routes to dictionary, add more credentials, add default port 5554, rename cameradar logs ENV variable, improve unit test readability, remove tmp file
155 lines
2.7 KiB
Go
155 lines
2.7 KiB
Go
package mem
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestFileDataNameRace(t *testing.T) {
|
|
t.Parallel()
|
|
const someName = "someName"
|
|
const someOtherName = "someOtherName"
|
|
d := FileData{
|
|
name: someName,
|
|
}
|
|
|
|
if d.Name() != someName {
|
|
t.Errorf("Failed to read correct Name, was %v", d.Name())
|
|
}
|
|
|
|
ChangeFileName(&d, someOtherName)
|
|
if d.Name() != someOtherName {
|
|
t.Errorf("Failed to set Name, was %v", d.Name())
|
|
}
|
|
|
|
go func() {
|
|
ChangeFileName(&d, someName)
|
|
}()
|
|
|
|
if d.Name() != someName && d.Name() != someOtherName {
|
|
t.Errorf("Failed to read either Name, was %v", d.Name())
|
|
}
|
|
}
|
|
|
|
func TestFileDataModTimeRace(t *testing.T) {
|
|
t.Parallel()
|
|
someTime := time.Now()
|
|
someOtherTime := someTime.Add(1 * time.Minute)
|
|
|
|
d := FileData{
|
|
modtime: someTime,
|
|
}
|
|
|
|
s := FileInfo{
|
|
FileData: &d,
|
|
}
|
|
|
|
if s.ModTime() != someTime {
|
|
t.Errorf("Failed to read correct value, was %v", s.ModTime())
|
|
}
|
|
|
|
SetModTime(&d, someOtherTime)
|
|
if s.ModTime() != someOtherTime {
|
|
t.Errorf("Failed to set ModTime, was %v", s.ModTime())
|
|
}
|
|
|
|
go func() {
|
|
SetModTime(&d, someTime)
|
|
}()
|
|
|
|
if s.ModTime() != someTime && s.ModTime() != someOtherTime {
|
|
t.Errorf("Failed to read either modtime, was %v", s.ModTime())
|
|
}
|
|
}
|
|
|
|
func TestFileDataModeRace(t *testing.T) {
|
|
t.Parallel()
|
|
const someMode = 0777
|
|
const someOtherMode = 0660
|
|
|
|
d := FileData{
|
|
mode: someMode,
|
|
}
|
|
|
|
s := FileInfo{
|
|
FileData: &d,
|
|
}
|
|
|
|
if s.Mode() != someMode {
|
|
t.Errorf("Failed to read correct value, was %v", s.Mode())
|
|
}
|
|
|
|
SetMode(&d, someOtherMode)
|
|
if s.Mode() != someOtherMode {
|
|
t.Errorf("Failed to set Mode, was %v", s.Mode())
|
|
}
|
|
|
|
go func() {
|
|
SetMode(&d, someMode)
|
|
}()
|
|
|
|
if s.Mode() != someMode && s.Mode() != someOtherMode {
|
|
t.Errorf("Failed to read either mode, was %v", s.Mode())
|
|
}
|
|
}
|
|
|
|
func TestFileDataIsDirRace(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
d := FileData{
|
|
dir: true,
|
|
}
|
|
|
|
s := FileInfo{
|
|
FileData: &d,
|
|
}
|
|
|
|
if s.IsDir() != true {
|
|
t.Errorf("Failed to read correct value, was %v", s.IsDir())
|
|
}
|
|
|
|
go func() {
|
|
s.Lock()
|
|
d.dir = false
|
|
s.Unlock()
|
|
}()
|
|
|
|
//just logging the value to trigger a read:
|
|
t.Logf("Value is %v", s.IsDir())
|
|
}
|
|
|
|
func TestFileDataSizeRace(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
const someData = "Hello"
|
|
const someOtherDataSize = "Hello World"
|
|
|
|
d := FileData{
|
|
data: []byte(someData),
|
|
dir: false,
|
|
}
|
|
|
|
s := FileInfo{
|
|
FileData: &d,
|
|
}
|
|
|
|
if s.Size() != int64(len(someData)) {
|
|
t.Errorf("Failed to read correct value, was %v", s.Size())
|
|
}
|
|
|
|
go func() {
|
|
s.Lock()
|
|
d.data = []byte(someOtherDataSize)
|
|
s.Unlock()
|
|
}()
|
|
|
|
//just logging the value to trigger a read:
|
|
t.Logf("Value is %v", s.Size())
|
|
|
|
//Testing the Dir size case
|
|
d.dir = true
|
|
if s.Size() != int64(42) {
|
|
t.Errorf("Failed to read correct value for dir, was %v", s.Size())
|
|
}
|
|
}
|