tests: load binaries from store tarball
Remove linux tests, not compatible with cached_fs_rom.
This commit is contained in:
parent
89408c5315
commit
f289a4b88f
|
@ -1,142 +0,0 @@
|
||||||
-- SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
let Test = ./test.dhall ? env:DHALL_GENODE_TEST
|
|
||||||
|
|
||||||
let Genode = Test.Genode
|
|
||||||
|
|
||||||
let Prelude = Genode.Prelude
|
|
||||||
|
|
||||||
let XML = Prelude.XML
|
|
||||||
|
|
||||||
let Init = Genode.Init
|
|
||||||
|
|
||||||
let Child = Init.Child
|
|
||||||
|
|
||||||
let Resources = Init.Resources
|
|
||||||
|
|
||||||
let ServiceRoute = Init.ServiceRoute
|
|
||||||
|
|
||||||
let init =
|
|
||||||
Init::{
|
|
||||||
, verbose = True
|
|
||||||
, routes =
|
|
||||||
[ ServiceRoute.parent "Timer"
|
|
||||||
, ServiceRoute.child "Block" "block_router"
|
|
||||||
]
|
|
||||||
, children =
|
|
||||||
let blockTest =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "test-block-client"
|
|
||||||
, resources = Resources::{ ram = Genode.units.MiB 5 }
|
|
||||||
}
|
|
||||||
|
|
||||||
in toMap
|
|
||||||
{ block_device =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "ram_block"
|
|
||||||
, config = Init.Config::{
|
|
||||||
, attributes = toMap
|
|
||||||
{ file = "gpt.rom", block_size = "512" }
|
|
||||||
}
|
|
||||||
, provides = [ "Block" ]
|
|
||||||
, resources = Resources::{ ram = Genode.units.MiB 8 }
|
|
||||||
}
|
|
||||||
, part_block =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "part_block"
|
|
||||||
, config = Init.Config::{
|
|
||||||
, attributes = toMap { use_gpt = "yes" }
|
|
||||||
, content =
|
|
||||||
Prelude.List.map
|
|
||||||
Natural
|
|
||||||
XML.Type
|
|
||||||
( λ(i : Natural)
|
|
||||||
→ XML.leaf
|
|
||||||
{ name = "policy"
|
|
||||||
, attributes =
|
|
||||||
let partition =
|
|
||||||
Prelude.Natural.show (i + 1)
|
|
||||||
|
|
||||||
in toMap
|
|
||||||
{ label_suffix = " ${partition}"
|
|
||||||
, partition = partition
|
|
||||||
, writeable = "yes"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
(Prelude.Natural.enumerate 128)
|
|
||||||
# [ XML.leaf
|
|
||||||
{ name = "report"
|
|
||||||
, attributes = toMap { partitions = "yes" }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, resources = Resources::{ ram = Genode.units.MiB 10 }
|
|
||||||
, provides = [ "Block" ]
|
|
||||||
, routes =
|
|
||||||
[ ServiceRoute.child "Block" "block_device"
|
|
||||||
, ServiceRoute.child "Report" "block_router"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, block_router =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "block_router"
|
|
||||||
, config = Init.Config::{
|
|
||||||
, content =
|
|
||||||
[ XML.element
|
|
||||||
{ name = "policy"
|
|
||||||
, attributes = toMap
|
|
||||||
{ label_prefix = "test-part1" }
|
|
||||||
, content =
|
|
||||||
[ XML.leaf
|
|
||||||
{ name = "partition"
|
|
||||||
, attributes = toMap
|
|
||||||
{ name = "best partition ever" }
|
|
||||||
}
|
|
||||||
, XML.leaf
|
|
||||||
{ name = "partition"
|
|
||||||
, attributes = toMap
|
|
||||||
{ name = "first-test-partition"
|
|
||||||
, timeout = "2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, XML.element
|
|
||||||
{ name = "policy"
|
|
||||||
, attributes = toMap
|
|
||||||
{ label_prefix = "test-part2" }
|
|
||||||
, content =
|
|
||||||
[ XML.leaf
|
|
||||||
{ name = "partition"
|
|
||||||
, attributes = toMap
|
|
||||||
{ type =
|
|
||||||
"24B69406-18A1-428D-908E-D21A1437122C"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, resources = Resources::{ ram = Genode.units.MiB 10 }
|
|
||||||
, provides = [ "Block", "Report" ]
|
|
||||||
, routes =
|
|
||||||
[ ServiceRoute.parent "Timer"
|
|
||||||
, ServiceRoute.child "Block" "part_block"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, test-part1 = blockTest
|
|
||||||
, test-part2 = blockTest
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
in Test::{
|
|
||||||
, children = Test.initToChildren init
|
|
||||||
, rom =
|
|
||||||
Genode.BootModules.toRomPaths
|
|
||||||
[ { mapKey = "gpt.rom", mapValue = "./gpt.raw" } ]
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
{ testEnv, pkgs, buildPackages, ... }:
|
|
||||||
with pkgs;
|
|
||||||
|
|
||||||
testEnv.mkTest {
|
|
||||||
name = "block_router";
|
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
|
||||||
|
|
||||||
testConfig = ./block_router.dhall;
|
|
||||||
testInputs =
|
|
||||||
map pkgs.genodeSources.depot [ "part_block" "ram_block" "test-block" ]
|
|
||||||
++ [ pkgs.block_router ];
|
|
||||||
testScript = ''
|
|
||||||
catch { exec dd if=/dev/zero of=gpt.raw bs=512 count=7168 }
|
|
||||||
exec ${buildPackages.gptfdisk}/bin/sgdisk -o -n 3:2048:4095 -c 3:first-test-partition -n 31:4096:6143 --typecode=31:24b69406-18a1-428d-908e-d21a1437122c gpt.raw
|
|
||||||
|
|
||||||
run_genode_until {Tests finished successfully.*\n.*Tests finished successfully.*\n} 120
|
|
||||||
'';
|
|
||||||
}
|
|
|
@ -22,12 +22,6 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
linux =
|
|
||||||
(call: ((tests call) // { block_router = call ./block_router.nix { }; }))
|
|
||||||
(import ./driver-linux.nix {
|
|
||||||
inherit apps addManifest buildPackages lib nixpkgs testPkgs;
|
|
||||||
}).callTest;
|
|
||||||
|
|
||||||
nova = (call:
|
nova = (call:
|
||||||
((tests call) // {
|
((tests call) // {
|
||||||
driver_manager = call ./driver_manager.nix { };
|
driver_manager = call ./driver_manager.nix { };
|
||||||
|
@ -55,7 +49,7 @@ let
|
||||||
}) (builtins.attrValues tests);
|
}) (builtins.attrValues tests);
|
||||||
|
|
||||||
in with builtins;
|
in with builtins;
|
||||||
listToAttrs ((concatLists (map (testsToList) [ linux hw nova ]))) // {
|
listToAttrs ((concatLists (map (testsToList) [ hw nova ]))) // {
|
||||||
sotest = let
|
sotest = let
|
||||||
hwTests = with hw; [ multi posix x86 ];
|
hwTests = with hw; [ multi posix x86 ];
|
||||||
novaTests = with nova; [ multi posix x86 vmm ];
|
novaTests = with nova; [ multi posix x86 vmm ];
|
||||||
|
|
|
@ -40,10 +40,22 @@ let
|
||||||
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
||||||
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
|
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
|
||||||
let
|
let
|
||||||
manifest = lib.mergeManifests (map addManifest (with testPkgs;
|
storeTarball = buildPackages.runCommand "store" { } ''
|
||||||
[ base-hw-pc sotest-producer ]
|
mkdir -p $out
|
||||||
++ map genodeSources.depot [ "init" "rtc_drv" ] ++ testInputs));
|
tar cf "$out/store.tar" --absolute-names ${toString testInputs}
|
||||||
testConfig' = "${./test-wrapper.dhall} (${testConfig}) ${manifest}";
|
'';
|
||||||
|
storeManifest = lib.mergeManifests (map addManifest testInputs);
|
||||||
|
manifest = lib.mergeManifests (map addManifest
|
||||||
|
([ testPkgs.base-hw-pc testPkgs.sotest-producer storeTarball ]
|
||||||
|
++ map testPkgs.genodeSources.depot [
|
||||||
|
"init"
|
||||||
|
"rtc_drv"
|
||||||
|
"vfs"
|
||||||
|
"cached_fs_rom"
|
||||||
|
]));
|
||||||
|
testConfig' = "${
|
||||||
|
./test-wrapper.dhall
|
||||||
|
} (${testConfig}) $(stat --format '%s' ${storeTarball}/store.tar) ${storeManifest} ${manifest}";
|
||||||
testEnv' = {
|
testEnv' = {
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
||||||
DHALL_GENODE_TEST = "${./test.dhall}";
|
DHALL_GENODE_TEST = "${./test.dhall}";
|
||||||
|
|
|
@ -1,127 +0,0 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
{ addManifest, apps, buildPackages, lib, nixpkgs, testPkgs }:
|
|
||||||
|
|
||||||
let
|
|
||||||
testDriver = with buildPackages;
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "genode-test-driver";
|
|
||||||
preferLocalBuild = true;
|
|
||||||
|
|
||||||
buildInputs = [ makeWrapper expect ];
|
|
||||||
|
|
||||||
dontUnpack = true;
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
install -Dm555 ${./test-driver.exp} $out/bin/genode-test-driver
|
|
||||||
wrapProgram $out/bin/genode-test-driver \
|
|
||||||
--prefix PATH : "${lib.makeBinPath [ expect coreutils ]}"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
runTests = driver:
|
|
||||||
buildPackages.stdenv.mkDerivation {
|
|
||||||
name = "linux-" + driver.testName;
|
|
||||||
preferLocalBuild = true;
|
|
||||||
|
|
||||||
buildCommand = ''
|
|
||||||
mkdir -p $out/nix-support
|
|
||||||
|
|
||||||
${driver}/bin/genode-test-driver | tee $out/log
|
|
||||||
|
|
||||||
touch $out/nix-support
|
|
||||||
echo "report testlog $out log" >> $out/nix-support/hydra-build-products
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultScript =
|
|
||||||
''run_genode_until {child "init" exited with exit value 0} 120'';
|
|
||||||
|
|
||||||
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
|
||||||
, testInputs ? [ ], env ? { }, ... }:
|
|
||||||
with testPkgs;
|
|
||||||
let
|
|
||||||
manifest = lib.mergeManifests (map addManifest
|
|
||||||
((with testPkgs; [ base-linux init sotest-producer ] ++ testInputs)));
|
|
||||||
testConfig' = "${./test-wrapper.dhall} (${testConfig}) ${manifest}";
|
|
||||||
env' = {
|
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
|
||||||
DHALL_GENODE_TEST = "${./test.dhall}";
|
|
||||||
} // env;
|
|
||||||
|
|
||||||
build = lib.linuxScript name env' testConfig';
|
|
||||||
|
|
||||||
toExports = env:
|
|
||||||
with builtins;
|
|
||||||
let
|
|
||||||
keys = attrNames env;
|
|
||||||
f = key: ''set env(${key}) "${getAttr key env}"'';
|
|
||||||
exports = map f keys;
|
|
||||||
in concatStringsSep "\n" exports;
|
|
||||||
|
|
||||||
baseSetup = ''
|
|
||||||
${toExports env'}
|
|
||||||
|
|
||||||
proc run_genode_until {{wait_for_re forever} {timeout_value 0} {running_spawn_id -1}} {
|
|
||||||
#
|
|
||||||
# If a running_spawn_id is specified, wait for the expected output
|
|
||||||
#
|
|
||||||
if {$running_spawn_id != -1} {
|
|
||||||
wait_for_output $wait_for_re $timeout_value $running_spawn_id
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
global image_dir spawn_id
|
|
||||||
|
|
||||||
exec sh ${build}/script
|
|
||||||
|
|
||||||
spawn ./core-linux
|
|
||||||
wait_for_output $wait_for_re $timeout_value $spawn_id
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
driver = with buildPackages;
|
|
||||||
runCommand "genode-test-driver-${name}" {
|
|
||||||
buildInputs = [ makeWrapper expect ];
|
|
||||||
inherit baseSetup testScript;
|
|
||||||
preferLocalBuild = true;
|
|
||||||
testName = name;
|
|
||||||
} ''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
echo "$testScript" > $out/test-script
|
|
||||||
echo "$baseSetup" > $out/base-setup
|
|
||||||
ln -s ${testDriver}/bin/genode-test-driver $out/bin/
|
|
||||||
wrapProgram $out/bin/genode-test-driver \
|
|
||||||
--run "export testScript=\"\$(cat $out/test-script)\"" \
|
|
||||||
--run "export baseSetup=\"\$(cat $out/base-setup)\"" \
|
|
||||||
'';
|
|
||||||
|
|
||||||
test = runTests driver;
|
|
||||||
|
|
||||||
in test // {
|
|
||||||
inherit build driver test;
|
|
||||||
config = lib.runDhallCommand (name + ".dhall") env' ''
|
|
||||||
${apps.dhall.program} <<< "(${testConfig'}).config" > $out
|
|
||||||
'';
|
|
||||||
xml = lib.runDhallCommand (name + ".config") env' ''
|
|
||||||
${apps.render-init.program} <<< "(${testConfig'}).config" > $out
|
|
||||||
'';
|
|
||||||
image = lib.runDhallCommand (name + ".image.elf") env' ''
|
|
||||||
mkdir -p $out
|
|
||||||
pushd $out
|
|
||||||
. ${build}/script
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
in {
|
|
||||||
callTest = path: args:
|
|
||||||
(import path ({
|
|
||||||
testEnv = {
|
|
||||||
inherit mkTest lib;
|
|
||||||
isLinux = true;
|
|
||||||
isNova = false;
|
|
||||||
};
|
|
||||||
pkgs = testPkgs;
|
|
||||||
inherit nixpkgs buildPackages;
|
|
||||||
} // args));
|
|
||||||
}
|
|
|
@ -40,10 +40,22 @@ let
|
||||||
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
||||||
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
|
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
|
||||||
let
|
let
|
||||||
manifest = lib.mergeManifests (map addManifest (with testPkgs;
|
storeTarball = buildPackages.runCommand "store" { } ''
|
||||||
[ base-nova sotest-producer ]
|
mkdir -p $out
|
||||||
++ map genodeSources.depot [ "init" "rtc_drv" ] ++ testInputs));
|
tar cf "$out/store.tar" --absolute-names ${toString testInputs}
|
||||||
testConfig' = "${./test-wrapper.dhall} (${testConfig}) ${manifest}";
|
'';
|
||||||
|
storeManifest = lib.mergeManifests (map addManifest testInputs);
|
||||||
|
manifest = lib.mergeManifests (map addManifest
|
||||||
|
([ testPkgs.base-nova testPkgs.sotest-producer storeTarball ]
|
||||||
|
++ map testPkgs.genodeSources.depot [
|
||||||
|
"init"
|
||||||
|
"rtc_drv"
|
||||||
|
"vfs"
|
||||||
|
"cached_fs_rom"
|
||||||
|
]));
|
||||||
|
testConfig' = "${
|
||||||
|
./test-wrapper.dhall
|
||||||
|
} (${testConfig}) $(stat --format '%s' ${storeTarball}/store.tar) ${storeManifest} ${manifest}";
|
||||||
testEnv' = {
|
testEnv' = {
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
||||||
DHALL_GENODE_TEST = "${./test.dhall}";
|
DHALL_GENODE_TEST = "${./test.dhall}";
|
||||||
|
@ -143,6 +155,11 @@ let
|
||||||
compile = lib.compileBoot name testConfig';
|
compile = lib.compileBoot name testConfig';
|
||||||
|
|
||||||
iso = apps.nova-iso.function testEnv' "${testConfig'}";
|
iso = apps.nova-iso.function testEnv' "${testConfig'}";
|
||||||
|
|
||||||
|
store = storeTarball;
|
||||||
|
|
||||||
|
xml = buildPackages.runCommand (name + ".config") testEnv'
|
||||||
|
''${apps.render-init.program} <<< "(${testConfig'}).config" > $out'';
|
||||||
};
|
};
|
||||||
|
|
||||||
in {
|
in {
|
||||||
|
|
|
@ -6,7 +6,7 @@ with pkgs;
|
||||||
testEnv.mkTest rec {
|
testEnv.mkTest rec {
|
||||||
name = "posix";
|
name = "posix";
|
||||||
testConfig = ./posix.dhall;
|
testConfig = ./posix.dhall;
|
||||||
testInputs = map pkgs.genodeSources.depot [ "vfs" "libc" "posix" ]
|
testInputs = map pkgs.genodeSources.depot [ "libc" "posix" ]
|
||||||
++ (with legacyPackages; [ coreutils hello ]);
|
++ (with legacyPackages; [ coreutils hello ]);
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@ let Genode = Test.Genode
|
||||||
|
|
||||||
let Prelude = Genode.Prelude
|
let Prelude = Genode.Prelude
|
||||||
|
|
||||||
|
let XML = Prelude.XML
|
||||||
|
|
||||||
let Init = Genode.Init
|
let Init = Genode.Init
|
||||||
|
|
||||||
let Child = Init.Child
|
let Child = Init.Child
|
||||||
|
@ -13,9 +15,32 @@ let TextMapType = Prelude.Map.Type Text
|
||||||
|
|
||||||
let Children = TextMapType Child.Type
|
let Children = TextMapType Child.Type
|
||||||
|
|
||||||
|
let Manifest/Type = TextMapType (TextMapType Text)
|
||||||
|
|
||||||
|
let Manifest/toRoutes =
|
||||||
|
λ(manifest : Manifest/Type)
|
||||||
|
→ Prelude.List.map
|
||||||
|
(Prelude.Map.Entry Text Text)
|
||||||
|
Init.ServiceRoute.Type
|
||||||
|
( λ(entry : Prelude.Map.Entry Text Text)
|
||||||
|
→ { service =
|
||||||
|
{ name = "ROM"
|
||||||
|
, label = Init.LabelSelector.Type.Last entry.mapKey
|
||||||
|
}
|
||||||
|
, route =
|
||||||
|
Init.Route.Type.Child
|
||||||
|
{ name = "store_rom", label = Some entry.mapValue }
|
||||||
|
}
|
||||||
|
)
|
||||||
|
( Prelude.List.concat
|
||||||
|
(Prelude.Map.Entry Text Text)
|
||||||
|
(Prelude.Map.values Text (Prelude.Map.Type Text Text) manifest)
|
||||||
|
)
|
||||||
|
|
||||||
let wrapHarness
|
let wrapHarness
|
||||||
: Children → Child.Type
|
: Children → Manifest/Type → Child.Type
|
||||||
= λ(children : Children)
|
= λ(children : Children)
|
||||||
|
→ λ(manifest : Manifest/Type)
|
||||||
→ Child.nested
|
→ Child.nested
|
||||||
children
|
children
|
||||||
Child.Attributes::{
|
Child.Attributes::{
|
||||||
|
@ -23,21 +48,24 @@ let wrapHarness
|
||||||
, exitPropagate = True
|
, exitPropagate = True
|
||||||
, resources = Init.Resources::{ ram = Genode.units.MiB 4 }
|
, resources = Init.Resources::{ ram = Genode.units.MiB 4 }
|
||||||
, routes =
|
, routes =
|
||||||
[ Init.ServiceRoute.parentLabel
|
[ Init.ServiceRoute.parentLabel
|
||||||
"LOG"
|
"LOG"
|
||||||
(Some "SOTEST")
|
(Some "SOTEST")
|
||||||
(Some "unlabeled")
|
(Some "unlabeled")
|
||||||
, Init.ServiceRoute.parent "IO_MEM"
|
, Init.ServiceRoute.parent "IO_MEM"
|
||||||
, Init.ServiceRoute.parent "IO_PORT"
|
, Init.ServiceRoute.parent "IO_PORT"
|
||||||
, Init.ServiceRoute.parent "IRQ"
|
, Init.ServiceRoute.parent "IRQ"
|
||||||
, Init.ServiceRoute.parent "VM"
|
, Init.ServiceRoute.parent "VM"
|
||||||
, Init.ServiceRoute.child "Timer" "timer"
|
, Init.ServiceRoute.child "Timer" "timer"
|
||||||
, Init.ServiceRoute.child "Rtc" "rtc"
|
, Init.ServiceRoute.child "Rtc" "rtc"
|
||||||
]
|
]
|
||||||
|
# Manifest/toRoutes manifest
|
||||||
}
|
}
|
||||||
|
|
||||||
in λ(test : Test.Type)
|
in λ(test : Test.Type)
|
||||||
→ λ(inputsManifest : TextMapType (TextMapType Text))
|
→ λ(storeSize : Natural)
|
||||||
|
→ λ(storeManifest : Manifest/Type)
|
||||||
|
→ λ(bootManifest : Manifest/Type)
|
||||||
→ Genode.Boot::{
|
→ Genode.Boot::{
|
||||||
, config = Init::{
|
, config = Init::{
|
||||||
, children =
|
, children =
|
||||||
|
@ -58,7 +86,48 @@ in λ(test : Test.Type)
|
||||||
, routes = [ Init.ServiceRoute.parent "IO_PORT" ]
|
, routes = [ Init.ServiceRoute.parent "IO_PORT" ]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, { mapKey = "harness", mapValue = wrapHarness test.children }
|
, { mapKey = "store_fs"
|
||||||
|
, mapValue =
|
||||||
|
Child.flat
|
||||||
|
Child.Attributes::{
|
||||||
|
, binary = "vfs"
|
||||||
|
, config = Init.Config::{
|
||||||
|
, content =
|
||||||
|
[ XML.element
|
||||||
|
{ name = "vfs"
|
||||||
|
, attributes = XML.emptyAttributes
|
||||||
|
, content =
|
||||||
|
[ XML.leaf
|
||||||
|
{ name = "tar"
|
||||||
|
, attributes = toMap { name = "store.tar" }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
, XML.leaf
|
||||||
|
{ name = "default-policy"
|
||||||
|
, attributes = toMap { root = "/", writeable = "no" }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
, provides = [ "File_system" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
, { mapKey = "store_rom"
|
||||||
|
, mapValue =
|
||||||
|
Child.flat
|
||||||
|
Child.Attributes::{
|
||||||
|
, binary = "cached_fs_rom"
|
||||||
|
, provides = [ "ROM" ]
|
||||||
|
, resources = Init.Resources::{
|
||||||
|
, ram = storeSize + Genode.units.MiB 1
|
||||||
|
}
|
||||||
|
, routes =
|
||||||
|
[ Init.ServiceRoute.child "File_system" "store_fs" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
, { mapKey = "harness"
|
||||||
|
, mapValue = wrapHarness test.children storeManifest
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
, rom =
|
, rom =
|
||||||
|
@ -69,7 +138,7 @@ in λ(test : Test.Type)
|
||||||
( Prelude.Map.values
|
( Prelude.Map.values
|
||||||
Text
|
Text
|
||||||
(Prelude.Map.Type Text Text)
|
(Prelude.Map.Type Text Text)
|
||||||
inputsManifest
|
bootManifest
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue