/* $Id: TestVBox.java 36281 2011-03-15 11:49:08Z vboxsync $ */ /* * Copyright (C) 2010 Oracle Corporation * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; * you can redistribute it and/or modify it under the terms of the GNU * General Public License (GPL) as published by the Free Software * Foundation, in version 2 as it comes in the "COPYING" file of the * VirtualBox OSE distribution. VirtualBox OSE is distributed in the * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. */ import org.virtualbox_4_1.*; import java.util.List; import java.util.Arrays; import java.math.BigInteger; public class TestVBox { static void processEvent(IEvent ev) { System.out.println("got event: " + ev); VBoxEventType type = ev.getType(); System.out.println("type = "+type); switch (type) { case OnMachineStateChanged: { IMachineStateChangedEvent mcse = IMachineStateChangedEvent.queryInterface(ev); if (mcse == null) System.out.println("Cannot query an interface"); else System.out.println("mid="+mcse.getMachineId()); break; } } } static class EventHandler { EventHandler() {} public void handleEvent(IEvent ev) { try { processEvent(ev); } catch (Throwable t) { t.printStackTrace(); } } } static void testEvents(VirtualBoxManager mgr, IEventSource es) { // active mode for Java doesn't fully work yet, and using passive // is more portable (the only mode for MSCOM and WS) and thus generally // recommended IEventListener listener = es.createListener(); es.registerListener(listener, Arrays.asList(VBoxEventType.Any), false); try { for (int i=0; i<100; i++) { System.out.print("."); IEvent ev = es.getEvent(listener, 1000); if (ev != null) { processEvent(ev); es.eventProcessed(listener, ev); } } } catch (Exception e) { e.printStackTrace(); } es.unregisterListener(listener); } static void testEnumeration(VirtualBoxManager mgr, IVirtualBox vbox) { List machs = vbox.getMachines(); for (IMachine m : machs) { System.out.println("VM name: " + m.getName());// + ", RAM size: " + m.getMemorySize() + "MB"); System.out.println(" HWVirt: " + m.getHWVirtExProperty(HWVirtExPropertyType.Enabled) + ", Nested Paging: " + m.getHWVirtExProperty(HWVirtExPropertyType.NestedPaging) + ", PAE: " + m.getCPUProperty(CPUPropertyType.PAE) ); } } static void testStart(VirtualBoxManager mgr, IVirtualBox vbox) { String m = vbox.getMachines().get(0).getName(); System.out.println("\nAttempting to start VM '" + m + "'"); mgr.startVm(m, null, 7000); } static void testMultiServer() { VirtualBoxManager mgr1 = VirtualBoxManager.createInstance(null); VirtualBoxManager mgr2 = VirtualBoxManager.createInstance(null); try { mgr1.connect("http://i7:18083", "", ""); mgr2.connect("http://main:18083", "", ""); String mach1 = mgr1.getVBox().getMachines().get(0).getName(); String mach2 = mgr2.getVBox().getMachines().get(0).getName(); mgr1.startVm(mach1, null, 7000); mgr2.startVm(mach2, null, 7000); } finally { mgr1.cleanup(); mgr2.cleanup(); } } static void testReadLog(VirtualBoxManager mgr, IVirtualBox vbox) { IMachine m = vbox.getMachines().get(0); long logNo = 0; long off = 0; long size = 16 * 1024; while (true) { byte[] buf = m.readLog(logNo, off, size); if (buf.length == 0) break; System.out.print(new String(buf)); off += buf.length; } } public static void main(String[] args) { VirtualBoxManager mgr = VirtualBoxManager.createInstance(null); boolean ws = false; String url = null; String user = null; String passwd = null; for (int i = 0; i