// 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
}