[ARVADOS] updated: 38354fdf55e0895378f87e6d6bff62b7eb377a25
git at public.curoverse.com
git at public.curoverse.com
Mon Oct 12 10:41:17 EDT 2015
Summary of changes:
tools/keep-rsync/keep-rsync.go | 48 +++++++++------
tools/keep-rsync/keep-rsync_test.go | 117 ++++++++++++++++++++++++++++--------
2 files changed, 124 insertions(+), 41 deletions(-)
via 38354fdf55e0895378f87e6d6bff62b7eb377a25 (commit)
from fba6fa53d377c6704849a2bdb731be9a0eec3aa2 (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 38354fdf55e0895378f87e6d6bff62b7eb377a25
Author: radhika <radhika at curoverse.com>
Date: Mon Oct 12 10:40:38 2015 -0400
7167: break load config logic out of main into loadConfig func and add several tests.
diff --git a/tools/keep-rsync/keep-rsync.go b/tools/keep-rsync/keep-rsync.go
index d619ff3..de28b33 100644
--- a/tools/keep-rsync/keep-rsync.go
+++ b/tools/keep-rsync/keep-rsync.go
@@ -2,6 +2,7 @@ package main
import (
"bytes"
+ "errors"
"flag"
"git.curoverse.com/arvados.git/sdk/go/arvadosclient"
"git.curoverse.com/arvados.git/sdk/go/keepclient"
@@ -23,10 +24,10 @@ var (
prefix string
)
-func main() {
- var srcConfigFile string
- var dstConfigFile string
+var srcConfigFile string
+var dstConfigFile string
+func main() {
flag.StringVar(
&srcConfigFile,
"src-config-file",
@@ -73,21 +74,9 @@ func main() {
var err error
- // Load config
- if srcConfigFile == "" {
- log.Fatal("-src-config-file must be specified.")
- }
- srcConfig, err = readConfigFromFile(srcConfigFile)
+ err = loadConfig()
if err != nil {
- log.Fatal("Error reading source configuration: %s", err.Error())
- }
-
- if dstConfigFile == "" {
- log.Fatal("-dst-config-file must be specified.")
- }
- dstConfig, err = readConfigFromFile(dstConfigFile)
- if err != nil {
- log.Fatal("Error reading destination configuration: %s", err.Error())
+ log.Fatal("Error loading configuration from files: %s", err.Error())
}
// Initialize keep-rsync
@@ -103,6 +92,31 @@ func main() {
}
}
+// Load src and dst config from given files
+func loadConfig() error {
+ if srcConfigFile == "" {
+ return errors.New("-src-config-file must be specified")
+ }
+
+ var err error
+
+ srcConfig, err = readConfigFromFile(srcConfigFile)
+ if err != nil {
+ log.Printf("Error reading source configuration: %s", err.Error())
+ return err
+ }
+
+ if dstConfigFile == "" {
+ return errors.New("-dst-config-file must be specified")
+ }
+ dstConfig, err = readConfigFromFile(dstConfigFile)
+ if err != nil {
+ log.Printf("Error reading destination configuration: %s", err.Error())
+ }
+
+ return err
+}
+
var matchTrue = regexp.MustCompile("^(?i:1|yes|true)$")
// Reads config from file
diff --git a/tools/keep-rsync/keep-rsync_test.go b/tools/keep-rsync/keep-rsync_test.go
index 3ea1b95..0696707 100644
--- a/tools/keep-rsync/keep-rsync_test.go
+++ b/tools/keep-rsync/keep-rsync_test.go
@@ -41,6 +41,8 @@ func (s *ServerRequiredSuite) SetUpTest(c *C) {
dstKeepServicesJSON = ""
replications = 0
prefix = ""
+ srcConfigFile = ""
+ dstConfigFile = ""
arvSrc = arvadosclient.ArvadosClient{}
arvDst = arvadosclient.ArvadosClient{}
kcSrc = &keepclient.KeepClient{}
@@ -93,30 +95,6 @@ func setupRsync(c *C, enforcePermissions bool, setupDstServers bool) {
}
}
-// Test readConfigFromFile method
-func (s *ServerRequiredSuite) TestReadConfigFromFile(c *C) {
- // Setup a test config file
- file, err := ioutil.TempFile(os.TempDir(), "config")
- c.Check(err, IsNil)
- defer os.Remove(file.Name())
-
- fileContent := "ARVADOS_API_HOST=testhost\n"
- fileContent += "ARVADOS_API_TOKEN=testtoken\n"
- fileContent += "ARVADOS_API_HOST_INSECURE=true\n"
- fileContent += "ARVADOS_BLOB_SIGNING_KEY=abcdefg"
-
- _, err = file.Write([]byte(fileContent))
-
- // Invoke readConfigFromFile method with this test filename
- config, err := readConfigFromFile(file.Name())
- c.Check(err, IsNil)
- c.Assert(config.APIHost, Equals, "testhost")
- c.Assert(config.APIToken, Equals, "testtoken")
- c.Assert(config.APIHostInsecure, Equals, true)
- c.Assert(config.ExternalClient, Equals, false)
- c.Assert(blobSigningKey, Equals, "abcdefg")
-}
-
// Test keep-rsync initialization, with src and dst keep servers.
// Do a Put and Get in src, both of which should succeed.
// Do a Put and Get in dst, both of which should succeed.
@@ -476,3 +454,94 @@ func (s *ServerRequiredSuite) TestErrorDuringRsync_ErrorPuttingBlockInDst(c *C)
err := performKeepRsync()
c.Check(err.Error(), Equals, "Could not write sufficient replicas")
}
+
+// Test loadConfig func
+func (s *ServerRequiredSuite) TestLoadConfig(c *C) {
+ // Setup a src config file
+ srcFile := setupConfigFile(c, "src-config")
+ defer os.Remove(srcFile.Name())
+ srcConfigFile = srcFile.Name()
+
+ // Setup a dst config file
+ dstFile := setupConfigFile(c, "dst-config")
+ defer os.Remove(dstFile.Name())
+ dstConfigFile = dstFile.Name()
+
+ // load configuration from those files
+ err := loadConfig()
+ c.Check(err, IsNil)
+
+ c.Assert(srcConfig.APIHost, Equals, "testhost")
+ c.Assert(srcConfig.APIToken, Equals, "testtoken")
+ c.Assert(srcConfig.APIHostInsecure, Equals, true)
+ c.Assert(srcConfig.ExternalClient, Equals, false)
+
+ c.Assert(dstConfig.APIHost, Equals, "testhost")
+ c.Assert(dstConfig.APIToken, Equals, "testtoken")
+ c.Assert(dstConfig.APIHostInsecure, Equals, true)
+ c.Assert(dstConfig.ExternalClient, Equals, false)
+
+ c.Assert(blobSigningKey, Equals, "abcdefg")
+}
+
+// Test loadConfig func without setting up the config files
+func (s *ServerRequiredSuite) TestLoadConfig_MissingSrcConfig(c *C) {
+ srcConfigFile = ""
+ err := loadConfig()
+ c.Assert(err.Error(), Equals, "-src-config-file must be specified")
+}
+
+// Test loadConfig func - error reading src config
+func (s *ServerRequiredSuite) TestLoadConfig_ErrorLoadingSrcConfig(c *C) {
+ srcConfigFile = "no-such-config-file"
+
+ // load configuration
+ err := loadConfig()
+ c.Assert(strings.HasSuffix(err.Error(), "no such file or directory"), Equals, true)
+}
+
+// Test loadConfig func with no dst config file specified
+func (s *ServerRequiredSuite) TestLoadConfig_MissingDstConfig(c *C) {
+ // Setup a src config file
+ srcFile := setupConfigFile(c, "src-config")
+ defer os.Remove(srcFile.Name())
+ srcConfigFile = srcFile.Name()
+
+ // But do not setup the dst config file
+ dstConfigFile = ""
+
+ // load configuration
+ err := loadConfig()
+ c.Assert(err.Error(), Equals, "-dst-config-file must be specified")
+}
+
+// Test loadConfig func
+func (s *ServerRequiredSuite) TestLoadConfig_ErrorLoadingDstConfig(c *C) {
+ // Setup a src config file
+ srcFile := setupConfigFile(c, "src-config")
+ defer os.Remove(srcFile.Name())
+ srcConfigFile = srcFile.Name()
+
+ // But do not setup the dst config file
+ dstConfigFile = "no-such-config-file"
+
+ // load configuration
+ err := loadConfig()
+ c.Assert(strings.HasSuffix(err.Error(), "no such file or directory"), Equals, true)
+}
+
+func setupConfigFile(c *C, name string) *os.File {
+ // Setup a config file
+ file, err := ioutil.TempFile(os.TempDir(), name)
+ c.Check(err, IsNil)
+
+ fileContent := "ARVADOS_API_HOST=testhost\n"
+ fileContent += "ARVADOS_API_TOKEN=testtoken\n"
+ fileContent += "ARVADOS_API_HOST_INSECURE=true\n"
+ fileContent += "ARVADOS_BLOB_SIGNING_KEY=abcdefg"
+
+ _, err = file.Write([]byte(fileContent))
+ c.Check(err, IsNil)
+
+ return file
+}
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list