package systemd_networkd import ( "bytes" "testing" "github.com/stretchr/testify/assert" "github.com/warewulf/warewulf/internal/app/wwctl/overlay/show" "github.com/warewulf/warewulf/internal/pkg/testenv" "github.com/warewulf/warewulf/internal/pkg/wwlog" ) func Test_systemdNetworkOverlay(t *testing.T) { env := testenv.New(t) defer env.RemoveAll() env.ImportFile("var/lib/warewulf/overlays/systemd.networkd/rootfs/etc/systemd/network/default.network.ww", "../rootfs/etc/systemd/network/default.network.ww") tests := []struct { name string nodes_conf string args []string log string }{ { name: "systemd.networkd with hwaddr", nodes_conf: "nodes.conf", args: []string{"--render", "node1", "systemd.networkd", "etc/systemd/network/default.network.ww"}, log: expected_log_with_hwaddr, }, { name: "systemd.networkd without hwaddr", nodes_conf: "nodes-no-hwaddr.conf", args: []string{"--render", "node1", "systemd.networkd", "etc/systemd/network/default.network.ww"}, log: expected_log_without_hwaddr, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { env.ImportFile("etc/warewulf/nodes.conf", tt.nodes_conf) cmd := show.GetCommand() cmd.SetArgs(tt.args) stdout := bytes.NewBufferString("") stderr := bytes.NewBufferString("") logbuf := bytes.NewBufferString("") cmd.SetOut(stdout) cmd.SetErr(stderr) wwlog.SetLogWriter(logbuf) err := cmd.Execute() assert.NoError(t, err) assert.Empty(t, stdout.String()) assert.Empty(t, stderr.String()) assert.Equal(t, tt.log, logbuf.String()) }) } } const expected_log_with_hwaddr string = `backupFile: true writeFile: true Filename: 10-ww4-networkd-default.network # This file is autogenerated by warewulf [Match] Name=wwnet0 MACAddress=e6:92:39:49:7b:03 [Network] DHCP=no Address=192.168.3.21/24 Gateway=192.168.3.1 [Link] MTUBytes=1500 backupFile: true writeFile: true Filename: 10-ww4-networkd-secondary.network # This file is autogenerated by warewulf [Match] Name=wwnet1 MACAddress=9a:77:29:73:14:f1 [Network] DHCP=no Address=192.168.3.22/24 Gateway=192.168.3.1 IPv6AcceptRA=no IPv6PrivacyExtensions=false Address=2001:db8::23/64 Gateway=2001:db8::1 [Link] MTUBytes=9000 [Route] Destination=192.168.1.0/24 Gateway=192.168.3.254 [DHCPv6] DUIDType=link-layer ` const expected_log_without_hwaddr string = `backupFile: true writeFile: true Filename: 10-ww4-networkd-default.network # This file is autogenerated by warewulf [Match] Name=wwnet0 [Network] DHCP=no Address=192.168.3.21/24 Gateway=192.168.3.1 [Link] MTUBytes=1500 backupFile: true writeFile: true Filename: 10-ww4-networkd-secondary.network # This file is autogenerated by warewulf [Match] Name=wwnet1 [Network] DHCP=no Address=192.168.3.22/24 Gateway=192.168.3.1 IPv6AcceptRA=no IPv6PrivacyExtensions=false Address=2001:db8::23/64 Gateway=2001:db8::1 [Link] MTUBytes=9000 [Route] Destination=192.168.1.0/24 Gateway=192.168.3.254 [DHCPv6] DUIDType=link-layer `