@@ -10,6 +10,9 @@ import (
1010
1111 "gotest.tools/v3/assert"
1212
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"
1316 "github.com/crunchydata/postgres-operator/pkg/apis/postgres-operator.crunchydata.com/v1beta1"
1417)
1518
@@ -18,31 +21,61 @@ func TestSanitizeLogDirectory(t *testing.T) {
1821
1922 cluster := new (v1beta1.PostgresCluster )
2023 cluster .Spec .PostgresVersion = 18
24+ cluster .UID = "doot"
2125
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 }{
2329 // User wants logs inside the data directory.
2430 {expected : "/pgdata/pg18/log" , from : "log" },
2531
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+
2638 // Postgres interprets blank to mean root.
2739 // 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" = "/"` },
3042
3143 // 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+ },
4265 } {
43- result := sanitizeLogDirectory (cluster , tt .from )
66+ recorder .Events = nil
67+ result := sanitizeLogDirectory (cluster , tt .from , recorder )
4468
4569 assert .Equal (t , tt .expected , result , "from: %s" , tt .from )
4670 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+ }
4780 }
4881}
0 commit comments