From commits-return-29049-archive-asf-public=cust-asf.ponee.io@geode.apache.org Thu Nov 1 21:45:19 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 22444180652 for ; Thu, 1 Nov 2018 21:45:18 +0100 (CET) Received: (qmail 40182 invoked by uid 500); 1 Nov 2018 20:45:18 -0000 Mailing-List: contact commits-help@geode.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.apache.org Delivered-To: mailing list commits@geode.apache.org Received: (qmail 40172 invoked by uid 99); 1 Nov 2018 20:45:18 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Nov 2018 20:45:18 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 9DAF88706C; Thu, 1 Nov 2018 20:45:17 +0000 (UTC) Date: Thu, 01 Nov 2018 20:45:16 +0000 To: "commits@geode.apache.org" Subject: [geode] branch develop updated: GEODE-5960: Add test to verify CommandMarker file for the JDBC connector (#2751) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <154110511607.17431.17535913066293204867@gitbox.apache.org> From: dschneider@apache.org X-Git-Host: gitbox.apache.org X-Git-Repo: geode X-Git-Refname: refs/heads/develop X-Git-Reftype: branch X-Git-Oldrev: c5ec2931422f19414a427e3bed206935d88ee18c X-Git-Newrev: dd24a9c46c14371668dd082d138cc1f6cda7676f X-Git-Rev: dd24a9c46c14371668dd082d138cc1f6cda7676f X-Git-NotificationType: ref_changed_plus_diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated 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+BenjaminPerryRoss@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 Co-authored-by: Darrel Schneider --- .../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 packagesToScan = new HashSet<>(); + packagesToScan.add(GfshCommand.class.getPackage().getName()); + packagesToScan.add(InternalGfshCommand.class.getPackage().getName()); + + ClasspathScanLoadHelper scanner = new ClasspathScanLoadHelper(packagesToScan); + ServiceLoader loader = + ServiceLoader.load(CommandMarker.class, ClassPathLoader.getLatest().asClassLoader()); + loader.reload(); + Iterator iterator = loader.iterator(); + + Set> 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> expectedClasses = new HashSet<>(); + + for (CommandMarker commandMarker : commandManager.getCommandMarkers()) { + expectedClasses.add(commandMarker.getClass()); + } + + assertThat(expectedClasses).isEqualTo(foundClasses); + } +}