import java.util.UUID;
import org.libvirt.*;
public class test {
// Use this to flag errors in the test run.
public static String FIXME = "\n<=====================================>\n<============== FIXME ================> ";
public static void main(String[] args) throws Exception {
// Create the connection
Connect conn = null;
Network testNetwork = null;
// The array below is to support the uuid lookup based on an array of
// ints.
// This is deprectaed, but is kept here until the code is removed.
int UUIDArray[] = { Integer.decode("0x00"), Integer.decode("0x4b"), Integer.decode("0x96"), Integer.decode("0xe1"), Integer.decode("0x2d"), Integer.decode("0x78"), Integer.decode("0xc3"), Integer.decode("0x0f"), Integer.decode("0x5a"), Integer.decode("0xa5"), Integer.decode("0xf0"), Integer.decode("0x3c"), Integer.decode("0x87"), Integer.decode("0xd2"), Integer.decode("0x1e"), Integer.decode("0x67") };
/*
* Test Authentication
*
* If you want to test authentication, uncomment the try catch block and one
* of the conn lines. You need to configure your libvirtd for
* remote/authenticated connections before this will work.
*/
/*
* ConnectAuth defaultAuth = new ConnectAuthDefault();
*
* try{ conn = new Connect("test+tcp://localhost/default", defaultAuth, 0);
* conn = new Connect("qemu+tcp://localhost/system", defaultAuth, 0); conn =
* new Connect("test:///default", defaultAuth, 0);
* System.out.println("Encrypted connection successful!"); } catch
* (LibvirtException e){ System.out.println("exception caught:"+e);
* System.out.println(e.getError()); }
*/
try {
conn = new Connect("test:///default", false);
} catch (LibvirtException e) {
System.out.println("exception caught:" + e);
System.out.println(e.getError());
throw e;
}
try {
// Check nodeinfo
NodeInfo nodeInfo = conn.nodeInfo();
System.out.println("virNodeInfo.model:" + nodeInfo.model);
System.out.println("virNodeInfo.memory:" + nodeInfo.memory);
System.out.println("virNodeInfo.cpus:" + nodeInfo.cpus);
System.out.println("virNodeInfo.nodes:" + nodeInfo.nodes);
System.out.println("virNodeInfo.sockets:" + nodeInfo.sockets);
System.out.println("virNodeInfo.cores:" + nodeInfo.cores);
System.out.println("virNodeInfo.threads:" + nodeInfo.threads);
// Exercise the information getter methods
System.out.println("getHostName:" + conn.getHostName());
System.out.println("getCapabilities:" + conn.getCapabilities());
System.out.println("getMaxVcpus:" + conn.getMaxVcpus("xen"));
System.out.println("getType:" + conn.getType());
System.out.println("getURI:" + conn.getURI());
System.out.println("getVersion:" + conn.getVersion());
System.out.println("getLibVirVersion:" + conn.getLibVirVersion());
// By default, there are 1 created and 0 defined networks
// Create a new network to test the create method
System.out.println("conn.networkCreateXML: " + conn.networkCreateXML("<network>" + " <name>createst</name>" + " <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e68</uuid>" + " <bridge name='createst'/>" + " <forward dev='eth0'/>" + " <ip address='192.168.66.1' netmask='255.255.255.0'>" + " <dhcp>" + " <range start='192.168.66.128' end='192.168.66.253'/>" + " </dhcp>" + " </ip>" + "</network>"));
// Same for the define method
System.out.println("conn.networkDefineXML: " + conn.networkDefineXML("<network>" + " <name>deftest</name>" + " <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e67</uuid>" + " <bridge name='deftest'/>" + " <forward dev='eth0'/>" + " <ip address='192.168.88.1' netmask='255.255.255.0'>" + " <dhcp>" + " <range start='192.168.88.128' end='192.168.88.253'/>" + " </dhcp>" + " </ip>" + "</network>"));
// We should have 2:1 but it shows up 3:0 hopefully a bug in the
// test driver
System.out.println("numOfDefinedNetworks:" + conn.numOfDefinedNetworks());
System.out.println("listDefinedNetworks:" + conn.listDefinedNetworks());
for (String c : conn.listDefinedNetworks())
System.out.println(" -> " + c);
System.out.println("numOfNetworks:" + conn.numOfNetworks());
System.out.println("listNetworks:" + conn.listNetworks());
for (String c : conn.listNetworks())
System.out.println(" -> " + c);
// Look at the interfaces
// TODO Post 0.5.1
// System.out.println("numOfInterfaces:" + conn.numOfInterfaces());
// System.out.println("listDefinedInterfaces:" +
// conn.listInterfaces());
// for(String c: conn.listInterfaces())
// System.out.println(" -> "+c);
// Define a new Domain
System.out.println("conn.domainDefineXML:" + conn.domainDefineXML("<domain type='test' id='2'>" + " <name>deftest</name>" + " <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e70</uuid>" + " <memory>8388608</memory>" + " <vcpu>2</vcpu>" + " <os><type arch='i686'>hvm</type></os>" + " <on_reboot>restart</on_reboot>" + " <on_poweroff>destroy</on_poweroff>" + " <on_crash>restart</on_crash>" + "</domain>"));
System.out.println("conn.domainCreateLinux:" + conn.domainCreateLinux("<domain type='test' id='3'>" + " <name>createst</name>" + " <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e67</uuid>" + " <memory>8388608</memory>" + " <vcpu>2</vcpu>" + " <os><type arch='i686'>hvm</type></os>" + " <on_reboot>restart</on_reboot>" + " <on_poweroff>destroy</on_poweroff>" + " <on_crash>restart</on_crash>" + "</domain>", 0));
// Domain enumeration stuff
System.out.println("numOfDefinedDomains:" + conn.numOfDefinedDomains());
System.out.println("listDefinedDomains:" + conn.listDefinedDomains());
for (String c : conn.listDefinedDomains())
System.out.println(" " + c);
System.out.println("numOfDomains:" + conn.numOfDomains());
System.out.println("listDomains:" + conn.listDomains());
for (int c : conn.listDomains())
System.out.println(" -> " + c);
} catch (LibvirtException e) {
System.out.println(FIXME);
System.out.println("exception caught:" + e);
System.out.println(e.getError());
}
// Network Object
try {
// Choose one, they should have the exact same effect
testNetwork = conn.networkLookupByName("deftest");
System.out.println("networkLookupByName: " + testNetwork.getName());
/*
* testNetwork = conn.networkLookupByUUID(UUIDArray);
* System.out.println("networkLookupByUUID: " + testNetwork.getName());
*/
testNetwork = conn.networkLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e67");
System.out.println("networkLookupByUUIDString: " + testNetwork.getName());
testNetwork = conn.networkLookupByUUID(UUID.fromString("004b96e1-2d78-c30f-5aa5-f03c87d21e67"));
System.out.println("networkLookupByUUID (Java UUID): " + testNetwork.getName());
// Exercise the getter methods on the default network
System.out.println("virNetworkGetXMLDesc:" + testNetwork.getXMLDesc(0));
System.out.println("virNetworkGetAutostart:" + testNetwork.getAutostart());
System.out.println("virNetworkGetBridgeName:" + testNetwork.getBridgeName());
System.out.println("virNetworkGetName:" + testNetwork.getName());
System.out.println("virNetworkGetUUID:" + testNetwork.getUUID() + " ");
for (int c : testNetwork.getUUID())
System.out.print(String.format("%02x", c));
System.out.println();
System.out.println("virNetworkGetName:" + testNetwork.getUUIDString());
// Destroy and create the network
System.out.println("virNetworkDestroy:");
testNetwork.destroy();
System.out.println("virNetworkCreate:");
testNetwork.create();
} catch (LibvirtException e) {
System.out.println(FIXME);
System.out.println("exception caught:" + e);
System.out.println(e.getError());
throw e;
}
// This should raise an excpetion
try {
System.out.println("virNetworkCreate (should error):");
testNetwork.create();
} catch (LibvirtException e) {
System.out.println("exception caught:" + e);
System.out.println(e.getError());
}
// Domain stuff
try {
// Domain lookup
Domain testDomain = conn.domainLookupByID(1);
System.out.println("domainLookupByID: " + testDomain.getName());
testDomain = conn.domainLookupByName("test");
System.out.println("domainLookupByName: " + testDomain.getName());
testDomain = conn.domainLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e67");
System.out.println("domainLookupByUUIDString: " + testDomain.getName());
testDomain = conn.domainLookupByUUID(UUIDArray);
System.out.println("domainLookupByUUID: " + testDomain.getName());
testDomain = conn.domainLookupByUUID(UUID.fromString("004b96e1-2d78-c30f-5aa5-f03c87d21e67"));
System.out.println("domainLookupByUUID (JAVA UID): " + testDomain.getName());
// Exercise the getter methods on the default domain
System.out.println("virDomainGetXMLDesc:" + testDomain.getXMLDesc(0));
System.out.println("virDomainGetAutostart:" + testDomain.getAutostart());
System.out.println("virDomainGetConnect:" + testDomain.getConnect());
System.out.println("virDomainGetID:" + testDomain.getID());
System.out.println("virDomainGetInfo:" + testDomain.getInfo());
System.out.println("virDomainGetMaxMemory:" + testDomain.getMaxMemory());
// Should fail, test driver does not support it
try {
System.out.println("virDomainGetMaxVcpus:" + testDomain.getMaxVcpus());
System.out.println(FIXME);
} catch (LibvirtException e) {
System.err.println("Could not retrieve max vCPUs.");
e.printStackTrace();
}
System.out.println("virDomainGetName:" + testDomain.getName());
System.out.println("virDomainGetOSType:" + testDomain.getOSType());
System.out.println("virDomainGetSchedulerType:" + testDomain.getSchedulerType());
System.out.println("virDomainGetSchedulerParameters:" + testDomain.getSchedulerParameters());
// Iterate over the parameters the painful way
for (SchedParameter c : testDomain.getSchedulerParameters()) {
if (c instanceof SchedIntParameter) System.out.println("Int:" + ((SchedIntParameter) c).field + ":" + ((SchedIntParameter) c).value);
if (c instanceof SchedUintParameter) System.out.println("Uint:" + ((SchedUintParameter) c).field + ":" + ((SchedUintParameter) c).value);
if (c instanceof SchedLongParameter) System.out.println("Long:" + ((SchedLongParameter) c).field + ":" + ((SchedLongParameter) c).value);
if (c instanceof SchedUlongParameter) System.out.println("Ulong:" + ((SchedUlongParameter) c).field + ":" + ((SchedUlongParameter) c).value);
if (c instanceof SchedDoubleParameter) System.out.println("Double:" + ((SchedDoubleParameter) c).field + ":" + ((SchedDoubleParameter) c).value);
if (c instanceof SchedBooleanParameter) System.out.println("Boolean:" + ((SchedBooleanParameter) c).field + ":" + ((SchedBooleanParameter) c).value);
}
// Iterate over the parameters the easy way
for (SchedParameter c : testDomain.getSchedulerParameters()) {
System.out.println(c.getTypeAsString() + ":" + c.field + ":" + c.getValueAsString());
}
// test setting a scheduled parameter
SchedUintParameter[] pars = new SchedUintParameter[1];
pars[0] = new SchedUintParameter();
pars[0].field = "weight";
pars[0].value = 100;
testDomain.setSchedulerParameters(pars);
System.out.println("virDomainGetUUID:" + testDomain.getUUID());
for (int c : testDomain.getUUID())
System.out.print(String.format("%02x", c));
System.out.println();
System.out.println("virDomainGetUUIDString:" + testDomain.getUUIDString());
// Should fail, unimplemented in test driver
// System.out.println("virDomainGetVcpusInfo:" +
// testDomain.getVcpusInfo());
// Same as above
// System.out.println("virDomainGetVcpusCpuMap:" +
// testDomain.getVcpusCpuMaps());
// Should test pinVcpu, when we test with real xen
// Here
// Attach default network to test domain
// System.out.println("virDomainGetVcpusCpuMap:" +
// testDomain.getVcpusCpuMaps());
// Should test interfacestats and blockstats with real xen
// Close the connection
conn.close();
} catch (LibvirtException e) {
System.out.println(FIXME);
System.out.println("exception caught:" + e);
System.out.println(e.getError());
}
try {
// We should get an exception, not a crash
System.out.println(conn.getHostName());
} catch (LibvirtException e) {
System.out.println("exception caught:" + e);
System.out.println(e.getError());
}
System.out.println("Fini!");
}
}