package org.zstack.test.securitygroup;
import junit.framework.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.zstack.core.componentloader.ComponentLoader;
import org.zstack.core.db.DatabaseFacade;
import org.zstack.header.identity.SessionInventory;
import org.zstack.header.query.QueryOp;
import org.zstack.header.vm.APIQueryVmNicMsg;
import org.zstack.header.vm.APIQueryVmNicReply;
import org.zstack.header.vm.VmInstanceInventory;
import org.zstack.header.vm.VmNicInventory;
import org.zstack.network.securitygroup.*;
import org.zstack.test.Api;
import org.zstack.test.ApiSenderException;
import org.zstack.test.DBUtil;
import org.zstack.test.WebBeanConstructor;
import org.zstack.test.deployer.Deployer;
import org.zstack.test.search.QueryTestValidator;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
import java.util.List;
/**
* @author frank
*/
public class TestQueryVmNicInSecurityGroup {
static CLogger logger = Utils.getLogger(TestQueryVmNicInSecurityGroup.class);
static Deployer deployer;
static Api api;
static ComponentLoader loader;
static DatabaseFacade dbf;
@BeforeClass
public static void setUp() throws Exception {
DBUtil.reDeployDB();
WebBeanConstructor con = new WebBeanConstructor();
deployer = new Deployer("deployerXml/securityGroup/TestQueryVmNicInSecurityGroup.xml", con);
deployer.build();
api = deployer.getApi();
loader = deployer.getComponentLoader();
dbf = loader.getComponent(DatabaseFacade.class);
}
@Test
public void test() throws ApiSenderException, InterruptedException {
VmInstanceInventory vm = deployer.vms.get("TestVm");
VmNicInventory nic = vm.getVmNics().get(0);
SecurityGroupInventory sc = deployer.securityGroups.get("test");
api.addVmNicToSecurityGroup(sc.getUuid(), nic.getUuid());
SessionInventory session = api.loginByAccount("TestAccount", "password");
List<VmNicSecurityGroupRefInventory> invs = api.listVmNicSecurityGroupRef(null);
VmNicSecurityGroupRefInventory inv = invs.get(0);
QueryTestValidator.validateEQ(new APIQueryVmNicInSecurityGroupMsg(), api, APIQueryVmNicInSecurityGroupReply.class, inv, session);
QueryTestValidator.validateRandomEQConjunction(new APIQueryVmNicInSecurityGroupMsg(), api, APIQueryVmNicInSecurityGroupReply.class, inv, session, 3);
APIQuerySecurityGroupMsg msg = new APIQuerySecurityGroupMsg();
msg.addQueryCondition("vmNic.uuid", QueryOp.EQ, nic.getUuid());
APIQuerySecurityGroupReply reply = api.query(msg, APIQuerySecurityGroupReply.class);
Assert.assertEquals(1, reply.getInventories().size());
SecurityGroupInventory sg = reply.getInventories().get(0);
Assert.assertEquals(sc.getUuid(), sg.getUuid());
APIQueryVmNicMsg nicMsg = new APIQueryVmNicMsg();
nicMsg.addQueryCondition("securityGroup.name", QueryOp.EQ, sg.getName());
APIQueryVmNicReply nreply = api.query(nicMsg, APIQueryVmNicReply.class);
Assert.assertEquals(1, nreply.getInventories().size());
VmNicInventory rnic = nreply.getInventories().get(0);
Assert.assertEquals(nic.getUuid(), rnic.getUuid());
}
}