Blame internal/client/utils.go

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