3
3
import { test } from '../tools/prepare-test-env-ava.js' ;
4
4
// eslint-disable-next-line import/order
5
5
import { createHash } from 'crypto' ;
6
- import { initSwingStore , getAllState , setAllState } from '@agoric/swing-store' ;
6
+ import { initSwingStore } from '@agoric/swing-store' ;
7
7
import makeKernelKeeper from '../src/kernel/state/kernelKeeper.js' ;
8
8
import { makeKernelStats } from '../src/kernel/state/stats.js' ;
9
9
import { KERNEL_STATS_METRICS } from '../src/kernel/metrics.js' ;
@@ -15,8 +15,8 @@ import {
15
15
16
16
const ignoredStateKeys = [ 'activityhash' , 'kernelStats' , 'local.kernelStats' ] ;
17
17
18
- function checkState ( t , getState , expected ) {
19
- const state = getState ( ) ;
18
+ function checkState ( t , dump , expected ) {
19
+ const state = dump ( ) . kvEntries ;
20
20
const got = [ ] ;
21
21
for ( const key of Object . getOwnPropertyNames ( state ) ) {
22
22
if ( ! ignoredStateKeys . includes ( key ) ) {
@@ -36,7 +36,7 @@ function checkState(t, getState, expected) {
36
36
t . deepEqual ( got . sort ( compareStrings ) , expected . sort ( compareStrings ) ) ;
37
37
}
38
38
39
- async function testStorage ( t , s , getState , commit ) {
39
+ async function testStorage ( t , s , dump , commit ) {
40
40
t . falsy ( s . has ( 'missing' ) ) ;
41
41
t . is ( s . get ( 'missing' ) , undefined ) ;
42
42
@@ -59,28 +59,23 @@ async function testStorage(t, s, getState, commit) {
59
59
t . deepEqual ( Array . from ( s . getKeys ( 'foo1' , 'foo4' ) ) , [ 'foo1' , 'foo3' ] ) ;
60
60
61
61
if ( commit ) {
62
- checkState ( t , getState , [ ] ) ;
62
+ checkState ( t , dump , [ ] ) ;
63
63
await commit ( ) ;
64
64
}
65
- checkState ( t , getState , [
65
+ checkState ( t , dump , [
66
66
[ 'foo' , 'f' ] ,
67
67
[ 'foo1' , 'f1' ] ,
68
68
[ 'foo3' , 'f3' ] ,
69
69
] ) ;
70
70
}
71
71
72
72
test ( 'storageInMemory' , async t => {
73
- const kernelStorage = initSwingStore ( null ) . kernelStorage ;
74
- await testStorage (
75
- t ,
76
- kernelStorage . kvStore ,
77
- ( ) => getAllState ( kernelStorage ) . kvStuff ,
78
- null ,
79
- ) ;
73
+ const { kernelStorage, debug } = initSwingStore ( null ) ;
74
+ await testStorage ( t , kernelStorage . kvStore , debug . dump , null ) ;
80
75
} ) ;
81
76
82
77
test ( 'storage helpers' , t => {
83
- const kernelStorage = initSwingStore ( null ) . kernelStorage ;
78
+ const { kernelStorage, debug } = initSwingStore ( null ) ;
84
79
const kv = kernelStorage . kvStore ;
85
80
86
81
kv . set ( 'foo.0' , 'f0' ) ;
@@ -89,7 +84,7 @@ test('storage helpers', t => {
89
84
kv . set ( 'foo.3' , 'f3' ) ;
90
85
// omit foo.4
91
86
kv . set ( 'foo.5' , 'f5' ) ;
92
- checkState ( t , ( ) => getAllState ( kernelStorage ) . kvStuff , [
87
+ checkState ( t , debug . dump , [
93
88
[ 'foo.0' , 'f0' ] ,
94
89
[ 'foo.1' , 'f1' ] ,
95
90
[ 'foo.2' , 'f2' ] ,
@@ -114,20 +109,20 @@ test('storage helpers', t => {
114
109
// zero, so if there is a gap in the key sequence (e.g., 'foo.4' in the
115
110
// above), they stop counting when they hit it
116
111
t . truthy ( kv . has ( 'foo.5' ) ) ;
117
- checkState ( t , ( ) => getAllState ( kernelStorage ) . kvStuff , [ [ 'foo.5' , 'f5' ] ] ) ;
112
+ checkState ( t , debug . dump , [ [ 'foo.5' , 'f5' ] ] ) ;
118
113
} ) ;
119
114
120
115
function buildKeeperStorageInMemory ( ) {
121
- const kernelStorage = initSwingStore ( null ) . kernelStorage ;
116
+ const { kernelStorage, debug } = initSwingStore ( null ) ;
122
117
return {
123
- getState : ( ) => getAllState ( kernelStorage ) . kvStuff ,
118
+ ... debug , // serialize, dump
124
119
...kernelStorage ,
125
120
} ;
126
121
}
127
122
128
- function duplicateKeeper ( getState ) {
129
- const kernelStorage = initSwingStore ( null ) . kernelStorage ;
130
- setAllState ( kernelStorage , { kvStuff : getState ( ) , streamStuff : new Map ( ) } ) ;
123
+ function duplicateKeeper ( serialize ) {
124
+ const serialized = serialize ( ) ;
125
+ const { kernelStorage } = initSwingStore ( null , { serialized } ) ;
131
126
const kernelKeeper = makeKernelKeeper ( kernelStorage , null ) ;
132
127
kernelKeeper . loadStats ( ) ;
133
128
return kernelKeeper ;
@@ -147,14 +142,13 @@ test('kernelStorage param guards', async t => {
147
142
148
143
test ( 'kernel state' , async t => {
149
144
const store = buildKeeperStorageInMemory ( ) ;
150
- const { getState } = store ;
151
145
const k = makeKernelKeeper ( store , null ) ;
152
146
t . truthy ( ! k . getInitialized ( ) ) ;
153
147
k . createStartingKernelState ( { defaultManagerType : 'local' } ) ;
154
148
k . setInitialized ( ) ;
155
149
156
150
k . emitCrankHashes ( ) ;
157
- checkState ( t , getState , [
151
+ checkState ( t , store . dump , [
158
152
[ 'crankNumber' , '0' ] ,
159
153
[ 'initialized' , 'true' ] ,
160
154
[ 'gcActions' , '[]' ] ,
@@ -180,7 +174,6 @@ test('kernel state', async t => {
180
174
181
175
test ( 'kernelKeeper vat names' , async t => {
182
176
const store = buildKeeperStorageInMemory ( ) ;
183
- const { getState } = store ;
184
177
const k = makeKernelKeeper ( store , null ) ;
185
178
k . createStartingKernelState ( { defaultManagerType : 'local' } ) ;
186
179
@@ -190,7 +183,7 @@ test('kernelKeeper vat names', async t => {
190
183
t . is ( v2 , 'v2' ) ;
191
184
192
185
k . emitCrankHashes ( ) ;
193
- checkState ( t , getState , [
186
+ checkState ( t , store . dump , [
194
187
[ 'crankNumber' , '0' ] ,
195
188
[ 'gcActions' , '[]' ] ,
196
189
[ 'runQueue' , '[1,1]' ] ,
@@ -220,7 +213,7 @@ test('kernelKeeper vat names', async t => {
220
213
t . is ( k . getVatIDForName ( 'Frank' ) , v2 ) ;
221
214
t . is ( k . allocateVatIDForNameIfNeeded ( 'Frank' ) , v2 ) ;
222
215
223
- const k2 = duplicateKeeper ( getState ) ;
216
+ const k2 = duplicateKeeper ( store . serialize ) ;
224
217
t . deepEqual ( k . getStaticVats ( ) , [
225
218
[ 'Frank' , 'v2' ] ,
226
219
[ 'vatname5' , 'v1' ] ,
@@ -231,7 +224,6 @@ test('kernelKeeper vat names', async t => {
231
224
232
225
test ( 'kernelKeeper device names' , async t => {
233
226
const store = buildKeeperStorageInMemory ( ) ;
234
- const { getState } = store ;
235
227
const k = makeKernelKeeper ( store , null ) ;
236
228
k . createStartingKernelState ( { defaultManagerType : 'local' } ) ;
237
229
@@ -241,7 +233,7 @@ test('kernelKeeper device names', async t => {
241
233
t . is ( d8 , 'd8' ) ;
242
234
243
235
k . emitCrankHashes ( ) ;
244
- checkState ( t , getState , [
236
+ checkState ( t , store . dump , [
245
237
[ 'crankNumber' , '0' ] ,
246
238
[ 'gcActions' , '[]' ] ,
247
239
[ 'runQueue' , '[1,1]' ] ,
@@ -271,7 +263,7 @@ test('kernelKeeper device names', async t => {
271
263
t . is ( k . getDeviceIDForName ( 'Frank' ) , d8 ) ;
272
264
t . is ( k . allocateDeviceIDForNameIfNeeded ( 'Frank' ) , d8 ) ;
273
265
274
- const k2 = duplicateKeeper ( getState ) ;
266
+ const k2 = duplicateKeeper ( store . serialize ) ;
275
267
t . deepEqual ( k . getDevices ( ) , [
276
268
[ 'Frank' , 'd8' ] ,
277
269
[ 'devicename5' , 'd7' ] ,
@@ -282,7 +274,6 @@ test('kernelKeeper device names', async t => {
282
274
283
275
test ( 'kernelKeeper runQueue' , async t => {
284
276
const store = buildKeeperStorageInMemory ( ) ;
285
- const { getState } = store ;
286
277
const k = makeKernelKeeper ( store , null ) ;
287
278
k . createStartingKernelState ( { defaultManagerType : 'local' } ) ;
288
279
@@ -298,7 +289,7 @@ test('kernelKeeper runQueue', async t => {
298
289
t . is ( k . getRunQueueLength ( ) , 2 ) ;
299
290
300
291
k . emitCrankHashes ( ) ;
301
- const k2 = duplicateKeeper ( getState ) ;
292
+ const k2 = duplicateKeeper ( store . serialize ) ;
302
293
303
294
t . deepEqual ( k . getNextRunQueueMsg ( ) , { type : 'send' , stuff : 'awesome' } ) ;
304
295
t . falsy ( k . isRunQueueEmpty ( ) ) ;
@@ -325,7 +316,6 @@ test('kernelKeeper runQueue', async t => {
325
316
326
317
test ( 'kernelKeeper promises' , async t => {
327
318
const store = buildKeeperStorageInMemory ( ) ;
328
- const { getState } = store ;
329
319
const k = makeKernelKeeper ( store , null ) ;
330
320
k . createStartingKernelState ( { defaultManagerType : 'local' } ) ;
331
321
@@ -342,7 +332,7 @@ test('kernelKeeper promises', async t => {
342
332
t . falsy ( k . hasKernelPromise ( 'kp99' ) ) ;
343
333
344
334
k . emitCrankHashes ( ) ;
345
- let k2 = duplicateKeeper ( getState ) ;
335
+ let k2 = duplicateKeeper ( store . serialize ) ;
346
336
347
337
t . deepEqual ( k2 . getKernelPromise ( p1 ) , {
348
338
state : 'unresolved' ,
@@ -365,7 +355,7 @@ test('kernelKeeper promises', async t => {
365
355
} ) ;
366
356
367
357
k . emitCrankHashes ( ) ;
368
- k2 = duplicateKeeper ( getState ) ;
358
+ k2 = duplicateKeeper ( store . serialize ) ;
369
359
t . deepEqual ( k2 . getKernelPromise ( p1 ) , {
370
360
state : 'unresolved' ,
371
361
policy : 'ignore' ,
@@ -405,7 +395,7 @@ test('kernelKeeper promises', async t => {
405
395
expectedAcceptanceQueue . push ( { type : 'send' , target : 'kp40' , msg : m2 } ) ;
406
396
407
397
k . emitCrankHashes ( ) ;
408
- k2 = duplicateKeeper ( getState ) ;
398
+ k2 = duplicateKeeper ( store . serialize ) ;
409
399
t . deepEqual ( k2 . getKernelPromise ( p1 ) . queue , [ m1 , m2 ] ) ;
410
400
411
401
const ko = k . addKernelObject ( 'v1' ) ;
@@ -423,7 +413,7 @@ test('kernelKeeper promises', async t => {
423
413
// all the subscriber/queue stuff should be gone
424
414
k . emitCrankHashes ( ) ;
425
415
426
- checkState ( t , getState , [
416
+ checkState ( t , store . dump , [
427
417
[ 'crankNumber' , '0' ] ,
428
418
[ 'device.nextID' , '7' ] ,
429
419
[ 'vat.nextID' , '1' ] ,
@@ -491,7 +481,6 @@ test('kernelKeeper promise reject', async t => {
491
481
492
482
test ( 'vatKeeper' , async t => {
493
483
const store = buildKeeperStorageInMemory ( ) ;
494
- const { getState } = store ;
495
484
const k = makeKernelKeeper ( store , null ) ;
496
485
k . createStartingKernelState ( { defaultManagerType : 'local' } ) ;
497
486
@@ -509,7 +498,7 @@ test('vatKeeper', async t => {
509
498
t . is ( vk . nextDeliveryNum ( ) , 1n ) ;
510
499
511
500
k . emitCrankHashes ( ) ;
512
- let vk2 = duplicateKeeper ( getState ) . provideVatKeeper ( v1 ) ;
501
+ let vk2 = duplicateKeeper ( store . serialize ) . provideVatKeeper ( v1 ) ;
513
502
t . is ( vk2 . mapVatSlotToKernelSlot ( vatExport1 ) , kernelExport1 ) ;
514
503
t . is ( vk2 . mapKernelSlotToVatSlot ( kernelExport1 ) , vatExport1 ) ;
515
504
t . is ( vk2 . nextDeliveryNum ( ) , 2n ) ;
@@ -522,7 +511,7 @@ test('vatKeeper', async t => {
522
511
t . is ( vk . mapVatSlotToKernelSlot ( vatImport2 ) , kernelImport2 ) ;
523
512
524
513
k . emitCrankHashes ( ) ;
525
- vk2 = duplicateKeeper ( getState ) . provideVatKeeper ( v1 ) ;
514
+ vk2 = duplicateKeeper ( store . serialize ) . provideVatKeeper ( v1 ) ;
526
515
t . is ( vk2 . mapKernelSlotToVatSlot ( kernelImport2 ) , vatImport2 ) ;
527
516
t . is ( vk2 . mapVatSlotToKernelSlot ( vatImport2 ) , kernelImport2 ) ;
528
517
} ) ;
0 commit comments