blob: 8e61af40f26dd1a60977aafecf2f6dcad83393e1 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.eagle.metric;
import com.google.inject.Inject;
import org.apache.eagle.app.resource.ApplicationResource;
import org.apache.eagle.app.service.ApplicationOperations;
import org.apache.eagle.app.test.ApplicationTestBase;
import org.apache.eagle.metadata.model.ApplicationEntity;
import org.apache.eagle.metadata.model.SiteEntity;
import org.apache.eagle.metadata.resource.SiteResource;
import org.apache.eagle.metadata.service.ApplicationStatusUpdateService;
import org.junit.Assert;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
/**
* @Since 2/20/17.
*/
public class HdfsMetricWebApplicationProviderTest extends ApplicationTestBase {
@Inject
private SiteResource siteResource;
@Inject
private ApplicationResource applicationResource;
@Inject
private ApplicationStatusUpdateService statusUpdateService;
private void installDependencies(){
ApplicationOperations.InstallOperation installDependency1 = new ApplicationOperations.InstallOperation("test_site", "TOPOLOGY_HEALTH_CHECK_APP", ApplicationEntity.Mode.LOCAL);
applicationResource.installApplication(installDependency1);
ApplicationOperations.InstallOperation installDependency2 = new ApplicationOperations.InstallOperation("test_site", "HADOOP_METRIC_MONITOR", ApplicationEntity.Mode.LOCAL);
applicationResource.installApplication(installDependency2);
}
/**
* register site
* install app
* start app
* stop app
* uninstall app
*
* @throws InterruptedException
*/
@Test
public void testApplicationLifecycle() throws InterruptedException {
// Create local site
SiteEntity siteEntity = new SiteEntity();
siteEntity.setSiteId("test_site");
siteEntity.setSiteName("Test Site");
siteEntity.setDescription("Test Site for HDFS_METRIC_WEB_APP");
siteResource.createSite(siteEntity);
Assert.assertNotNull(siteEntity.getUuid());
ApplicationOperations.InstallOperation installOperation = new ApplicationOperations.InstallOperation("test_site", "HDFS_METRIC_WEB_APP", ApplicationEntity.Mode.LOCAL);
installOperation.setConfiguration(getConf());
installDependencies();
// Install application
ApplicationEntity applicationEntity = applicationResource.installApplication(installOperation).getData();
//Todo: comment these for now, because they haven't been implemented
// Start application
// applicationResource.startApplication(new ApplicationOperations.StartOperation(applicationEntity.getUuid()));
// // Stop application
// applicationResource.stopApplication(new ApplicationOperations.StopOperation(applicationEntity.getUuid()));
//Uninstall application
awaitApplicationStop(applicationEntity);
applicationResource.uninstallApplication(new ApplicationOperations.UninstallOperation(applicationEntity.getUuid()));
try {
applicationResource.getApplicationEntityByUUID(applicationEntity.getUuid());
Assert.fail("Application instance (UUID: " + applicationEntity.getUuid() + ") should have been uninstalled");
} catch (Exception ex) {
// Expected exception
}
}
private Map<String, Object> getConf() {
Map<String, Object> conf = new HashMap<>();
conf.put("service.host", "localhost");
conf.put("service.port", "9090");
return conf;
}
}