55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
|
package util
|
||
|
|
||
|
import (
|
||
|
"io/ioutil"
|
||
|
"net"
|
||
|
"os"
|
||
|
"testing"
|
||
|
"time"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func prepareTestDir() string {
|
||
|
const dir = "./agh-test"
|
||
|
_ = os.RemoveAll(dir)
|
||
|
_ = os.MkdirAll(dir, 0755)
|
||
|
return dir
|
||
|
}
|
||
|
|
||
|
func TestAutoHosts(t *testing.T) {
|
||
|
ah := AutoHosts{}
|
||
|
|
||
|
dir := prepareTestDir()
|
||
|
defer func() { _ = os.RemoveAll(dir) }()
|
||
|
|
||
|
f, _ := ioutil.TempFile(dir, "")
|
||
|
defer os.Remove(f.Name())
|
||
|
defer f.Close()
|
||
|
|
||
|
_, _ = f.WriteString(" 127.0.0.1 host localhost \n")
|
||
|
|
||
|
ah.Init(f.Name())
|
||
|
ah.Start()
|
||
|
// wait until we parse the file
|
||
|
time.Sleep(50 * time.Millisecond)
|
||
|
|
||
|
ips := ah.Process("localhost")
|
||
|
assert.True(t, ips[0].Equal(net.ParseIP("127.0.0.1")))
|
||
|
ips = ah.Process("newhost")
|
||
|
assert.True(t, len(ips) == 0)
|
||
|
|
||
|
table := ah.List()
|
||
|
ips, _ = table["host"]
|
||
|
assert.True(t, ips[0].String() == "127.0.0.1")
|
||
|
|
||
|
_, _ = f.WriteString("127.0.0.2 newhost\n")
|
||
|
// wait until fsnotify has triggerred and processed the file-modification event
|
||
|
time.Sleep(50 * time.Millisecond)
|
||
|
|
||
|
ips = ah.Process("newhost")
|
||
|
assert.True(t, ips[0].Equal(net.ParseIP("127.0.0.2")))
|
||
|
|
||
|
ah.Close()
|
||
|
}
|