/*
* Copyright (c) 2016 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.server.upgrade.impl.callback;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.emc.storageos.db.client.URIUtil;
import com.emc.storageos.db.client.model.VirtualPool;
import com.emc.storageos.db.client.upgrade.BaseCustomMigrationCallback;
import com.emc.storageos.db.client.upgrade.callbacks.VirtualPoolPlacementPolicyMigration;
import com.emc.storageos.db.server.DbsvcTestBase;
import com.emc.storageos.db.server.upgrade.DbSimpleMigrationTestBase;
/**
* Test Class for VirtualPoolPlacementPolicyMigration migration callback.
*/
public class VirtualPoolPlacementPolicyMigrationTest extends DbSimpleMigrationTestBase {
private static final Logger log = LoggerFactory.getLogger(VirtualPoolPlacementPolicyMigrationTest.class);
private URI blockVpoolURI = null;
private URI fileVpoolURI = null;
@BeforeClass
public static void setup() throws IOException {
customMigrationCallbacks.put("3.1", new ArrayList<BaseCustomMigrationCallback>() {
private static final long serialVersionUID = 2L;
{
add(new VirtualPoolPlacementPolicyMigration());
}
});
DbsvcTestBase.setup();
}
@Override
protected String getSourceVersion() {
return "3.1";
}
@Override
protected String getTargetVersion() {
return "3.5";
}
@Override
protected void prepareData() throws Exception {
prepareVpoolPlacementPolicyData();
}
@Override
protected void verifyResults() throws Exception {
verifyVpoolPlacementPolicyResults();
}
/**
* Prepares the data for vPool placement policy tests.
*/
private void prepareVpoolPlacementPolicyData() throws Exception {
log.info("Preparing Virtual pools for VirtualPoolPlacementPolicyMigration");
VirtualPool blockVpool = new VirtualPool();
blockVpoolURI = URIUtil.createId(VirtualPool.class);
blockVpool.setId(blockVpoolURI);
blockVpool.setType(VirtualPool.Type.block.name());
_dbClient.createObject(blockVpool);
VirtualPool fileVpool = new VirtualPool();
fileVpoolURI = URIUtil.createId(VirtualPool.class);
fileVpool.setId(fileVpoolURI);
fileVpool.setType(VirtualPool.Type.file.name());
_dbClient.createObject(fileVpool);
}
/**
* Verifies the results for vPool placement policy migration.
*/
private void verifyVpoolPlacementPolicyResults() throws Exception {
log.info("Verifying updated virtual pool results for VirtualPoolPlacementPolicyMigration.");
VirtualPool blockVpool = _dbClient.queryObject(VirtualPool.class, blockVpoolURI);
VirtualPool fileVpool = _dbClient.queryObject(VirtualPool.class, fileVpoolURI);
Assert.assertNotNull("placementPolicy shouldn't be null", blockVpool.getPlacementPolicy());
Assert.assertNull("PlacementPolicy should be null", fileVpool.getPlacementPolicy());
}
}