30b41029c1
* setup redis infra for appview indexer * barebones bsky ingester * add ioredis to bsky * remove some indexer functionality from bsky api * setup for bsky indexer * tidy * tidy, observe basic pipeline functioning * process messages on bsky indexer pipeline, tidy tests and lifecycle * trim partitions when moving cursor * simplify config for partitions * misc fixes for redis setup in bsky tests, add namespacing * fix pds proxy tests * remove cursor state from indexer partitions, simplify ingester state * tidy * utils for testing w/ multiple indexers, fix off-by-one xtrim * test reingesting * test indexer repartitioning * add entrypoints for bsky ingester and indexer, fix db schema config, api entrypoint name, tidy * setup and test bsky ingester backpressure, add config * tidy * add missing test file * tidy redis calls, add redis sentinel config * tidy/test some utils used in bsky pipeline * tidy bsky pipeline tests, move helpers into dev-env * fix pds crud test * support redis host and password config * better loggin/observability in ingester and indexer, make build * add bsky ingester initial cursor config * temporarily remove migrations from indexer/ingester * allow ingester to batch * packages/pg becomes packages/dev-infra with some cleanup (#1402) * packages/dev-infra/ * Extract packages/dev-infra/_common.sh and use it * Use period instead of source because of /bin/sh * add docs for redis test script * fix repartition test * add logs to debug ci * simplify repartitioning test, remove ci logs --------- Co-authored-by: Jerry Chen <jerry@redelm.net>
16 lines
510 B
TypeScript
16 lines
510 B
TypeScript
import { randomIntFromSeed } from '../src'
|
|
|
|
describe('randomIntFromSeed()', () => {
|
|
it('has good distribution for low bucket count.', async () => {
|
|
const counts: [zero: number, one: number] = [0, 0]
|
|
const salt = Math.random()
|
|
for (let i = 0; i < 10000; ++i) {
|
|
const int = await randomIntFromSeed(`${i}${salt}`, 2)
|
|
counts[int]++
|
|
}
|
|
const [zero, one] = counts
|
|
expect(zero + one).toEqual(10000)
|
|
expect(Math.max(zero, one) / Math.min(zero, one)).toBeLessThan(1.05)
|
|
})
|
|
})
|