genode/repos/gems/run/tresor_tester.run
Martin Stein ef0c3f9d2c tresor_tester.run: fix asynchronous rekeying test
The virtual block device module used to hand over the wrong VBA as
parameter "rekeying VBA" to the Free Tree when allocating PBAs for data
access during rekeying. In certain constellations, this caused the Free
Tree to alloc PBAs that were still in use. The Free Tree PBA selection
algorithm, however, is just fine. When fixing the call parameter, it works
as desired. This re-enables the async rekeying test.

Ref #5075
2024-04-12 15:00:45 +02:00

1131 lines
52 KiB
Plaintext

# riscv lacks jitterentropy support currently
if {[get_cmd_switch --autopilot] && [have_board virt_qemu_riscv]} {
puts "Autopilot mode is not supported on this platform."
exit 0
}
set dd [installed_command dd]
proc tresor_image_name { } {
return "tresor_block.img"
}
proc lx_local_tresor_image { } {
return bin/[tresor_image_name]
}
proc lx_autopilot_tresor_image { } {
return /tmp/[tresor_image_name].[exec id -un]
}
proc lx_tresor_image_size_mb { } {
return 400
}
proc benchmark_blk_count { } {
if {[have_board linux]} {
# benchmarks over 50 mebibyte
return 12800
}
if {[have_board virt_qemu_arm_v8a]} {
# benchmarks over 25 mebibyte
return 6400
}
# benchmarks turned off
return 0
}
proc block_io_vfs_ram_mb { } {
if {[benchmark_blk_count] > 0} {
# when benchmarks turned on
set bench_mb [expr (([benchmark_blk_count] * 4096) / 1024 / 1024)]
return [expr 8 * $bench_mb]
}
# when benchmarks turned off
return 10
}
proc jent_avail { } {
if {[have_board pbxa9]} { return 0 }
if {[have_board zynq_qemu]} { return 0 }
return 1
}
append build_components {
core lib/ld init timer
server/vfs lib/vfs lib/libc lib/libcrypto
app/tresor_tester
server/log_terminal
server/report_rom
lib/vfs_tresor_crypto_aes_cbc
lib/vfs_tresor_trust_anchor
lib/vfs_import
}
append_if [jent_avail] build_components { lib/vfs_jitterentropy }
append_if [have_board linux] build_components { server/lx_fs }
append_if [have_board linux] build_components { server/lx_block }
build $build_components
create_boot_directory
append config {
<config verbose="yes">
<parent-provides>
<service name="ROM"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
<service name="PD"/>
<service name="RM"/>
<service name="CPU"/>
<service name="LOG"/>
</parent-provides>
<start name="timer" caps="100">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
<route>
<service name="PD"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="IO_PORT"> <parent/> </service>
<service name="IO_MEM"> <parent/> </service>
<service name="IRQ"> <parent/> </service>
</route>
</start>
<start name="report_rom" caps="100">
<resource name="RAM" quantum="4M"/>
<provides> <service name="Report"/> <service name="ROM"/> </provides>
<config verbose="yes"/>
<route>
<service name="LOG"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="ROM"> <parent/> </service>
</route>
</start>
<start name="log_terminal" caps="100">
<resource name="RAM" quantum="1M"/>
<provides><service name="Terminal"/></provides>
<route>
<service name="LOG"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="ROM"> <parent/> </service>
</route>
</start>
}
if {[have_board linux]} {
append config {
<start name="block_io_fs" caps="100" ld="no">
<binary name="lx_fs"/>
<resource name="RAM" quantum="4M"/>
<provides> <service name="File_system"/> </provides>
<config>
<default-policy root="/" writeable="yes"/>
</config>
<route>
<service name="LOG"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="ROM"> <parent/> </service>
</route>
</start>
}
} else {
append config {
<start name="block_io_fs" caps="100">
<binary name="vfs"/>
<resource name="RAM" quantum="} [block_io_vfs_ram_mb] {M"/>
<provides><service name="File_system"/></provides>
<config>
<vfs>
<dir name="block_io">
<ram/>
</dir>
<import>
<dir name="block_io">
<inline name="} [tresor_image_name] {"></inline>
</dir>
</import>
</vfs>
<default-policy root="/block_io" writeable="yes"/>
</config>
<route>
<service name="PD"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="CPU"> <parent/> </service>
</route>
</start>
}
}
append config {
<start name="trust_anchor_fs" caps="200">
<binary name="vfs"/>
<resource name="RAM" quantum="10M"/>
<provides><service name="File_system"/></provides>
<config>
<vfs>
<dir name="storage">
<ram/>
</dir>
<dir name="dev"> }
append_if [jent_avail] config {
<jitterentropy name="jitterentropy"/> }
append_if [expr ![jent_avail]] config {
<inline name="jitterentropy">0123456789abcdefghijklmnopqrstuv</inline> }
append config {
<tresor_trust_anchor name="tresor_trust_anchor" storage_dir="/storage"/>
</dir>
</vfs>
<default-policy root="/dev/tresor_trust_anchor" writeable="yes"/>
</config>
<route>
<service name="PD"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="CPU"> <parent/> </service>
</route>
</start>
<start name="test" caps="200">
<binary name="tresor_tester"/>
<resource name="RAM" quantum="10M"/>
<config ld_verbose="yes">
<block-io type="vfs" path="/} [tresor_image_name] {"/>
<crypto path="/crypto"/>
<trust-anchor path="/trust_anchor"/>
<vfs>
<fs buffer_size="1M"/>
<tresor_crypto_aes_cbc name="crypto"/>
<dir name="trust_anchor">
<fs label="trust_anchor"/>
</dir>
</vfs>
<commands>
<log string="Step 1: Initialize Trust Anchor and Tresor device, start Tresor library"/>
<trust-anchor op="initialize" passphrase="foobar"/>
<initialize>
<virtual-block-device
nr_of_levels="3"
nr_of_children="8"
nr_of_leafs="64" />
<free-tree
nr_of_levels="4"
nr_of_children="8"
nr_of_leafs="100" />
</initialize>
<check/>
<construct/>
<log string="Step 2: test synchronous write, read"/>
<request op="write" vba="1" count="1" sync="yes" salt="1234"/>
<request op="read" vba="1" count="1" sync="yes" salt="1234"/>
<request op="write" vba="12" count="10" sync="yes"/>
<request op="read" vba="12" count="10" sync="yes"/>
<request op="write" vba="24" count="40" sync="yes"/>
<request op="read" vba="24" count="40" sync="yes"/>
<log string="Step 3: test synchronous write, read, compare"/>
<request op="write" vba="9" count="1" sync="yes" salt="4321"/>
<request op="read" vba="9" count="1" sync="yes" salt="4321"/>
<request op="write" vba="41" count="3" sync="yes" salt="8765"/>
<request op="read" vba="41" count="3" sync="yes" salt="8765"/>
<request op="write" vba="9" count="1" sync="yes" salt="1234"/>
<request op="write" vba="41" count="19" sync="yes" salt="5678"/>
<request op="read" vba="9" count="1" sync="yes" salt="1234"/>
<request op="read" vba="41" count="19" sync="yes" salt="5678"/>
<log string="Step 4: test asynchronous write, read"/>
<request op="write" vba="20" count="3" sync="no"/>
<request op="write" vba="15" count="10" sync="no"/>
<request op="read" vba="34" count="2" sync="no"/>
<request op="read" vba="21" count="5" sync="no"/>
<request op="write" vba="12" count="12" sync="no"/>
<request op="read" vba="32" count="8" sync="no"/>
<request op="write" vba="17" count="7" sync="no"/>
<request op="write" vba="29" count="9" sync="no"/>
<request op="read" vba="14" count="18" sync="no"/>
<log string="Step 5: test asynchronous write, read, compare"/>
<request op="write" vba="20" count="3" sync="no" salt="7373"/>
<request op="read" vba="21" count="1" sync="no" salt="7373"/>
<request op="write" vba="15" count="10" sync="no" salt="1515"/>
<request op="write" vba="15" count="4" sync="no" salt="6001"/>
<request op="read" vba="21" count="3" sync="no" salt="1515"/>
<request op="read" vba="19" count="3" sync="no" salt="1515"/>
<request op="write" vba="17" count="5" sync="no" salt="9689"/>
<request op="read" vba="22" count="3" sync="no" salt="1515"/>
<request op="read" vba="15" count="2" sync="no" salt="6001"/>
<request op="write" vba="11" count="6" sync="no" salt="0987"/>
<request op="read" vba="17" count="5" sync="no" salt="9689"/>
<request op="write" vba="22" count="2" sync="no" salt="6543"/>
<request op="write" vba="25" count="11" sync="no" salt="5432"/>
<request op="read" vba="24" count="1" sync="no" salt="1515"/>
<request op="write" vba="10" count="5" sync="no" salt="4221"/>
<request op="write" vba="21" count="2" sync="no" salt="1001"/>
<request op="write" vba="12" count="10" sync="no" salt="3366"/>
<request op="write" vba="26" count="4" sync="no" salt="7271"/>
<request op="write" vba="15" count="7" sync="no" salt="1331"/>
<request op="read" vba="23" count="1" sync="no" salt="6543"/>
<request op="read" vba="25" count="1" sync="no" salt="5432"/>
<request op="read" vba="28" count="2" sync="no" salt="7271"/>
<request op="read" vba="24" count="1" sync="no" salt="1515"/>
<request op="read" vba="12" count="3" sync="no" salt="3366"/>
<request op="read" vba="19" count="3" sync="no" salt="1331"/>
<request op="read" vba="10" count="2" sync="no" salt="4221"/>
<log string="Step 6: shut down Tresor library, check Tresor integrity, restart Tresor library"/>
<request op="deinitialize" sync="no"/>
<destruct/>
<check/>
<construct/>
<log string="Step 7: test synchronous snapshot management"/>
<request op="write" vba="20" count="3" sync="yes" salt="7304"/>
<request op="create_snapshot" sync="yes" id="1"/>
<request op="read" vba="21" count="1" sync="yes" salt="7304"/>
<request op="write" vba="15" count="10" sync="yes" salt="9612"/>
<request op="write" vba="15" count="4" sync="yes" salt="6111"/>
<request op="read" vba="21" count="3" sync="yes" salt="9612"/>
<request op="read" vba="19" count="3" sync="yes" salt="9612"/>
<request op="write" vba="17" count="5" sync="yes" salt="5353"/>
<request op="create_snapshot" sync="yes" id="2"/>
<request op="create_snapshot" sync="yes" id="3"/>
<request op="read" vba="22" count="3" sync="yes" salt="9612"/>
<request op="read" vba="15" count="2" sync="yes" salt="6111"/>
<request op="write" vba="11" count="6" sync="yes" salt="5436"/>
<check-snapshots/>
<request op="discard_snapshot" sync="yes" id="1"/>
<request op="discard_snapshot" sync="yes" id="2"/>
<check-snapshots/>
<request op="sync" vba="0" count="256" sync="yes"/>
<check/>
<log string="Step 8: test asynchronous snapshot management"/>
<request op="write" vba="20" count="3" sync="no" salt="7384"/>
<request op="create_snapshot" sync="no" id="4"/>
<request op="create_snapshot" sync="no" id="5"/>
<request op="read" vba="21" count="1" sync="no" salt="7384"/>
<request op="write" vba="15" count="10" sync="no" salt="9602"/>
<request op="write" vba="15" count="4" sync="no" salt="6100"/>
<request op="read" vba="21" count="3" sync="no" salt="9602"/>
<request op="read" vba="19" count="3" sync="no" salt="9602"/>
<request op="write" vba="17" count="5" sync="no" salt="5555"/>
<request op="read" vba="22" count="3" sync="no" salt="9602"/>
<request op="read" vba="15" count="2" sync="no" salt="6100"/>
<request op="create_snapshot" sync="no" id="6"/>
<request op="write" vba="11" count="6" sync="no" salt="1436"/>
<request op="read" vba="17" count="5" sync="no" salt="5555"/>
<request op="write" vba="22" count="2" sync="no" salt="7463"/>
<request op="write" vba="25" count="11" sync="no" salt="4323"/>
<request op="read" vba="24" count="1" sync="no" salt="9602"/>
<request op="write" vba="10" count="5" sync="no" salt="3758"/>
<request op="create_snapshot" sync="no" id="7"/>
<request op="create_snapshot" sync="no" id="8"/>
<request op="write" vba="21" count="2" sync="no" salt="8094"/>
<request op="write" vba="12" count="10" sync="no" salt="4455"/>
<request op="write" vba="26" count="4" sync="no" salt="7574"/>
<request op="write" vba="15" count="7" sync="no" salt="1931"/>
<request op="read" vba="23" count="1" sync="no" salt="7463"/>
<request op="read" vba="25" count="1" sync="no" salt="4323"/>
<request op="read" vba="28" count="2" sync="no" salt="7574"/>
<request op="create_snapshot" sync="no" id="9"/>
<request op="read" vba="24" count="1" sync="no" salt="9602"/>
<request op="read" vba="12" count="3" sync="no" salt="4455"/>
<request op="read" vba="19" count="3" sync="no" salt="1931"/>
<request op="read" vba="10" count="2" sync="no" salt="3758"/>
<check-snapshots/>
<request op="discard_snapshot" sync="no" id="4"/>
<request op="sync" vba="0" count="256" sync="yes"/>
<check/>
<log string="Step 9: reinitialize Tresor device"/>
<request op="deinitialize" sync="no"/>
<destruct/>
<initialize>
<virtual-block-device
nr_of_levels="4"
nr_of_children="8"
nr_of_leafs="100" />
<free-tree
nr_of_levels="4"
nr_of_children="8"
nr_of_leafs="512" />
</initialize>
<construct/>
<log string="Step 10: test synchronous rekeying"/>
<request op="write" vba="0" count="1" sync="yes" salt="4359"/>
<request op="rekey" sync="yes"/>
<request op="read" vba="0" count="1" sync="yes" salt="4359"/>
<request op="write" vba="15" count="7" sync="yes" salt="1742"/>
<request op="write" vba="20" count="13" sync="yes" salt="8471"/>
<request op="create_snapshot" sync="yes" id="10"/>
<request op="write" vba="33" count="5" sync="yes" salt="7831"/>
<request op="rekey" sync="yes"/>
<request op="read" vba="17" count="3" sync="yes" salt="1742"/>
<request op="write" vba="51" count="8" sync="yes" salt="8384"/>
<request op="read" vba="25" count="1" sync="yes" salt="8471"/>
<request op="write" vba="30" count="5" sync="yes" salt="2837"/>
<request op="create_snapshot" sync="yes" id="11"/>
<request op="rekey" sync="yes"/>
<request op="read" vba="35" count="2" sync="yes" salt="7831"/>
<request op="read" vba="31" count="4" sync="yes" salt="2837"/>
<request op="read" vba="51" count="8" sync="yes" salt="8384"/>
<request op="sync" vba="0" count="256" sync="yes"/>
<check/>
<log string="Step 11: test asynchronous rekeying"/>
<request op="write" vba="20" count="3" sync="no" salt="7384"/>
<request op="rekey" sync="no"/>
<request op="read" vba="21" count="1" sync="no" salt="7384"/>
<request op="write" vba="15" count="10" sync="no" salt="9602"/>
<request op="write" vba="15" count="4" sync="no" salt="6100"/>
<request op="read" vba="21" count="3" sync="no" salt="9602"/>
<request op="read" vba="19" count="3" sync="no" salt="9602"/>
<request op="write" vba="17" count="5" sync="no" salt="5555"/>
<request op="read" vba="22" count="3" sync="no" salt="9602"/>
<request op="read" vba="15" count="2" sync="no" salt="6100"/>
<request op="write" vba="11" count="6" sync="no" salt="1436"/>
<request op="create_snapshot" sync="yes" id="12"/>
<request op="read" vba="17" count="5" sync="no" salt="5555"/>
<request op="write" vba="22" count="2" sync="no" salt="7463"/>
<request op="rekey" sync="no"/>
<request op="write" vba="25" count="11" sync="no" salt="4323"/>
<request op="read" vba="24" count="1" sync="no" salt="9602"/>
<request op="write" vba="10" count="5" sync="no" salt="3758"/>
<request op="write" vba="21" count="2" sync="no" salt="8094"/>
<request op="write" vba="12" count="10" sync="no" salt="4455"/>
<request op="write" vba="26" count="4" sync="no" salt="7574"/>
<request op="write" vba="15" count="7" sync="no" salt="1931"/>
<request op="read" vba="23" count="1" sync="no" salt="7463"/>
<request op="read" vba="25" count="1" sync="no" salt="4323"/>
<request op="read" vba="28" count="2" sync="no" salt="7574"/>
<request op="read" vba="24" count="1" sync="no" salt="9602"/>
<request op="read" vba="12" count="3" sync="no" salt="4455"/>
<request op="read" vba="19" count="3" sync="no" salt="1931"/>
<request op="read" vba="10" count="2" sync="no" salt="3758"/>
<request op="sync" vba="0" count="256" sync="yes"/>
<check/>
<log string="Step 12: test synchronous free tree extension"/>
<request op="write" vba="20" count="3" sync="yes" salt="7304"/>
<request op="extend_ft" count="23" sync="yes"/>
<request op="read" vba="21" count="1" sync="yes" salt="7304"/>
<request op="extend_ft" count="6" sync="yes"/>
<request op="write" vba="15" count="10" sync="yes" salt="9612"/>
<request op="write" vba="15" count="4" sync="yes" salt="6111"/>
<request op="extend_ft" count="10" sync="yes"/>
<request op="read" vba="21" count="3" sync="yes" salt="9612"/>
<request op="read" vba="19" count="3" sync="yes" salt="9612"/>
<request op="write" vba="17" count="5" sync="yes" salt="5353"/>
<request op="extend_ft" count="2" sync="yes"/>
<request op="extend_ft" count="2" sync="yes"/>
<request op="extend_ft" count="2" sync="yes"/>
<request op="read" vba="22" count="3" sync="yes" salt="9612"/>
<request op="extend_ft" count="1" sync="yes"/>
<request op="read" vba="15" count="2" sync="yes" salt="6111"/>
<request op="write" vba="11" count="6" sync="yes" salt="5436"/>
<request op="sync" vba="0" count="256" sync="yes"/>
<check/>
<log string="Step 13: test asynchronous free tree extension"/>
<request op="write" vba="20" count="3" sync="no" salt="3874"/>
<request op="extend_ft" count="21" sync="no"/>
<request op="extend_ft" count="17" sync="no"/>
<request op="read" vba="21" count="1" sync="no" salt="3874"/>
<request op="write" vba="15" count="10" sync="no" salt="6092"/>
<request op="write" vba="15" count="4" sync="no" salt="1060"/>
<request op="read" vba="21" count="3" sync="no" salt="6092"/>
<request op="read" vba="19" count="3" sync="no" salt="6092"/>
<request op="write" vba="17" count="5" sync="no" salt="5555"/>
<request op="read" vba="22" count="3" sync="no" salt="6092"/>
<request op="read" vba="15" count="2" sync="no" salt="1060"/>
<request op="extend_ft" count="180" sync="no"/>
<request op="write" vba="11" count="6" sync="no" salt="4316"/>
<request op="read" vba="17" count="5" sync="no" salt="5555"/>
<request op="write" vba="22" count="2" sync="no" salt="4673"/>
<request op="write" vba="25" count="11" sync="no" salt="3243"/>
<request op="read" vba="24" count="1" sync="no" salt="6092"/>
<request op="write" vba="10" count="5" sync="no" salt="7538"/>
<request op="extend_ft" count="3" sync="no"/>
<request op="extend_ft" count="2" sync="no"/>
<request op="write" vba="21" count="2" sync="no" salt="0984"/>
<request op="write" vba="12" count="10" sync="no" salt="4545"/>
<request op="write" vba="26" count="4" sync="no" salt="5774"/>
<request op="write" vba="15" count="7" sync="no" salt="9311"/>
<request op="write" vba="65" count="7" sync="no" salt="4583"/>
<request op="read" vba="23" count="1" sync="no" salt="4673"/>
<request op="read" vba="25" count="1" sync="no" salt="3243"/>
<request op="read" vba="28" count="2" sync="no" salt="5774"/>
<request op="extend_ft" count="11" sync="no"/>
<request op="read" vba="24" count="1" sync="no" salt="6092"/>
<request op="read" vba="12" count="3" sync="no" salt="4545"/>
<request op="read" vba="19" count="3" sync="no" salt="9311"/>
<request op="read" vba="10" count="2" sync="no" salt="7538"/>
<request op="read" vba="65" count="7" sync="no" salt="4583"/>
<request op="write" vba="60" count="10" sync="no" salt="2725"/>
<request op="read" vba="63" count="7" sync="no" salt="2725"/>
<request op="read" vba="70" count="2" sync="no" salt="4583"/>
<request op="sync" vba="0" count="256" sync="yes"/>
<check/>
<log string="Step 14: test synchronous vbd extension"/>
<request op="write" vba="20" count="3" sync="yes" salt="0473"/>
<request op="extend_vbd" count="23" sync="yes"/>
<request op="read" vba="21" count="1" sync="yes" salt="0473"/>
<request op="extend_vbd" count="6" sync="yes"/>
<request op="write" vba="15" count="10" sync="yes" salt="1296"/>
<request op="write" vba="15" count="4" sync="yes" salt="1161"/>
<request op="extend_vbd" count="10" sync="yes"/>
<request op="read" vba="21" count="3" sync="yes" salt="1296"/>
<request op="read" vba="19" count="3" sync="yes" salt="1296"/>
<request op="write" vba="17" count="5" sync="yes" salt="5353"/>
<request op="extend_vbd" count="2" sync="yes"/>
<request op="extend_vbd" count="2" sync="yes"/>
<request op="extend_vbd" count="2" sync="yes"/>
<request op="read" vba="22" count="3" sync="yes" salt="1296"/>
<request op="extend_vbd" count="1" sync="yes"/>
<request op="read" vba="15" count="2" sync="yes" salt="1161"/>
<request op="write" vba="11" count="6" sync="yes" salt="3654"/>
<request op="write" vba="65" count="1" sync="yes" salt="5346"/>
<request op="read" vba="65" count="1" sync="yes" salt="5346"/>
<request op="sync" vba="0" count="256" sync="yes"/>
<check/>
<log string="Step 15: test asynchronous vbd extension"/>
<request op="write" vba="20" count="3" sync="no" salt="7384"/>
<request op="extend_vbd" count="21" sync="no"/>
<request op="extend_vbd" count="17" sync="no"/>
<request op="read" vba="21" count="1" sync="no" salt="7384"/>
<request op="write" vba="15" count="10" sync="no" salt="9602"/>
<request op="write" vba="15" count="4" sync="no" salt="6100"/>
<request op="read" vba="21" count="3" sync="no" salt="9602"/>
<request op="read" vba="19" count="3" sync="no" salt="9602"/>
<request op="write" vba="17" count="5" sync="no" salt="5555"/>
<request op="read" vba="22" count="3" sync="no" salt="9602"/>
<request op="read" vba="15" count="2" sync="no" salt="6100"/>
<request op="extend_vbd" count="180" sync="no"/>
<request op="write" vba="11" count="6" sync="no" salt="1436"/>
<request op="read" vba="17" count="5" sync="no" salt="5555"/>
<request op="write" vba="22" count="2" sync="no" salt="7463"/>
<request op="write" vba="25" count="11" sync="no" salt="4323"/>
<request op="read" vba="24" count="1" sync="no" salt="9602"/>
<request op="write" vba="10" count="5" sync="no" salt="3758"/>
<request op="extend_vbd" count="3" sync="no"/>
<request op="extend_vbd" count="2" sync="no"/>
<request op="write" vba="21" count="2" sync="no" salt="8094"/>
<request op="write" vba="12" count="10" sync="no" salt="4455"/>
<request op="write" vba="26" count="4" sync="no" salt="7574"/>
<request op="write" vba="15" count="7" sync="no" salt="1931"/>
<request op="write" vba="65" count="7" sync="no" salt="8453"/>
<request op="read" vba="23" count="1" sync="no" salt="7463"/>
<request op="read" vba="25" count="1" sync="no" salt="4323"/>
<request op="read" vba="28" count="2" sync="no" salt="7574"/>
<request op="extend_vbd" count="11" sync="no"/>
<request op="read" vba="24" count="1" sync="no" salt="9602"/>
<request op="read" vba="12" count="3" sync="no" salt="4455"/>
<request op="read" vba="19" count="3" sync="no" salt="1931"/>
<request op="read" vba="10" count="2" sync="no" salt="3758"/>
<request op="read" vba="65" count="7" sync="no" salt="8453"/>
<request op="write" vba="60" count="10" sync="no" salt="2275"/>
<request op="read" vba="63" count="7" sync="no" salt="2275"/>
<request op="read" vba="70" count="2" sync="no" salt="8453"/>
<request op="sync" vba="0" count="256" sync="yes"/>
<check/>
<log string="Step 16: reinitialize Tresor device"/>
<request op="deinitialize" sync="no"/>
<destruct/>
<initialize>
<virtual-block-device
nr_of_levels="4"
nr_of_children="64"
nr_of_leafs="25600" />
<free-tree
nr_of_levels="4"
nr_of_children="64"
nr_of_leafs="25600" />
</initialize>
<construct/>
}
if {[benchmark_blk_count] > 0} {
append config {
<log string="Step 17: do read/write benchmarks"/>
<benchmark op="start" label="read initial data in one request"/>
<request op="read" vba="0" count="} [benchmark_blk_count] {" sync="no"/>
<benchmark op="stop"/>
<benchmark op="start" label="overwrite initial data in one request"/>
<request op="write" vba="0" count="} [benchmark_blk_count] {" sync="no"/>
<benchmark op="stop"/>
<benchmark op="start" label="overwrite written data in one request"/>
<request op="write" vba="0" count="} [benchmark_blk_count] {" sync="no"/>
<benchmark op="stop"/>
<benchmark op="start" label="read written data in one request"/>
<request op="read" vba="0" count="} [benchmark_blk_count] {" sync="no"/>
<benchmark op="stop"/>
<benchmark op="start" label="read written data randomized"/>
<request op="read" vba="00001" count="10" sync="no"/>
<request op="read" vba="00028" count="80" sync="no"/>
<request op="read" vba="24045" count="50" sync="no"/>
<request op="read" vba="04441" count="10" sync="no"/>
<request op="read" vba="14240" count="40" sync="no"/>
<request op="read" vba="00230" count="80" sync="no"/>
<request op="read" vba="01673" count="30" sync="no"/>
<request op="read" vba="21609" count="30" sync="no"/>
<request op="read" vba="12201" count="10" sync="no"/>
<request op="read" vba="19601" count="10" sync="no"/>
<request op="read" vba="08901" count="10" sync="no"/>
<request op="read" vba="00972" count="20" sync="no"/>
<request op="read" vba="00097" count="70" sync="no"/>
<request op="read" vba="05593" count="30" sync="no"/>
<request op="read" vba="15201" count="10" sync="no"/>
<request op="read" vba="25237" count="20" sync="no"/>
<request op="read" vba="03537" count="70" sync="no"/>
<request op="read" vba="15151" count="10" sync="no"/>
<request op="read" vba="04374" count="40" sync="no"/>
<request op="read" vba="05350" count="40" sync="no"/>
<request op="read" vba="00754" count="40" sync="no"/>
<request op="read" vba="01729" count="90" sync="no"/>
<request op="read" vba="11246" count="60" sync="no"/>
<request op="read" vba="13229" count="90" sync="no"/>
<request op="read" vba="13001" count="10" sync="no"/>
<request op="read" vba="00120" count="90" sync="no"/>
<request op="read" vba="20111" count="10" sync="no"/>
<request op="read" vba="02451" count="10" sync="no"/>
<request op="read" vba="14734" count="40" sync="no"/>
<request op="read" vba="00942" count="20" sync="no"/>
<request op="read" vba="00091" count="10" sync="no"/>
<request op="read" vba="23011" count="10" sync="no"/>
<request op="read" vba="20271" count="50" sync="no"/>
<request op="read" vba="01283" count="30" sync="no"/>
<request op="read" vba="12823" count="30" sync="no"/>
<request op="read" vba="00200" count="50" sync="no"/>
<request op="read" vba="01234" count="40" sync="no"/>
<request op="read" vba="17490" count="70" sync="no"/>
<request op="read" vba="19990" count="20" sync="no"/>
<request op="read" vba="02190" count="30" sync="no"/>
<request op="read" vba="00421" count="10" sync="no"/>
<request op="read" vba="11421" count="10" sync="no"/>
<request op="read" vba="02481" count="50" sync="no"/>
<request op="read" vba="23471" count="10" sync="no"/>
<request op="read" vba="21291" count="40" sync="no"/>
<request op="read" vba="00212" count="20" sync="no"/>
<request op="read" vba="14402" count="20" sync="no"/>
<request op="read" vba="01201" count="10" sync="no"/>
<request op="read" vba="20975" count="30" sync="no"/>
<request op="read" vba="13777" count="70" sync="no"/>
<request op="read" vba="00100" count="10" sync="no"/>
<request op="read" vba="00820" count="80" sync="no"/>
<request op="read" vba="24540" count="50" sync="no"/>
<request op="read" vba="04144" count="10" sync="no"/>
<request op="read" vba="14042" count="40" sync="no"/>
<request op="read" vba="00032" count="80" sync="no"/>
<request op="read" vba="01376" count="30" sync="no"/>
<request op="read" vba="21906" count="30" sync="no"/>
<request op="read" vba="12102" count="10" sync="no"/>
<request op="read" vba="19106" count="10" sync="no"/>
<request op="read" vba="08109" count="10" sync="no"/>
<request op="read" vba="00279" count="20" sync="no"/>
<request op="read" vba="00790" count="70" sync="no"/>
<request op="read" vba="05395" count="30" sync="no"/>
<request op="read" vba="15102" count="10" sync="no"/>
<request op="read" vba="25032" count="20" sync="no"/>
<request op="read" vba="03735" count="70" sync="no"/>
<request op="read" vba="15151" count="10" sync="no"/>
<request op="read" vba="04473" count="40" sync="no"/>
<request op="read" vba="05053" count="40" sync="no"/>
<request op="read" vba="00457" count="40" sync="no"/>
<request op="read" vba="01927" count="90" sync="no"/>
<request op="read" vba="11642" count="60" sync="no"/>
<request op="read" vba="13922" count="90" sync="no"/>
<request op="read" vba="13100" count="10" sync="no"/>
<request op="read" vba="00021" count="90" sync="no"/>
<request op="read" vba="20111" count="10" sync="no"/>
<request op="read" vba="02154" count="10" sync="no"/>
<request op="read" vba="14437" count="40" sync="no"/>
<request op="read" vba="00249" count="20" sync="no"/>
<request op="read" vba="00190" count="10" sync="no"/>
<request op="read" vba="23110" count="10" sync="no"/>
<request op="read" vba="20172" count="50" sync="no"/>
<request op="read" vba="01382" count="30" sync="no"/>
<request op="read" vba="12328" count="30" sync="no"/>
<request op="read" vba="00002" count="50" sync="no"/>
<request op="read" vba="01432" count="40" sync="no"/>
<request op="read" vba="17094" count="70" sync="no"/>
<request op="read" vba="19099" count="20" sync="no"/>
<request op="read" vba="02091" count="30" sync="no"/>
<request op="read" vba="00124" count="10" sync="no"/>
<request op="read" vba="11124" count="10" sync="no"/>
<request op="read" vba="02184" count="50" sync="no"/>
<request op="read" vba="23174" count="10" sync="no"/>
<request op="read" vba="21192" count="40" sync="no"/>
<request op="read" vba="00212" count="20" sync="no"/>
<request op="read" vba="14204" count="20" sync="no"/>
<request op="read" vba="01102" count="10" sync="no"/>
<request op="read" vba="20579" count="30" sync="no"/>
<request op="read" vba="13777" count="70" sync="no"/>
<request op="read" vba="00010" count="10" sync="no"/>
<request op="read" vba="02080" count="80" sync="no"/>
<request op="read" vba="24054" count="50" sync="no"/>
<request op="read" vba="04414" count="10" sync="no"/>
<request op="read" vba="14204" count="40" sync="no"/>
<request op="read" vba="03200" count="80" sync="no"/>
<request op="read" vba="07631" count="30" sync="no"/>
<request op="read" vba="20691" count="30" sync="no"/>
<request op="read" vba="10212" count="10" sync="no"/>
<request op="read" vba="10619" count="10" sync="no"/>
<request op="read" vba="00918" count="10" sync="no"/>
<request op="read" vba="07920" count="20" sync="no"/>
<request op="read" vba="09070" count="70" sync="no"/>
<request op="read" vba="09535" count="30" sync="no"/>
<request op="read" vba="10215" count="10" sync="no"/>
<request op="read" vba="23275" count="20" sync="no"/>
<request op="read" vba="03573" count="70" sync="no"/>
<request op="read" vba="15115" count="10" sync="no"/>
<request op="read" vba="07344" count="40" sync="no"/>
<request op="read" vba="05305" count="40" sync="no"/>
<request op="read" vba="05740" count="40" sync="no"/>
<request op="read" vba="02791" count="90" sync="no"/>
<request op="read" vba="14261" count="60" sync="no"/>
<request op="read" vba="12293" count="90" sync="no"/>
<request op="read" vba="10013" count="10" sync="no"/>
<request op="read" vba="02100" count="90" sync="no"/>
<request op="read" vba="21110" count="10" sync="no"/>
<request op="read" vba="05412" count="10" sync="no"/>
<request op="read" vba="13744" count="40" sync="no"/>
<request op="read" vba="04920" count="20" sync="no"/>
<request op="read" vba="09010" count="10" sync="no"/>
<request op="read" vba="21013" count="10" sync="no"/>
<request op="read" vba="00210" count="50" sync="no"/>
<request op="read" vba="08231" count="30" sync="no"/>
<request op="read" vba="12832" count="30" sync="no"/>
<request op="read" vba="00200" count="50" sync="no"/>
<request op="read" vba="03241" count="40" sync="no"/>
<request op="read" vba="19407" count="70" sync="no"/>
<request op="read" vba="19909" count="20" sync="no"/>
<request op="read" vba="09102" count="30" sync="no"/>
<request op="read" vba="02410" count="10" sync="no"/>
<request op="read" vba="12411" count="10" sync="no"/>
<request op="read" vba="08412" count="50" sync="no"/>
<request op="read" vba="22413" count="10" sync="no"/>
<request op="read" vba="24211" count="40" sync="no"/>
<request op="read" vba="01220" count="20" sync="no"/>
<request op="read" vba="10424" count="20" sync="no"/>
<request op="read" vba="00211" count="10" sync="no"/>
<request op="read" vba="21950" count="30" sync="no"/>
<request op="read" vba="17773" count="70" sync="no"/>
<request op="read" vba="01000" count="10" sync="no"/>
<request op="read" vba="08002" count="80" sync="no"/>
<request op="read" vba="25044" count="50" sync="no"/>
<request op="read" vba="01444" count="10" sync="no"/>
<request op="read" vba="10244" count="40" sync="no"/>
<request op="read" vba="00203" count="80" sync="no"/>
<request op="read" vba="03617" count="30" sync="no"/>
<request op="read" vba="23610" count="30" sync="no"/>
<request op="read" vba="11220" count="10" sync="no"/>
<request op="read" vba="11690" count="10" sync="no"/>
<request op="read" vba="01980" count="10" sync="no"/>
<request op="read" vba="02907" count="20" sync="no"/>
<request op="read" vba="07009" count="70" sync="no"/>
<request op="read" vba="03559" count="30" sync="no"/>
<request op="read" vba="11250" count="10" sync="no"/>
<request op="read" vba="20253" count="20" sync="no"/>
<request op="read" vba="07533" count="70" sync="no"/>
<request op="read" vba="11155" count="10" sync="no"/>
<request op="read" vba="04347" count="40" sync="no"/>
<request op="read" vba="00355" count="40" sync="no"/>
<request op="read" vba="04705" count="40" sync="no"/>
<request op="read" vba="09712" count="90" sync="no"/>
<request op="read" vba="16214" count="60" sync="no"/>
<request op="read" vba="19232" count="90" sync="no"/>
<request op="read" vba="11030" count="10" sync="no"/>
<request op="read" vba="00102" count="90" sync="no"/>
<request op="read" vba="21101" count="10" sync="no"/>
<request op="read" vba="01425" count="10" sync="no"/>
<request op="read" vba="14743" count="40" sync="no"/>
<request op="read" vba="02904" count="20" sync="no"/>
<request op="read" vba="01009" count="10" sync="no"/>
<request op="read" vba="21031" count="10" sync="no"/>
<request op="read" vba="25207" count="50" sync="no"/>
<request op="read" vba="03218" count="30" sync="no"/>
<request op="read" vba="13822" count="30" sync="no"/>
<request op="read" vba="00200" count="50" sync="no"/>
<request op="read" vba="04213" count="40" sync="no"/>
<request op="read" vba="10479" count="70" sync="no"/>
<request op="read" vba="10999" count="20" sync="no"/>
<request op="read" vba="00129" count="30" sync="no"/>
<request op="read" vba="01402" count="10" sync="no"/>
<request op="read" vba="11412" count="10" sync="no"/>
<request op="read" vba="01428" count="50" sync="no"/>
<request op="read" vba="21437" count="10" sync="no"/>
<request op="read" vba="24219" count="40" sync="no"/>
<request op="read" vba="02201" count="20" sync="no"/>
<request op="read" vba="12440" count="20" sync="no"/>
<request op="read" vba="01210" count="10" sync="no"/>
<request op="read" vba="20907" count="30" sync="no"/>
<request op="read" vba="17737" count="70" sync="no"/>
<benchmark op="stop"/>
<benchmark op="start" label="overwrite written data randomized"/>
<request op="write" vba="00001" count="10" sync="no"/>
<request op="write" vba="00028" count="80" sync="no"/>
<request op="write" vba="24045" count="50" sync="no"/>
<request op="write" vba="04441" count="10" sync="no"/>
<request op="write" vba="14240" count="40" sync="no"/>
<request op="write" vba="00230" count="80" sync="no"/>
<request op="write" vba="01673" count="30" sync="no"/>
<request op="write" vba="21609" count="30" sync="no"/>
<request op="write" vba="12201" count="10" sync="no"/>
<request op="write" vba="19601" count="10" sync="no"/>
<request op="write" vba="08901" count="10" sync="no"/>
<request op="write" vba="00972" count="20" sync="no"/>
<request op="write" vba="00097" count="70" sync="no"/>
<request op="write" vba="05593" count="30" sync="no"/>
<request op="write" vba="15201" count="10" sync="no"/>
<request op="write" vba="25237" count="20" sync="no"/>
<request op="write" vba="03537" count="70" sync="no"/>
<request op="write" vba="15151" count="10" sync="no"/>
<request op="write" vba="04374" count="40" sync="no"/>
<request op="write" vba="05350" count="40" sync="no"/>
<request op="write" vba="00754" count="40" sync="no"/>
<request op="write" vba="01729" count="90" sync="no"/>
<request op="write" vba="11246" count="60" sync="no"/>
<request op="write" vba="13229" count="90" sync="no"/>
<request op="write" vba="13001" count="10" sync="no"/>
<request op="write" vba="00120" count="90" sync="no"/>
<request op="write" vba="20111" count="10" sync="no"/>
<request op="write" vba="02451" count="10" sync="no"/>
<request op="write" vba="14734" count="40" sync="no"/>
<request op="write" vba="00942" count="20" sync="no"/>
<request op="write" vba="00091" count="10" sync="no"/>
<request op="write" vba="23011" count="10" sync="no"/>
<request op="write" vba="20271" count="50" sync="no"/>
<request op="write" vba="01283" count="30" sync="no"/>
<request op="write" vba="12823" count="30" sync="no"/>
<request op="write" vba="00200" count="50" sync="no"/>
<request op="write" vba="01234" count="40" sync="no"/>
<request op="write" vba="17490" count="70" sync="no"/>
<request op="write" vba="19990" count="20" sync="no"/>
<request op="write" vba="02190" count="30" sync="no"/>
<request op="write" vba="00421" count="10" sync="no"/>
<request op="write" vba="11421" count="10" sync="no"/>
<request op="write" vba="02481" count="50" sync="no"/>
<request op="write" vba="23471" count="10" sync="no"/>
<request op="write" vba="21291" count="40" sync="no"/>
<request op="write" vba="00212" count="20" sync="no"/>
<request op="write" vba="14402" count="20" sync="no"/>
<request op="write" vba="01201" count="10" sync="no"/>
<request op="write" vba="20975" count="30" sync="no"/>
<request op="write" vba="13777" count="70" sync="no"/>
<request op="write" vba="00100" count="10" sync="no"/>
<request op="write" vba="00820" count="80" sync="no"/>
<request op="write" vba="24540" count="50" sync="no"/>
<request op="write" vba="04144" count="10" sync="no"/>
<request op="write" vba="14042" count="40" sync="no"/>
<request op="write" vba="00032" count="80" sync="no"/>
<request op="write" vba="01376" count="30" sync="no"/>
<request op="write" vba="21906" count="30" sync="no"/>
<request op="write" vba="12102" count="10" sync="no"/>
<request op="write" vba="19106" count="10" sync="no"/>
<request op="write" vba="08109" count="10" sync="no"/>
<request op="write" vba="00279" count="20" sync="no"/>
<request op="write" vba="00790" count="70" sync="no"/>
<request op="write" vba="05395" count="30" sync="no"/>
<request op="write" vba="15102" count="10" sync="no"/>
<request op="write" vba="25032" count="20" sync="no"/>
<request op="write" vba="03735" count="70" sync="no"/>
<request op="write" vba="15151" count="10" sync="no"/>
<request op="write" vba="04473" count="40" sync="no"/>
<request op="write" vba="05053" count="40" sync="no"/>
<request op="write" vba="00457" count="40" sync="no"/>
<request op="write" vba="01927" count="90" sync="no"/>
<request op="write" vba="11642" count="60" sync="no"/>
<request op="write" vba="13922" count="90" sync="no"/>
<request op="write" vba="13100" count="10" sync="no"/>
<request op="write" vba="00021" count="90" sync="no"/>
<request op="write" vba="20111" count="10" sync="no"/>
<request op="write" vba="02154" count="10" sync="no"/>
<request op="write" vba="14437" count="40" sync="no"/>
<request op="write" vba="00249" count="20" sync="no"/>
<request op="write" vba="00190" count="10" sync="no"/>
<request op="write" vba="23110" count="10" sync="no"/>
<request op="write" vba="20172" count="50" sync="no"/>
<request op="write" vba="01382" count="30" sync="no"/>
<request op="write" vba="12328" count="30" sync="no"/>
<request op="write" vba="00002" count="50" sync="no"/>
<request op="write" vba="01432" count="40" sync="no"/>
<request op="write" vba="17094" count="70" sync="no"/>
<request op="write" vba="19099" count="20" sync="no"/>
<request op="write" vba="02091" count="30" sync="no"/>
<request op="write" vba="00124" count="10" sync="no"/>
<request op="write" vba="11124" count="10" sync="no"/>
<request op="write" vba="02184" count="50" sync="no"/>
<request op="write" vba="23174" count="10" sync="no"/>
<request op="write" vba="21192" count="40" sync="no"/>
<request op="write" vba="00212" count="20" sync="no"/>
<request op="write" vba="14204" count="20" sync="no"/>
<request op="write" vba="01102" count="10" sync="no"/>
<request op="write" vba="20579" count="30" sync="no"/>
<request op="write" vba="13777" count="70" sync="no"/>
<request op="write" vba="00010" count="10" sync="no"/>
<request op="write" vba="02080" count="80" sync="no"/>
<request op="write" vba="24054" count="50" sync="no"/>
<request op="write" vba="04414" count="10" sync="no"/>
<request op="write" vba="14204" count="40" sync="no"/>
<request op="write" vba="03200" count="80" sync="no"/>
<request op="write" vba="07631" count="30" sync="no"/>
<request op="write" vba="20691" count="30" sync="no"/>
<request op="write" vba="10212" count="10" sync="no"/>
<request op="write" vba="10619" count="10" sync="no"/>
<request op="write" vba="00918" count="10" sync="no"/>
<request op="write" vba="07920" count="20" sync="no"/>
<request op="write" vba="09070" count="70" sync="no"/>
<request op="write" vba="09535" count="30" sync="no"/>
<request op="write" vba="10215" count="10" sync="no"/>
<request op="write" vba="23275" count="20" sync="no"/>
<request op="write" vba="03573" count="70" sync="no"/>
<request op="write" vba="15115" count="10" sync="no"/>
<request op="write" vba="07344" count="40" sync="no"/>
<request op="write" vba="05305" count="40" sync="no"/>
<request op="write" vba="05740" count="40" sync="no"/>
<request op="write" vba="02791" count="90" sync="no"/>
<request op="write" vba="14261" count="60" sync="no"/>
<request op="write" vba="12293" count="90" sync="no"/>
<request op="write" vba="10013" count="10" sync="no"/>
<request op="write" vba="02100" count="90" sync="no"/>
<request op="write" vba="21110" count="10" sync="no"/>
<request op="write" vba="05412" count="10" sync="no"/>
<request op="write" vba="13744" count="40" sync="no"/>
<request op="write" vba="04920" count="20" sync="no"/>
<request op="write" vba="09010" count="10" sync="no"/>
<request op="write" vba="21013" count="10" sync="no"/>
<request op="write" vba="00210" count="50" sync="no"/>
<request op="write" vba="08231" count="30" sync="no"/>
<request op="write" vba="12832" count="30" sync="no"/>
<request op="write" vba="00200" count="50" sync="no"/>
<request op="write" vba="03241" count="40" sync="no"/>
<request op="write" vba="19407" count="70" sync="no"/>
<request op="write" vba="19909" count="20" sync="no"/>
<request op="write" vba="09102" count="30" sync="no"/>
<request op="write" vba="02410" count="10" sync="no"/>
<request op="write" vba="12411" count="10" sync="no"/>
<request op="write" vba="08412" count="50" sync="no"/>
<request op="write" vba="22413" count="10" sync="no"/>
<request op="write" vba="24211" count="40" sync="no"/>
<request op="write" vba="01220" count="20" sync="no"/>
<request op="write" vba="10424" count="20" sync="no"/>
<request op="write" vba="00211" count="10" sync="no"/>
<request op="write" vba="21950" count="30" sync="no"/>
<request op="write" vba="17773" count="70" sync="no"/>
<request op="write" vba="01000" count="10" sync="no"/>
<request op="write" vba="08002" count="80" sync="no"/>
<request op="write" vba="25044" count="50" sync="no"/>
<request op="write" vba="01444" count="10" sync="no"/>
<request op="write" vba="10244" count="40" sync="no"/>
<request op="write" vba="00203" count="80" sync="no"/>
<request op="write" vba="03617" count="30" sync="no"/>
<request op="write" vba="23610" count="30" sync="no"/>
<request op="write" vba="11220" count="10" sync="no"/>
<request op="write" vba="11690" count="10" sync="no"/>
<request op="write" vba="01980" count="10" sync="no"/>
<request op="write" vba="02907" count="20" sync="no"/>
<request op="write" vba="07009" count="70" sync="no"/>
<request op="write" vba="03559" count="30" sync="no"/>
<request op="write" vba="11250" count="10" sync="no"/>
<request op="write" vba="20253" count="20" sync="no"/>
<request op="write" vba="07533" count="70" sync="no"/>
<request op="write" vba="11155" count="10" sync="no"/>
<request op="write" vba="04347" count="40" sync="no"/>
<request op="write" vba="00355" count="40" sync="no"/>
<request op="write" vba="04705" count="40" sync="no"/>
<request op="write" vba="09712" count="90" sync="no"/>
<request op="write" vba="16214" count="60" sync="no"/>
<request op="write" vba="19232" count="90" sync="no"/>
<request op="write" vba="11030" count="10" sync="no"/>
<request op="write" vba="00102" count="90" sync="no"/>
<request op="write" vba="21101" count="10" sync="no"/>
<request op="write" vba="01425" count="10" sync="no"/>
<request op="write" vba="14743" count="40" sync="no"/>
<request op="write" vba="02904" count="20" sync="no"/>
<request op="write" vba="01009" count="10" sync="no"/>
<request op="write" vba="21031" count="10" sync="no"/>
<request op="write" vba="25207" count="50" sync="no"/>
<request op="write" vba="03218" count="30" sync="no"/>
<request op="write" vba="13822" count="30" sync="no"/>
<request op="write" vba="00200" count="50" sync="no"/>
<request op="write" vba="04213" count="40" sync="no"/>
<request op="write" vba="10479" count="70" sync="no"/>
<request op="write" vba="10999" count="20" sync="no"/>
<request op="write" vba="00129" count="30" sync="no"/>
<request op="write" vba="01402" count="10" sync="no"/>
<request op="write" vba="11412" count="10" sync="no"/>
<request op="write" vba="01428" count="50" sync="no"/>
<request op="write" vba="21437" count="10" sync="no"/>
<request op="write" vba="24219" count="40" sync="no"/>
<request op="write" vba="02201" count="20" sync="no"/>
<request op="write" vba="12440" count="20" sync="no"/>
<request op="write" vba="01210" count="10" sync="no"/>
<request op="write" vba="20907" count="30" sync="no"/>
<request op="write" vba="17737" count="70" sync="no"/>
<benchmark op="stop"/>
<check/>
}
} else {
append config {
<log string="Step 17: skip because benchmarks are disabled for this platform"/>
}
}
append config {
<log string="Step 18: test check-snapshots command"/>
<request op="create_snapshot" sync="no" id="13"/>
<request op="write" vba="17737" count="70" sync="no" salt="8924"/>
<request op="create_snapshot" sync="no" id="14"/>
<request op="write" vba="00129" count="30" sync="no" salt="9471"/>
<request op="create_snapshot" sync="no" id="15"/>
<check-snapshots/>
</commands>
</config>
<route>
<service name="File_system" label_last="trust_anchor"> <child name="trust_anchor_fs"/> </service>
<service name="File_system"> <child name="block_io_fs"/> </service>
<service name="Terminal"> <child name="log_terminal"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="LOG"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="ROM"> <parent/> </service>
</route>
</start>
</config>
}
install_config $config
if {[have_board linux]} {
exec rm -rf [lx_local_tresor_image]
if { [get_cmd_switch --autopilot] } {
exec rm -rf [lx_autopilot_tresor_image]
catch { exec $dd if=/dev/urandom of=[lx_autopilot_tresor_image] bs=1M count=[lx_tresor_image_size_mb] }
exec ln -sf -T [lx_autopilot_tresor_image] [lx_local_tresor_image]
} else {
catch { exec $dd if=/dev/urandom of=[lx_local_tresor_image] bs=1M count=[lx_tresor_image_size_mb] }
}
}
set boot_modules [build_artifacts]
lappend_if [have_board linux] boot_modules [tresor_image_name]
build_boot_image $boot_modules
append qemu_args " -nographic "
set test_timeout 100
if {[benchmark_blk_count] > 0} {
set test_timeout 300
}
run_genode_until "child \"test\" exited with exit value.*\n" $test_timeout
if {[have_board linux]} {
if { [get_cmd_switch --autopilot] } {
exec rm -rf [lx_local_tresor_image]
exec rm -rf [lx_autopilot_tresor_image]
}
}
grep_output {\[init\] child "test" exited with exit value}
compare_output_to {[init] child "test" exited with exit value 0}