| /* |
| * 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.brooklyn.camp.brooklyn; |
| |
| import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; |
| import org.apache.brooklyn.api.policy.Policy; |
| import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator; |
| import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator.Factory; |
| import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator.InstantiatorFromKey; |
| import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext; |
| import org.testng.Assert; |
| import org.testng.annotations.Test; |
| import org.apache.brooklyn.policy.ha.ServiceRestarter; |
| import org.apache.brooklyn.util.collections.MutableMap; |
| import org.apache.brooklyn.util.javalang.JavaClassNames; |
| import org.apache.brooklyn.util.time.Duration; |
| |
| public class BrooklynYamlTypeInstantiatorTest extends AbstractYamlTest { |
| |
| protected BrooklynClassLoadingContext loader() { |
| return JavaBrooklynClassLoadingContext.create(mgmt()); |
| } |
| |
| @Test |
| public void testLoadPolicySpecProgrammatically() { |
| Factory loader = new BrooklynYamlTypeInstantiator.Factory(loader(), "test:"+JavaClassNames.niceClassAndMethod()); |
| InstantiatorFromKey decoL = loader.from(MutableMap.of("some_type", ServiceRestarter.class.getName())).prefix("some"); |
| |
| Assert.assertTrue(decoL.getConfigMap().isEmpty()); |
| Assert.assertEquals(decoL.getTypeName().get(), ServiceRestarter.class.getName()); |
| Assert.assertEquals(decoL.getType(), ServiceRestarter.class); |
| |
| Object sl1 = decoL.newInstance(); |
| Assert.assertTrue(sl1 instanceof ServiceRestarter); |
| |
| Policy sl2 = decoL.newInstance(Policy.class); |
| Assert.assertTrue(sl2 instanceof ServiceRestarter); |
| } |
| |
| @Test |
| public void testLoadPolicySpecWithBrooklynConfig() { |
| Factory loader = new BrooklynYamlTypeInstantiator.Factory(loader(), "test:"+JavaClassNames.niceClassAndMethod()); |
| InstantiatorFromKey decoL = loader.from(MutableMap.of("some_type", ServiceRestarter.class.getName(), |
| "brooklyn.config", MutableMap.of("failOnRecurringFailuresInThisDuration", Duration.seconds(42)))).prefix("some"); |
| Policy sl2 = decoL.newInstance(Policy.class); |
| Assert.assertEquals(sl2.getConfig(ServiceRestarter.FAIL_ON_RECURRING_FAILURES_IN_THIS_DURATION).toSeconds(), 42); |
| } |
| |
| @Test(groups = "WIP") |
| public void testLoadPolicySpecWithFlag() { |
| Factory loader = new BrooklynYamlTypeInstantiator.Factory(loader(), "test:"+JavaClassNames.niceClassAndMethod()); |
| InstantiatorFromKey decoL = loader.from(MutableMap.of("some_type", ServiceRestarter.class.getName(), |
| "failOnRecurringFailuresInThisDuration", Duration.seconds(42))).prefix("some"); |
| Policy sl2 = decoL.newInstance(Policy.class); |
| Assert.assertEquals(sl2.getConfig(ServiceRestarter.FAIL_ON_RECURRING_FAILURES_IN_THIS_DURATION).toSeconds(), 42); |
| } |
| |
| } |