fix postgresql spec tests

This commit is contained in:
Murat Kabilov 2017-05-29 18:08:55 +02:00
parent 312f9e47b3
commit 41b774c004
1 changed files with 42 additions and 25 deletions

View File

@ -1,6 +1,7 @@
package spec package spec
import ( import (
"bytes"
"encoding/json" "encoding/json"
"errors" "errors"
"reflect" "reflect"
@ -9,13 +10,12 @@ import (
"k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/unversioned"
"k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/api/v1"
"bytes"
) )
var parseTimeTests = []struct { var parseTimeTests = []struct {
in string in string
out time.Time out time.Time
err error err error
}{ }{
{"16:08", mustParseTime("16:08"), nil}, {"16:08", mustParseTime("16:08"), nil},
{"11:00", mustParseTime("11:00"), nil}, {"11:00", mustParseTime("11:00"), nil},
@ -26,9 +26,9 @@ var parseTimeTests = []struct {
} }
var parseWeekdayTests = []struct { var parseWeekdayTests = []struct {
in string in string
out time.Weekday out time.Weekday
err error err error
}{ }{
{"Wed", time.Wednesday, nil}, {"Wed", time.Wednesday, nil},
{"Sunday", time.Weekday(0), errors.New("incorrect weekday")}, {"Sunday", time.Weekday(0), errors.New("incorrect weekday")},
@ -58,21 +58,31 @@ var maintenanceWindows = []struct {
err error err error
}{{[]byte(`"Tue:10:00-20:00"`), }{{[]byte(`"Tue:10:00-20:00"`),
MaintenanceWindow{ MaintenanceWindow{
Weekday: time.Tuesday, Everyday: false,
StartTime: mustParseTime("10:00"), Weekday: time.Tuesday,
EndTime: mustParseTime("20:00"), StartTime: mustParseTime("10:00"),
EndTime: mustParseTime("20:00"),
}, nil}, }, nil},
{[]byte(`"Mon:10:00-10:00"`), {[]byte(`"Mon:10:00-10:00"`),
MaintenanceWindow{ MaintenanceWindow{
Weekday: time.Monday, Everyday: false,
StartTime: mustParseTime("10:00"), Weekday: time.Monday,
EndTime: mustParseTime("10:00"), StartTime: mustParseTime("10:00"),
EndTime: mustParseTime("10:00"),
}, nil}, }, nil},
{[]byte(`"Sun:00:00-00:00"`), {[]byte(`"Sun:00:00-00:00"`),
MaintenanceWindow{ MaintenanceWindow{
Weekday: time.Sunday, Everyday: false,
StartTime: mustParseTime("00:00"), Weekday: time.Sunday,
EndTime: mustParseTime("00:00"), StartTime: mustParseTime("00:00"),
EndTime: mustParseTime("00:00"),
}, nil},
{[]byte(`"01:00-10:00"`),
MaintenanceWindow{
Everyday: true,
Weekday: time.Sunday,
StartTime: mustParseTime("01:00"),
EndTime: mustParseTime("10:00"),
}, nil}, }, nil},
{[]byte(`"Mon:12:00-11:00"`), MaintenanceWindow{}, errors.New(`'From' time must be prior to the 'To' time`)}, {[]byte(`"Mon:12:00-11:00"`), MaintenanceWindow{}, errors.New(`'From' time must be prior to the 'To' time`)},
{[]byte(`"Wed:33:00-00:00"`), MaintenanceWindow{}, errors.New(`could not parse start time: parsing time "33:00": hour out of range`)}, {[]byte(`"Wed:33:00-00:00"`), MaintenanceWindow{}, errors.New(`could not parse start time: parsing time "33:00": hour out of range`)},
@ -168,7 +178,8 @@ var unmarshalCluster = []struct {
}, },
"maintenanceWindows": [ "maintenanceWindows": [
"Mon:01:00-06:00", "Mon:01:00-06:00",
"Sat:00:00-04:00" "Sat:00:00-04:00",
"05:00-05:15"
] ]
} }
}`), }`),
@ -214,21 +225,28 @@ var unmarshalCluster = []struct {
NumberOfInstances: 2, NumberOfInstances: 2,
Users: map[string]UserFlags{"zalando": {"superuser", "createdb"}}, Users: map[string]UserFlags{"zalando": {"superuser", "createdb"}},
MaintenanceWindows: []MaintenanceWindow{{ MaintenanceWindows: []MaintenanceWindow{{
Weekday: time.Monday, Everyday: false,
StartTime: mustParseTime("01:00"), Weekday: time.Monday,
EndTime: mustParseTime("06:00"), StartTime: mustParseTime("01:00"),
EndTime: mustParseTime("06:00"),
}, {
Everyday: false,
Weekday: time.Saturday,
StartTime: mustParseTime("00:00"),
EndTime: mustParseTime("04:00"),
}, },
{ {
Weekday: time.Saturday, Everyday: true,
StartTime: mustParseTime("00:00"), Weekday: time.Sunday,
EndTime: mustParseTime("04:00"), StartTime: mustParseTime("05:00"),
EndTime: mustParseTime("05:15"),
}, },
}, },
ClusterName: "testcluster1", ClusterName: "testcluster1",
}, },
Error: nil, Error: nil,
}, },
[]byte(`{"kind":"Postgresql","apiVersion":"acid.zalan.do/v1","metadata":{"name":"acid-testcluster1","creationTimestamp":null},"spec":{"postgresql":{"version":"9.6","parameters":{"log_statement":"all","max_connections":"10","shared_buffers":"32MB"}},"volume":{"size":"5Gi","storageClass":"SSD"},"patroni":{"initdb":{"data-checksums":"true","encoding":"UTF8","locale":"en_US.UTF-8"},"pg_hba":["hostssl all all 0.0.0.0/0 md5","host all all 0.0.0.0/0 md5"],"ttl":30,"loop_wait":10,"retry_timeout":10,"maximum_lag_on_failover":33554432},"resources":{"requests":{"cpu":"10m","memory":"50Mi"},"limits":{"cpu":"300m","memory":"3000Mi"}},"teamId":"ACID","allowedSourceRanges":["127.0.0.1/32"],"numberOfInstances":2,"users":{"zalando":["superuser","createdb"]},"maintenanceWindows":["Mon:01:00-06:00","Sat:00:00-04:00"]}}`), nil}, []byte(`{"kind":"Postgresql","apiVersion":"acid.zalan.do/v1","metadata":{"name":"acid-testcluster1","creationTimestamp":null},"spec":{"postgresql":{"version":"9.6","parameters":{"log_statement":"all","max_connections":"10","shared_buffers":"32MB"}},"volume":{"size":"5Gi","storageClass":"SSD"},"patroni":{"initdb":{"data-checksums":"true","encoding":"UTF8","locale":"en_US.UTF-8"},"pg_hba":["hostssl all all 0.0.0.0/0 md5","host all all 0.0.0.0/0 md5"],"ttl":30,"loop_wait":10,"retry_timeout":10,"maximum_lag_on_failover":33554432},"resources":{"requests":{"cpu":"10m","memory":"50Mi"},"limits":{"cpu":"300m","memory":"3000Mi"}},"teamId":"ACID","allowedSourceRanges":["127.0.0.1/32"],"numberOfInstances":2,"users":{"zalando":["superuser","createdb"]},"maintenanceWindows":["Mon:01:00-06:00","Sat:00:00-04:00","05:00-05:15"]}}`), nil},
{ {
[]byte(`{"kind": "Postgresql","apiVersion": "acid.zalan.do/v1","metadata": {"name": "teapot-testcluster1"}, "spec": {"teamId": "acid"}}`), []byte(`{"kind": "Postgresql","apiVersion": "acid.zalan.do/v1","metadata": {"name": "teapot-testcluster1"}, "spec": {"teamId": "acid"}}`),
Postgresql{ Postgresql{
@ -337,7 +355,6 @@ func TestWeekdayTime(t *testing.T) {
} }
} }
func TestClusterName(t *testing.T) { func TestClusterName(t *testing.T) {
for _, tt := range clusterNames { for _, tt := range clusterNames {
name, err := extractClusterName(tt.in, tt.inTeam) name, err := extractClusterName(tt.in, tt.inTeam)