[ARVADOS] updated: 070332d12b114e0536ccc5025743bea854bd4c9e

git at public.curoverse.com git at public.curoverse.com
Tue Mar 25 10:33:07 EDT 2014


Summary of changes:
 services/keep/keep_test.go |  101 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 84 insertions(+), 17 deletions(-)

       via  070332d12b114e0536ccc5025743bea854bd4c9e (commit)
      from  f75abd5da51c048fd26e7076a8a8fe96f6f5e0a2 (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 070332d12b114e0536ccc5025743bea854bd4c9e
Author: Tim Pierce <twp at curoverse.com>
Date:   Tue Mar 25 10:32:15 2014 -0400

    Added unit tests TestGetBlockOneKeepOK and TestGetBlockFail (refs #2291)

diff --git a/services/keep/keep_test.go b/services/keep/keep_test.go
index 6210eae..5960d5f 100644
--- a/services/keep/keep_test.go
+++ b/services/keep/keep_test.go
@@ -1,6 +1,7 @@
 package main
 
 import (
+	"crypto/md5"
 	"fmt"
 	"io/ioutil"
 	"os"
@@ -11,31 +12,44 @@ import (
 var TEST_BLOCK = []byte("The quick brown fox jumps over the lazy dog.")
 var TEST_HASH = "e4d909c290d0fb1ca068ffaddf22cbd0"
 
+// Test simple block reads.
 func TestGetBlockOK(t *testing.T) {
 	var err error
 
-	// Manually populate keep1 and keep2 with a block.
-	KeepVolumes = make([]string, 2)
-	for i := range KeepVolumes {
-		if dir, err := ioutil.TempDir(os.TempDir(), "keeptest"); err == nil {
-			KeepVolumes[i] = dir + "/keep"
-		} else {
-			t.Fatal(err)
-		}
+	defer teardown()
 
-		blockdir := fmt.Sprintf("%s/%s", KeepVolumes[i], TEST_HASH[:3])
-		if err := os.MkdirAll(blockdir, 0755); err != nil {
+	// Create two test Keep volumes and store a block in each of them.
+	if err := setup(2); err != nil {
+		t.Fatal(err)
+	}
+	for _, vol := range KeepVolumes {
+		if err := storeTestBlock(vol, TEST_BLOCK); err != nil {
 			t.Fatal(err)
 		}
+	}
 
-		blockpath := fmt.Sprintf("%s/%s", blockdir, TEST_HASH)
-		if f, err := os.Create(blockpath); err == nil {
-			f.Write(TEST_BLOCK)
-			f.Close()
-		} else {
-			t.Fatal(err)
-		}
+	// Check that GetBlock returns success.
+	result, err := GetBlock(TEST_HASH)
+	if err != nil {
+		t.Errorf("GetBlock error: %s", err)
+	}
+	if fmt.Sprint(result) != fmt.Sprint(TEST_BLOCK) {
+		t.Errorf("expected %s, got %s", TEST_BLOCK, result)
+	}
+}
+
+// Test block reads when one Keep volume is missing.
+func TestGetBlockOneKeepOK(t *testing.T) {
+	var err error
+
+	defer teardown()
 
+	// Two test Keep volumes, only the second has a block.
+	if err := setup(2); err != nil {
+		t.Fatal(err)
+	}
+	if err := storeTestBlock(KeepVolumes[1], TEST_BLOCK); err != nil {
+		t.Fatal(err)
 	}
 
 	// Check that GetBlock returns success.
@@ -46,8 +60,61 @@ func TestGetBlockOK(t *testing.T) {
 	if fmt.Sprint(result) != fmt.Sprint(TEST_BLOCK) {
 		t.Errorf("expected %s, got %s", TEST_BLOCK, result)
 	}
+}
+
+// Test block read failure.
+func TestGetBlockFail(t *testing.T) {
+	var err error
+
+	defer teardown()
+
+	// Create two empty test Keep volumes.
+	if err := setup(2); err != nil {
+		t.Fatal(err)
+	}
+
+	// Check that GetBlock returns failure.
+	result, err := GetBlock(TEST_HASH)
+	if err == nil {
+		t.Errorf("GetBlock incorrectly returned success: ", result)
+	}
+}
+
+// setup
+//     Create KeepVolumes for testing.
+func setup(nkeeps int) error {
+	KeepVolumes = make([]string, 2)
+	for i := range KeepVolumes {
+		if dir, err := ioutil.TempDir(os.TempDir(), "keeptest"); err == nil {
+			KeepVolumes[i] = dir + "/keep"
+		} else {
+			return err
+		}
+	}
+	return nil
+}
 
+func teardown() {
 	for _, vol := range KeepVolumes {
 		os.RemoveAll(path.Dir(vol))
 	}
 }
+
+func storeTestBlock(keepdir string, block []byte) error {
+	testhash := fmt.Sprintf("%x", md5.Sum(block))
+
+	blockdir := fmt.Sprintf("%s/%s", keepdir, testhash[:3])
+	if err := os.MkdirAll(blockdir, 0755); err != nil {
+		return err
+	}
+
+	blockpath := fmt.Sprintf("%s/%s", blockdir, testhash)
+	if f, err := os.Create(blockpath); err == nil {
+		f.Write(block)
+		f.Close()
+	} else {
+		return err
+	}
+
+	return nil
+}

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


hooks/post-receive
-- 




More information about the arvados-commits mailing list