Skip to content

Commit

Permalink
fix(utils): generate time values in the correct range
Browse files Browse the repository at this point in the history
According to the CQL binary protocol, time is an int64 in range [0;86399999999999]

https://github.com/apache/cassandra/blob/f5df4b219e063cb24b9cc0c22b6e614506b8d903/doc/native_protocol_v4.spec#L941
An 8 byte two's complement long representing nanoseconds since midnight.
Valid values are in the range 0 to 86399999999999

Values outside of this range are invalid.

RandTime() generated values using rnd.Int63(),
but this generates values outside of the allowed range.

Let's fix it so that it generates values in the correct range.

Fixes: scylladb/scylladb#14645
Refs: scylladb/scylladb#14667

Signed-off-by: Jan Ciolek <[email protected]>
  • Loading branch information
cvybhu committed Jul 12, 2023
1 parent c4a4a8f commit b2cee4a
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions pkg/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,12 @@ func RandDate(rnd *rand.Rand) time.Time {
return time.Unix(rnd.Int63n(1<<63-2), rnd.Int63n(999999999)).UTC()
}

// RandTime generates time in string representation
// it is done in such way because we wanted to make JSON statement to work
// but scylla supports only string representation of time in JSON format
// According to the CQL binary protocol, time is an int64 in range [0;86399999999999]
// https://github.com/apache/cassandra/blob/f5df4b219e063cb24b9cc0c22b6e614506b8d903/doc/native_protocol_v4.spec#L941
// An 8 byte two's complement long representing nanoseconds since midnight.
// Valid values are in the range 0 to 86399999999999
func RandTime(rnd *rand.Rand) int64 {
return rnd.Int63()
return rnd.Int63n(86400000000000)
}

func RandIPV4Address(rnd *rand.Rand, v, pos int) string {
Expand Down

0 comments on commit b2cee4a

Please sign in to comment.