func main() {
flag.Parse()
if minutesBetweenRuns == 0 {
- arv, err := makeArvadosClient()
+ arv, err := arvadosclient.MakeArvadosClient()
if err != nil {
- log.Fatalf("makeArvadosClient: %v", err)
+ loggerutil.FatalWithMessage(arvLogger, fmt.Sprintf("Error making arvados client: %v", err))
}
err = singlerun(arv)
if err != nil {
- log.Fatalf("singlerun: %v", err)
+ loggerutil.FatalWithMessage(arvLogger, fmt.Sprintf("singlerun: %v", err))
}
} else {
waitTime := time.Minute * time.Duration(minutesBetweenRuns)
for {
log.Println("Beginning Run")
- arv, err := makeArvadosClient()
+ arv, err := arvadosclient.MakeArvadosClient()
if err != nil {
- log.Fatalf("makeArvadosClient: %v", err)
+ loggerutil.FatalWithMessage(arvLogger, fmt.Sprintf("Error making arvados client: %v", err))
}
err = singlerun(arv)
if err != nil {
}
}
-func makeArvadosClient() (arvadosclient.ArvadosClient, error) {
- return arvadosclient.MakeArvadosClient()
-}
+var arvLogger *logger.Logger
func singlerun(arv arvadosclient.ArvadosClient) error {
var err error
return errors.New("Current user is not an admin. Datamanager requires a privileged token.")
}
- var arvLogger *logger.Logger
if logEventTypePrefix != "" {
arvLogger = logger.NewLogger(logger.LoggerParams{
Client: arv,
return readCollections.Err
}
- _, err = summary.MaybeWriteData(arvLogger, readCollections, keepServerInfo)
+ err = summary.MaybeWriteData(arvLogger, readCollections, keepServerInfo)
if err != nil {
return err
}
arvadostest.StartKeep(2, false)
var err error
- arv, err = makeArvadosClient()
+ arv, err = arvadosclient.MakeArvadosClient()
if err != nil {
t.Fatalf("Error making arvados client: %s", err)
}
import (
"encoding/json"
"fmt"
+ "net"
"net/http"
"net/http/httptest"
"net/url"
}
func (s *KeepSuite) TestGetKeepServers_UnsupportedServiceType(c *C) {
- testGetKeepServersFromAPI(c, APITestData{1, "notadisk", 200})
+ testGetKeepServersFromAPI(c, APITestData{1, "notadisk", 200}, "Unsupported service type")
}
func (s *KeepSuite) TestGetKeepServers_ReceivedTooFewServers(c *C) {
- testGetKeepServersFromAPI(c, APITestData{2, "disk", 200})
+ testGetKeepServersFromAPI(c, APITestData{2, "disk", 200}, "Did not receive all available keep servers")
}
func (s *KeepSuite) TestGetKeepServers_ServerError(c *C) {
- testGetKeepServersFromAPI(c, APITestData{-1, "disk", -1})
+ testGetKeepServersFromAPI(c, APITestData{-1, "disk", -1}, "arvados API server error")
}
-func testGetKeepServersFromAPI(c *C, testData APITestData) {
+func testGetKeepServersFromAPI(c *C, testData APITestData, expectedError string) {
keepServers := ServiceList{
ItemsAvailable: testData.numServers,
KeepServers: []ServerAddress{{
}
_, err := GetKeepServersAndSummarize(params)
- if testData.numServers > 1 {
- c.Assert(err, ErrorMatches, ".*Did not receive all available keep servers.*")
- } else if testData.serverType != "disk" {
- c.Assert(err, ErrorMatches, ".*Unsupported service type.*")
- }
+ c.Assert(err, NotNil)
+ c.Assert(err, ErrorMatches, fmt.Sprintf(".*%s.*", expectedError))
}
type KeepServerTestData struct {
ksURL, err := url.Parse(ks.URL)
c.Check(err, IsNil)
- ksURLParts := strings.Split(ksURL.Host, ":")
- ksPort, err := strconv.Atoi(ksURLParts[1])
+ ksHost, port, err := net.SplitHostPort(ksURL.Host)
+ ksPort, err := strconv.Atoi(port)
c.Check(err, IsNil)
servers_list := ServiceList{
ItemsAvailable: 1,
KeepServers: []ServerAddress{{
SSL: false,
- Host: strings.Split(ksURL.Host, ":")[0],
+ Host: ksHost,
Port: ksPort,
UUID: "abcdefg",
ServiceType: "disk",
// working with stale data.
func MaybeWriteData(arvLogger *logger.Logger,
readCollections collection.ReadCollections,
- keepServerInfo keep.ReadServers) (bool, error) {
+ keepServerInfo keep.ReadServers) error {
if WriteDataTo == "" {
- return false, nil
+ return nil
}
summaryFile, err := os.Create(WriteDataTo)
if err != nil {
- return false, err
+ return err
}
defer summaryFile.Close()
KeepServerInfo: keepServerInfo}
err = enc.Encode(data)
if err != nil {
- return false, err
+ return err
}
log.Printf("Wrote summary data to: %s", WriteDataTo)
- return true, nil
+ return nil
}
// ShouldReadData should not be used outside of development