From 752c2ff97b3670bcc87b08816560f5a0be0b8d06 Mon Sep 17 00:00:00 2001 From: Lucas Di Pentima Date: Mon, 5 Aug 2019 13:57:18 -0300 Subject: [PATCH] 14716: Adds legacy config test. Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- services/keep-web/main.go | 34 ++++++++++++------ services/keep-web/server_test.go | 61 ++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 10 deletions(-) diff --git a/services/keep-web/main.go b/services/keep-web/main.go index 289f413f5d..9dae50a8a5 100644 --- a/services/keep-web/main.go +++ b/services/keep-web/main.go @@ -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) diff --git a/services/keep-web/server_test.go b/services/keep-web/server_test.go index 7391ffb554..ab9ff60b50 100644 --- a/services/keep-web/server_test.go +++ b/services/keep-web/server_test.go @@ -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() -- 2.30.2