MCPcopy
hub / github.com/tldraw/tldraw / runTest

Function runTest

packages/sync-core/src/test/syncFuzz.test.ts:134–274  ·  view source on GitHub ↗
(seed: number)

Source from the content-addressed store, hash-verified

132}
133
134function runTest(seed: number) {
135 reseed(seed)
136 const server = new TestServer(schema)
137 const instance = new FuzzTestInstance(seed, server)
138
139 const peers = [instance, new FuzzTestInstance(instance.randomInt(), server)]
140 const numExtraPeers = instance.randomInt(MAX_PEERS - 2)
141 for (let i = 0; i < numExtraPeers; i++) {
142 peers.push(new FuzzTestInstance(instance.randomInt(), server))
143 }
144
145 const allOk = (when: string) => {
146 if (peers.some((p) => p.editor?.editor && !p.editor?.editor.getCurrentPage())) {
147 throw new Error(`not all peer editors have current page (${when})`)
148 }
149 if (peers.some((p) => p.editor?.editor && !p.editor?.editor.getCurrentPageState())) {
150 throw new Error(`not all peer editors have page states (${when})`)
151 }
152 if (
153 peers.some(
154 (p) => p.client.isConnectedToRoom && p.socketPair.clientSocket.connectionStatus !== 'online'
155 )
156 ) {
157 throw new Error(`peer client connection status mismatch (${when})`)
158 }
159 if (peers.some((p) => p.editor?.editor && !arrowsAreSound(p.editor.editor))) {
160 throw new Error(`peer editor arrows are not sound (${when})`)
161 }
162 const numOtherPeersConnected = peers.filter((p) => p.hasLoaded).length - 1
163 if (
164 peers.some(
165 (p) =>
166 p.hasLoaded &&
167 p.editor?.editor.store.query.ids('instance_presence').get().size !==
168 numOtherPeersConnected
169 )
170 ) {
171 throw new Error(`not all peer editors have instance presence (${when})`)
172 }
173 }
174
175 const ops: Array<{ peerId: string; op: Op; id: number }> = []
176 try {
177 for (let i = 0; i < NUM_OPS_PER_TEST; i++) {
178 const peer = peers[instance.randomInt(peers.length)]
179
180 if (peer.editor) {
181 const op = peer.editor.getRandomOp()
182 ops.push({ peerId: peer.id, op, id: ops.length })
183
184 allOk('before applyOp')
185 peer.editor.applyOp(op)
186 assertPeerStoreIsUsable(peer)
187 allOk('after applyOp')
188
189 server.flushDebouncingMessages()
190
191 if (peer.socketPair.isConnected && peer.randomInt(6) === 0) {

Callers 1

syncFuzz.test.tsFile · 0.70

Calls 15

reseedFunction · 0.85
allOkFunction · 0.85
assertPeerStoreIsUsableFunction · 0.85
randomIntMethod · 0.80
getRandomOpMethod · 0.80
disconnectMethod · 0.80
filterMethod · 0.80
getNeedsFlushingMethod · 0.80
flushServerSentEventsMethod · 0.80
flushClientSentEventsMethod · 0.80
idsMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…