package com.emc.storageos.db.server.upgrade.impl.callback;
import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.junit.Assert;
import org.junit.BeforeClass;
import com.emc.storageos.db.client.DbClient;
import com.emc.storageos.db.client.URIUtil;
import com.emc.storageos.db.client.model.ComputeImage;
import com.emc.storageos.db.client.upgrade.BaseCustomMigrationCallback;
import com.emc.storageos.db.client.upgrade.callbacks.ComputeImageMigration;
import com.emc.storageos.db.server.DbsvcTestBase;
import com.emc.storageos.db.server.upgrade.DbSimpleMigrationTestBase;
public class ComputeImageMigrationTest extends DbSimpleMigrationTestBase {
private static final String urlWithPwd = "ftp://username:samplepwd@somehost.test.com/somefile.iso";
private static final String urlWithoutPwd = "ftp://somehost.test.com/somefile.iso";
private static final String IMAGE_NAME_WITH_PWD = "imageWithPwd";
private static final String IMAGE_NAME_WITHOUT_PWD = "imageWithoutPwd";
@BeforeClass
public static void setup() throws IOException {
customMigrationCallbacks.put("2.4", new ArrayList<BaseCustomMigrationCallback>() {
private static final long serialVersionUID = 1L;
{
// Add your implementation of migration callback below.
add(new ComputeImageMigration());
}
});
DbsvcTestBase.setup();
}
/*
* (non-Javadoc)
*
* @see com.emc.storageos.db.server.upgrade.DbSimpleMigrationTestBase#getSourceVersion()
*/
@Override
protected String getSourceVersion() {
return "2.4";
}
/*
* (non-Javadoc)
*
* @see com.emc.storageos.db.server.upgrade.DbSimpleMigrationTestBase#getTargetVersion()
*/
@Override
protected String getTargetVersion() {
return "2.4.1";
}
@Override
protected void prepareData() throws Exception {
DbClient dbClient = getDbClient();
ComputeImage image1 = new ComputeImage();
image1.setId(URIUtil.createId(ComputeImage.class));
image1.setLabel(IMAGE_NAME_WITH_PWD);
image1.setImageUrl(urlWithPwd);
dbClient.createObject(image1);
ComputeImage image2 = new ComputeImage();
image2.setId(URIUtil.createId(ComputeImage.class));
image2.setLabel(IMAGE_NAME_WITHOUT_PWD);
image2.setImageUrl(urlWithoutPwd);
dbClient.createObject(image2);
}
@Override
protected void verifyResults() throws Exception {
DbClient dbClient = getDbClient();
List<URI> imageUris = dbClient.queryByType(ComputeImage.class, true);
Iterator<ComputeImage> imageItr = dbClient.queryIterativeObjects(ComputeImage.class, imageUris);
while(imageItr.hasNext())
{
ComputeImage image = imageItr.next();
if(image.getLabel().equalsIgnoreCase(IMAGE_NAME_WITH_PWD)) {
Assert.assertNotEquals(image.getImageUrl(), urlWithPwd);
}else if(image.getLabel().equalsIgnoreCase(IMAGE_NAME_WITHOUT_PWD)) {
Assert.assertEquals(image.getImageUrl(), urlWithoutPwd);
}
}
}
}