/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.common;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.emc.storageos.db.client.DbClient;
import com.emc.storageos.db.client.URIUtil;
import com.emc.storageos.db.client.model.VdcVersion;
import com.emc.storageos.db.client.model.VirtualDataCenter;
public class VdcUtilTest {
private VdcVersion VDC1_GEO_VERSION = new VdcVersion();
private VdcVersion VDC2_GEO_VERSION = new VdcVersion();
private VdcVersion VDC3_GEO_VERSION = new VdcVersion();
private static final URI VDC1_ID = URIUtil.createId(VdcVersion.class);
private static final URI VDC2_ID = URIUtil.createId(VdcVersion.class);
private static final URI VDC3_ID = URIUtil.createId(VdcVersion.class);
private static final String VERSION_2_2 = "2.2";
private static final String VERSION_2_5 = "2.5";
private static final String VERSION_2_6 = "2.6";
private static final Logger log = LoggerFactory.getLogger(VdcUtilTest.class);
@Before
public void setup() {
log.error("{} 1 {} 2 {}",new Object[] {"1","2","3"}, new RuntimeException());
VDC1_GEO_VERSION.setVdcId(VDC1_ID);
VDC1_GEO_VERSION.setVersion(VERSION_2_2);
VDC2_GEO_VERSION.setVdcId(VDC2_ID);
VDC2_GEO_VERSION.setVersion(VERSION_2_5);
VDC3_GEO_VERSION.setVdcId(VDC3_ID);
VDC3_GEO_VERSION.setVersion(VERSION_2_6);
}
@Test
public void shouldReturnDefaultVersionIfNoGeoVersion() {
DbClient dbClientMock = EasyMock.createMock(DbClient.class);
EasyMock.expect(dbClientMock.queryByType(VdcVersion.class, true)).andReturn(new ArrayList<URI>());
EasyMock.expect(dbClientMock.queryObject(VdcVersion.class, new ArrayList<URI>())).andReturn(new ArrayList<VdcVersion>());
EasyMock.expect(dbClientMock.queryByType(VirtualDataCenter.class, true)).andReturn(new ArrayList<URI>());
EasyMock.replay(dbClientMock);
VdcUtil.setDbClient(dbClientMock);
String minialVdcVersion = VdcUtil.getMinimalVdcVersion();
String expectedVdcVersion = DbConfigConstants.DEFAULT_VDC_DB_VERSION;
Assert.assertEquals(expectedVdcVersion, minialVdcVersion);
}
@Test
public void shouldReturnDefaultVersionIfMissVdcVersion() {
List<VdcVersion> geoVersions = new ArrayList<VdcVersion>();
List<URI> vdcIds = new ArrayList<URI>();
geoVersions.add(VDC2_GEO_VERSION);
vdcIds.add(VDC1_ID);
vdcIds.add(VDC2_ID);
DbClient dbClientMock = EasyMock.createMock(DbClient.class);
EasyMock.expect(dbClientMock.queryByType(VdcVersion.class, true)).andReturn(new ArrayList<URI>());
EasyMock.expect(dbClientMock.queryObject(VdcVersion.class, new ArrayList<URI>())).andReturn(geoVersions);
EasyMock.expect(dbClientMock.queryByType(VirtualDataCenter.class, true)).andReturn(vdcIds);
EasyMock.replay(dbClientMock);
VdcUtil.setDbClient(dbClientMock);
String minialVdcVersion = VdcUtil.getMinimalVdcVersion();
String expectedVdcVersion = DbConfigConstants.DEFAULT_VDC_DB_VERSION;
Assert.assertEquals(expectedVdcVersion, minialVdcVersion);
}
@Test
public void shouldReturnMinimalVersionInVdcVersions() {
List<VdcVersion> geoVersions = new ArrayList<VdcVersion>();
List<URI> vdcIds = new ArrayList<URI>();
geoVersions.add(VDC1_GEO_VERSION);
geoVersions.add(VDC2_GEO_VERSION);
geoVersions.add(VDC3_GEO_VERSION);
vdcIds.add(VDC1_ID);
vdcIds.add(VDC2_ID);
vdcIds.add(VDC3_ID);
DbClient dbClientMock = EasyMock.createMock(DbClient.class);
EasyMock.expect(dbClientMock.queryByType(VdcVersion.class, true)).andReturn(new ArrayList<URI>());
EasyMock.expect(dbClientMock.queryObject(VdcVersion.class, new ArrayList<URI>())).andReturn(geoVersions);
EasyMock.expect(dbClientMock.queryByType(VirtualDataCenter.class, true)).andReturn(vdcIds);
EasyMock.replay(dbClientMock);
VdcUtil.setDbClient(dbClientMock);
String minialVdcVersion = VdcUtil.getMinimalVdcVersion();
String expectedVdcVersion = DbConfigConstants.DEFAULT_VDC_DB_VERSION;
Assert.assertEquals(expectedVdcVersion, minialVdcVersion);
}
}