mirror of
https://github.com/status-im/consul.git
synced 2025-01-10 05:45:46 +00:00
65b5c51ec7
This creates a simplified helper for temporary directories and files. All path names are prefixed with the name of the current test. All files and directories are stored either in /tmp/consul-test or /tmp if the former could not be created. Using the system temp dir breaks some tests on macOS where the unix socket path becomes too long.
92 lines
2.0 KiB
Go
92 lines
2.0 KiB
Go
package agent
|
|
|
|
import (
|
|
"os"
|
|
"runtime"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/hashicorp/consul/testutil"
|
|
)
|
|
|
|
func TestAEScale(t *testing.T) {
|
|
intv := time.Minute
|
|
if v := aeScale(intv, 100); v != intv {
|
|
t.Fatalf("Bad: %v", v)
|
|
}
|
|
if v := aeScale(intv, 200); v != 2*intv {
|
|
t.Fatalf("Bad: %v", v)
|
|
}
|
|
if v := aeScale(intv, 1000); v != 4*intv {
|
|
t.Fatalf("Bad: %v", v)
|
|
}
|
|
if v := aeScale(intv, 10000); v != 8*intv {
|
|
t.Fatalf("Bad: %v", v)
|
|
}
|
|
}
|
|
|
|
func TestStringHash(t *testing.T) {
|
|
in := "hello world"
|
|
expected := "5eb63bbbe01eeed093cb22bb8f5acdc3"
|
|
|
|
if out := stringHash(in); out != expected {
|
|
t.Fatalf("bad: %s", out)
|
|
}
|
|
}
|
|
|
|
func TestSetFilePermissions(t *testing.T) {
|
|
if runtime.GOOS == "windows" {
|
|
t.SkipNow()
|
|
}
|
|
tempFile := testutil.TempFile(t, "consul")
|
|
path := tempFile.Name()
|
|
defer os.Remove(path)
|
|
|
|
// Bad UID fails
|
|
if err := setFilePermissions(path, UnixSocketPermissions{Usr: "%"}); err == nil {
|
|
t.Fatalf("should fail")
|
|
}
|
|
|
|
// Bad GID fails
|
|
if err := setFilePermissions(path, UnixSocketPermissions{Grp: "%"}); err == nil {
|
|
t.Fatalf("should fail")
|
|
}
|
|
|
|
// Bad mode fails
|
|
if err := setFilePermissions(path, UnixSocketPermissions{Perms: "%"}); err == nil {
|
|
t.Fatalf("should fail")
|
|
}
|
|
|
|
// Allows omitting user/group/mode
|
|
if err := setFilePermissions(path, UnixSocketPermissions{}); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
|
|
// Doesn't change mode if not given
|
|
if err := os.Chmod(path, 0700); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
if err := setFilePermissions(path, UnixSocketPermissions{}); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
fi, err := os.Stat(path)
|
|
if err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
if fi.Mode().String() != "-rwx------" {
|
|
t.Fatalf("bad: %s", fi.Mode())
|
|
}
|
|
|
|
// Changes mode if given
|
|
if err := setFilePermissions(path, UnixSocketPermissions{Perms: "0777"}); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
fi, err = os.Stat(path)
|
|
if err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
if fi.Mode().String() != "-rwxrwxrwx" {
|
|
t.Fatalf("bad: %s", fi.Mode())
|
|
}
|
|
}
|