A timeout doesn't make sense on this level, because it is very difficult to estimate how long downloading rpm metadata takes. Drop it completely in favor of higher-level timeouts in the test runner. Fixes #601
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
// Package weldrcheck contains functions used to run integration tests on a running API server
|
|
// Copyright (C) 2020 by Red Hat, Inc.
|
|
|
|
// nolint: deadcode,unused // These functions are used by the *_test.go code
|
|
package client
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net"
|
|
"net/http"
|
|
"sort"
|
|
"strconv"
|
|
)
|
|
|
|
type TestState struct {
|
|
socket *http.Client
|
|
apiVersion int
|
|
repoDir string
|
|
unitTest bool
|
|
}
|
|
|
|
// isStringInSlice returns true if the string is present, false if not
|
|
// slice must be sorted
|
|
// TODO decide if this belongs in a more widely useful package location
|
|
func isStringInSlice(slice []string, s string) bool {
|
|
i := sort.SearchStrings(slice, s)
|
|
if i < len(slice) && slice[i] == s {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func setUpTestState(socketPath string, unitTest bool) (*TestState, error) {
|
|
state := TestState{unitTest: unitTest}
|
|
|
|
state.socket = &http.Client{
|
|
Transport: &http.Transport{
|
|
DialContext: func(_ context.Context, _, _ string) (net.Conn, error) {
|
|
return net.Dial("unix", socketPath)
|
|
},
|
|
},
|
|
}
|
|
|
|
// Make sure the server is running
|
|
status, resp, err := GetStatusV0(state.socket)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("status request failed with client error: %s", err)
|
|
}
|
|
if resp != nil {
|
|
return nil, fmt.Errorf("status request failed: %v\n", resp)
|
|
}
|
|
apiVersion, e := strconv.Atoi(status.API)
|
|
if e != nil {
|
|
state.apiVersion = 0
|
|
} else {
|
|
state.apiVersion = apiVersion
|
|
}
|
|
fmt.Printf("Running tests against %s %s server using V%d API\n\n", status.Backend, status.Build, state.apiVersion)
|
|
|
|
return &state, nil
|
|
}
|