@@ -4,6 +4,7 @@ import fs from 'fs';
4
4
import { spawn } from 'child_process' ;
5
5
import { type as osType } from 'os' ;
6
6
import tmp from 'tmp' ;
7
+ import sqlite3 from 'better-sqlite3' ;
7
8
import test from 'ava' ;
8
9
import { makeMeasureSeconds } from '@agoric/internal' ;
9
10
import { xsnap } from '@agoric/xsnap' ;
@@ -32,9 +33,9 @@ const ld = (() => {
32
33
} ) ;
33
34
} ) ( ) ;
34
35
35
- /** @type {(fn: string , fullSize: number) => number } */
36
- const relativeSize = ( fn , fullSize ) =>
37
- Math . round ( ( fs . statSync ( fn ) . size / 1024 / fullSize ) * 10 ) / 10 ;
36
+ /** @type {(compressedSize: number , fullSize: number) => number } */
37
+ const relativeSize = ( compressedSize , fullSize ) =>
38
+ Math . round ( ( compressedSize / 1024 / fullSize ) * 10 ) / 10 ;
38
39
39
40
const snapSize = {
40
41
raw : 417 ,
@@ -80,14 +81,15 @@ test(`create XS Machine, snapshot (${snapSize.raw} Kb), compress to smaller`, as
80
81
t . teardown ( ( ) => pool . removeCallback ( ) ) ;
81
82
await fs . promises . mkdir ( pool . name , { recursive : true } ) ;
82
83
83
- const store = makeSnapStore ( pool . name , makeMockSnapStoreIO ( ) ) ;
84
+ const db = sqlite3 ( ':memory:' ) ;
85
+ const store = makeSnapStore ( db , pool . name , makeMockSnapStoreIO ( ) ) ;
84
86
85
- const { filePath : zfile } = await store . save ( async snapFile => {
87
+ const { compressedByteCount } = await store . save ( async snapFile => {
86
88
await vat . snapshot ( snapFile ) ;
87
89
} ) ;
88
90
89
91
t . true (
90
- relativeSize ( zfile , snapSize . raw ) < 0.5 ,
92
+ relativeSize ( compressedByteCount , snapSize . raw ) < 0.5 ,
91
93
'compressed snapshots are smaller' ,
92
94
) ;
93
95
} ) ;
@@ -99,16 +101,17 @@ test('SES bootstrap, save, compress', async t => {
99
101
const pool = tmp . dirSync ( { unsafeCleanup : true } ) ;
100
102
t . teardown ( ( ) => pool . removeCallback ( ) ) ;
101
103
102
- const store = makeSnapStore ( pool . name , makeMockSnapStoreIO ( ) ) ;
104
+ const db = sqlite3 ( ':memory:' ) ;
105
+ const store = makeSnapStore ( db , pool . name , makeMockSnapStoreIO ( ) ) ;
103
106
104
107
await vat . evaluate ( 'globalThis.x = harden({a: 1})' ) ;
105
108
106
- const { filePath : zfile } = await store . save ( async snapFile => {
109
+ const { compressedByteCount } = await store . save ( async snapFile => {
107
110
await vat . snapshot ( snapFile ) ;
108
111
} ) ;
109
112
110
113
t . true (
111
- relativeSize ( zfile , snapSize . SESboot ) < 0.5 ,
114
+ relativeSize ( compressedByteCount , snapSize . SESboot ) < 0.5 ,
112
115
'compressed snapshots are smaller' ,
113
116
) ;
114
117
} ) ;
@@ -117,7 +120,8 @@ test('create SES worker, save, restore, resume', async t => {
117
120
const pool = tmp . dirSync ( { unsafeCleanup : true } ) ;
118
121
t . teardown ( ( ) => pool . removeCallback ( ) ) ;
119
122
120
- const store = makeSnapStore ( pool . name , makeMockSnapStoreIO ( ) ) ;
123
+ const db = sqlite3 ( ':memory:' ) ;
124
+ const store = makeSnapStore ( db , pool . name , makeMockSnapStoreIO ( ) ) ;
121
125
122
126
const vat0 = await bootSESWorker ( 'ses-boot2' , async m => m ) ;
123
127
t . teardown ( ( ) => vat0 . close ( ) ) ;
@@ -146,7 +150,8 @@ test('XS + SES snapshots are long-term deterministic', async t => {
146
150
t . teardown ( ( ) => pool . removeCallback ( ) ) ;
147
151
t . log ( { pool : pool . name } ) ;
148
152
await fs . promises . mkdir ( pool . name , { recursive : true } ) ;
149
- const store = makeSnapStore ( pool . name , makeMockSnapStoreIO ( ) ) ;
153
+ const db = sqlite3 ( ':memory:' ) ;
154
+ const store = makeSnapStore ( db , pool . name , makeMockSnapStoreIO ( ) ) ;
150
155
151
156
const vat = await bootWorker ( 'xs1' , async m => m , '1 + 1' ) ;
152
157
t . teardown ( ( ) => vat . close ( ) ) ;
@@ -197,7 +202,8 @@ async function makeTestSnapshot(t) {
197
202
t . teardown ( ( ) => pool . removeCallback ( ) ) ;
198
203
// t.log({ pool: pool.name });
199
204
await fs . promises . mkdir ( pool . name , { recursive : true } ) ;
200
- const store = makeSnapStore ( pool . name , makeMockSnapStoreIO ( ) ) ;
205
+ const db = sqlite3 ( ':memory:' ) ;
206
+ const store = makeSnapStore ( db , pool . name , makeMockSnapStoreIO ( ) ) ;
201
207
const vat = await bootWorker ( 'xs1' , async m => m , '1 + 1' ) ;
202
208
const bootScript = await ld . asset (
203
209
'@agoric/xsnap/dist/bundle-ses-boot.umd.js' ,
0 commit comments