14716: Adds legacy config test.
authorLucas Di Pentima <ldipentima@veritasgenetics.com>
Mon, 5 Aug 2019 16:57:18 +0000 (13:57 -0300)
committerLucas Di Pentima <ldipentima@veritasgenetics.com>
Mon, 5 Aug 2019 16:57:18 +0000 (13:57 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <ldipentima@veritasgenetics.com>

services/keep-web/main.go
services/keep-web/server_test.go

index 289f413f5d13b25ff96e3f16d7d3ca62940220fa..9dae50a8a56b3dbc20ef3fa6709499a197d41b64 100644 (file)
@@ -11,9 +11,9 @@ import (
 
        "git.curoverse.com/arvados.git/lib/config"
        "git.curoverse.com/arvados.git/sdk/go/arvados"
-       sdkConfig "git.curoverse.com/arvados.git/sdk/go/config"
        "github.com/coreos/go-systemd/daemon"
        log "github.com/sirupsen/logrus"
+       yaml "gopkg.in/yaml.v2"
 )
 
 var (
@@ -55,12 +55,8 @@ func init() {
        })
 }
 
-func main() {
-       prog := os.Args[0]
-       args := os.Args[1:]
-       logger := log.New()
-
-       flags := flag.NewFlagSet(prog, flag.ExitOnError)
+func configure(logger log.FieldLogger, args []string) *Config {
+       flags := flag.NewFlagSet(args[0], flag.ExitOnError)
 
        loader := config.NewLoader(os.Stdin, logger)
        loader.SetupFlags(flags)
@@ -70,13 +66,13 @@ func main() {
        getVersion := flags.Bool("version", false,
                "print version information and exit.")
 
-       args = loader.MungeLegacyConfigArgs(logger, args, "-legacy-keepweb-config")
+       args = loader.MungeLegacyConfigArgs(logger, args[1:], "-legacy-keepweb-config")
        flags.Parse(args)
 
        // Print version information if requested
        if *getVersion {
                fmt.Printf("keep-web %s\n", version)
-               return
+               return nil
        }
 
        arvCfg, err := loader.Load()
@@ -86,7 +82,25 @@ func main() {
        cfg := DefaultConfig(arvCfg)
 
        if *dumpConfig {
-               log.Fatal(sdkConfig.DumpAndExit(cfg.cluster))
+               out, err := yaml.Marshal(cfg)
+               if err != nil {
+                       log.Fatal(err)
+               }
+               _, err = os.Stdout.Write(out)
+               if err != nil {
+                       log.Fatal(err)
+               }
+               return nil
+       }
+       return cfg
+}
+
+func main() {
+       logger := log.New()
+
+       cfg := configure(logger, os.Args)
+       if cfg == nil {
+               return
        }
 
        log.Printf("keep-web %s started", version)
index 7391ffb5541fde0a278aad216f5f8a0fb64e408f..ab9ff60b503eb12a1f325175b6d124a055e18222 100644 (file)
@@ -16,12 +16,14 @@ import (
        "os/exec"
        "strings"
        "testing"
+       "time"
 
        "git.curoverse.com/arvados.git/lib/config"
        "git.curoverse.com/arvados.git/sdk/go/arvados"
        "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
        "git.curoverse.com/arvados.git/sdk/go/arvadostest"
        "git.curoverse.com/arvados.git/sdk/go/keepclient"
+       log "github.com/sirupsen/logrus"
        check "gopkg.in/check.v1"
 )
 
@@ -420,6 +422,65 @@ func (s *IntegrationSuite) SetUpSuite(c *check.C) {
        kc.PutB([]byte("waz"))
 }
 
+func (s *UnitSuite) TestLegacyConfig(c *check.C) {
+       content := []byte(`
+{
+       "Client": {
+               "Scheme": "",
+               "APIHost": "example.com",
+               "AuthToken": "abcdefg",
+       },
+       "Listen": ":80",
+       "AnonymousTokens": [
+               "anonusertoken"
+       ],
+       "AttachmentOnlyHost": "download.example.com",
+       "TrustAllContent": false,
+       "Cache": {
+               "TTL": "1m",
+               "UUIDTTL": "1s",
+               "MaxCollectionEntries": 42,
+               "MaxCollectionBytes": 1234567890,
+               "MaxPermissionEntries": 100,
+               "MaxUUIDEntries": 100
+       },
+       "ManagementToken": "xyzzy"
+}
+`)
+       tmpfile, err := ioutil.TempFile("", "example")
+       if err != nil {
+               c.Error(err)
+       }
+       defer os.Remove(tmpfile.Name())
+
+       if _, err := tmpfile.Write(content); err != nil {
+               c.Error(err)
+       }
+       if err := tmpfile.Close(); err != nil {
+               c.Error(err)
+       }
+       cfg := configure(log.New(), []string{"keep-web", "-config", tmpfile.Name()})
+       c.Check(cfg, check.NotNil)
+       c.Check(cfg.cluster, check.NotNil)
+
+       c.Check(cfg.cluster.Services.Controller.ExternalURL, check.Equals, arvados.URL{Scheme: "https", Host: "example.com"})
+       c.Check(cfg.cluster.SystemRootToken, check.Equals, "abcdefg")
+
+       c.Check(cfg.cluster.Collections.WebDAVCache.TTL, check.Equals, arvados.Duration(60*time.Second))
+       c.Check(cfg.cluster.Collections.WebDAVCache.UUIDTTL, check.Equals, arvados.Duration(time.Second))
+       c.Check(cfg.cluster.Collections.WebDAVCache.MaxCollectionEntries, check.Equals, 42)
+       c.Check(cfg.cluster.Collections.WebDAVCache.MaxCollectionBytes, check.Equals, int64(1234567890))
+       c.Check(cfg.cluster.Collections.WebDAVCache.MaxPermissionEntries, check.Equals, 100)
+       c.Check(cfg.cluster.Collections.WebDAVCache.MaxUUIDEntries, check.Equals, 100)
+
+       c.Check(cfg.cluster.Services.WebDAVDownload.ExternalURL, check.Equals, arvados.URL{Host: "download.example.com"})
+       c.Check(cfg.cluster.Services.WebDAVDownload.InternalURLs[arvados.URL{Host: ":80"}], check.NotNil)
+       c.Check(cfg.cluster.Services.WebDAV.InternalURLs[arvados.URL{Host: ":80"}], check.NotNil)
+
+       c.Check(cfg.cluster.Users.AnonymousUserToken, check.Equals, "anonusertoken")
+       c.Check(cfg.cluster.ManagementToken, check.Equals, "xyzzy")
+}
+
 func (s *IntegrationSuite) TearDownSuite(c *check.C) {
        arvadostest.StopKeep(2)
        arvadostest.StopAPI()