mirror of
https://dev.azure.com/schwarzit/schwarzit.stackit-public/_git/audit-go
synced 2026-02-07 16:47:24 +00:00
Concurrent invocations on the SequenceNumberGenerator can lead to gaps and duplicate sequence numbers. To fix the issue an internal "backlog" is added as a buffer. If a new number is requested the "backlog" is checked first before creating a new number. The "host" HTTP-Header is filtered out hide internal information. The following build dependencies have been updated: - Go has been updated to version 1.23.3. - Golanglint-ci has been updated to version v1.62.0. - Buf has been updated to version v1.46.0 The following library dependencies have been updated: - go.opentelemetry.io/otel has been updated to version v1.32.0 - go.opentelemetry.io/otel/trace has been updated to version v1.32.0 Related work items: #696569
58 lines
2.2 KiB
Go
58 lines
2.2 KiB
Go
package utils
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
)
|
|
|
|
func Test_DefaultSequenceNumberGenerator(t *testing.T) {
|
|
|
|
t.Run("next", func(t *testing.T) {
|
|
var sequenceGenerator = NewDefaultSequenceNumberGenerator()
|
|
assert.Equal(t, uint64(0), (*sequenceGenerator).Next())
|
|
})
|
|
|
|
t.Run("revert", func(t *testing.T) {
|
|
var sequenceGenerator = NewDefaultSequenceNumberGenerator()
|
|
assert.Equal(t, uint64(0), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(1), (*sequenceGenerator).Next())
|
|
(*sequenceGenerator).Revert(uint64(1))
|
|
assert.Equal(t, uint64(1), (*sequenceGenerator).Next())
|
|
})
|
|
|
|
t.Run("revert first", func(t *testing.T) {
|
|
var sequenceGenerator = NewDefaultSequenceNumberGenerator()
|
|
assert.Equal(t, uint64(0), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(1), (*sequenceGenerator).Next())
|
|
(*sequenceGenerator).Revert(uint64(0))
|
|
assert.Equal(t, uint64(0), (*sequenceGenerator).Next())
|
|
})
|
|
|
|
t.Run("revert same value multiple times", func(t *testing.T) {
|
|
var sequenceGenerator = NewDefaultSequenceNumberGenerator()
|
|
assert.Equal(t, uint64(0), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(1), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(2), (*sequenceGenerator).Next())
|
|
(*sequenceGenerator).Revert(uint64(1))
|
|
(*sequenceGenerator).Revert(uint64(1))
|
|
assert.Equal(t, uint64(1), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(3), (*sequenceGenerator).Next())
|
|
})
|
|
|
|
t.Run("get and revert multiple", func(t *testing.T) {
|
|
var sequenceGenerator = NewDefaultSequenceNumberGenerator()
|
|
assert.Equal(t, uint64(0), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(1), (*sequenceGenerator).Next())
|
|
(*sequenceGenerator).Revert(uint64(1))
|
|
assert.Equal(t, uint64(1), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(2), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(3), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(4), (*sequenceGenerator).Next())
|
|
(*sequenceGenerator).Revert(uint64(2))
|
|
(*sequenceGenerator).Revert(uint64(3))
|
|
assert.Equal(t, uint64(2), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(3), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(5), (*sequenceGenerator).Next())
|
|
assert.Equal(t, uint64(6), (*sequenceGenerator).Next())
|
|
})
|
|
}
|