|
Packit Service |
4d2de5 |
// Package weldrcheck contains functions used to run integration tests on a running API server
|
|
Packit Service |
4d2de5 |
// Copyright (C) 2020 by Red Hat, Inc.
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// nolint: deadcode,unused // These functions are used by the *_test.go code
|
|
Packit Service |
4d2de5 |
package client
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
import (
|
|
Packit Service |
4d2de5 |
"context"
|
|
Packit Service |
4d2de5 |
"fmt"
|
|
Packit Service |
4d2de5 |
"net"
|
|
Packit Service |
4d2de5 |
"net/http"
|
|
Packit Service |
4d2de5 |
"sort"
|
|
Packit Service |
4d2de5 |
"strconv"
|
|
Packit Service |
4d2de5 |
)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
type TestState struct {
|
|
Packit Service |
4d2de5 |
socket *http.Client
|
|
Packit Service |
4d2de5 |
apiVersion int
|
|
Packit Service |
4d2de5 |
repoDir string
|
|
Packit Service |
4d2de5 |
unitTest bool
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// isStringInSlice returns true if the string is present, false if not
|
|
Packit Service |
4d2de5 |
// slice must be sorted
|
|
Packit Service |
4d2de5 |
// TODO decide if this belongs in a more widely useful package location
|
|
Packit Service |
4d2de5 |
func isStringInSlice(slice []string, s string) bool {
|
|
Packit Service |
4d2de5 |
i := sort.SearchStrings(slice, s)
|
|
Packit Service |
4d2de5 |
if i < len(slice) && slice[i] == s {
|
|
Packit Service |
4d2de5 |
return true
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
return false
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func setUpTestState(socketPath string, unitTest bool) (*TestState, error) {
|
|
Packit Service |
4d2de5 |
state := TestState{unitTest: unitTest}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
state.socket = &http.Client{
|
|
Packit Service |
4d2de5 |
Transport: &http.Transport{
|
|
Packit Service |
4d2de5 |
DialContext: func(_ context.Context, _, _ string) (net.Conn, error) {
|
|
Packit Service |
4d2de5 |
return net.Dial("unix", socketPath)
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Make sure the server is running
|
|
Packit Service |
4d2de5 |
status, resp, err := GetStatusV0(state.socket)
|
|
Packit Service |
4d2de5 |
if err != nil {
|
|
Packit Service |
4d2de5 |
return nil, fmt.Errorf("status request failed with client error: %s", err)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
if resp != nil {
|
|
Packit Service |
4d2de5 |
return nil, fmt.Errorf("status request failed: %v\n", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
apiVersion, e := strconv.Atoi(status.API)
|
|
Packit Service |
4d2de5 |
if e != nil {
|
|
Packit Service |
4d2de5 |
state.apiVersion = 0
|
|
Packit Service |
4d2de5 |
} else {
|
|
Packit Service |
4d2de5 |
state.apiVersion = apiVersion
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
fmt.Printf("Running tests against %s %s server using V%d API\n\n", status.Backend, status.Build, state.apiVersion)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
return &state, nil
|
|
Packit Service |
4d2de5 |
}
|