Merge branch '21207-pytest'
[arvados.git] / services / keep-balance / main_test.go
index a6445506e5fd3b3c1500caf6d3d8cb98d63b5f08..26002eca986c3d2c60c7c20e035e7b32b474c22c 100644 (file)
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepbalance
 
 import (
        "bytes"
@@ -11,6 +11,11 @@ import (
        "net/http"
        "time"
 
+       "git.arvados.org/arvados.git/lib/config"
+       "git.arvados.org/arvados.git/sdk/go/arvados"
+       "git.arvados.org/arvados.git/sdk/go/arvadostest"
+       "git.arvados.org/arvados.git/sdk/go/ctxlog"
+       "github.com/ghodss/yaml"
        check "gopkg.in/check.v1"
 )
 
@@ -20,22 +25,33 @@ type mainSuite struct{}
 
 func (s *mainSuite) TestVersionFlag(c *check.C) {
        var stdout, stderr bytes.Buffer
-       runCommand("keep-balance", []string{"-version"}, nil, &stdout, &stderr)
+       Command.RunCommand("keep-balance", []string{"-version"}, nil, &stdout, &stderr)
        c.Check(stderr.String(), check.Equals, "")
        c.Log(stdout.String())
+       c.Check(stdout.String(), check.Matches, `keep-balance.*\(go1.*\)\n`)
 }
 
 func (s *mainSuite) TestHTTPServer(c *check.C) {
+       arvadostest.StartKeep(2, true)
+
        ln, err := net.Listen("tcp", ":0")
        if err != nil {
                c.Fatal(err)
        }
        _, p, err := net.SplitHostPort(ln.Addr().String())
+       c.Check(err, check.IsNil)
        ln.Close()
-       config := "Clusters:\n zzzzz:\n  ManagementToken: abcdefg\n  Services: {Keepbalance: {InternalURLs: {'http://localhost:" + p + "/': {}}}}\n"
+       cfg, err := config.NewLoader(nil, ctxlog.TestLogger(c)).Load()
+       c.Assert(err, check.IsNil)
+       cluster, err := cfg.GetCluster("")
+       c.Assert(err, check.IsNil)
+       cluster.Services.Keepbalance.InternalURLs[arvados.URL{Host: "localhost:" + p, Path: "/"}] = arvados.ServiceInstance{}
+       cfg.Clusters[cluster.ClusterID] = *cluster
+       config, err := yaml.Marshal(cfg)
+       c.Assert(err, check.IsNil)
 
        var stdout bytes.Buffer
-       go runCommand("keep-balance", []string{"-config", "-"}, bytes.NewBufferString(config), &stdout, &stdout)
+       go Command.RunCommand("keep-balance", []string{"-config", "-"}, bytes.NewBuffer(config), &stdout, &stdout)
        done := make(chan struct{})
        go func() {
                defer close(done)
@@ -46,7 +62,7 @@ func (s *mainSuite) TestHTTPServer(c *check.C) {
                                c.Fatal(err)
                                return
                        }
-                       req.Header.Set("Authorization", "Bearer abcdefg")
+                       req.Header.Set("Authorization", "Bearer "+cluster.ManagementToken)
                        resp, err := http.DefaultClient.Do(req)
                        if err != nil {
                                c.Logf("error %s", err)
@@ -72,6 +88,7 @@ func (s *mainSuite) TestHTTPServer(c *check.C) {
                c.Log(stdout.String())
                c.Fatal("timeout")
        }
+       c.Log(stdout.String())
 
        // Check non-metrics URL that gets passed through to us from
        // service.Command