/* * 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.core; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import java.net.URL; import java.util.Iterator; import java.util.List; import org.apache.brooklyn.core.catalog.internal.CatalogEntityItemDto; import org.apache.brooklyn.core.catalog.internal.CatalogItemBuilder; import org.apache.brooklyn.core.catalog.internal.CatalogItemDtoAbstract; import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext; import org.apache.brooklyn.util.osgi.OsgiTestResources; import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests; import org.apache.brooklyn.test.support.TestResourceUnavailableException; import org.apache.brooklyn.util.text.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert; import org.testng.annotations.Test; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; public class BrooklynVersionTest { private static final Logger log = LoggerFactory.getLogger(BrooklynVersionTest.class); @Test public void testGetVersion() { assertEquals(BrooklynVersion.get(), BrooklynVersion.INSTANCE.getVersion()); } @Test public void testGetHardcodedClasspathVersion() { @SuppressWarnings("deprecation") String v = BrooklynVersion.INSTANCE.getVersionFromClasspath(); assertTrue(BrooklynVersion.get().equals(v) || "0.0.0-SNAPSHOT".equals(v), v); } @Test public void testGetFromMaven() { String v = BrooklynVersion.INSTANCE.getVersionFromMavenProperties(); assertTrue(v == null || BrooklynVersion.get().equals(v), v); } @Test public void testGetFromOsgi() { String v = BrooklynVersion.INSTANCE.getVersionFromOsgiManifest(); assertTrue(v == null || BrooklynVersion.get().equals(v), v); } @Test public void testGetOsgiSha1() { String sha1 = BrooklynVersion.INSTANCE.getSha1FromOsgiManifest(); log.info("sha1: " + sha1); if (Strings.isNonBlank(sha1) || BrooklynVersion.isDevelopmentEnvironment()) return; // we might not have a SHA1 if it's a standalone (non-git) source build; just log warn in that case log.warn("This build does not have git SHA1 information."); // (can't assert anything, except that sha1 lookup doesn't NPE) } @Test public void testDevEnv() { URL sp = getClass().getClassLoader().getResource("brooklyn/config/sample.properties"); if (sp == null) Assert.fail("Can't find test resources"); log.info("Test for dev env: " + "Dev env? " + BrooklynVersion.isDevelopmentEnvironment() + "; path " + sp); boolean testResourcePathInClasses = sp.getPath().endsWith("classes/brooklyn/config/sample.properties"); Assert.assertEquals(testResourcePathInClasses, BrooklynVersion.isDevelopmentEnvironment(), "Dev env? " + BrooklynVersion.isDevelopmentEnvironment() + "; but resource path: " + sp); } @Test public void testGetFeatures() throws Exception { TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_PATH); LocalManagementContext mgmt = LocalManagementContextForTests.builder(true) .disableOsgi(false) .build(); String symName = "org.apache.brooklyn.test.resources.osgi.brooklyn-test-osgi-entities"; String version = "0.1.0"; String type = "brooklyn.osgi.tests.SimpleEntity"; List<String> libraries = Lists.newArrayList("classpath:" + OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_PATH); CatalogEntityItemDto c1 = CatalogItemBuilder.newEntity(symName, version) .javaType(type) .libraries(CatalogItemDtoAbstract.parseLibraries(libraries)) .build(); mgmt.getCatalog().addItem(c1); Iterable<BrooklynVersion.BrooklynFeature> features = BrooklynVersion.getFeatures(mgmt); assertTrue(features.iterator().hasNext()); boolean found = false; Iterator<BrooklynVersion.BrooklynFeature> iterator = features.iterator(); while (!found && iterator.hasNext()) { BrooklynVersion.BrooklynFeature feature = iterator.next(); if (feature.getSymbolicName().equals(symName) && feature.getVersion().equals(version)) { found = true; } } assertTrue(found, "Expected to find " + symName + ":" + version + " in: " + Iterables.toString(features)); } }