Fix init? and implement proper tests for patroni.
This commit is contained in:
parent
14e04cc7fe
commit
25152157ba
|
|
@ -137,7 +137,7 @@ func New(cfg Config, kubeClient k8sutil.KubernetesClient, pgSpec acidv1.Postgres
|
||||||
cluster.logger = logger.WithField("pkg", "cluster").WithField("cluster-name", cluster.clusterName())
|
cluster.logger = logger.WithField("pkg", "cluster").WithField("cluster-name", cluster.clusterName())
|
||||||
cluster.teamsAPIClient = teams.NewTeamsAPI(cfg.OpConfig.TeamsAPIUrl, logger)
|
cluster.teamsAPIClient = teams.NewTeamsAPI(cfg.OpConfig.TeamsAPIUrl, logger)
|
||||||
cluster.oauthTokenGetter = newSecretOauthTokenGetter(&kubeClient, cfg.OpConfig.OAuthTokenSecretName)
|
cluster.oauthTokenGetter = newSecretOauthTokenGetter(&kubeClient, cfg.OpConfig.OAuthTokenSecretName)
|
||||||
cluster.patroni = patroni.New(cluster.logger)
|
cluster.patroni = patroni.New(cluster.logger, nil)
|
||||||
cluster.eventRecorder = eventRecorder
|
cluster.eventRecorder = eventRecorder
|
||||||
|
|
||||||
cluster.EBSVolumes = make(map[string]volumes.VolumeProperties)
|
cluster.EBSVolumes = make(map[string]volumes.VolumeProperties)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package patroni
|
package patroni
|
||||||
|
|
||||||
|
//go:generate mockgen -package mocks -destination=$PWD/mocks/$GOFILE -source=$GOFILE -build_flags=-mod=vendor
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
@ -29,21 +31,31 @@ type Interface interface {
|
||||||
GetMemberData(server *v1.Pod) (MemberData, error)
|
GetMemberData(server *v1.Pod) (MemberData, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HTTPClient interface
|
||||||
|
type HTTPClient interface {
|
||||||
|
Do(req *http.Request) (*http.Response, error)
|
||||||
|
Get(url string) (resp *http.Response, err error)
|
||||||
|
}
|
||||||
|
|
||||||
// Patroni API client
|
// Patroni API client
|
||||||
type Patroni struct {
|
type Patroni struct {
|
||||||
httpClient *http.Client
|
httpClient HTTPClient
|
||||||
logger *logrus.Entry
|
logger *logrus.Entry
|
||||||
}
|
}
|
||||||
|
|
||||||
// New create patroni
|
// New create patroni
|
||||||
func New(logger *logrus.Entry) *Patroni {
|
func New(logger *logrus.Entry, client HTTPClient) *Patroni {
|
||||||
cl := http.Client{
|
if client == nil {
|
||||||
Timeout: timeout,
|
|
||||||
|
} else {
|
||||||
|
client = &http.Client{
|
||||||
|
Timeout: timeout,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Patroni{
|
return &Patroni{
|
||||||
logger: logger,
|
logger: logger,
|
||||||
httpClient: &cl,
|
httpClient: client,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -161,7 +173,8 @@ func (p *Patroni) GetMemberData(server *v1.Pod) (MemberData, error) {
|
||||||
|
|
||||||
memberData := MemberData{}
|
memberData := MemberData{}
|
||||||
|
|
||||||
var ok, r bool
|
r := false
|
||||||
|
ok := true
|
||||||
|
|
||||||
memberData.State, r = data["state"].(string)
|
memberData.State, r = data["state"].(string)
|
||||||
ok = ok && r
|
ok = ok && r
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,17 @@
|
||||||
package patroni
|
package patroni
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"k8s.io/api/core/v1"
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/golang/mock/gomock"
|
||||||
|
"github.com/zalando/postgres-operator/mocks"
|
||||||
|
|
||||||
|
v1 "k8s.io/api/core/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newMockPod(ip string) *v1.Pod {
|
func newMockPod(ip string) *v1.Pod {
|
||||||
|
|
@ -72,3 +79,20 @@ func TestApiURL(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPatroniAPI(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
json := `{"name":"Test Name","full_name":"test full name","owner":{"login": "octocat"}}`
|
||||||
|
r := ioutil.NopCloser(bytes.NewReader([]byte(json)))
|
||||||
|
|
||||||
|
response := http.Response{
|
||||||
|
Status: "200",
|
||||||
|
Body: r,
|
||||||
|
}
|
||||||
|
|
||||||
|
mockClient := mocks.NewMockHTTPClient(ctrl)
|
||||||
|
mockClient.EXPECT().Get(gomock.Any()).Return(&response)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue