Merge pull request #47 from xmindlab-heicode/test/telemetry-retention-purge-coverage
test(telemetry): cover retention purge deletion (#43)
This commit is contained in:
@@ -43,6 +43,7 @@ func TestMain(m *testing.M) {
|
||||
&SubscriptionPlan{},
|
||||
&SubscriptionOrder{},
|
||||
&UserSubscription{},
|
||||
&TelemetryEvent{},
|
||||
); err != nil {
|
||||
panic("failed to migrate: " + err.Error())
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
// #43: the retention purge must delete telemetry rows received before the
|
||||
// cutoff and leave newer rows intact. TelemetryEvent is migrated by the package
|
||||
// TestMain; LOG_DB == DB in tests.
|
||||
func TestDeleteTelemetryEventsBefore(t *testing.T) {
|
||||
// Isolate from any other test's rows.
|
||||
require.NoError(t, LOG_DB.Where("1 = 1").Delete(&TelemetryEvent{}).Error)
|
||||
|
||||
mk := func(receivedAt int64, client string) {
|
||||
require.NoError(t, LOG_DB.Create(&TelemetryEvent{
|
||||
ReceivedAt: receivedAt, UserId: 1, ClientId: client, SchemaVersion: 1,
|
||||
}).Error)
|
||||
}
|
||||
mk(1000, "old-1") // before cutoff -> deleted
|
||||
mk(2999, "old-2") // before cutoff -> deleted
|
||||
mk(3000, "keep-1") // == cutoff -> kept (strict <)
|
||||
mk(5000, "keep-2") // after cutoff -> kept
|
||||
|
||||
deleted, err := DeleteTelemetryEventsBefore(3000)
|
||||
require.NoError(t, err)
|
||||
require.EqualValues(t, 2, deleted, "rows with received_at < cutoff are purged")
|
||||
|
||||
var remaining int64
|
||||
require.NoError(t, LOG_DB.Model(&TelemetryEvent{}).Count(&remaining).Error)
|
||||
require.EqualValues(t, 2, remaining, "rows at/after cutoff are retained")
|
||||
|
||||
// Idempotent: a second pass with the same cutoff deletes nothing.
|
||||
again, err := DeleteTelemetryEventsBefore(3000)
|
||||
require.NoError(t, err)
|
||||
require.EqualValues(t, 0, again)
|
||||
}
|
||||
Reference in New Issue
Block a user