extending unit tests
This commit is contained in:
parent
d78ccea3a8
commit
a1908d4c59
|
|
@ -1087,9 +1087,9 @@ data:
|
||||||
|
|
||||||
### Standby clusters
|
### Standby clusters
|
||||||
|
|
||||||
The setup for [standby clusters](user.md#setting-up-a-standby-cluster) is very
|
The setup for [standby clusters](user.md#setting-up-a-standby-cluster) is
|
||||||
similar to cloning. They can stream from a WAL archive (S3, GCS). Like with
|
similar to cloning when they stream changes from a WAL archive (S3 or GCS).
|
||||||
cloning, if you are using [additional environment variables](#custom-pod-environment-variables)
|
If you are using [additional environment variables](#custom-pod-environment-variables)
|
||||||
to access your backup location you have to copy those variables and prepend
|
to access your backup location you have to copy those variables and prepend
|
||||||
the `STANDBY_` prefix for Spilo to find the backups and WAL files to stream.
|
the `STANDBY_` prefix for Spilo to find the backups and WAL files to stream.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,7 @@ type Patroni struct {
|
||||||
SynchronousNodeCount uint32 `json:"synchronous_node_count,omitempty" defaults:"1"`
|
SynchronousNodeCount uint32 `json:"synchronous_node_count,omitempty" defaults:"1"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// StandbyDescription contains remote primary config or s3 wal path
|
// StandbyDescription contains remote primary config or s3/gs wal path
|
||||||
type StandbyDescription struct {
|
type StandbyDescription struct {
|
||||||
S3WalPath string `json:"s3_wal_path,omitempty"`
|
S3WalPath string `json:"s3_wal_path,omitempty"`
|
||||||
GSWalPath string `json:"gs_wal_path,omitempty"`
|
GSWalPath string `json:"gs_wal_path,omitempty"`
|
||||||
|
|
|
||||||
|
|
@ -1963,7 +1963,6 @@ func (c *Cluster) generateStandbyEnvironment(description *acidv1.StandbyDescript
|
||||||
|
|
||||||
result = append(result, v1.EnvVar{Name: "STANDBY_METHOD", Value: "STANDBY_WITH_WALE"})
|
result = append(result, v1.EnvVar{Name: "STANDBY_METHOD", Value: "STANDBY_WITH_WALE"})
|
||||||
result = append(result, v1.EnvVar{Name: "STANDBY_WAL_BUCKET_SCOPE_PREFIX", Value: ""})
|
result = append(result, v1.EnvVar{Name: "STANDBY_WAL_BUCKET_SCOPE_PREFIX", Value: ""})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
|
||||||
|
|
@ -538,6 +538,7 @@ func TestStandbyEnv(t *testing.T) {
|
||||||
standbyOpts *acidv1.StandbyDescription
|
standbyOpts *acidv1.StandbyDescription
|
||||||
env v1.EnvVar
|
env v1.EnvVar
|
||||||
envPos int
|
envPos int
|
||||||
|
envLen int
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
subTest: "from custom s3 path",
|
subTest: "from custom s3 path",
|
||||||
|
|
@ -549,6 +550,7 @@ func TestStandbyEnv(t *testing.T) {
|
||||||
Value: "s3://some/path/",
|
Value: "s3://some/path/",
|
||||||
},
|
},
|
||||||
envPos: 0,
|
envPos: 0,
|
||||||
|
envLen: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
subTest: "from custom gs path",
|
subTest: "from custom gs path",
|
||||||
|
|
@ -556,15 +558,28 @@ func TestStandbyEnv(t *testing.T) {
|
||||||
GSWalPath: "gs://some/path/",
|
GSWalPath: "gs://some/path/",
|
||||||
},
|
},
|
||||||
env: v1.EnvVar{
|
env: v1.EnvVar{
|
||||||
Name: "STANDBY_WALE_GS_PREFIX",
|
Name: "STANDBY_GOOGLE_APPLICATION_CREDENTIALS",
|
||||||
Value: "gs://some/path/",
|
Value: "",
|
||||||
},
|
},
|
||||||
envPos: 0,
|
envPos: 1,
|
||||||
|
envLen: 4,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
subTest: "ignore gs path if s3 is set",
|
||||||
|
standbyOpts: &acidv1.StandbyDescription{
|
||||||
|
S3WalPath: "s3://some/path/",
|
||||||
|
GSWalPath: "gs://some/path/",
|
||||||
|
},
|
||||||
|
env: v1.EnvVar{
|
||||||
|
Name: "STANDBY_METHOD",
|
||||||
|
Value: "STANDBY_WITH_WALE",
|
||||||
|
},
|
||||||
|
envPos: 1,
|
||||||
|
envLen: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
subTest: "from remote primary",
|
subTest: "from remote primary",
|
||||||
standbyOpts: &acidv1.StandbyDescription{
|
standbyOpts: &acidv1.StandbyDescription{
|
||||||
S3WalPath: "s3://some/path/",
|
|
||||||
StandbyHost: "remote-primary",
|
StandbyHost: "remote-primary",
|
||||||
},
|
},
|
||||||
env: v1.EnvVar{
|
env: v1.EnvVar{
|
||||||
|
|
@ -572,11 +587,11 @@ func TestStandbyEnv(t *testing.T) {
|
||||||
Value: "remote-primary",
|
Value: "remote-primary",
|
||||||
},
|
},
|
||||||
envPos: 0,
|
envPos: 0,
|
||||||
|
envLen: 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
subTest: "from remote primary with port",
|
subTest: "from remote primary with port",
|
||||||
standbyOpts: &acidv1.StandbyDescription{
|
standbyOpts: &acidv1.StandbyDescription{
|
||||||
S3WalPath: "s3://some/path/",
|
|
||||||
StandbyHost: "remote-primary",
|
StandbyHost: "remote-primary",
|
||||||
StandbyPort: "9876",
|
StandbyPort: "9876",
|
||||||
},
|
},
|
||||||
|
|
@ -585,6 +600,20 @@ func TestStandbyEnv(t *testing.T) {
|
||||||
Value: "9876",
|
Value: "9876",
|
||||||
},
|
},
|
||||||
envPos: 1,
|
envPos: 1,
|
||||||
|
envLen: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
subTest: "from remote primary - ignore WAL path",
|
||||||
|
standbyOpts: &acidv1.StandbyDescription{
|
||||||
|
GSWalPath: "gs://some/path/",
|
||||||
|
StandbyHost: "remote-primary",
|
||||||
|
},
|
||||||
|
env: v1.EnvVar{
|
||||||
|
Name: "STANDBY_HOST",
|
||||||
|
Value: "remote-primary",
|
||||||
|
},
|
||||||
|
envPos: 0,
|
||||||
|
envLen: 1,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -605,6 +634,11 @@ func TestStandbyEnv(t *testing.T) {
|
||||||
t.Errorf("%s %s: Expected env value %s, have %s instead",
|
t.Errorf("%s %s: Expected env value %s, have %s instead",
|
||||||
testName, tt.subTest, tt.env.Value, env.Value)
|
testName, tt.subTest, tt.env.Value, env.Value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(envs) != tt.envLen {
|
||||||
|
t.Errorf("%s %s: Expected number of env variables %d, have %d instead",
|
||||||
|
testName, tt.subTest, tt.envLen, len(envs))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue