From 9791c3e8d2e2ade6c593437ec7f59feb932998a9 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Fri, 1 Dec 2017 09:25:14 -0500 Subject: Changed config behaviour such that exportFromTimestamp is set/unset when message export is enabled/disabled (#7925) --- model/config.go | 10 +++++- model/config_test.go | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 1 deletion(-) diff --git a/model/config.go b/model/config.go index 1f56eb4f5..232d40b22 100644 --- a/model/config.go +++ b/model/config.go @@ -1534,6 +1534,14 @@ func (s *MessageExportSettings) SetDefaults() { s.ExportFromTimestamp = NewInt64(0) } + if s.EnableExport != nil && *s.EnableExport && *s.ExportFromTimestamp == int64(0) { + // when the feature is enabled via the System Console, use the current timestamp as the start time for future exports + s.ExportFromTimestamp = NewInt64(GetMillis()) + } else if s.EnableExport != nil && !*s.EnableExport { + // when the feature is disabled, reset the timestamp so that the timestamp will be set if the feature is re-enabled + s.ExportFromTimestamp = NewInt64(0) + } + if s.BatchSize == nil { s.BatchSize = NewInt(10000) } @@ -2040,7 +2048,7 @@ func (mes *MessageExportSettings) isValid(fs FileSettings) *AppError { return NewAppError("Config.IsValid", "model.config.is_valid.message_export.enable.app_error", nil, "", http.StatusBadRequest) } if *mes.EnableExport { - if mes.ExportFromTimestamp == nil || *mes.ExportFromTimestamp < 0 || *mes.ExportFromTimestamp > time.Now().Unix() { + if mes.ExportFromTimestamp == nil || *mes.ExportFromTimestamp < 0 || *mes.ExportFromTimestamp > GetMillis() { return NewAppError("Config.IsValid", "model.config.is_valid.message_export.export_from.app_error", nil, "", http.StatusBadRequest) } else if mes.DailyRunTime == nil { return NewAppError("Config.IsValid", "model.config.is_valid.message_export.daily_runtime.app_error", nil, "", http.StatusBadRequest) diff --git a/model/config_test.go b/model/config_test.go index 58f690165..217751252 100644 --- a/model/config_test.go +++ b/model/config_test.go @@ -143,3 +143,98 @@ func TestMessageExportSettingsIsValid(t *testing.T) { // should pass because everything is valid require.Nil(t, mes.isValid(*fs)) } + +func TestMessageExportSetDefaults(t *testing.T) { + mes := &MessageExportSettings{} + mes.SetDefaults() + + require.False(t, *mes.EnableExport) + require.Equal(t, "export", *mes.FileLocation) + require.Equal(t, "01:00", *mes.DailyRunTime) + require.Equal(t, int64(0), *mes.ExportFromTimestamp) + require.Equal(t, 10000, *mes.BatchSize) +} + +func TestMessageExportSetDefaultsExportEnabledExportFromTimestampNil(t *testing.T) { + mes := &MessageExportSettings{ + EnableExport: NewBool(true), + } + mes.SetDefaults() + + require.True(t, *mes.EnableExport) + require.Equal(t, "export", *mes.FileLocation) + require.Equal(t, "01:00", *mes.DailyRunTime) + require.NotEqual(t, int64(0), *mes.ExportFromTimestamp) + require.True(t, *mes.ExportFromTimestamp <= GetMillis()) + require.Equal(t, 10000, *mes.BatchSize) +} + +func TestMessageExportSetDefaultsExportEnabledExportFromTimestampZero(t *testing.T) { + mes := &MessageExportSettings{ + EnableExport: NewBool(true), + ExportFromTimestamp: NewInt64(0), + } + mes.SetDefaults() + + require.True(t, *mes.EnableExport) + require.Equal(t, "export", *mes.FileLocation) + require.Equal(t, "01:00", *mes.DailyRunTime) + require.NotEqual(t, int64(0), *mes.ExportFromTimestamp) + require.True(t, *mes.ExportFromTimestamp <= GetMillis()) + require.Equal(t, 10000, *mes.BatchSize) +} + +func TestMessageExportSetDefaultsExportEnabledExportFromTimestampNonZero(t *testing.T) { + mes := &MessageExportSettings{ + EnableExport: NewBool(true), + ExportFromTimestamp: NewInt64(12345), + } + mes.SetDefaults() + + require.True(t, *mes.EnableExport) + require.Equal(t, "export", *mes.FileLocation) + require.Equal(t, "01:00", *mes.DailyRunTime) + require.Equal(t, int64(12345), *mes.ExportFromTimestamp) + require.Equal(t, 10000, *mes.BatchSize) +} + +func TestMessageExportSetDefaultsExportDisabledExportFromTimestampNil(t *testing.T) { + mes := &MessageExportSettings{ + EnableExport: NewBool(false), + } + mes.SetDefaults() + + require.False(t, *mes.EnableExport) + require.Equal(t, "export", *mes.FileLocation) + require.Equal(t, "01:00", *mes.DailyRunTime) + require.Equal(t, int64(0), *mes.ExportFromTimestamp) + require.Equal(t, 10000, *mes.BatchSize) +} + +func TestMessageExportSetDefaultsExportDisabledExportFromTimestampZero(t *testing.T) { + mes := &MessageExportSettings{ + EnableExport: NewBool(false), + ExportFromTimestamp: NewInt64(0), + } + mes.SetDefaults() + + require.False(t, *mes.EnableExport) + require.Equal(t, "export", *mes.FileLocation) + require.Equal(t, "01:00", *mes.DailyRunTime) + require.Equal(t, int64(0), *mes.ExportFromTimestamp) + require.Equal(t, 10000, *mes.BatchSize) +} + +func TestMessageExportSetDefaultsExportDisabledExportFromTimestampNonZero(t *testing.T) { + mes := &MessageExportSettings{ + EnableExport: NewBool(false), + ExportFromTimestamp: NewInt64(12345), + } + mes.SetDefaults() + + require.False(t, *mes.EnableExport) + require.Equal(t, "export", *mes.FileLocation) + require.Equal(t, "01:00", *mes.DailyRunTime) + require.Equal(t, int64(0), *mes.ExportFromTimestamp) + require.Equal(t, 10000, *mes.BatchSize) +} -- cgit v1.2.3-1-g7c22