gitlab.com/postgres-ai/database-lab/v3@v3.0.3/pkg/util/pglog/activity_test.go (about) 1 package pglog 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/AlekSi/pointer" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestGetPostgresLastActivity(t *testing.T) { 13 testCases := []struct { 14 logTime string 15 logMessage string 16 timeActivity *time.Time 17 }{ 18 { 19 logTime: "2020-01-10 11:49:14.615 UTC", 20 logMessage: "duration: 9.893 ms statement: SELECT 1;", 21 timeActivity: pointer.ToTime(time.Date(2020, 1, 10, 11, 49, 14, 615000000, time.UTC)), 22 }, 23 { 24 logTime: "2020-01-11 13:10:58.503 UTC", 25 logMessage: "duration: 0.077 ms statement:", 26 timeActivity: pointer.ToTime(time.Date(2020, 1, 11, 13, 10, 58, 503000000, time.UTC)), 27 }, 28 { 29 logTime: "2020-01-11 12:10:56.867 UTC", 30 logMessage: "database system is ready to accept connections", 31 timeActivity: nil, 32 }, 33 { 34 logTime: "", 35 logMessage: "duration: 9.893 ms statement: SELECT 1;", 36 timeActivity: nil, 37 }, 38 { 39 logTime: "2021-03-24 15:33:56.135 UTC", 40 logMessage: "duration: 0.544 ms execute lrupsc_28_0: EXPLAIN (FORMAT TEXT) select 1", 41 timeActivity: pointer.ToTime(time.Date(2021, 3, 24, 15, 33, 56, 135000000, time.UTC)), 42 }, 43 } 44 45 for _, tc := range testCases { 46 lastActivity, err := ParsePostgresLastActivity(tc.logTime, tc.logMessage) 47 require.NoError(t, err) 48 assert.Equal(t, tc.timeActivity, lastActivity) 49 } 50 } 51 52 func TestGetPostgresLastActivityWhenFailedParseTime(t *testing.T) { 53 testCases := []struct { 54 logTime string 55 logMessage string 56 errorString string 57 }{ 58 { 59 logTime: "2020-01-10 11:49:14", 60 logMessage: "duration: 9.893 ms statement: SELECT 1;", 61 errorString: `failed to parse the last activity time: parsing time "2020-01-10 11:49:14" as "2006-01-02 15:04:05.000 UTC": cannot parse "" as ".000"`, 62 }, 63 } 64 65 for _, tc := range testCases { 66 lastActivity, err := ParsePostgresLastActivity(tc.logTime, tc.logMessage) 67 require.Nil(t, lastActivity) 68 assert.EqualError(t, err, tc.errorString) 69 } 70 }