[ARVADOS] updated: 82f30795293f8e84fe5b43710938f246d6604119

git at public.curoverse.com git at public.curoverse.com
Fri Mar 28 11:10:48 EDT 2014


Summary of changes:
 services/keep/keep.go      |    6 ++-
 services/keep/keep_test.go |   78 +++++++++++++++++++++++++++++++++++++++----
 2 files changed, 74 insertions(+), 10 deletions(-)

       via  82f30795293f8e84fe5b43710938f246d6604119 (commit)
      from  231b9f25a701e9bdbb69b61135d4856647dcce55 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 82f30795293f8e84fe5b43710938f246d6604119
Author: Tim Pierce <twp at curoverse.com>
Date:   Fri Mar 28 11:08:11 2014 -0400

    Unit test for FindKeepVolumes (refs #2295)

diff --git a/services/keep/keep.go b/services/keep/keep.go
index 06a81b6..345f95d 100644
--- a/services/keep/keep.go
+++ b/services/keep/keep.go
@@ -15,6 +15,8 @@ import (
 const DEFAULT_PORT = 25107
 const BLOCKSIZE = 64 * 1024 * 1024
 
+var PROC_MOUNTS = "/proc/mounts"
+
 var KeepVolumes []string
 
 func main() {
@@ -53,8 +55,8 @@ func main() {
 func FindKeepVolumes() []string {
 	vols := make([]string, 0)
 
-	if f, err := os.Open("/proc/mounts"); err != nil {
-		log.Fatal("could not read /proc/mounts: ", err)
+	if f, err := os.Open(PROC_MOUNTS); err != nil {
+		log.Fatalf("opening %s: %s\n", PROC_MOUNTS, err)
 	} else {
 		scanner := bufio.NewScanner(f)
 		for scanner.Scan() {
diff --git a/services/keep/keep_test.go b/services/keep/keep_test.go
index 5e3b763..5652026 100644
--- a/services/keep/keep_test.go
+++ b/services/keep/keep_test.go
@@ -17,7 +17,9 @@ func TestGetBlockOK(t *testing.T) {
 	defer teardown()
 
 	// Create two test Keep volumes and store a block in each of them.
-	setup(t, 2)
+	KeepVolumes = setup(t, 2)
+	fmt.Println("KeepVolumes = ", KeepVolumes)
+
 	for _, vol := range KeepVolumes {
 		store(t, vol, TEST_HASH, TEST_BLOCK)
 	}
@@ -37,7 +39,7 @@ func TestGetBlockOneKeepOK(t *testing.T) {
 	defer teardown()
 
 	// Two test Keep volumes, only the second has a block.
-	setup(t, 2)
+	KeepVolumes = setup(t, 2)
 	store(t, KeepVolumes[1], TEST_HASH, TEST_BLOCK)
 
 	// Check that GetBlock returns success.
@@ -55,7 +57,7 @@ func TestGetBlockFail(t *testing.T) {
 	defer teardown()
 
 	// Create two empty test Keep volumes.
-	setup(t, 2)
+	KeepVolumes = setup(t, 2)
 
 	// Check that GetBlock returns failure.
 	result, err := GetBlock(TEST_HASH)
@@ -70,7 +72,7 @@ func TestGetBlockCorrupt(t *testing.T) {
 
 	// Create two test Keep volumes and store a block in each of them,
 	// but the hash of the block does not match the filename.
-	setup(t, 2)
+	KeepVolumes = setup(t, 2)
 	for _, vol := range KeepVolumes {
 		store(t, vol, TEST_HASH, BAD_BLOCK)
 	}
@@ -82,18 +84,78 @@ func TestGetBlockCorrupt(t *testing.T) {
 	}
 }
 
+// Test finding Keep volumes.
+func TestFindKeepVolumes(t *testing.T) {
+	defer teardown()
+
+	// Initialize two keep volumes.
+	var tempVols []string = setup(t, 2)
+
+	// Set up a bogus PROC_MOUNTS file.
+	if f, err := ioutil.TempFile("", "keeptest"); err == nil {
+		for _, vol := range tempVols {
+			fmt.Fprintf(f, "tmpfs %s tmpfs opts\n", path.Dir(vol))
+		}
+		f.Close()
+		PROC_MOUNTS = f.Name()
+
+		// Check that FindKeepVolumes finds the temp volumes.
+		resultVols := FindKeepVolumes()
+		if len(tempVols) != len(resultVols) {
+			t.Fatalf("set up %d volumes, FindKeepVolumes found %d\n",
+				len(tempVols), len(resultVols))
+		}
+		for i := range tempVols {
+			if tempVols[i] != resultVols[i] {
+				t.Errorf("FindKeepVolumes returned %s, expected %s\n",
+					resultVols[i], tempVols[i])
+			}
+		}
+
+		os.Remove(PROC_MOUNTS)
+	}
+}
+
+// Test that FindKeepVolumes returns an empty slice when no Keep volumes
+// are present.
+func TestFindKeepVolumesFail(t *testing.T) {
+	defer teardown()
+
+	// Set up a bogus PROC_MOUNTS file with no Keep vols.
+	if f, err := ioutil.TempFile("", "keeptest"); err == nil {
+		fmt.Fprintln(f, "rootfs / rootfs opts 0 0")
+		fmt.Fprintln(f, "sysfs /sys sysfs opts 0 0")
+		fmt.Fprintln(f, "proc /proc proc opts 0 0")
+		fmt.Fprintln(f, "udev /dev devtmpfs opts 0 0")
+		fmt.Fprintln(f, "devpts /dev/pts devpts opts 0 0")
+		f.Close()
+		PROC_MOUNTS = f.Name()
+
+		// Check that FindKeepVolumes returns an empty array.
+		resultVols := FindKeepVolumes()
+		if len(resultVols) != 0 {
+			t.Fatalf("FindKeepVolumes returned %v", resultVols)
+		}
+
+		os.Remove(PROC_MOUNTS)
+	}
+}
+
 // setup
 //     Create KeepVolumes for testing.
+//     Returns a slice of pathnames to temporary Keep volumes.
 //
-func setup(t *testing.T, num_volumes int) {
-	KeepVolumes = make([]string, num_volumes)
-	for i := range KeepVolumes {
+func setup(t *testing.T, num_volumes int) []string {
+	vols := make([]string, num_volumes)
+	for i := range vols {
 		if dir, err := ioutil.TempDir(os.TempDir(), "keeptest"); err == nil {
-			KeepVolumes[i] = dir + "/keep"
+			vols[i] = dir + "/keep"
+			os.Mkdir(vols[i], 0755)
 		} else {
 			t.Fatal(err)
 		}
 	}
+	return vols
 }
 
 // teardown

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list