@@ -10,6 +10,9 @@ import (
10
10
11
11
"gotest.tools/v3/assert"
12
12
13
+ "github.com/crunchydata/postgres-operator/internal/controller/runtime"
14
+ "github.com/crunchydata/postgres-operator/internal/testing/cmp"
15
+ "github.com/crunchydata/postgres-operator/internal/testing/events"
13
16
"github.com/crunchydata/postgres-operator/pkg/apis/postgres-operator.crunchydata.com/v1beta1"
14
17
)
15
18
@@ -18,31 +21,61 @@ func TestSanitizeLogDirectory(t *testing.T) {
18
21
19
22
cluster := new (v1beta1.PostgresCluster )
20
23
cluster .Spec .PostgresVersion = 18
24
+ cluster .UID = "doot"
21
25
22
- for _ , tt := range []struct { expected , from string }{
26
+ recorder := events .NewRecorder (t , runtime .Scheme )
27
+
28
+ for _ , tt := range []struct { expected , from , event string }{
23
29
// User wants logs inside the data directory.
24
30
{expected : "/pgdata/pg18/log" , from : "log" },
25
31
32
+ // Other relative paths warn.
33
+ {
34
+ expected : "/pgdata/pg18/some/directory" , from : "some/directory" ,
35
+ event : `"log_directory" should be "log" or an absolute path` ,
36
+ },
37
+
26
38
// Postgres interprets blank to mean root.
27
39
// That's no good, so we choose better.
28
- {expected : "/pgdata/logs/postgres" , from : "" },
29
- {expected : "/pgdata/logs/postgres" , from : "/" },
40
+ {expected : "/pgdata/logs/postgres" , from : "" , event : `"log_directory" = ""` },
41
+ {expected : "/pgdata/logs/postgres" , from : "/" , event : `"log_directory" = "/"` },
30
42
31
43
// Paths into Postgres directories are replaced on the same volume.
32
- {expected : "/pgdata/logs/postgres" , from : "." },
33
- {expected : "/pgdata/logs/postgres" , from : "global" },
34
- {expected : "/pgdata/logs/postgres" , from : "postgresql.conf" },
35
- {expected : "/pgdata/logs/postgres" , from : "postgresql.auto.conf" },
36
- {expected : "/pgdata/logs/postgres" , from : "pg_wal" },
37
- {expected : "/pgdata/logs/postgres" , from : "/pgdata/pg99/any" },
38
- {expected : "/pgdata/logs/postgres" , from : "/pgdata/pg18_wal" },
39
- {expected : "/pgdata/logs/postgres" , from : "/pgdata/pgsql_tmp/1/2" },
40
- {expected : "/pgwal/logs/postgres" , from : "/pgwal/pg18_wal" },
41
- {expected : "/pgtmp/logs/postgres" , from : "/pgtmp/pg18_wal" },
44
+ {
45
+ expected : "/pgdata/logs/postgres" , from : "." , event : `"log_directory" = "."` ,
46
+ }, {
47
+ expected : "/pgdata/logs/postgres" , from : "global" , event : `"log_directory" = "global"` ,
48
+ }, {
49
+ expected : "/pgdata/logs/postgres" , from : "postgresql.conf" , event : `"log_directory" = "postgresql.conf"` ,
50
+ }, {
51
+ expected : "/pgdata/logs/postgres" , from : "postgresql.auto.conf" , event : `"log_directory" = "postgresql.auto.conf"` ,
52
+ }, {
53
+ expected : "/pgdata/logs/postgres" , from : "pg_wal" , event : `"log_directory" = "pg_wal"` ,
54
+ }, {
55
+ expected : "/pgdata/logs/postgres" , from : "/pgdata/pg99/any" , event : `"log_directory" = "/pgdata/pg99/any"` ,
56
+ }, {
57
+ expected : "/pgdata/logs/postgres" , from : "/pgdata/pg18_wal" , event : `"log_directory" = "/pgdata/pg18_wal"` ,
58
+ }, {
59
+ expected : "/pgdata/logs/postgres" , from : "/pgdata/pgsql_tmp/ludicrous/speed" , event : `"log_directory" = "/pgdata/pgsql_tmp/ludicrous/speed"` ,
60
+ }, {
61
+ expected : "/pgwal/logs/postgres" , from : "/pgwal/pg18_wal" , event : `"log_directory" = "/pgwal/pg18_wal"` ,
62
+ }, {
63
+ expected : "/pgtmp/logs/postgres" , from : "/pgtmp/pg18_wal" , event : `"log_directory" = "/pgtmp/pg18_wal"` ,
64
+ },
42
65
} {
43
- result := sanitizeLogDirectory (cluster , tt .from )
66
+ recorder .Events = nil
67
+ result := sanitizeLogDirectory (cluster , tt .from , recorder )
44
68
45
69
assert .Equal (t , tt .expected , result , "from: %s" , tt .from )
46
70
assert .Assert (t , path .IsAbs (result ))
71
+
72
+ if len (tt .event ) > 0 {
73
+ assert .Assert (t , cmp .Len (recorder .Events , 1 ))
74
+ assert .Equal (t , recorder .Events [0 ].Type , "Warning" )
75
+ assert .Equal (t , recorder .Events [0 ].Reason , "InvalidParameter" )
76
+ assert .Equal (t , recorder .Events [0 ].Regarding .Kind , "PostgresCluster" )
77
+ assert .Assert (t , cmp .Equal (recorder .Events [0 ].Regarding .UID , "doot" ))
78
+ assert .Assert (t , cmp .Contains (recorder .Events [0 ].Note , tt .event ))
79
+ }
47
80
}
48
81
}
0 commit comments