|
@@ -1564,6 +1564,74 @@ func TestEnableIPv6(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func TestResolvConfHost(t *testing.T) {
|
|
|
+ if !netutils.IsRunningInContainer() {
|
|
|
+ defer netutils.SetupTestNetNS(t)()
|
|
|
+ }
|
|
|
+
|
|
|
+ tmpResolvConf := []byte("search localhost.net\nnameserver 127.0.0.1\nnameserver 2001:4860:4860::8888")
|
|
|
+
|
|
|
+ //take a copy of resolv.conf for restoring after test completes
|
|
|
+ resolvConfSystem, err := ioutil.ReadFile("/etc/resolv.conf")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ //cleanup
|
|
|
+ defer func() {
|
|
|
+ if err := ioutil.WriteFile("/etc/resolv.conf", resolvConfSystem, 0644); err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ n, err := controller.NetworkByName("testhost")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ ep1, err := n.CreateEndpoint("ep1", nil)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if err := ioutil.WriteFile("/etc/resolv.conf", tmpResolvConf, 0644); err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ resolvConfPath := "/tmp/libnetwork_test/resolv.conf"
|
|
|
+ defer os.Remove(resolvConfPath)
|
|
|
+
|
|
|
+ err = ep1.Join(containerID,
|
|
|
+ libnetwork.JoinOptionResolvConfPath(resolvConfPath))
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ err = ep1.Leave(containerID)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ finfo, err := os.Stat(resolvConfPath)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ fmode := (os.FileMode)(0644)
|
|
|
+ if finfo.Mode() != fmode {
|
|
|
+ t.Fatalf("Expected file mode %s, got %s", fmode.String(), finfo.Mode().String())
|
|
|
+ }
|
|
|
+
|
|
|
+ content, err := ioutil.ReadFile(resolvConfPath)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if !bytes.Equal(content, tmpResolvConf) {
|
|
|
+ t.Fatalf("Expected %s, Got %s", string(tmpResolvConf), string(content))
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func TestResolvConf(t *testing.T) {
|
|
|
if !netutils.IsRunningInContainer() {
|
|
|
defer netutils.SetupTestNetNS(t)()
|