This is an automated email from the ASF dual-hosted git repository. dschneider pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push: new dd24a9c GEODE-5960: Add test to verify CommandMarker file for the JDBC connector (#2751) dd24a9c is described below commit dd24a9c46c14371668dd082d138cc1f6cda7676f Author: BenjaminPerryRoss <39068135+benjaminperryr...@users.noreply.github.com> AuthorDate: Thu Nov 1 13:45:08 2018 -0700 GEODE-5960: Add test to verify CommandMarker file for the JDBC connector (#2751) Added a new test to the JDBC connector project to verify that the list of commands loaded via the scanner and the command marker match the list of commands found via these two sources. This is to avoid errors/warnings due to commands which appear in Command Marker files but don't have available source code. Co-authored-by: Ben Ross <br...@pivotal.io> Co-authored-by: Darrel Schneider <dschnei...@pivotal.io> --- .../cli/ConnectionsCommandManagerJUnitTest.java | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/ConnectionsCommandManagerJUnitTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/ConnectionsCommandManagerJUnitTest.java new file mode 100644 index 0000000..5a325f9 --- /dev/null +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/ConnectionsCommandManagerJUnitTest.java @@ -0,0 +1,80 @@ +/* + * 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.geode.connectors.jdbc.internal.cli; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.ServiceLoader; +import java.util.Set; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.shell.core.CommandMarker; + +import org.apache.geode.internal.ClassPathLoader; +import org.apache.geode.management.cli.GfshCommand; +import org.apache.geode.management.internal.cli.CommandManager; +import org.apache.geode.management.internal.cli.commands.InternalGfshCommand; +import org.apache.geode.management.internal.cli.util.ClasspathScanLoadHelper; + +/** + * CommandManagerTest - Includes tests to check the CommandManager functions + */ +public class ConnectionsCommandManagerJUnitTest { + + private CommandManager commandManager; + + @Before + public void before() { + commandManager = new CommandManager(); + } + + /** + * tests loadCommands() + */ + @Test + public void testCommandManagerLoadCommands() { + Set<String> packagesToScan = new HashSet<>(); + packagesToScan.add(GfshCommand.class.getPackage().getName()); + packagesToScan.add(InternalGfshCommand.class.getPackage().getName()); + + ClasspathScanLoadHelper scanner = new ClasspathScanLoadHelper(packagesToScan); + ServiceLoader<CommandMarker> loader = + ServiceLoader.load(CommandMarker.class, ClassPathLoader.getLatest().asClassLoader()); + loader.reload(); + Iterator<CommandMarker> iterator = loader.iterator(); + + Set<Class<?>> foundClasses; + + // geode's commands + foundClasses = scanner.scanPackagesForClassesImplementing(CommandMarker.class, + GfshCommand.class.getPackage().getName(), + InternalGfshCommand.class.getPackage().getName()); + + while (iterator.hasNext()) { + foundClasses.add(iterator.next().getClass()); + } + + Set<Class<?>> expectedClasses = new HashSet<>(); + + for (CommandMarker commandMarker : commandManager.getCommandMarkers()) { + expectedClasses.add(commandMarker.getClass()); + } + + assertThat(expectedClasses).isEqualTo(foundClasses); + } +}