package com.sequenceiq.it.cloudbreak; import javax.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; import org.springframework.util.StringUtils; import org.testng.ITestContext; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Optional; import org.testng.annotations.Parameters; import com.sequenceiq.it.IntegrationTestContext; import com.sequenceiq.it.SuiteContext; import com.sequenceiq.it.config.IntegrationTestConfiguration; import com.sequenceiq.periscope.client.AutoscaleClient; @ContextConfiguration(classes = IntegrationTestConfiguration.class, initializers = ConfigFileApplicationContextInitializer.class) public class AutoscaleTestSuiteInitializer extends AbstractTestNGSpringContextTests { private static final Logger LOG = LoggerFactory.getLogger(CloudbreakTestSuiteInitializer.class); @Value("${integrationtest.periscope.server}") private String defaultPeriscopeServer; @Value("${server.contextPath:/as}") private String autoscaleRootContextPath; @Inject private SuiteContext suiteContext; private IntegrationTestContext itContext; @BeforeSuite(dependsOnGroups = "suiteInit") public void initContext(ITestContext testContext) throws Exception { springTestContextBeforeTestClass(); springTestContextPrepareTestInstance(); itContext = suiteContext.getItContext(testContext.getSuite().getName()); } @BeforeSuite(dependsOnMethods = "initContext") @Parameters({"periscopeServer"}) public void initCloudbreakSuite(@Optional("") String periscopeServer) { periscopeServer = StringUtils.hasLength(periscopeServer) ? periscopeServer : defaultPeriscopeServer; String identity = itContext.getContextParam(IntegrationTestContext.IDENTITY_URL); String user = itContext.getContextParam(IntegrationTestContext.AUTH_USER); String password = itContext.getContextParam(IntegrationTestContext.AUTH_PASSWORD); AutoscaleClient autoscaleClient = new AutoscaleClient.AutoscaleClientBuilder(periscopeServer + autoscaleRootContextPath, identity, "cloudbreak_shell").withCertificateValidation(false).withDebug(true).withCredential(user, password).build(); itContext.putContextParam(CloudbreakITContextConstants.AUTOSCALE_CLIENT, autoscaleClient); } }