From d47c009c2afd20b86cca083787d238c136e70abd Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Sat, 9 Aug 2014 12:30:25 -0400 Subject: [PATCH] 3551: Fix source tree layout. * Move $GOPATH out of the source tree. ($GOPATH is a workspace. Go knows how to import source trees into $GOPATH/src/.) This avoids replicating the Go workspace structure inside our source tree, and allows Go programs to import our libraries the normal way. * Add Go SDK documentation page showing how to import. * Rename keep to keepstore. * In Python tests, we assume keepproxy and keepstore binaries are already installed in $GOPATH/bin/ rather than guessing how you want them to be built. * Delete go.sh wrappers. Dependencies are already installed automatically by Go. GOPATH is left alone. --- .gitignore | 3 - doc/_config.yml | 2 + doc/sdk/go/index.html.textile.liquid | 65 +++++++++++++++++++ doc/sdk/index.html.textile.liquid | 1 + .../arvados.org/sdk => arvadosclient}/sdk.go | 0 .../sdk => arvadosclient}/sdk_test.go | 0 sdk/go/go.sh | 17 ----- .../arvados.org => }/keepclient/hashcheck.go | 0 .../keepclient/hashcheck_test.go | 0 .../arvados.org => }/keepclient/keepclient.go | 8 +-- .../keepclient/keepclient_test.go | 0 .../arvados.org => }/keepclient/support.go | 2 +- .../arvados.org => }/streamer/streamer.go | 0 .../streamer/streamer_test.go | 0 .../arvados.org => }/streamer/transfer.go | 0 sdk/python/tests/run_test_server.py | 45 +++---------- sdk/python/tests/test_arv_put.py | 6 +- services/crunch/crunchstat/go.sh | 15 ----- .../arvados.org => }/crunchstat/crunchstat.go | 0 services/keep/go.sh | 17 ----- .../arvados.org => }/keepproxy/keepproxy.go | 6 +- .../keepproxy/keepproxy_test.go | 13 ++-- .../src/keep => keepstore}/handler_test.go | 0 .../{keep/src/keep => keepstore}/handlers.go | 0 .../keep/keep.go => keepstore/keepstore.go} | 0 .../keepstore_test.go} | 11 +++- .../{keep/src/keep => keepstore}/perms.go | 0 .../src/keep => keepstore}/perms_test.go | 0 .../{keep/src/keep => keepstore}/volume.go | 0 .../src/keep => keepstore}/volume_unix.go | 0 .../keep => keepstore}/volume_unix_test.go | 0 31 files changed, 100 insertions(+), 111 deletions(-) create mode 100644 doc/sdk/go/index.html.textile.liquid rename sdk/go/{src/arvados.org/sdk => arvadosclient}/sdk.go (100%) rename sdk/go/{src/arvados.org/sdk => arvadosclient}/sdk_test.go (100%) delete mode 100755 sdk/go/go.sh rename sdk/go/{src/arvados.org => }/keepclient/hashcheck.go (100%) rename sdk/go/{src/arvados.org => }/keepclient/hashcheck_test.go (100%) rename sdk/go/{src/arvados.org => }/keepclient/keepclient.go (97%) rename sdk/go/{src/arvados.org => }/keepclient/keepclient_test.go (100%) rename sdk/go/{src/arvados.org => }/keepclient/support.go (99%) rename sdk/go/{src/arvados.org => }/streamer/streamer.go (100%) rename sdk/go/{src/arvados.org => }/streamer/streamer_test.go (100%) rename sdk/go/{src/arvados.org => }/streamer/transfer.go (100%) delete mode 100755 services/crunch/crunchstat/go.sh rename services/{crunch/crunchstat/src/arvados.org => }/crunchstat/crunchstat.go (100%) delete mode 100755 services/keep/go.sh rename services/{keep/src/arvados.org => }/keepproxy/keepproxy.go (98%) rename services/{keep/src/arvados.org => }/keepproxy/keepproxy_test.go (95%) rename services/{keep/src/keep => keepstore}/handler_test.go (100%) rename services/{keep/src/keep => keepstore}/handlers.go (100%) rename services/{keep/src/keep/keep.go => keepstore/keepstore.go} (100%) rename services/{keep/src/keep/keep_test.go => keepstore/keepstore_test.go} (97%) rename services/{keep/src/keep => keepstore}/perms.go (100%) rename services/{keep/src/keep => keepstore}/perms_test.go (100%) rename services/{keep/src/keep => keepstore}/volume.go (100%) rename services/{keep/src/keep => keepstore}/volume_unix.go (100%) rename services/{keep/src/keep => keepstore}/volume_unix_test.go (100%) diff --git a/.gitignore b/.gitignore index 0cddee596c..9ddcf07dc4 100644 --- a/.gitignore +++ b/.gitignore @@ -11,9 +11,6 @@ sdk/perl/Makefile sdk/perl/blib sdk/perl/pm_to_blib */vendor/bundle -services/keep/bin -services/keep/pkg -services/keep/src/github.com sdk/java/target *.class apps/workbench/vendor/bundle diff --git a/doc/_config.yml b/doc/_config.yml index d8b0d88a0f..7dc43fa5c1 100644 --- a/doc/_config.yml +++ b/doc/_config.yml @@ -60,6 +60,8 @@ navbar: - sdk/ruby/index.html.textile.liquid - Java: - sdk/java/index.html.textile.liquid + - Go: + - sdk/go/index.html.textile.liquid - CLI: - sdk/cli/index.html.textile.liquid api: diff --git a/doc/sdk/go/index.html.textile.liquid b/doc/sdk/go/index.html.textile.liquid new file mode 100644 index 0000000000..27c4448469 --- /dev/null +++ b/doc/sdk/go/index.html.textile.liquid @@ -0,0 +1,65 @@ +--- +layout: default +navsection: sdk +navmenu: Go +title: "Go SDK" + +... + +The Go ("Golang":http://golang.org) SDK provides a generic set of wrappers so you can make API calls easily. + +h3. Installation + +You don't need to install anything. Just import the client like this. The go tools will fetch the relevant code and dependencies for you. + + +
import (
+	keepclient    "git.curoverse.com/arvados.git/sdk/go/keepclient"
+	arvadosclient "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
+)
+
+
+ +h3. Examples + +Import the module. (We import the log module here too, so we can use it in the subsequent examples.) + + +
import (
+	keepclient    "git.curoverse.com/arvados.git/sdk/go/keepclient"
+	arvadosclient "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
+	"log"
+)
+
+
+ +Set up an API client user agent: + + +
	arv, err := arvadosclient.MakeArvadosClient()
+	if err != nil {
+		log.Fatalf("Error setting up arvados client %s", err.Error())
+	}
+
+
+ +Get the User object for the current user: + + +
	type user struct {
+		Uuid	     string `json:"uuid"`
+		FullName     int    `json:"full_name"`
+	}
+
+	var u user
+	err := arv.Call("GET", "users", "", "current", nil, &u)
+
+	if err != nil {
+		return err
+	}
+
+	log.Printf("Logged in as %s (uuid %s)", user.Uuid, user.FullName)
+
+
+ +A few more usage examples can be found in the services/keepproxy and sdk/go/keepclient directories in the arvados source tree. diff --git a/doc/sdk/index.html.textile.liquid b/doc/sdk/index.html.textile.liquid index 1b1e18ab94..db5d6f13b0 100644 --- a/doc/sdk/index.html.textile.liquid +++ b/doc/sdk/index.html.textile.liquid @@ -10,6 +10,7 @@ This section documents how to access the Arvados API and Keep using various prog * "Perl SDK":{{site.baseurl}}/sdk/perl/index.html * "Ruby SDK":{{site.baseurl}}/sdk/ruby/index.html * "Java SDK":{{site.baseurl}}/sdk/java/index.html +* "Go SDK":{{site.baseurl}}/sdk/go/index.html * "Command line SDK":{{site.baseurl}}/sdk/cli/index.html ("arv") SDKs not yet implemented: diff --git a/sdk/go/src/arvados.org/sdk/sdk.go b/sdk/go/arvadosclient/sdk.go similarity index 100% rename from sdk/go/src/arvados.org/sdk/sdk.go rename to sdk/go/arvadosclient/sdk.go diff --git a/sdk/go/src/arvados.org/sdk/sdk_test.go b/sdk/go/arvadosclient/sdk_test.go similarity index 100% rename from sdk/go/src/arvados.org/sdk/sdk_test.go rename to sdk/go/arvadosclient/sdk_test.go diff --git a/sdk/go/go.sh b/sdk/go/go.sh deleted file mode 100755 index 5553567287..0000000000 --- a/sdk/go/go.sh +++ /dev/null @@ -1,17 +0,0 @@ -#! /bin/sh - -# Wraps the 'go' executable with some environment setup. Sets GOPATH, creates -# 'pkg' and 'bin' directories, automatically installs dependencies, then runs -# the underlying 'go' executable with any command line parameters provided to -# the script. - -rootdir=$(readlink -f $(dirname $0)) -GOPATH=$rootdir:$GOPATH -export GOPATH - -mkdir -p $rootdir/pkg -mkdir -p $rootdir/bin - -go get gopkg.in/check.v1 - -go $* diff --git a/sdk/go/src/arvados.org/keepclient/hashcheck.go b/sdk/go/keepclient/hashcheck.go similarity index 100% rename from sdk/go/src/arvados.org/keepclient/hashcheck.go rename to sdk/go/keepclient/hashcheck.go diff --git a/sdk/go/src/arvados.org/keepclient/hashcheck_test.go b/sdk/go/keepclient/hashcheck_test.go similarity index 100% rename from sdk/go/src/arvados.org/keepclient/hashcheck_test.go rename to sdk/go/keepclient/hashcheck_test.go diff --git a/sdk/go/src/arvados.org/keepclient/keepclient.go b/sdk/go/keepclient/keepclient.go similarity index 97% rename from sdk/go/src/arvados.org/keepclient/keepclient.go rename to sdk/go/keepclient/keepclient.go index d43a2150f3..aa7e78ba8f 100644 --- a/sdk/go/src/arvados.org/keepclient/keepclient.go +++ b/sdk/go/keepclient/keepclient.go @@ -2,8 +2,8 @@ package keepclient import ( - "arvados.org/sdk" - "arvados.org/streamer" + streamer "git.curoverse.com/arvados.git/sdk/go/streamer" + arvadosclient "git.curoverse.com/arvados.git/sdk/go/arvadosclient" "crypto/md5" "errors" "fmt" @@ -33,7 +33,7 @@ const X_Keep_Replicas_Stored = "X-Keep-Replicas-Stored" // Information about Arvados and Keep servers. type KeepClient struct { - Arvados *sdk.ArvadosClient + Arvados *arvadosclient.ArvadosClient Want_replicas int Using_proxy bool service_roots *[]string @@ -43,7 +43,7 @@ type KeepClient struct { // Create a new KeepClient. This will contact the API server to discover Keep // servers. -func MakeKeepClient(arv *sdk.ArvadosClient) (kc KeepClient, err error) { +func MakeKeepClient(arv *arvadosclient.ArvadosClient) (kc KeepClient, err error) { kc = KeepClient{ Arvados: arv, Want_replicas: 2, diff --git a/sdk/go/src/arvados.org/keepclient/keepclient_test.go b/sdk/go/keepclient/keepclient_test.go similarity index 100% rename from sdk/go/src/arvados.org/keepclient/keepclient_test.go rename to sdk/go/keepclient/keepclient_test.go diff --git a/sdk/go/src/arvados.org/keepclient/support.go b/sdk/go/keepclient/support.go similarity index 99% rename from sdk/go/src/arvados.org/keepclient/support.go rename to sdk/go/keepclient/support.go index f3e47f92f5..ce15ce91ad 100644 --- a/sdk/go/src/arvados.org/keepclient/support.go +++ b/sdk/go/keepclient/support.go @@ -2,7 +2,7 @@ package keepclient import ( - "arvados.org/streamer" + "git.curoverse.com/arvados.git/sdk/go/streamer" "errors" "fmt" "io" diff --git a/sdk/go/src/arvados.org/streamer/streamer.go b/sdk/go/streamer/streamer.go similarity index 100% rename from sdk/go/src/arvados.org/streamer/streamer.go rename to sdk/go/streamer/streamer.go diff --git a/sdk/go/src/arvados.org/streamer/streamer_test.go b/sdk/go/streamer/streamer_test.go similarity index 100% rename from sdk/go/src/arvados.org/streamer/streamer_test.go rename to sdk/go/streamer/streamer_test.go diff --git a/sdk/go/src/arvados.org/streamer/transfer.go b/sdk/go/streamer/transfer.go similarity index 100% rename from sdk/go/src/arvados.org/streamer/transfer.go rename to sdk/go/streamer/transfer.go diff --git a/sdk/python/tests/run_test_server.py b/sdk/python/tests/run_test_server.py index dc95d8a9a5..a82866a673 100644 --- a/sdk/python/tests/run_test_server.py +++ b/sdk/python/tests/run_test_server.py @@ -20,10 +20,10 @@ if __name__ == '__main__' and os.path.exists( import arvados.api import arvados.config -ARV_API_SERVER_DIR = '../../../services/api' -KEEP_SERVER_DIR = '../../../services/keep' +SERVICES_SRC_DIR = os.path.join(MY_DIRNAME, '../../../services') SERVER_PID_PATH = 'tmp/pids/webrick-test.pid' WEBSOCKETS_SERVER_PID_PATH = 'tmp/pids/passenger-test.pid' +os.environ['PATH'] = os.environ['GOPATH'] + '/bin:' + os.environ['PATH'] def find_server_pid(PID_PATH, wait=10): now = time.time() @@ -64,7 +64,7 @@ def kill_server_pid(PID_PATH, wait=10): def run(websockets=False, reuse_server=False): cwd = os.getcwd() - os.chdir(os.path.join(MY_DIRNAME, ARV_API_SERVER_DIR)) + os.chdir(os.path.join(SERVICES_SRC_DIR, 'api')) if websockets: pid_file = WEBSOCKETS_SERVER_PID_PATH @@ -116,7 +116,7 @@ def run(websockets=False, reuse_server=False): def stop(): cwd = os.getcwd() - os.chdir(os.path.join(MY_DIRNAME, ARV_API_SERVER_DIR)) + os.chdir(os.path.join(SERVICES_SRC_DIR, 'api')) kill_server_pid(WEBSOCKETS_SERVER_PID_PATH, 0) kill_server_pid(SERVER_PID_PATH, 0) @@ -135,7 +135,7 @@ def stop(): def _start_keep(n, keep_args): keep0 = tempfile.mkdtemp() - keep_cmd = ["bin/keep", + keep_cmd = ["keepstore", "-volumes={}".format(keep0), "-listen=:{}".format(25107+n), "-pid={}".format("tmp/keep{}.pid".format(n))] @@ -153,15 +153,6 @@ def _start_keep(n, keep_args): def run_keep(blob_signing_key=None, enforce_permissions=False): stop_keep() - cwd = os.getcwd() - os.chdir(os.path.join(MY_DIRNAME, KEEP_SERVER_DIR)) - if os.environ.get('GOPATH') == None: - os.environ["GOPATH"] = os.getcwd() - else: - os.environ["GOPATH"] = os.getcwd() + ":" + os.environ["GOPATH"] - - subprocess.call(["./go.sh", "install", "keep"]) - if not os.path.exists("tmp"): os.mkdir("tmp") @@ -191,8 +182,6 @@ def run_keep(blob_signing_key=None, enforce_permissions=False): api.keep_disks().create(body={"keep_disk": {"keep_service_uuid": s1["uuid"] } }).execute() api.keep_disks().create(body={"keep_disk": {"keep_service_uuid": s2["uuid"] } }).execute() - os.chdir(cwd) - def _stop_keep(n): kill_server_pid("tmp/keep{}.pid".format(n), 0) if os.path.exists("tmp/keep{}.volume".format(n)): @@ -203,26 +192,12 @@ def _stop_keep(n): os.remove("tmp/keep.blob_signing_key") def stop_keep(): - cwd = os.getcwd() - os.chdir(os.path.join(MY_DIRNAME, KEEP_SERVER_DIR)) - _stop_keep(0) _stop_keep(1) - os.chdir(cwd) - def run_keep_proxy(auth): stop_keep_proxy() - cwd = os.getcwd() - os.chdir(os.path.join(MY_DIRNAME, KEEP_SERVER_DIR)) - if os.environ.get('GOPATH') == None: - os.environ["GOPATH"] = os.getcwd() - else: - os.environ["GOPATH"] = os.getcwd() + ":" + os.environ["GOPATH"] - - subprocess.call(["./go.sh", "install", "arvados.org/keepproxy"]) - if not os.path.exists("tmp"): os.mkdir("tmp") @@ -230,7 +205,8 @@ def run_keep_proxy(auth): os.environ["ARVADOS_API_HOST_INSECURE"] = "true" os.environ["ARVADOS_API_TOKEN"] = fixture("api_client_authorizations")[auth]["api_token"] - kp0 = subprocess.Popen(["bin/keepproxy", "-pid=tmp/keepproxy.pid", "-listen=:{}".format(25101)]) + kp0 = subprocess.Popen(["keepproxy", + "-pid=tmp/keepproxy.pid", "-listen=:{}".format(25101)]) authorize_with("admin") api = arvados.api('v1', cache=False) @@ -238,17 +214,12 @@ def run_keep_proxy(auth): arvados.config.settings()["ARVADOS_KEEP_PROXY"] = "http://localhost:25101" - os.chdir(cwd) - def stop_keep_proxy(): - cwd = os.getcwd() - os.chdir(os.path.join(MY_DIRNAME, KEEP_SERVER_DIR)) kill_server_pid("tmp/keepproxy.pid", 0) - os.chdir(cwd) def fixture(fix): '''load a fixture yaml file''' - with open(os.path.join(MY_DIRNAME, ARV_API_SERVER_DIR, "test", "fixtures", + with open(os.path.join(SERVICES_SRC_DIR, 'api', "test", "fixtures", fix + ".yml")) as f: return yaml.load(f.read()) diff --git a/sdk/python/tests/test_arv_put.py b/sdk/python/tests/test_arv_put.py index 7a827684a3..9bc385d2e6 100644 --- a/sdk/python/tests/test_arv_put.py +++ b/sdk/python/tests/test_arv_put.py @@ -466,10 +466,8 @@ class ArvPutIntegrationTest(unittest.TestCase): # to provision the Keep server. config_blob_signing_key = None for config_file in ['application.yml', 'application.default.yml']: - with open(os.path.join(os.path.dirname(__file__), - run_test_server.ARV_API_SERVER_DIR, - "config", - config_file)) as f: + with open(os.path.join(run_test_server.SERVICES_SRC_DIR, + "api", "config", config_file)) as f: rails_config = yaml.load(f.read()) for config_section in ['test', 'common']: try: diff --git a/services/crunch/crunchstat/go.sh b/services/crunch/crunchstat/go.sh deleted file mode 100755 index 640a0d27f7..0000000000 --- a/services/crunch/crunchstat/go.sh +++ /dev/null @@ -1,15 +0,0 @@ -#! /bin/sh - -# Wraps the 'go' executable with some environment setup. Sets GOPATH, creates -# 'pkg' and 'bin' directories, automatically installs dependencies, then runs -# the underlying 'go' executable with any command line parameters provided to -# the script. - -rootdir=$(readlink -f $(dirname $0)) -GOPATH=$rootdir:$rootdir/../../sdk/go:$GOPATH -export GOPATH - -mkdir -p $rootdir/pkg -mkdir -p $rootdir/bin - -go $* diff --git a/services/crunch/crunchstat/src/arvados.org/crunchstat/crunchstat.go b/services/crunchstat/crunchstat.go similarity index 100% rename from services/crunch/crunchstat/src/arvados.org/crunchstat/crunchstat.go rename to services/crunchstat/crunchstat.go diff --git a/services/keep/go.sh b/services/keep/go.sh deleted file mode 100755 index 156fe90df2..0000000000 --- a/services/keep/go.sh +++ /dev/null @@ -1,17 +0,0 @@ -#! /bin/sh - -# Wraps the 'go' executable with some environment setup. Sets GOPATH, creates -# 'pkg' and 'bin' directories, automatically installs dependencies, then runs -# the underlying 'go' executable with any command line parameters provided to -# the script. - -rootdir=$(readlink -f $(dirname $0)) -GOPATH=$rootdir:$rootdir/../../sdk/go:$GOPATH -export GOPATH - -mkdir -p $rootdir/pkg -mkdir -p $rootdir/bin - -go get github.com/gorilla/mux - -go $* diff --git a/services/keep/src/arvados.org/keepproxy/keepproxy.go b/services/keepproxy/keepproxy.go similarity index 98% rename from services/keep/src/arvados.org/keepproxy/keepproxy.go rename to services/keepproxy/keepproxy.go index 367854bed3..367a9c5604 100644 --- a/services/keep/src/arvados.org/keepproxy/keepproxy.go +++ b/services/keepproxy/keepproxy.go @@ -1,8 +1,8 @@ package main import ( - "arvados.org/keepclient" - "arvados.org/sdk" + keepclient "git.curoverse.com/arvados.git/sdk/go/keepclient" + arvadosclient "git.curoverse.com/arvados.git/sdk/go/arvadosclient" "flag" "fmt" "github.com/gorilla/mux" @@ -68,7 +68,7 @@ func main() { flagset.Parse(os.Args[1:]) - arv, err := sdk.MakeArvadosClient() + arv, err := arvadosclient.MakeArvadosClient() if err != nil { log.Fatalf("Error setting up arvados client %s", err.Error()) } diff --git a/services/keep/src/arvados.org/keepproxy/keepproxy_test.go b/services/keepproxy/keepproxy_test.go similarity index 95% rename from services/keep/src/arvados.org/keepproxy/keepproxy_test.go rename to services/keepproxy/keepproxy_test.go index 4bf347890e..22b1f30f73 100644 --- a/services/keep/src/arvados.org/keepproxy/keepproxy_test.go +++ b/services/keepproxy/keepproxy_test.go @@ -1,8 +1,8 @@ package main import ( - "arvados.org/keepclient" - "arvados.org/sdk" + keepclient "git.curoverse.com/arvados.git/sdk/go/keepclient" + arvadosclient "git.curoverse.com/arvados.git/sdk/go/arvadosclient" "crypto/md5" "crypto/tls" "fmt" @@ -14,7 +14,6 @@ import ( "net/url" "os" "os/exec" - "strings" "testing" "time" ) @@ -31,8 +30,8 @@ var _ = Suite(&ServerRequiredSuite{}) type ServerRequiredSuite struct{} func pythonDir() string { - gopath := os.Getenv("GOPATH") - return fmt.Sprintf("%s/../../sdk/python/tests", strings.Split(gopath, ":")[0]) + cwd, _ := os.Getwd() + return fmt.Sprintf("%s/../../sdk/python/tests", cwd) } func (s *ServerRequiredSuite) SetUpSuite(c *C) { @@ -109,7 +108,7 @@ func runProxy(c *C, args []string, token string, port int) keepclient.KeepClient os.Setenv("ARVADOS_KEEP_PROXY", fmt.Sprintf("http://localhost:%v", port)) os.Setenv("ARVADOS_API_TOKEN", token) - arv, err := sdk.MakeArvadosClient() + arv, err := arvadosclient.MakeArvadosClient() kc, err := keepclient.MakeKeepClient(&arv) c.Check(kc.Using_proxy, Equals, true) c.Check(len(kc.ServiceRoots()), Equals, 1) @@ -131,7 +130,7 @@ func (s *ServerRequiredSuite) TestPutAskGet(c *C) { setupProxyService() os.Setenv("ARVADOS_EXTERNAL_CLIENT", "true") - arv, err := sdk.MakeArvadosClient() + arv, err := arvadosclient.MakeArvadosClient() kc, err := keepclient.MakeKeepClient(&arv) c.Check(kc.Arvados.External, Equals, true) c.Check(kc.Using_proxy, Equals, true) diff --git a/services/keep/src/keep/handler_test.go b/services/keepstore/handler_test.go similarity index 100% rename from services/keep/src/keep/handler_test.go rename to services/keepstore/handler_test.go diff --git a/services/keep/src/keep/handlers.go b/services/keepstore/handlers.go similarity index 100% rename from services/keep/src/keep/handlers.go rename to services/keepstore/handlers.go diff --git a/services/keep/src/keep/keep.go b/services/keepstore/keepstore.go similarity index 100% rename from services/keep/src/keep/keep.go rename to services/keepstore/keepstore.go diff --git a/services/keep/src/keep/keep_test.go b/services/keepstore/keepstore_test.go similarity index 97% rename from services/keep/src/keep/keep_test.go rename to services/keepstore/keepstore_test.go index de189b659c..b153d6dce2 100644 --- a/services/keep/src/keep/keep_test.go +++ b/services/keepstore/keepstore_test.go @@ -7,6 +7,8 @@ import ( "os" "path" "regexp" + "sort" + "strings" "testing" ) @@ -342,11 +344,14 @@ func TestIndex(t *testing.T) { vols[1].Put(TEST_HASH_2+".meta", []byte("metadata")) index := vols[0].Index("") + vols[1].Index("") - expected := `^` + TEST_HASH + `\+\d+ \d+\n` + + index_rows := strings.Split(index, "\n") + sort.Strings(index_rows) + sorted_index := strings.Join(index_rows, "\n") + expected := `^\n` + TEST_HASH + `\+\d+ \d+\n` + TEST_HASH_3 + `\+\d+ \d+\n` + - TEST_HASH_2 + `\+\d+ \d+\n$` + TEST_HASH_2 + `\+\d+ \d+$` - match, err := regexp.MatchString(expected, index) + match, err := regexp.MatchString(expected, sorted_index) if err == nil { if !match { t.Errorf("IndexLocators returned:\n%s", index) diff --git a/services/keep/src/keep/perms.go b/services/keepstore/perms.go similarity index 100% rename from services/keep/src/keep/perms.go rename to services/keepstore/perms.go diff --git a/services/keep/src/keep/perms_test.go b/services/keepstore/perms_test.go similarity index 100% rename from services/keep/src/keep/perms_test.go rename to services/keepstore/perms_test.go diff --git a/services/keep/src/keep/volume.go b/services/keepstore/volume.go similarity index 100% rename from services/keep/src/keep/volume.go rename to services/keepstore/volume.go diff --git a/services/keep/src/keep/volume_unix.go b/services/keepstore/volume_unix.go similarity index 100% rename from services/keep/src/keep/volume_unix.go rename to services/keepstore/volume_unix.go diff --git a/services/keep/src/keep/volume_unix_test.go b/services/keepstore/volume_unix_test.go similarity index 100% rename from services/keep/src/keep/volume_unix_test.go rename to services/keepstore/volume_unix_test.go -- 2.30.2