-
Notifications
You must be signed in to change notification settings - Fork 224
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(swing-store): move getAllState/setAllState onto a debug object
`getAllState` and `setAllState` are swing-store helper functions which copy (or set) all the state of a store at once, used exclusively for testing. Previously, they were exported by swing-store, and applied to a `kernelStorage` object, but that depended upon a `streamStore.dumpStreams` method that we'd rather not expose to normal users. This commit adds a new `debug` object, next to `kernelStorage` and `hostStorage`, which holds `getAllState`, `setAllState`, and `dumpStreams`. The `kernelStorage.streamStore` object no longer has a `dumpStreams` method. This also updates all the swingset unit tests which were using the helper functions.
- Loading branch information
Showing
14 changed files
with
166 additions
and
184 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,110 +1,110 @@ | ||
// eslint-disable-next-line import/order | ||
import { test } from '../tools/prepare-test-env-ava.js'; | ||
// eslint-disable-next-line import/order | ||
import { initSwingStore, getAllState, setAllState } from '@agoric/swing-store'; | ||
import { initSwingStore } from '@agoric/swing-store'; | ||
import { buildVatController, loadBasedir } from '../src/index.js'; | ||
|
||
test('transcript-light load', async t => { | ||
const config = await loadBasedir( | ||
new URL('basedir-transcript', import.meta.url).pathname, | ||
); | ||
const kernelStorage = initSwingStore().kernelStorage; | ||
const { kernelStorage, debug } = initSwingStore(); | ||
const c = await buildVatController(config, ['one'], { kernelStorage }); | ||
t.teardown(c.shutdown); | ||
const state0 = getAllState(kernelStorage); | ||
const state0 = debug.getAllState(); | ||
t.is(state0.kvStuff.initialized, 'true'); | ||
t.is(state0.kvStuff.runQueue, '[1,1]'); | ||
t.not(state0.kvStuff.acceptanceQueue, '[]'); | ||
|
||
await c.step(); | ||
const state1 = getAllState(kernelStorage); | ||
const state1 = debug.getAllState(); | ||
|
||
await c.step(); | ||
const state2 = getAllState(kernelStorage); | ||
const state2 = debug.getAllState(); | ||
|
||
await c.step(); | ||
const state3 = getAllState(kernelStorage); | ||
const state3 = debug.getAllState(); | ||
|
||
await c.step(); | ||
const state4 = getAllState(kernelStorage); | ||
const state4 = debug.getAllState(); | ||
|
||
await c.step(); | ||
const state5 = getAllState(kernelStorage); | ||
const state5 = debug.getAllState(); | ||
|
||
// build from loaded state | ||
// Step 0 | ||
|
||
const cfg0 = await loadBasedir( | ||
new URL('basedir-transcript', import.meta.url).pathname, | ||
); | ||
const kernelStorage0 = initSwingStore().kernelStorage; | ||
setAllState(kernelStorage0, state0); | ||
const { kernelStorage: kernelStorage0, debug: debug0 } = initSwingStore(); | ||
debug0.setAllState(state0); | ||
const c0 = await buildVatController(cfg0, ['one'], { | ||
kernelStorage: kernelStorage0, | ||
}); | ||
t.teardown(c0.shutdown); | ||
|
||
await c0.step(); | ||
t.deepEqual(state1, getAllState(kernelStorage0), `p1`); | ||
t.deepEqual(state1, debug0.getAllState(), `p1`); | ||
|
||
await c0.step(); | ||
t.deepEqual(state2, getAllState(kernelStorage0), `p2`); | ||
t.deepEqual(state2, debug0.getAllState(), `p2`); | ||
|
||
await c0.step(); | ||
t.deepEqual(state3, getAllState(kernelStorage0), `p3`); | ||
t.deepEqual(state3, debug0.getAllState(), `p3`); | ||
|
||
await c0.step(); | ||
t.deepEqual(state4, getAllState(kernelStorage0), `p4`); | ||
t.deepEqual(state4, debug0.getAllState(), `p4`); | ||
|
||
await c0.step(); | ||
t.deepEqual(state5, getAllState(kernelStorage0), `p5`); | ||
t.deepEqual(state5, debug0.getAllState(), `p5`); | ||
|
||
// Step 1 | ||
|
||
const cfg1 = await loadBasedir( | ||
new URL('basedir-transcript', import.meta.url).pathname, | ||
); | ||
const kernelStorage1 = initSwingStore().kernelStorage; | ||
setAllState(kernelStorage1, state1); | ||
const { kernelStorage: kernelStorage1, debug: debug1 } = initSwingStore(); | ||
debug1.setAllState(state1); | ||
const c1 = await buildVatController(cfg1, ['one'], { | ||
kernelStorage: kernelStorage1, | ||
}); | ||
t.teardown(c1.shutdown); | ||
|
||
t.deepEqual(state1, getAllState(kernelStorage1), `p6`); // actual, expected | ||
t.deepEqual(state1, debug1.getAllState(), `p6`); // actual, expected | ||
|
||
await c1.step(); | ||
t.deepEqual(state2, getAllState(kernelStorage1), `p7`); | ||
t.deepEqual(state2, debug1.getAllState(), `p7`); | ||
|
||
await c1.step(); | ||
t.deepEqual(state3, getAllState(kernelStorage1), `p8`); | ||
t.deepEqual(state3, debug1.getAllState(), `p8`); | ||
|
||
await c1.step(); | ||
t.deepEqual(state4, getAllState(kernelStorage1), `p9`); | ||
t.deepEqual(state4, debug1.getAllState(), `p9`); | ||
|
||
await c1.step(); | ||
t.deepEqual(state5, getAllState(kernelStorage1), `p10`); | ||
t.deepEqual(state5, debug1.getAllState(), `p10`); | ||
|
||
// Step 2 | ||
|
||
const cfg2 = await loadBasedir( | ||
new URL('basedir-transcript', import.meta.url).pathname, | ||
); | ||
const kernelStorage2 = initSwingStore().kernelStorage; | ||
setAllState(kernelStorage2, state2); | ||
const { kernelStorage: kernelStorage2, debug: debug2 } = initSwingStore(); | ||
debug2.setAllState(state2); | ||
const c2 = await buildVatController(cfg2, ['one'], { | ||
kernelStorage: kernelStorage2, | ||
}); | ||
t.teardown(c2.shutdown); | ||
|
||
t.deepEqual(state2, getAllState(kernelStorage2), `p11`); | ||
t.deepEqual(state2, debug2.getAllState(), `p11`); | ||
|
||
await c2.step(); | ||
t.deepEqual(state3, getAllState(kernelStorage2), `p12`); | ||
t.deepEqual(state3, debug2.getAllState(), `p12`); | ||
|
||
await c2.step(); | ||
t.deepEqual(state4, getAllState(kernelStorage2), `p13`); | ||
t.deepEqual(state4, debug2.getAllState(), `p13`); | ||
|
||
await c2.step(); | ||
t.deepEqual(state5, getAllState(kernelStorage2), `p14`); | ||
t.deepEqual(state5, debug2.getAllState(), `p14`); | ||
}); |
Oops, something went wrong.