From 3a60abbac07bd342f261fccb46bfd5b0039b3f74 Mon Sep 17 00:00:00 2001 From: Ty Cobb Date: Wed, 11 Sep 2019 22:10:34 -0500 Subject: Make configurable the number of days to remove old sessions --- config/config_test.go | 35 +++++++++++++++++++++++++++++++++++ config/options.go | 8 ++++++++ config/parser.go | 2 ++ 3 files changed, 45 insertions(+) (limited to 'config') diff --git a/config/config_test.go b/config/config_test.go index 0e10345..353b87c 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -882,6 +882,41 @@ func TestArchiveReadDays(t *testing.T) { } } +func TestRemoveSessionsDays(t *testing.T) { + os.Clearenv() + os.Setenv("REMOVE_SESSIONS_DAYS", "7") + + parser := NewParser() + opts, err := parser.ParseEnvironmentVariables() + if err != nil { + t.Fatalf(`Parsing failure: %v`, err) + } + + expected := 7 + result := opts.RemoveSessionsDays() + + if result != expected { + t.Fatalf(`Unexpected REMOVE_SESSIONS_DAYS value, got %v instead of %v`, result, expected) + } +} + +func TestDefaultRemoveSessionsDays(t *testing.T) { + os.Clearenv() + + parser := NewParser() + opts, err := parser.ParseEnvironmentVariables() + if err != nil { + t.Fatalf(`Parsing failure: %v`, err) + } + + expected := 30 + result := opts.RemoveSessionsDays() + + if result != expected { + t.Fatalf(`Unexpected REMOVE_SESSIONS_DAYS value, got %v instead of %v`, result, expected) + } +} + func TestRunMigrationsWhenUnset(t *testing.T) { os.Clearenv() diff --git a/config/options.go b/config/options.go index e23a4ae..a5c75b8 100644 --- a/config/options.go +++ b/config/options.go @@ -27,6 +27,7 @@ const ( defaultDatabaseMaxConns = 20 defaultDatabaseMinConns = 1 defaultArchiveReadDays = 60 + defaultRemoveSessionsDays = 30 defaultListenAddr = "127.0.0.1:8080" defaultCertFile = "" defaultKeyFile = "" @@ -67,6 +68,7 @@ type Options struct { certKeyFile string cleanupFrequency int archiveReadDays int + removeSessionsDays int pollingFrequency int batchSize int workerPoolSize int @@ -105,6 +107,7 @@ func NewOptions() *Options { certKeyFile: defaultKeyFile, cleanupFrequency: defaultCleanupFrequency, archiveReadDays: defaultArchiveReadDays, + removeSessionsDays: defaultRemoveSessionsDays, pollingFrequency: defaultPollingFrequency, batchSize: defaultBatchSize, workerPoolSize: defaultWorkerPoolSize, @@ -271,6 +274,11 @@ func (o *Options) ArchiveReadDays() int { return o.archiveReadDays } +// RemoveSessionsDays returns the number of days after which to remove sessions. +func (o *Options) RemoveSessionsDays() int { + return o.removeSessionsDays +} + // PocketConsumerKey returns the Pocket Consumer Key if configured. func (o *Options) PocketConsumerKey(defaultValue string) string { if o.pocketConsumerKey != "" { diff --git a/config/parser.go b/config/parser.go index 7e70db5..e151c59 100644 --- a/config/parser.go +++ b/config/parser.go @@ -118,6 +118,8 @@ func (p *Parser) parseLines(lines []string) (err error) { p.opts.batchSize = parseInt(value, defaultBatchSize) case "ARCHIVE_READ_DAYS": p.opts.archiveReadDays = parseInt(value, defaultArchiveReadDays) + case "REMOVE_SESSIONS_DAYS": + p.opts.removeSessionsDays = parseInt(value, defaultRemoveSessionsDays) case "PROXY_IMAGES": p.opts.proxyImages = parseString(value, defaultProxyImages) case "CREATE_ADMIN": -- cgit v1.2.3