Skip to content
This repository has been archived by the owner on Apr 20, 2024. It is now read-only.

Commit

Permalink
Fix an issue related to LPC bootrom formatting
Browse files Browse the repository at this point in the history
The argument list was being incorrectly constructed when attempting
to produce UEFI boot instructions.

Fix: #26
  • Loading branch information
io7m committed Jul 19, 2020
1 parent 667d393 commit 73a3760
Show file tree
Hide file tree
Showing 3 changed files with 145 additions and 1 deletion.
Expand Up @@ -537,8 +537,9 @@ private WXMCommandExecution generateBhyveCommand(
}
case UEFI: {
final var uefi = (WXMBootConfigurationUEFI) bootConfiguration;
commandBuilder.addArguments("-l");
commandBuilder.addArguments(
String.format("-l bootrom,%s", uefi.firmware())
String.format("bootrom,%s", uefi.firmware())
);
break;
}
Expand Down
Expand Up @@ -779,6 +779,23 @@ public void linuxVirtioNetTAP()
}

final var lastExec = commands.lastExecution().orElseThrow();
final var lastArgs = new ArrayList<>(lastExec.arguments());
assertEquals("-P", lastArgs.remove(0));
assertEquals("-A", lastArgs.remove(0));
assertEquals("-H", lastArgs.remove(0));
assertEquals("-c", lastArgs.remove(0));
assertEquals("cpus=1,sockets=1,cores=1,threads=1", lastArgs.remove(0));
assertEquals("-m", lastArgs.remove(0));
assertEquals("512M", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:0:0,hostbridge", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:1:0,ahci-hd,/tmp/file", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:2:0,virtio-net,tap23,mac=1b:61:cb:ba:c0:12", lastArgs.remove(0));
assertEquals(machine.id().toString(), lastArgs.remove(0));
assertEquals(0, lastArgs.size());

assertEquals(
String.format(
"/usr/sbin/bhyve -P -A -H -c cpus=1,sockets=1,cores=1,threads=1 -m 512M -s 0:0:0,hostbridge -s 0:1:0,ahci-hd,/tmp/file -s 0:2:0,virtio-net,tap23,mac=1b:61:cb:ba:c0:12 %s",
Expand Down Expand Up @@ -917,6 +934,23 @@ public void linuxVirtioNetTAPGroups()
}

final var lastExec = commands.lastExecution().orElseThrow();
final var lastArgs = new ArrayList<>(lastExec.arguments());
assertEquals("-P", lastArgs.remove(0));
assertEquals("-A", lastArgs.remove(0));
assertEquals("-H", lastArgs.remove(0));
assertEquals("-c", lastArgs.remove(0));
assertEquals("cpus=1,sockets=1,cores=1,threads=1", lastArgs.remove(0));
assertEquals("-m", lastArgs.remove(0));
assertEquals("512M", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:0:0,hostbridge", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:1:0,ahci-hd,/tmp/file", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:2:0,virtio-net,tap23,mac=1b:61:cb:ba:c0:12", lastArgs.remove(0));
assertEquals(machine.id().toString(), lastArgs.remove(0));
assertEquals(0, lastArgs.size());

assertEquals(
String.format(
"/usr/sbin/bhyve -P -A -H -c cpus=1,sockets=1,cores=1,threads=1 -m 512M -s 0:0:0,hostbridge -s 0:1:0,ahci-hd,/tmp/file -s 0:2:0,virtio-net,tap23,mac=1b:61:cb:ba:c0:12 %s",
Expand Down Expand Up @@ -1033,6 +1067,23 @@ public void linuxVirtioNetVMNet()
}

final var lastExec = commands.lastExecution().orElseThrow();
final var lastArgs = new ArrayList<>(lastExec.arguments());
assertEquals("-P", lastArgs.remove(0));
assertEquals("-A", lastArgs.remove(0));
assertEquals("-H", lastArgs.remove(0));
assertEquals("-c", lastArgs.remove(0));
assertEquals("cpus=1,sockets=1,cores=1,threads=1", lastArgs.remove(0));
assertEquals("-m", lastArgs.remove(0));
assertEquals("512M", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:0:0,hostbridge", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:1:0,ahci-hd,/tmp/file", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:2:0,virtio-net,vmnet23,mac=1b:61:cb:ba:c0:12", lastArgs.remove(0));
assertEquals(machine.id().toString(), lastArgs.remove(0));
assertEquals(0, lastArgs.size());

assertEquals(
String.format(
"/usr/sbin/bhyve -P -A -H -c cpus=1,sockets=1,cores=1,threads=1 -m 512M -s 0:0:0,hostbridge -s 0:1:0,ahci-hd,/tmp/file -s 0:2:0,virtio-net,vmnet23,mac=1b:61:cb:ba:c0:12 %s",
Expand Down Expand Up @@ -1171,6 +1222,23 @@ public void linuxVirtioNetVMNetGroups()
}

final var lastExec = commands.lastExecution().orElseThrow();
final var lastArgs = new ArrayList<>(lastExec.arguments());
assertEquals("-P", lastArgs.remove(0));
assertEquals("-A", lastArgs.remove(0));
assertEquals("-H", lastArgs.remove(0));
assertEquals("-c", lastArgs.remove(0));
assertEquals("cpus=1,sockets=1,cores=1,threads=1", lastArgs.remove(0));
assertEquals("-m", lastArgs.remove(0));
assertEquals("512M", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:0:0,hostbridge", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:1:0,ahci-hd,/tmp/file", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:2:0,virtio-net,vmnet23,mac=1b:61:cb:ba:c0:12", lastArgs.remove(0));
assertEquals(machine.id().toString(), lastArgs.remove(0));
assertEquals(0, lastArgs.size());

assertEquals(
String.format(
"/usr/sbin/bhyve -P -A -H -c cpus=1,sockets=1,cores=1,threads=1 -m 512M -s 0:0:0,hostbridge -s 0:1:0,ahci-hd,/tmp/file -s 0:2:0,virtio-net,vmnet23,mac=1b:61:cb:ba:c0:12 %s",
Expand Down Expand Up @@ -1287,6 +1355,23 @@ public void linuxE1000Net()
}

final var lastExec = commands.lastExecution().orElseThrow();
final var lastArgs = new ArrayList<>(lastExec.arguments());
assertEquals("-P", lastArgs.remove(0));
assertEquals("-A", lastArgs.remove(0));
assertEquals("-H", lastArgs.remove(0));
assertEquals("-c", lastArgs.remove(0));
assertEquals("cpus=1,sockets=1,cores=1,threads=1", lastArgs.remove(0));
assertEquals("-m", lastArgs.remove(0));
assertEquals("512M", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:0:0,hostbridge", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:1:0,ahci-hd,/tmp/file", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:2:0,e1000,vmnet23,mac=1b:61:cb:ba:c0:12", lastArgs.remove(0));
assertEquals(machine.id().toString(), lastArgs.remove(0));
assertEquals(0, lastArgs.size());

assertEquals(
String.format(
"/usr/sbin/bhyve -P -A -H -c cpus=1,sockets=1,cores=1,threads=1 -m 512M -s 0:0:0,hostbridge -s 0:1:0,ahci-hd,/tmp/file -s 0:2:0,e1000,vmnet23,mac=1b:61:cb:ba:c0:12 %s",
Expand Down
Expand Up @@ -52,6 +52,7 @@
import java.net.UnknownHostException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Set;
import java.util.UUID;

Expand Down Expand Up @@ -147,6 +148,25 @@ public void openbsdSimpleAHCIHD()
assertEquals(0, configs.size());

final var lastExec = commands.lastExecution().orElseThrow();
final var lastArgs = new ArrayList<>(lastExec.arguments());
assertEquals("-P", lastArgs.remove(0));
assertEquals("-A", lastArgs.remove(0));
assertEquals("-H", lastArgs.remove(0));
assertEquals("-c", lastArgs.remove(0));
assertEquals("cpus=1,sockets=1,cores=1,threads=1", lastArgs.remove(0));
assertEquals("-m", lastArgs.remove(0));
assertEquals("512M", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:0:0,ahci-hd,/tmp/file,nocache,direct,ro,sectorsize=2048/4096", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:1:0,lpc", lastArgs.remove(0));
assertEquals("-l", lastArgs.remove(0));
assertEquals("com1,stdio", lastArgs.remove(0));
assertEquals("-l", lastArgs.remove(0));
assertEquals("bootrom,/tmp/firmware", lastArgs.remove(0));
assertEquals(machine.id().toString(), lastArgs.remove(0));
assertEquals(0, lastArgs.size());

assertEquals(
String.format(
"/usr/sbin/bhyve -P -A -H -c cpus=1,sockets=1,cores=1,threads=1 -m 512M -s 0:0:0,ahci-hd,/tmp/file,nocache,direct,ro,sectorsize=2048/4096 -s 0:1:0,lpc -l com1,stdio -l bootrom,/tmp/firmware %s",
Expand Down Expand Up @@ -217,6 +237,25 @@ public void openbsdVNC6()
assertEquals(0, configs.size());

final var lastExec = commands.lastExecution().orElseThrow();
final var lastArgs = new ArrayList<>(lastExec.arguments());
assertEquals("-P", lastArgs.remove(0));
assertEquals("-A", lastArgs.remove(0));
assertEquals("-H", lastArgs.remove(0));
assertEquals("-c", lastArgs.remove(0));
assertEquals("cpus=1,sockets=1,cores=1,threads=1", lastArgs.remove(0));
assertEquals("-m", lastArgs.remove(0));
assertEquals("512M", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:1:0,lpc", lastArgs.remove(0));
assertEquals("-l", lastArgs.remove(0));
assertEquals("com1,stdio", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:2:0,fbuf,tcp=[0:0:0:0:0:0:0:1]:5901,w=1200,h=1400,vga=off,wait", lastArgs.remove(0));
assertEquals("-l", lastArgs.remove(0));
assertEquals("bootrom,/tmp/firmware", lastArgs.remove(0));
assertEquals(machine.id().toString(), lastArgs.remove(0));
assertEquals(0, lastArgs.size());

assertEquals(
String.format(
"/usr/sbin/bhyve -P -A -H -c cpus=1,sockets=1,cores=1,threads=1 -m 512M -s 0:1:0,lpc -l com1,stdio -s 0:2:0,fbuf,tcp=[0:0:0:0:0:0:0:1]:5901,w=1200,h=1400,vga=off,wait -l bootrom,/tmp/firmware %s",
Expand Down Expand Up @@ -284,6 +323,25 @@ public void openbsdVNC4()
assertEquals(0, configs.size());

final var lastExec = commands.lastExecution().orElseThrow();
final var lastArgs = new ArrayList<>(lastExec.arguments());
assertEquals("-P", lastArgs.remove(0));
assertEquals("-A", lastArgs.remove(0));
assertEquals("-H", lastArgs.remove(0));
assertEquals("-c", lastArgs.remove(0));
assertEquals("cpus=1,sockets=1,cores=1,threads=1", lastArgs.remove(0));
assertEquals("-m", lastArgs.remove(0));
assertEquals("512M", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:1:0,lpc", lastArgs.remove(0));
assertEquals("-l", lastArgs.remove(0));
assertEquals("com1,stdio", lastArgs.remove(0));
assertEquals("-s", lastArgs.remove(0));
assertEquals("0:2:0,fbuf,tcp=127.0.0.1:5901,w=1200,h=1400,vga=off,wait", lastArgs.remove(0));
assertEquals("-l", lastArgs.remove(0));
assertEquals("bootrom,/tmp/firmware", lastArgs.remove(0));
assertEquals(machine.id().toString(), lastArgs.remove(0));
assertEquals(0, lastArgs.size());

assertEquals(
String.format(
"/usr/sbin/bhyve -P -A -H -c cpus=1,sockets=1,cores=1,threads=1 -m 512M -s 0:1:0,lpc -l com1,stdio -s 0:2:0,fbuf,tcp=127.0.0.1:5901,w=1200,h=1400,vga=off,wait -l bootrom,/tmp/firmware %s",
Expand Down

0 comments on commit 73a3760

Please sign in to comment.