From 8d674f211826ce473f2dd968b28d62b02c7e93ef Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Wed, 7 Jul 2021 11:43:55 +0100 Subject: [PATCH] Review comments; print container logs on failure --- cmd/dendrite-upgrade-tests/main.go | 21 ++++++++++++++++++--- cmd/dendrite-upgrade-tests/tests.go | 3 +++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/cmd/dendrite-upgrade-tests/main.go b/cmd/dendrite-upgrade-tests/main.go index 19ea9341b..e2c083e07 100644 --- a/cmd/dendrite-upgrade-tests/main.go +++ b/cmd/dendrite-upgrade-tests/main.go @@ -103,7 +103,9 @@ func downloadArchive(cli *http.Client, tmpDir, archiveURL string, dockerfile []b if resp.StatusCode != 200 { return nil, fmt.Errorf("got HTTP %d", resp.StatusCode) } - os.Mkdir(tmpDir, os.ModePerm) + if err = os.Mkdir(tmpDir, os.ModePerm); err != nil { + return nil, fmt.Errorf("failed to make temporary directory: %s", err) + } defer os.RemoveAll(tmpDir) // dump the tarball temporarily, stripping the top-level directory err = extract.Archive(context.Background(), resp.Body, tmpDir, func(inPath string) string { @@ -233,7 +235,7 @@ func calculateVersions(cli *http.Client, from, to string) ([]string, error) { for _, sv := range semvers { versions = append(versions, sv.Original()) } - if *flagTo == "HEAD" { + if to == "HEAD" { versions = append(versions, "HEAD") } return versions, nil @@ -309,7 +311,7 @@ func runImage(dockerClient *client.Client, volumeName, version, imageID string) versionsURL := fmt.Sprintf("%s/_matrix/client/versions", baseURL) // hit /versions to check it is up var lastErr error - for i := 0; i < 100; i++ { + for i := 0; i < 500; i++ { res, err := http.Get(versionsURL) if err != nil { lastErr = fmt.Errorf("GET %s => error: %s", versionsURL, err) @@ -324,6 +326,19 @@ func runImage(dockerClient *client.Client, volumeName, version, imageID string) lastErr = nil break } + if lastErr != nil { + logs, err := dockerClient.ContainerLogs(context.Background(), containerID, types.ContainerLogsOptions{ + ShowStdout: true, + ShowStderr: true, + }) + // ignore errors when cannot get logs, it's just for debugging anyways + if err == nil { + logbody, err := ioutil.ReadAll(logs) + if err == nil { + log.Printf("Container logs:\n\n%s\n\n", string(logbody)) + } + } + } return baseURL, containerID, lastErr } diff --git a/cmd/dendrite-upgrade-tests/tests.go b/cmd/dendrite-upgrade-tests/tests.go index b0447bb63..a666186c7 100644 --- a/cmd/dendrite-upgrade-tests/tests.go +++ b/cmd/dendrite-upgrade-tests/tests.go @@ -167,6 +167,9 @@ func verifyTestsRan(baseURL string, branchNames []string) error { if err != nil { return fmt.Errorf("failed to /directory: %s", err) } + if r.RoomID == "" { + return fmt.Errorf("/directory lookup returned no room ID") + } log.Println(" public room exists: OK") history, err := client.Messages(r.RoomID, client.Store.LoadNextBatch(client.UserID), "", 'b', 100)