/*
* Copyright (c) 2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.server.util;
import java.net.URI;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import com.emc.storageos.db.client.DbClient;
import com.emc.storageos.db.client.URIUtil;
import com.emc.storageos.db.client.model.FileShare;
import com.emc.storageos.db.client.model.Project;
import com.emc.storageos.db.client.model.VirtualArray;
import com.emc.storageos.db.client.model.VirtualDataCenter;
import com.emc.storageos.db.common.VdcUtil;
import com.emc.storageos.db.server.DbsvcTestBase;
/**
* @author cgarber
*
*/
public class VdcUtilTest extends DbsvcTestBase {
@Test
public void testVdcUtil() {
VirtualDataCenter localVdc = null;
DbClient dbClient = getDbClient();
Iterator<URI> vdcs = dbClient.queryByType(VirtualDataCenter.class, true).iterator();
if (vdcs.hasNext()) {
localVdc = dbClient.queryObject(VirtualDataCenter.class, vdcs.next());
} else {
Assert.fail("no VDC found in database");
}
if (vdcs.hasNext()) {
Assert.fail("multiple VDC's found in database after initial bootstap");
}
Assert.assertEquals(localVdc.getId(), VdcUtil.getLocalVdc().getId());
Assert.assertEquals(localVdc.getShortId(), VdcUtil.getLocalShortVdcId());
Assert.assertEquals(localVdc.getId(), VdcUtil.getVdcUrn(localVdc.getShortId()));
VirtualDataCenter remoteVdc1 = new VirtualDataCenter();
remoteVdc1.setId(URIUtil.createId(VirtualDataCenter.class));
remoteVdc1.setLocal(Boolean.FALSE);
remoteVdc1.setShortId("vdc2");
VirtualDataCenter remoteVdc2 = new VirtualDataCenter();
remoteVdc2.setId(URIUtil.createId(VirtualDataCenter.class));
remoteVdc2.setLocal(Boolean.FALSE);
remoteVdc2.setShortId("vdc3");
List<VirtualDataCenter> vdcList = new ArrayList<VirtualDataCenter>();
vdcList.add(remoteVdc1);
vdcList.add(remoteVdc2);
dbClient.createObject(vdcList);
VdcUtil.invalidateVdcUrnCache();
Assert.assertEquals(localVdc.getId(), VdcUtil.getLocalVdc().getId());
Assert.assertEquals(localVdc.getShortId(), VdcUtil.getLocalShortVdcId());
Assert.assertEquals(localVdc.getId(), VdcUtil.getVdcUrn(localVdc.getShortId()));
Assert.assertEquals(remoteVdc1.getId(), VdcUtil.getVdcUrn(remoteVdc1.getShortId()));
Assert.assertEquals(remoteVdc2.getId(), VdcUtil.getVdcUrn(remoteVdc2.getShortId()));
VirtualArray va = new VirtualArray();
va.setId(URIUtil.createId(VirtualArray.class));
Assert.assertFalse(VdcUtil.isRemoteObject(va));
vdcList.clear();
remoteVdc1.setLocal(Boolean.TRUE);
localVdc.setLocal(Boolean.FALSE);
vdcList.add(remoteVdc1);
vdcList.add(localVdc);
dbClient.updateAndReindexObject(vdcList);
VdcUtil.invalidateVdcUrnCache();
Assert.assertTrue(VdcUtil.isRemoteObject(va));
URI globalId = URIUtil.createId(Project.class);
URI localId = URIUtil.createId(FileShare.class);
Assert.assertTrue(VdcUtil.getVdcId(Project.class, globalId).toString().equals(VdcUtil.getLocalShortVdcId()));
Assert.assertTrue(VdcUtil.getVdcId(FileShare.class, localId).toString().equals(VdcUtil.getLocalShortVdcId()));
}
}