2
0
Fork 0

WiP! tests/rsync: client connects to server, dies after fork

This commit is contained in:
Ehmry - 2020-11-13 00:22:27 +01:00
parent 2a88f3a096
commit f894c2ef95
1 changed files with 82 additions and 9 deletions

View File

@ -1,15 +1,88 @@
{
name = "rsync";
machine = { pkgs, ... }: {
imports = [ ../nixos-modules/systemd.nix ../nixos-modules/hardware.nix ];
networking.interfaces.eth1.genode.stack = "lwip";
services.rsyncd = {
enable = true;
settings.root.path = "/";
nodes = {
server = { pkgs, ... }: {
imports = [ ../nixos-modules/systemd.nix ../nixos-modules/hardware.nix ];
networking.interfaces.eth1.genode.stack = "lwip";
services.rsyncd = {
enable = true;
settings.root.path = "/";
};
systemd.services.rsyncd.genode = {
enable = true;
interface = "eth1";
};
};
systemd.services.rsyncd.genode = {
enable = true;
interface = "eth1";
client = { pkgs, ... }: {
imports = [ ../nixos-modules/hardware.nix ];
networking.interfaces.eth1.genode.stack = "lwip";
genode.init.children.rsync = {
inputs = with pkgs; [ rsync ];
configFile = pkgs.writeText "rsync-client.dhall" ''
let Genode = env:DHALL_GENODE
let Init = Genode.Init
let Child = Init.Child
in Child.flat
Child.Attributes::{
, binary = "rsync"
, exitPropagate = True
, resources = Genode.Init.Resources::{
, caps = 500
, ram = Genode.units.MiB 16
}
, routes =
[ Init.ServiceRoute.child "File_system" "eth1.sockets" ]
, config = Init.Config::{
, content =
let XML = Genode.Prelude.XML
let VFS = Genode.VFS
in [ XML.leaf
{ name = "libc"
, attributes = toMap
{ stdin = "/dev/null"
, stdout = "/dev/log"
, stderr = "/dev/log"
, socket = "/dev/sockets"
}
}
, VFS.vfs
[ VFS.dir
"dev"
[ VFS.leaf "log"
, VFS.leaf "null"
, VFS.dir
"sockets"
[ VFS.fs VFS.FS::{ label = "eth1.sockets" } ]
]
]
]
# Genode.Prelude.List.map
Text
XML.Type
( λ(x : Text)
XML.leaf
{ name = "arg", attributes = toMap { value = x } }
)
[ "rsync", "-rvvv", "192.168.1.2::" ]
}
}
'';
};
};
};
testScript = ''
server.start()
server.wait_until_serial_output('lwIP Nic interface up address=192.168.1.2')
client.start()
client.wait_until_serial_output('child "rsync" exited')
'';
}