// BETaaS - Building the Environment for the Things as a Service
//
// Component: TaaSVMManager
// Responsible: Atos
package eu.betaas.taas.taasvmmanager.opennebula.datamodel;
import static org.junit.Assert.*;
import java.io.ByteArrayOutputStream;
import java.io.StringReader;
import java.math.BigInteger;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.stream.StreamSource;
import org.junit.Test;
import eu.betaas.taas.taasvmmanager.occi.datamodel.Compute;
import eu.betaas.taas.taasvmmanager.occi.datamodel.ObjectFactory;
import eu.betaas.taas.taasvmmanager.occi.datamodel.User;
import eu.betaas.taas.taasvmmanager.occi.datamodel.User.Quota;
import eu.betaas.taas.taasvmmanager.occi.datamodel.User.Usage;
/**
*
* @author Francisco Javier Nieto De-Santos (francisco.nieto@atos.net)
* @author Sergio Garcia Villalonga (sergio.garciavillalonga@atos.net)
*/
public class UserTest {
private static final String storageXML =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
"<user href=\"http://www.path.to/user\">" +
"<id>34</id>" +
"<name>Name</name>" +
"<group>group</group>" +
"<quota>" +
"<cpu>8</cpu>" +
"<memory>4096</memory>" +
"<num_vms>10</num_vms>" +
"<storage>2</storage>" +
"</quota>" +
"<usage>" +
"<cpu>2</cpu>" +
"<memory>512</memory>" +
"<num_vms>2</num_vms>" +
"<storage>0</storage>" +
"</usage>" +
"</user>";
@Test
public void toXML() {
ObjectFactory factory = new ObjectFactory();
ByteArrayOutputStream marshalled = new ByteArrayOutputStream();
Quota quota = factory.createUserQuota();
quota.setCpu(8);
quota.setMemory(4096);
quota.setNumVms(10);
quota.setStorage(2);
Usage usage = factory.createUserUsage();
usage.setCpu(2);
usage.setMemory(512);
usage.setNumVms(2);
usage.setStorage(0);
User user = factory.createUser();
user.setHref("http://www.path.to/user");
user.setId(new BigInteger("34"));
user.setName("Name");
user.setGroup("group");
user.setQuota(quota);
user.setUsage(usage);
try {
JAXBContext jaxbContext = JAXBContext.newInstance(Compute.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.marshal(user, marshalled);
System.out.println(marshalled.toString());
assertEquals(storageXML, marshalled.toString());
} catch (JAXBException e) {
e.printStackTrace();
fail();
}
}
@Test
public void fromXML() {
User user;
try {
JAXBContext jaxbContext = JAXBContext.newInstance(Compute.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
user = (User)jaxbUnmarshaller.unmarshal(
new StreamSource( new StringReader( storageXML )));
System.out.println(user.toString());
assertEquals("http://www.path.to/user", user.getHref());
assertEquals("34", user.getId().toString());
assertEquals("Name", user.getName());
assertEquals(8, user.getQuota().getCpu());
assertEquals(4096, user.getQuota().getMemory());
assertEquals(10, user.getQuota().getNumVms());
assertEquals(2, user.getQuota().getStorage());
assertEquals(2, user.getUsage().getCpu());
assertEquals(512, user.getUsage().getMemory());
assertEquals(2, user.getUsage().getNumVms());
assertEquals(0, user.getUsage().getStorage());
} catch (JAXBException e) {
e.printStackTrace();
fail();
}
}
}