Blame internal/client/utils.go

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
}