/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.sa.model;
import org.apache.log4j.Logger;
import org.junit.BeforeClass;
import com.emc.sa.model.dao.BourneDbClient;
import com.emc.sa.model.dao.ModelClient;
import com.emc.storageos.db.client.DbClient;
import com.emc.storageos.db.client.impl.DbClientContext;
import com.emc.storageos.db.client.impl.DbClientImpl;
import com.emc.storageos.db.client.impl.EncryptionProviderImpl;
import com.emc.storageos.db.common.VdcUtil;
public class DBClientTestBase {
private static final Logger _logger = Logger.getLogger(DBClientTestBase.class);
private static EncryptionProviderImpl ENCRYPTION_PROVIDER = new EncryptionProviderImpl();
protected static final String DEFAULT_TENANT = "defaultTenant";
private static ModelClient MODEL_CLIENT;
protected static synchronized ModelClient getModelClient() {
if (MODEL_CLIENT == null) {
MODEL_CLIENT = createModelClient();
}
return MODEL_CLIENT;
}
@BeforeClass
public static void cleanupDb() {
_logger.info("DBClientTestBase.cleanupDb");
ModelClient modelClient = getModelClient();
modelClient.delete(modelClient.approvalRequests().findAll(DEFAULT_TENANT));
modelClient.delete(modelClient.catalogCategories().findAll(DEFAULT_TENANT));
modelClient.delete(modelClient.catalogServices().findAll());
modelClient.delete(modelClient.catalogServiceFields().findAll());
modelClient.delete(modelClient.datacenters().findAll());
modelClient.delete(modelClient.esxHosts().findAll(DEFAULT_TENANT));
modelClient.delete(modelClient.executionLogs().findAll());
modelClient.delete(modelClient.executionStates().findAll());
modelClient.delete(modelClient.executionTaskLogs().findAll());
modelClient.delete(modelClient.orders().findAll(DEFAULT_TENANT));
modelClient.delete(modelClient.vcenters().findAll(DEFAULT_TENANT));
modelClient.delete(modelClient.virtualMachines().findAll());
}
/**
* Create DbClient to embedded DB
*
* @return
*/
protected static DbClient createDbClient() {
ENCRYPTION_PROVIDER.setCoordinator(ModelTestSuite.getCoordinator());
DbClientContext localCtx = new DbClientContext();
localCtx.setClusterName("Test");
localCtx.setKeyspaceName("Test");
DbClientImpl dbClient = new DbClientImpl();
dbClient.setCoordinatorClient(ModelTestSuite.getCoordinator());
dbClient.setEncryptionProvider(ENCRYPTION_PROVIDER);
dbClient.setBypassMigrationLock(true);
dbClient.setDbVersionInfo(ModelTestSuite.getDbVersionInfo());
dbClient.setLocalContext(localCtx);
VdcUtil.setDbClient(dbClient);
dbClient.start();
return dbClient;
}
protected static ModelClient createModelClient() {
BourneDbClient bourneDbClient = new BourneDbClient();
bourneDbClient.setDbClient(createDbClient());
bourneDbClient.init();
ModelClient modelClient = new ModelClient(bourneDbClient);
return modelClient;
}
}