You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by jm...@apache.org on 2014/05/08 23:08:00 UTC
svn commit: r1593419 - in /incubator/slider/trunk/slider-core/src:
main/java/org/apache/slider/providers/agent/
test/groovy/org/apache/slider/server/appmaster/web/rest/
test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/
test/java/org/ap...
Author: jmaron
Date: Thu May 8 21:08:00 2014
New Revision: 1593419
URL: http://svn.apache.org/r1593419
Log:
slider-26 - convenience method for publishing configuration
Added:
incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/
incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/
incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy
- copied, changed from r1592735, incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/registry/curator/TestRegistryRestResources.groovy
incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/
incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java
incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestSliderProviderFactory.java
Modified:
incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/providers/agent/AgentProviderServiceTest.java
Modified: incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
URL: http://svn.apache.org/viewvc/incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java?rev=1593419&r1=1593418&r2=1593419&view=diff
==============================================================================
--- incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java (original)
+++ incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java Thu May 8 21:08:00 2014
@@ -38,6 +38,7 @@ import org.apache.slider.core.exceptions
import org.apache.slider.core.exceptions.SliderException;
import org.apache.slider.core.launch.CommandLineBuilder;
import org.apache.slider.core.launch.ContainerLauncher;
+import org.apache.slider.core.registry.docstore.PublishedConfiguration;
import org.apache.slider.core.registry.info.RegisteredEndpoint;
import org.apache.slider.core.registry.info.ServiceInstanceData;
import org.apache.slider.providers.AbstractProviderService;
@@ -225,6 +226,15 @@ public class AgentProviderService extend
return metainfo;
}
+ protected void publishComponentConfiguration(String name, String description,
+ Iterable<Map.Entry<String, String>> entries) {
+ PublishedConfiguration pubconf = new PublishedConfiguration();
+ pubconf.description = description;
+ pubconf.putValues(entries);
+ log.info("publishing {}", pubconf);
+ getStateAccessor().getPublishedConfigurations().put(name, pubconf);
+ }
+
protected void setRoleHostMapping(String role, String host) {
List<String> hosts = roleHostMapping.get(role);
if (hosts == null) {
Copied: incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy (from r1592735, incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/registry/curator/TestRegistryRestResources.groovy)
URL: http://svn.apache.org/viewvc/incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy?p2=incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy&p1=incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/registry/curator/TestRegistryRestResources.groovy&r1=1592735&r2=1593419&rev=1593419&view=diff
==============================================================================
--- incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/registry/curator/TestRegistryRestResources.groovy (original)
+++ incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy Thu May 8 21:08:00 2014
@@ -16,55 +16,38 @@
* limitations under the License.
*/
-package org.apache.slider.registry.curator
+package org.apache.slider.server.appmaster.web.rest.publisher
import com.sun.jersey.api.client.Client
import com.sun.jersey.api.client.ClientResponse
-import com.sun.jersey.api.client.UniformInterfaceException
import com.sun.jersey.api.client.WebResource
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
-import org.apache.curator.x.discovery.ServiceType
-import org.apache.hadoop.security.UserGroupInformation
import org.apache.slider.api.StatusKeys
import org.apache.slider.client.SliderClient
-import org.apache.slider.common.SliderKeys
import org.apache.slider.core.main.ServiceLauncher
-import org.apache.slider.core.registry.info.ServiceInstanceData
+import org.apache.slider.core.registry.docstore.PublishedConfiguration
import org.apache.slider.providers.agent.AgentTestBase
import org.apache.slider.server.appmaster.web.rest.RestPaths
-import org.apache.slider.server.services.curator.CuratorServiceInstance
-import org.apache.slider.server.services.curator.CuratorServiceInstances
-import org.apache.slider.server.services.curator.RegistryNaming
import org.junit.Test
import javax.ws.rs.core.MediaType
import static org.apache.slider.common.params.Arguments.ARG_OPTION
+import static org.apache.slider.common.params.Arguments.ARG_PROVIDER
import static org.apache.slider.providers.agent.AgentKeys.*
import static org.apache.slider.providers.agent.AgentTestUtils.createTestClient
@CompileStatic
@Slf4j
-class TestRegistryRestResources extends AgentTestBase {
+class TestPublisherRestResources extends AgentTestBase {
- public static final String REGISTRY_URI = RestPaths.SLIDER_PATH_REGISTRY;
+ public static final String PUBLISHER_URI = RestPaths.SLIDER_PATH_PUBLISHER;
public static final String WADL = "vnd.sun.wadl+xml"
-
- private String id(String instanceName) {
-
- RegistryNaming.createUniqueInstanceId(
- instanceName,
- UserGroupInformation.getCurrentUser().getUserName(),
- SliderKeys.APP_TYPE,
- 1);
- }
-
-
@Test
public void testRestURIs() throws Throwable {
- def clustername = "test_registryws"
+ def clustername = "test_publisherws"
createMiniCluster(
clustername,
configuration,
@@ -87,10 +70,11 @@ class TestRegistryRestResources extends
ServiceLauncher<SliderClient> launcher = buildAgentCluster(clustername,
roles,
[
+ ARG_PROVIDER, "org.apache.slider.server.appmaster.web.rest.publisher.TestSliderProviderFactory",
ARG_OPTION, PACKAGE_PATH, slider_core.absolutePath,
ARG_OPTION, APP_DEF, "file://" + app_def_path.absolutePath,
ARG_OPTION, AGENT_CONF, "file://" + agt_conf_path.absolutePath,
- ARG_OPTION, AGENT_VERSION, "file://" + agt_ver_path.absolutePath,
+ ARG_OPTION, AGENT_VERSION, "file://" + agt_ver_path.absolutePath
],
true, true,
true)
@@ -98,17 +82,17 @@ class TestRegistryRestResources extends
def report = waitForClusterLive(sliderClient)
def trackingUrl = report.trackingUrl
log.info("tracking URL is $trackingUrl")
- def registry_url = appendToURL(trackingUrl, REGISTRY_URI)
+ def publisher_url = appendToURL(trackingUrl, PUBLISHER_URI)
def status = dumpClusterStatus(sliderClient, "agent AM")
def liveURL = status.getInfo(StatusKeys.INFO_AM_WEB_URL)
if (liveURL) {
- registry_url = appendToURL(liveURL, REGISTRY_URI)
+ publisher_url = appendToURL(liveURL, PUBLISHER_URI)
}
- log.info("Registry is $registry_url")
+ log.info("Publisher is $publisher_url")
log.info("stacks is ${liveURL}stacks")
log.info("conf is ${liveURL}conf")
@@ -116,80 +100,24 @@ class TestRegistryRestResources extends
//WS get
Client client = createTestClient();
- // test the exposed WADL link
- WebResource webResource = client.resource(registry_url);
- ClientResponse response = webResource.type(MediaType.APPLICATION_XML)
- .get(ClientResponse.class);
- assert response.status == 200
- assert response.type == (new MediaType("application", WADL))
-
// test the available GET URIs
- webResource = client.resource(
- appendToURL(registry_url, RestPaths.REGISTRY_SERVICE));
-
- response = webResource.type(MediaType.APPLICATION_JSON)
- .get(ClientResponse.class);
- def responseStr = response.getEntity(String.class)
- log.info("response is " + responseStr)
-
- "{\"names\":[\"${SliderKeys.APP_TYPE}\"]}".equals(responseStr)
-
- webResource = client.resource(
- appendToURL(registry_url,
- "${RestPaths.REGISTRY_SERVICE}/${SliderKeys.APP_TYPE}"));
- CuratorServiceInstances<ServiceInstanceData> services = webResource.type(MediaType.APPLICATION_JSON)
- .get(CuratorServiceInstances.class);
- assert services.services.size() == 1
- CuratorServiceInstance<ServiceInstanceData> service = services.services.get(0)
- validateService(service)
-
- webResource = client.resource(
- appendToURL(registry_url,
- "${RestPaths.REGISTRY_SERVICE}/${SliderKeys.APP_TYPE}/"+id("test_registryws")));
- service = webResource.type(MediaType.APPLICATION_JSON)
- .get(CuratorServiceInstance.class);
- validateService(service)
-
- webResource = client.resource(
- appendToURL(
- registry_url, "${RestPaths.REGISTRY_ANYSERVICE}/${SliderKeys.APP_TYPE}"));
- service = webResource.type(MediaType.APPLICATION_JSON)
- .get(CuratorServiceInstance.class);
- validateService(service)
+ WebResource webResource = client.resource(publisher_url + "/dummy-site");
+
+ PublishedConfiguration config = webResource.type(MediaType.APPLICATION_JSON)
+ .get(PublishedConfiguration.class);
+ assert config != null
+ Map<String,String> entries = config.entries
+ log.info("entries are {}", entries)
+ assert entries.get("prop1").equals("val1")
+ assert entries.get("prop2").equals("val2")
// some negative tests...
- webResource = client.resource(
- appendToURL(registry_url, "${RestPaths.REGISTRY_SERVICE}/dummy"))
- services = webResource.type(MediaType.APPLICATION_JSON)
- .get(CuratorServiceInstances.class);
- assert services.services.size() == 0
-
- try {
- webResource = client.resource(appendToURL(registry_url,
- "${RestPaths.REGISTRY_SERVICE}/${SliderKeys.APP_TYPE}/test_registryws-99"));
-
- service = webResource.type(MediaType.APPLICATION_JSON)
- .get(CuratorServiceInstance.class);
- fail("should throw an exception for a 404 response....")
- } catch (UniformInterfaceException e) {
- assert e.response.getStatus() == 404
- }
+ webResource = client.resource(appendToURL(publisher_url,
+ "/foobar-site"));
- try {
- webResource = client.resource(
- appendToURL(registry_url, "${RestPaths.REGISTRY_ANYSERVICE}/dummy"));
-
- service = webResource.type(MediaType.APPLICATION_JSON)
- .get(CuratorServiceInstance.class);
- fail("should throw an exception for a 404 response....")
- } catch (UniformInterfaceException e) {
- assert e.response.getStatus() == 404
- }
+ ClientResponse response = webResource.type(MediaType.APPLICATION_JSON)
+ .get(ClientResponse.class);
+ assert response.getStatus() == 404
}
- private void validateService(CuratorServiceInstance service) {
- assert service.name.equals(SliderKeys.APP_TYPE)
- assert service.serviceType == ServiceType.DYNAMIC
- assert service.id.contains("test_registryws")
- }
}
Modified: incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/providers/agent/AgentProviderServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/providers/agent/AgentProviderServiceTest.java?rev=1593419&r1=1593418&r2=1593419&view=diff
==============================================================================
--- incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/providers/agent/AgentProviderServiceTest.java (original)
+++ incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/providers/agent/AgentProviderServiceTest.java Thu May 8 21:08:00 2014
@@ -35,6 +35,7 @@ import org.apache.slider.core.conf.ConfT
import org.apache.slider.core.conf.ConfTreeOperations;
import org.apache.slider.core.conf.MapOperations;
import org.apache.slider.core.exceptions.SliderException;
+import org.apache.slider.core.launch.ContainerLauncher;
import org.apache.slider.server.appmaster.model.mock.MockContainerId;
import org.apache.slider.server.appmaster.model.mock.MockFileSystem;
import org.apache.slider.server.appmaster.model.mock.MockNodeId;
@@ -127,7 +128,7 @@ public class AgentProviderServiceTest {
replay(access, ctx, container, sliderFileSystem);
try {
- mockAps.buildContainerLaunchContext(null,
+ mockAps.buildContainerLaunchContext(createNiceMock(ContainerLauncher.class),
instanceDefinition,
container,
role,
Added: incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java
URL: http://svn.apache.org/viewvc/incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java?rev=1593419&view=auto
==============================================================================
--- incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java (added)
+++ incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java Thu May 8 21:08:00 2014
@@ -0,0 +1,53 @@
+/*
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.slider.server.appmaster.web.rest.publisher;
+
+import org.apache.slider.providers.agent.AgentProviderService;
+import org.apache.slider.server.appmaster.state.StateAccessForProviders;
+import org.apache.slider.server.services.registry.RegistryViewForProviders;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ */
+public class TestAgentProviderService extends AgentProviderService{
+ protected static final Logger log =
+ LoggerFactory.getLogger(TestAgentProviderService.class);
+
+ public TestAgentProviderService() {
+ super();
+ log.info("TestAgentProviderService created");
+ }
+
+ @Override
+ public void bind(StateAccessForProviders stateAccessor,
+ RegistryViewForProviders registry) {
+ super.bind(stateAccessor, registry);
+ Map<String,String> dummyProps = new HashMap<>();
+ dummyProps.put("prop1", "val1");
+ dummyProps.put("prop2", "val2");
+ log.info("publishing dummy-site.xml with values {}", dummyProps);
+ publishComponentConfiguration("dummy-site", "dummy configuration",
+ dummyProps.entrySet());
+
+ }
+
+}
Added: incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestSliderProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestSliderProviderFactory.java?rev=1593419&view=auto
==============================================================================
--- incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestSliderProviderFactory.java (added)
+++ incubator/slider/trunk/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestSliderProviderFactory.java Thu May 8 21:08:00 2014
@@ -0,0 +1,40 @@
+/*
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.slider.server.appmaster.web.rest.publisher;
+
+import org.apache.slider.providers.ProviderService;
+import org.apache.slider.providers.agent.AgentProviderFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ */
+public class TestSliderProviderFactory extends AgentProviderFactory{
+ protected static final Logger log =
+ LoggerFactory.getLogger(TestSliderProviderFactory.class);
+
+ public TestSliderProviderFactory() {
+ log.info("Created TestSliderProviderFactory");
+ }
+
+ @Override
+ public ProviderService createServerProvider() {
+ log.info("Creating TestAgentProviderService");
+ return new TestAgentProviderService();
+ }
+}