The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/2516
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) ===
From 1055ac3d1e69276f315461c514c5ad332a490d98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Mon, 17 Oct 2016 17:22:20 -0400 Subject: [PATCH 1/3] travis: Run the client tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 5380396..d78cf8a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,9 @@ install: script: - "make client" + - "go test ./" + - "go test ./shared" + - "go test ./lxc" notifications: webhooks: https://linuxcontainers.org/webhook-lxcbot/ From 6d4a505a9568029812a55bb8434719bf58a556b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Mon, 17 Oct 2016 17:32:04 -0400 Subject: [PATCH 2/3] Fix tests of client on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2449 Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- client_test.go | 52 --------------------------------------------------- client_unix_test.go | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 52 deletions(-) delete mode 100644 client_test.go create mode 100644 client_unix_test.go diff --git a/client_test.go b/client_test.go deleted file mode 100644 index e7b12a0..0000000 --- a/client_test.go +++ /dev/null @@ -1,52 +0,0 @@ -package lxd - -import ( - "fmt" - "io/ioutil" - "os" - "syscall" - "testing" -) - -func assertNoError(t *testing.T, err error, msg string) { - if err != nil { - t.Fatalf("Error: %s, action: %s", err, msg) - } -} - -func TestLocalLXDError(t *testing.T) { - f, err := ioutil.TempFile("", "lxd-test.socket") - assertNoError(t, err, "ioutil.TempFile to create fake socket file") - defer os.RemoveAll(f.Name()) - - c := &Client{ - Name: "test", - Config: DefaultConfig, - Remote: &RemoteConfig{ - Addr: fmt.Sprintf("unix:%s", f.Name()), - Static: true, - Public: false, - }, - } - runTest := func(exp error) { - lxdErr := GetLocalLXDErr(connectViaUnix(c, c.Remote)) - if lxdErr != exp { - t.Fatalf("GetLocalLXDErr returned the wrong error, EXPECTED: %s, ACTUAL: %s", exp, lxdErr) - } - } - - // The fake socket file should mimic a socket with nobody listening. - runTest(syscall.ECONNREFUSED) - - // Remove R/W permissions to mimic the user not having lxd group permissions. - // Skip this test for root, as root ignores permissions and connect will fail - // with ECONNREFUSED instead of EACCES. - if os.Geteuid() != 0 { - assertNoError(t, f.Chmod(0100), "f.Chmod on fake socket file") - runTest(syscall.EACCES) - } - - // Remove the fake socket to mimic LXD not being installed. - assertNoError(t, os.RemoveAll(f.Name()), "osRemoveAll on fake socket file") - runTest(syscall.ENOENT) -} diff --git a/client_unix_test.go b/client_unix_test.go new file mode 100644 index 0000000..157d8c5 --- /dev/null +++ b/client_unix_test.go @@ -0,0 +1,54 @@ +// +build !windows + +package lxd + +import ( + "fmt" + "io/ioutil" + "os" + "syscall" + "testing" +) + +func assertNoError(t *testing.T, err error, msg string) { + if err != nil { + t.Fatalf("Error: %s, action: %s", err, msg) + } +} + +func TestLocalLXDError(t *testing.T) { + f, err := ioutil.TempFile("", "lxd-test.socket") + assertNoError(t, err, "ioutil.TempFile to create fake socket file") + defer os.RemoveAll(f.Name()) + + c := &Client{ + Name: "test", + Config: DefaultConfig, + Remote: &RemoteConfig{ + Addr: fmt.Sprintf("unix:%s", f.Name()), + Static: true, + Public: false, + }, + } + runTest := func(exp error) { + lxdErr := GetLocalLXDErr(connectViaUnix(c, c.Remote)) + if lxdErr != exp { + t.Fatalf("GetLocalLXDErr returned the wrong error, EXPECTED: %s, ACTUAL: %s", exp, lxdErr) + } + } + + // The fake socket file should mimic a socket with nobody listening. + runTest(syscall.ECONNREFUSED) + + // Remove R/W permissions to mimic the user not having lxd group permissions. + // Skip this test for root, as root ignores permissions and connect will fail + // with ECONNREFUSED instead of EACCES. + if os.Geteuid() != 0 { + assertNoError(t, f.Chmod(0100), "f.Chmod on fake socket file") + runTest(syscall.EACCES) + } + + // Remove the fake socket to mimic LXD not being installed. + assertNoError(t, os.RemoveAll(f.Name()), "osRemoveAll on fake socket file") + runTest(syscall.ENOENT) +} From d6087bda79e996282e6b14001f6f7bf5eba61d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Mon, 17 Oct 2016 17:36:26 -0400 Subject: [PATCH 3/3] shared: Move Linux specific tests away MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2449 Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- shared/util_linux_test.go | 141 ++++++++++++++++++++++++++++++++++++++++++++++ shared/util_test.go | 133 ------------------------------------------- 2 files changed, 141 insertions(+), 133 deletions(-) create mode 100644 shared/util_linux_test.go diff --git a/shared/util_linux_test.go b/shared/util_linux_test.go new file mode 100644 index 0000000..11b1ebb --- /dev/null +++ b/shared/util_linux_test.go @@ -0,0 +1,141 @@ +package shared + +import ( + "fmt" + "io/ioutil" + "os" + "strings" + "syscall" + "testing" +) + +func TestGetAllXattr(t *testing.T) { + var ( + err error + testxattr = map[string]string{ + "user.checksum": "asdfsf13434qwf1324", + "user.random": "This is a test", + } + ) + xattrFile, err := ioutil.TempFile("", "") + if err != nil { + t.Error(err) + return + } + defer os.Remove(xattrFile.Name()) + xattrFile.Close() + + xattrDir, err := ioutil.TempDir("", "") + if err != nil { + t.Error(err) + return + } + defer os.Remove(xattrDir) + + for k, v := range testxattr { + err = syscall.Setxattr(xattrFile.Name(), k, []byte(v), 0) + if err == syscall.ENOTSUP { + t.Log(err) + return + } + if err != nil { + t.Error(err) + return + } + err = syscall.Setxattr(xattrDir, k, []byte(v), 0) + if err == syscall.ENOTSUP { + t.Log(err) + return + } + if err != nil { + t.Error(err) + return + } + } + + // Test retrieval of extended attributes for regular files. + h, err := GetAllXattr(xattrFile.Name()) + if err != nil { + t.Error(err) + return + } + + if h == nil { + t.Errorf("Expected to find extended attributes but did not find any.") + return + } + + for k, v := range h { + found, ok := h[k] + if !ok || found != testxattr[k] { + t.Errorf("Expected to find extended attribute %s with a value of %s on regular file but did not find it.", k, v) + return + } + } + + // Test retrieval of extended attributes for directories. + h, err = GetAllXattr(xattrDir) + if err != nil { + t.Error(err) + return + } + + if h == nil { + t.Errorf("Expected to find extended attributes but did not find any.") + return + } + + for k, v := range h { + found, ok := h[k] + if !ok || found != testxattr[k] { + t.Errorf("Expected to find extended attribute %s with a value of %s on directory but did not find it.", k, v) + return + } + } +} + +func TestReadLastNLines(t *testing.T) { + source, err := ioutil.TempFile("", "") + if err != nil { + t.Error(err) + return + } + defer os.Remove(source.Name()) + + for i := 0; i < 50; i++ { + fmt.Fprintf(source, "%d\n", i) + } + + lines, err := ReadLastNLines(source, 100) + if err != nil { + t.Error(err) + return + } + + split := strings.Split(lines, "\n") + for i := 0; i < 50; i++ { + if fmt.Sprintf("%d", i) != split[i] { + t.Error(fmt.Sprintf("got %s expected %d", split[i], i)) + return + } + } + + source.Seek(0, 0) + for i := 0; i < 150; i++ { + fmt.Fprintf(source, "%d\n", i) + } + + lines, err = ReadLastNLines(source, 100) + if err != nil { + t.Error(err) + return + } + + split = strings.Split(lines, "\n") + for i := 0; i < 100; i++ { + if fmt.Sprintf("%d", i+50) != split[i] { + t.Error(fmt.Sprintf("got %s expected %d", split[i], i)) + return + } + } +} diff --git a/shared/util_test.go b/shared/util_test.go index c469846..458c8fc 100644 --- a/shared/util_test.go +++ b/shared/util_test.go @@ -6,96 +6,9 @@ import ( "fmt" "io/ioutil" "os" - "strings" - "syscall" "testing" ) -func TestGetAllXattr(t *testing.T) { - var ( - err error - testxattr = map[string]string{ - "user.checksum": "asdfsf13434qwf1324", - "user.random": "This is a test", - } - ) - xattrFile, err := ioutil.TempFile("", "") - if err != nil { - t.Error(err) - return - } - defer os.Remove(xattrFile.Name()) - xattrFile.Close() - - xattrDir, err := ioutil.TempDir("", "") - if err != nil { - t.Error(err) - return - } - defer os.Remove(xattrDir) - - for k, v := range testxattr { - err = syscall.Setxattr(xattrFile.Name(), k, []byte(v), 0) - if err == syscall.ENOTSUP { - t.Log(err) - return - } - if err != nil { - t.Error(err) - return - } - err = syscall.Setxattr(xattrDir, k, []byte(v), 0) - if err == syscall.ENOTSUP { - t.Log(err) - return - } - if err != nil { - t.Error(err) - return - } - } - - // Test retrieval of extended attributes for regular files. - h, err := GetAllXattr(xattrFile.Name()) - if err != nil { - t.Error(err) - return - } - - if h == nil { - t.Errorf("Expected to find extended attributes but did not find any.") - return - } - - for k, v := range h { - found, ok := h[k] - if !ok || found != testxattr[k] { - t.Errorf("Expected to find extended attribute %s with a value of %s on regular file but did not find it.", k, v) - return - } - } - - // Test retrieval of extended attributes for directories. - h, err = GetAllXattr(xattrDir) - if err != nil { - t.Error(err) - return - } - - if h == nil { - t.Errorf("Expected to find extended attributes but did not find any.") - return - } - - for k, v := range h { - found, ok := h[k] - if !ok || found != testxattr[k] { - t.Errorf("Expected to find extended attribute %s with a value of %s on directory but did not find it.", k, v) - return - } - } -} - func TestFileCopy(t *testing.T) { helloWorld := []byte("hello world\n") source, err := ioutil.TempFile("", "") @@ -143,52 +56,6 @@ func TestFileCopy(t *testing.T) { } } -func TestReadLastNLines(t *testing.T) { - source, err := ioutil.TempFile("", "") - if err != nil { - t.Error(err) - return - } - defer os.Remove(source.Name()) - - for i := 0; i < 50; i++ { - fmt.Fprintf(source, "%d\n", i) - } - - lines, err := ReadLastNLines(source, 100) - if err != nil { - t.Error(err) - return - } - - split := strings.Split(lines, "\n") - for i := 0; i < 50; i++ { - if fmt.Sprintf("%d", i) != split[i] { - t.Error(fmt.Sprintf("got %s expected %d", split[i], i)) - return - } - } - - source.Seek(0, 0) - for i := 0; i < 150; i++ { - fmt.Fprintf(source, "%d\n", i) - } - - lines, err = ReadLastNLines(source, 100) - if err != nil { - t.Error(err) - return - } - - split = strings.Split(lines, "\n") - for i := 0; i < 100; i++ { - if fmt.Sprintf("%d", i+50) != split[i] { - t.Error(fmt.Sprintf("got %s expected %d", split[i], i)) - return - } - } -} - func TestReaderToChannel(t *testing.T) { buf := make([]byte, 1*1024*1024) rand.Read(buf)
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel