mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
fix: use int64 in publisher delay (#19457)
This commit is contained in:
@@ -47,6 +47,12 @@ func Int63() (int64, error) {
|
|||||||
return rng.Int63(), cs.err
|
return rng.Int63(), cs.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Int63n returns a non-negative integer in [0,maxVal) as an int64.
|
||||||
|
func Int63n(maxVal int64) (int64, error) {
|
||||||
|
rng, cs := secureRand()
|
||||||
|
return rng.Int63n(maxVal), cs.err
|
||||||
|
}
|
||||||
|
|
||||||
// Intn returns a non-negative integer in [0,maxVal) as an int.
|
// Intn returns a non-negative integer in [0,maxVal) as an int.
|
||||||
func Intn(maxVal int) (int, error) {
|
func Intn(maxVal int) (int, error) {
|
||||||
rng, cs := secureRand()
|
rng, cs := secureRand()
|
||||||
|
|||||||
@@ -19,6 +19,27 @@ func TestInt63(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInt63n(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
for i := 0; i < 20; i++ {
|
||||||
|
v, err := cryptorand.Int63n(100)
|
||||||
|
require.NoError(t, err, "unexpected error from Int63n")
|
||||||
|
t.Logf("value: %v <- random?", v)
|
||||||
|
require.GreaterOrEqual(t, v, int64(0), "values must be positive")
|
||||||
|
require.Less(t, v, int64(100), "values must be less than 100")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure Int63n works for int larger than 32 bits
|
||||||
|
_, err := cryptorand.Int63n(1 << 35)
|
||||||
|
require.NoError(t, err, "expected Int63n to work for 64-bit int")
|
||||||
|
|
||||||
|
// Expect a panic if max is negative
|
||||||
|
require.PanicsWithValue(t, "invalid argument to Int63n", func() {
|
||||||
|
cryptorand.Int63n(0)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestIntn(t *testing.T) {
|
func TestIntn(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
|||||||
@@ -136,8 +136,8 @@ func (p *tallymanPublisher) Start() error {
|
|||||||
if p.initialDelay <= 0 {
|
if p.initialDelay <= 0 {
|
||||||
// Pick a random time between tallymanPublishInitialMinimumDelay and
|
// Pick a random time between tallymanPublishInitialMinimumDelay and
|
||||||
// tallymanPublishInterval.
|
// tallymanPublishInterval.
|
||||||
maxPlusDelay := int(tallymanPublishInterval - tallymanPublishInitialMinimumDelay)
|
maxPlusDelay := tallymanPublishInterval - tallymanPublishInitialMinimumDelay
|
||||||
plusDelay, err := cryptorand.Intn(maxPlusDelay)
|
plusDelay, err := cryptorand.Int63n(int64(maxPlusDelay))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return xerrors.Errorf("could not generate random start delay: %w", err)
|
return xerrors.Errorf("could not generate random start delay: %w", err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user