/**
* 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.camel.catalog.maven;
import java.io.InputStream;
import java.util.List;
import junit.framework.TestCase;
import org.apache.camel.catalog.CamelCatalog;
import org.apache.camel.catalog.CatalogHelper;
import org.apache.camel.catalog.DefaultCamelCatalog;
import org.apache.camel.catalog.karaf.KarafRuntimeProvider;
import org.apache.camel.catalog.springboot.SpringBootRuntimeProvider;
import org.junit.Ignore;
import org.junit.Test;
@Ignore("Cannot run on CI servers so run manually")
public class MavenVersionManagerTest extends TestCase {
private static final String COMPONENTS_CATALOG = "org/apache/camel/catalog/components.properties";
@Test
public void testLoadVersion() throws Exception {
MavenVersionManager manager = new MavenVersionManager();
String current = manager.getLoadedVersion();
assertNull(current);
boolean loaded = manager.loadVersion("2.17.1");
assertTrue(loaded);
assertEquals("2.17.1", manager.getLoadedVersion());
InputStream is = manager.getResourceAsStream(COMPONENTS_CATALOG);
assertNotNull(is);
String text = CatalogHelper.loadText(is);
// should not contain Camel 2.18 components
assertFalse(text.contains("servicenow"));
// but 2.17 components such
assertTrue(text.contains("nats"));
}
@Test
public void testEndpointOptions217() throws Exception {
CamelCatalog catalog = new DefaultCamelCatalog(false);
catalog.setVersionManager(new MavenVersionManager());
catalog.loadVersion("2.17.1");
assertEquals("2.17.1", catalog.getLoadedVersion());
String json = catalog.componentJSonSchema("ahc");
assertNotNull(json);
// should have loaded the 2.17.1 version
assertTrue(json.contains("\"version\": \"2.17.1\""));
// should not contain Camel 2.18 option
assertFalse(json.contains("connectionClose"));
}
@Test
public void testEndpointOptions218OrNewer() throws Exception {
CamelCatalog catalog = new DefaultCamelCatalog(false);
String json = catalog.componentJSonSchema("ahc");
assertNotNull(json);
// should contain the Camel 2.18 option
assertTrue(json.contains("connectionClose"));
}
@Test
public void testRuntimeProviderLoadVersion() throws Exception {
CamelCatalog catalog = new DefaultCamelCatalog(false);
catalog.setVersionManager(new MavenVersionManager());
catalog.setRuntimeProvider(new SpringBootRuntimeProvider());
String version = "2.18.2";
boolean loaded = catalog.loadVersion(version);
assertTrue(loaded);
loaded = catalog.loadRuntimeProviderVersion(catalog.getRuntimeProvider().getProviderGroupId(), catalog.getRuntimeProvider().getProviderArtifactId(), version);
assertTrue(loaded);
assertEquals(version, catalog.getLoadedVersion());
assertEquals(version, catalog.getRuntimeProviderLoadedVersion());
List<String> names = catalog.findComponentNames();
assertTrue(names.contains("file"));
assertTrue(names.contains("ftp"));
assertTrue(names.contains("jms"));
// camel-ejb does not work in spring-boot
assertFalse(names.contains("ejb"));
// camel-pax-logging does not work in spring-boot
assertFalse(names.contains("paxlogging"));
}
@Test
public void testRuntimeProviderLoadVersionWithCaching() throws Exception {
CamelCatalog catalog = new DefaultCamelCatalog(true);
catalog.setVersionManager(new MavenVersionManager());
catalog.setRuntimeProvider(new SpringBootRuntimeProvider());
String version = "2.18.2";
boolean loaded = catalog.loadVersion(version);
assertTrue(loaded);
loaded = catalog.loadRuntimeProviderVersion(catalog.getRuntimeProvider().getProviderGroupId(), catalog.getRuntimeProvider().getProviderArtifactId(), version);
assertTrue(loaded);
assertEquals(version, catalog.getLoadedVersion());
assertEquals(version, catalog.getRuntimeProviderLoadedVersion());
List<String> names = catalog.findComponentNames();
assertTrue(names.contains("file"));
assertTrue(names.contains("ftp"));
assertTrue(names.contains("jms"));
// camel-ejb does not work in spring-boot
assertFalse(names.contains("ejb"));
// camel-pax-logging does not work in spring-boot
assertFalse(names.contains("paxlogging"));
}
@Test
public void testCatalogKarafRuntimeProviderVersionSwitch() throws Exception {
CamelCatalog catalog = new DefaultCamelCatalog(true);
MavenVersionManager mvm = new MavenVersionManager();
mvm.addMavenRepository("asf-ga", "https://repo.maven.apache.org/maven2");
mvm.addMavenRepository("asf-snapshots", "https://repository.apache.org/content/groups/snapshots");
catalog.setVersionManager(mvm);
catalog.setRuntimeProvider(new KarafRuntimeProvider());
boolean loaded = catalog.loadVersion("2.18.1");
assertTrue("Unable to load Camel Catalog 2.18.1", loaded);
loaded = catalog.loadRuntimeProviderVersion("org.apache.camel", "camel-catalog-provider-karaf", "2.18.1");
assertTrue("Unable to load Karaf Provider Camel Catalog 2.18.1", loaded);
int components = catalog.findComponentNames().size();
System.out.println("2.18.1 has " + components + " components");
assertFalse("Should not have ejb component", catalog.findComponentNames().contains("ejb"));
loaded = catalog.loadVersion("2.19.0-SNAPSHOT");
assertTrue("Unable to switch to Camel Catalog 2.19.0-SNAPSHOT", loaded);
loaded = catalog.loadRuntimeProviderVersion("org.apache.camel", "camel-catalog-provider-karaf", "2.19.0-SNAPSHOT");
assertTrue("Unable to load Karaf Provider Camel Catalog 2.19.0-SNAPSHOT", loaded);
int componentsNewer = catalog.findComponentNames().size();
assertTrue("Both catalog versions shouldn't have the same count of components.", components != componentsNewer);
System.out.println("2.19.0-SNAPSHOT has " + componentsNewer + " components");
assertFalse("Should not have ejb component", catalog.findComponentNames().contains("ejb"));
loaded = catalog.loadVersion("2.18.1");
assertTrue("Unable to load Camel Catalog 2.18.1", loaded);
loaded = catalog.loadRuntimeProviderVersion("org.apache.camel", "camel-catalog-provider-karaf", "2.18.1");
assertTrue("Unable to load Karaf Provider Camel Catalog 2.18.1", loaded);
int components3 = catalog.findComponentNames().size();
assertTrue("Newer load does not match older one", components == components3);
assertFalse("Should not have ejb component", catalog.findComponentNames().contains("ejb"));
System.out.println("2.18.1 has " + components3 + " components");
}
}