1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/usr/bin/env node
- "use strict";
- process.on("unhandledRejection", exn => { throw exn; });
- const TEST_RELEASE_BUILD = +process.env.TEST_RELEASE_BUILD;
- var V86 = require(`../../build/${TEST_RELEASE_BUILD ? "libv86" : "libv86-debug"}.js`).V86;
- const assert = require("assert").strict;
- var fs = require("fs");
- const config_async_cdrom = {
- bios: { url: __dirname + "/../../bios/seabios.bin" },
- vga_bios: { url: __dirname + "/../../bios/vgabios.bin" },
- cdrom: { url: __dirname + "/../../images/linux4.iso", async: true },
- autostart: true,
- memory_size: 64 * 1024 * 1024,
- filesystem: {},
- disable_jit: +process.env.DISABLE_JIT,
- log_level: 0,
- };
- const config_sync_cdrom = {
- bios: { url: __dirname + "/../../bios/seabios.bin" },
- vga_bios: { url: __dirname + "/../../bios/vgabios.bin" },
- cdrom: { url: __dirname + "/../../images/linux4.iso", async: false },
- autostart: true,
- memory_size: 64 * 1024 * 1024,
- filesystem: {},
- disable_jit: +process.env.DISABLE_JIT,
- log_level: 0,
- };
- const config_filesystem = {
- bios: { url: __dirname + "/../../bios/seabios.bin" },
- vga_bios: { url: __dirname + "/../../bios/vgabios.bin" },
- autostart: true,
- memory_size: 64 * 1024 * 1024,
- filesystem: {},
- bzimage: { url: __dirname + "/../../images/buildroot-bzimage68.bin" },
- cmdline: "tsc=reliable mitigations=off random.trust_cpu=on",
- network_relay_url: "<UNUSED>",
- disable_jit: +process.env.DISABLE_JIT,
- log_level: 0,
- };
- const config_large_memory = {
- bios: { url: __dirname + "/../../bios/seabios.bin" },
- vga_bios: { url: __dirname + "/../../bios/vgabios.bin" },
- cdrom: { url: __dirname + "/../../images/linux4.iso", async: true },
- autostart: true,
- memory_size: 2048 * 1024 * 1024,
- vga_memory_size: 512 * 1024 * 1024,
- network_relay_url: "<UNUSED>",
- disable_jit: +process.env.DISABLE_JIT,
- log_level: 0,
- };
- async function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }
- async function run_test(name, config, done)
- {
- const emulator = new V86(config);
- await sleep(2000);
- console.log("Saving: %s", name);
- const state = await emulator.save_state();
- await sleep(1000);
- console.log("Restoring: %s", name);
- await emulator.restore_state(state);
- await emulator.wait_until_vga_screen_contains("~% ");
- await sleep(1000);
- emulator.keyboard_send_text("echo -n test; echo passed\n");
- await sleep(1000);
- const lines = emulator.screen_adapter.get_text_screen();
- if(!lines.some(line => line.startsWith("testpassed")))
- {
- console.warn("Failed: " + name);
- console.warn(lines.map(line => line.replace(/\x00/g, " ")));
- process.exit(1);
- }
- console.log("Done: %s", name);
- emulator.stop();
- }
- (async function() {
- await run_test("async cdrom", config_async_cdrom);
- await run_test("sync cdrom", config_sync_cdrom);
- await run_test("filesystem", config_filesystem);
- await run_test("large memory size", config_large_memory);
- })();
|