From 86e18fcd9e8ecda25a483b338ada7f48f46103f5 Mon Sep 17 00:00:00 2001 From: Ruslan Kashapov Date: Thu, 14 Mar 2024 09:42:07 +0200 Subject: [PATCH] Eliminate blueprint for drop-test-karaf commands Command implementations updated, this resolves issue with referenced declarative services being null on command execution at CSIT JIRA: OPNFLWPLUG-1127 Signed-off-by: Ruslan Kashapov Change-Id: I820bb43927bcfd8530b6d38712f27d64c6f25fda --- drop-test-karaf/pom.xml | 9 ++++++ .../ClearDropStatsCommandProvider.java | 13 ++++++--- .../DropAllPacketsCommandProvider.java | 17 +++++++---- .../DropAllPacketsCompleter.java | 14 +++++---- .../DropAllPacketsRpcCommandProvider.java | 20 ++++++++----- .../ShowDropStatsCommandProvider.java | 15 ++++++---- .../resources/OSGI-INF/blueprint/commands.xml | 29 ------------------- 7 files changed, 62 insertions(+), 55 deletions(-) delete mode 100644 drop-test-karaf/src/main/resources/OSGI-INF/blueprint/commands.xml diff --git a/drop-test-karaf/pom.xml b/drop-test-karaf/pom.xml index b85c450abc..51a0fa8885 100644 --- a/drop-test-karaf/pom.xml +++ b/drop-test-karaf/pom.xml @@ -38,4 +38,13 @@ scm:git:ssh://git.opendaylight.org:29418/openflowplugin.git scm:git:ssh://git.opendaylight.org:29418/openflowplugin.git + + + + + org.apache.karaf.tooling + karaf-services-maven-plugin + + + diff --git a/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/ClearDropStatsCommandProvider.java b/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/ClearDropStatsCommandProvider.java index 6c785ba1e3..91b68d2b34 100644 --- a/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/ClearDropStatsCommandProvider.java +++ b/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/ClearDropStatsCommandProvider.java @@ -7,21 +7,26 @@ */ package org.opendaylight.openflowplugin.droptestkaraf; +import org.apache.karaf.shell.api.action.Action; +import org.apache.karaf.shell.api.action.Command; import org.apache.karaf.shell.api.action.lifecycle.Reference; -import org.apache.karaf.shell.commands.Command; -import org.apache.karaf.shell.console.OsgiCommandSupport; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.karaf.shell.api.console.Session; import org.opendaylight.openflowplugin.testcommon.DropTestCommiter; import org.opendaylight.openflowplugin.testcommon.DropTestRpcSender; @Command(scope = "drop-test", name = "clearDropStats", description = "Clear drop statistics.") -public class ClearDropStatsCommandProvider extends OsgiCommandSupport { +@Service +public class ClearDropStatsCommandProvider implements Action { @Reference DropTestRpcSender rpcProvider; @Reference DropTestCommiter dsProvider; + @Reference + Session session; @Override - protected Object doExecute() { + public Object execute() { final var out = session.getConsole(); out.println("Clearing drop statistics... "); rpcProvider.clearStats(); diff --git a/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsCommandProvider.java b/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsCommandProvider.java index fd9d1e31da..ad0bc044aa 100644 --- a/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsCommandProvider.java +++ b/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsCommandProvider.java @@ -7,25 +7,32 @@ */ package org.opendaylight.openflowplugin.droptestkaraf; +import org.apache.karaf.shell.api.action.Action; +import org.apache.karaf.shell.api.action.Argument; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Completion; import org.apache.karaf.shell.api.action.lifecycle.Reference; -import org.apache.karaf.shell.commands.Argument; -import org.apache.karaf.shell.commands.Command; -import org.apache.karaf.shell.console.OsgiCommandSupport; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.karaf.shell.api.console.Session; import org.opendaylight.openflowplugin.testcommon.DropTestCommiter; @Command(scope = "drop-test", name = "dropAllPackets", description = "drop packet responder involving dataStore and FRM") -public class DropAllPacketsCommandProvider extends OsgiCommandSupport { +@Service +public class DropAllPacketsCommandProvider implements Action { @Reference DropTestCommiter provider; + @Reference + Session session; @Argument(index = 0, name = "on-off", description = "target state of drop responder", required = true, multiValued = false) + @Completion(DropAllPacketsCompleter.class) String targetStateArg; @Override - protected Object doExecute() { + public Object execute() { final var out = session.getConsole(); if ("on".equalsIgnoreCase(targetStateArg)) { diff --git a/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsCompleter.java b/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsCompleter.java index c3a026c127..d11d84c09d 100644 --- a/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsCompleter.java +++ b/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsCompleter.java @@ -8,19 +8,23 @@ package org.opendaylight.openflowplugin.droptestkaraf; import java.util.List; -import org.apache.karaf.shell.console.Completer; -import org.apache.karaf.shell.console.completer.StringsCompleter; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.karaf.shell.api.console.CommandLine; +import org.apache.karaf.shell.api.console.Completer; +import org.apache.karaf.shell.api.console.Session; +import org.apache.karaf.shell.support.completers.StringsCompleter; /** * General dropAllPackets on/off argument completer. */ +@Service public class DropAllPacketsCompleter implements Completer { @Override - public int complete(String buffer, int cursor, List candidates) { - StringsCompleter delegate = new StringsCompleter(); + public int complete(final Session session, final CommandLine commandLine, final List candidates) { + final var delegate = new StringsCompleter(); delegate.getStrings().add("on"); delegate.getStrings().add("off"); - return delegate.complete(buffer, cursor, candidates); + return delegate.complete(session, commandLine, candidates); } } diff --git a/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsRpcCommandProvider.java b/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsRpcCommandProvider.java index 997878fb69..bc9b9e32fb 100644 --- a/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsRpcCommandProvider.java +++ b/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsRpcCommandProvider.java @@ -7,27 +7,33 @@ */ package org.opendaylight.openflowplugin.droptestkaraf; -import java.io.PrintStream; +import org.apache.karaf.shell.api.action.Action; +import org.apache.karaf.shell.api.action.Argument; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Completion; import org.apache.karaf.shell.api.action.lifecycle.Reference; -import org.apache.karaf.shell.commands.Argument; -import org.apache.karaf.shell.commands.Command; -import org.apache.karaf.shell.console.OsgiCommandSupport; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.karaf.shell.api.console.Session; import org.opendaylight.openflowplugin.testcommon.DropTestRpcSender; @Command(scope = "drop-test", name = "dropAllPacketsRpc", description = "drop packet responder involving SalFlowService") -public class DropAllPacketsRpcCommandProvider extends OsgiCommandSupport { +@Service +public class DropAllPacketsRpcCommandProvider implements Action { @Reference DropTestRpcSender provider; + @Reference + Session session; @Argument(index = 0, name = "on-off", description = "target state of drop responder", required = true, multiValued = false) + @Completion(DropAllPacketsCompleter.class) String targetStateArg; @Override - protected Object doExecute() { - PrintStream out = session.getConsole(); + public Object execute() { + final var out = session.getConsole(); if ("on".equalsIgnoreCase(targetStateArg)) { if (provider.start()) { out.println("DropAllFlows transitions to on"); diff --git a/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/ShowDropStatsCommandProvider.java b/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/ShowDropStatsCommandProvider.java index 54abddfb5d..95b5b9af9f 100644 --- a/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/ShowDropStatsCommandProvider.java +++ b/drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/ShowDropStatsCommandProvider.java @@ -7,22 +7,27 @@ */ package org.opendaylight.openflowplugin.droptestkaraf; +import org.apache.karaf.shell.api.action.Action; +import org.apache.karaf.shell.api.action.Command; import org.apache.karaf.shell.api.action.lifecycle.Reference; -import org.apache.karaf.shell.commands.Command; -import org.apache.karaf.shell.console.OsgiCommandSupport; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.karaf.shell.api.console.Session; import org.opendaylight.openflowplugin.testcommon.DropTestCommiter; import org.opendaylight.openflowplugin.testcommon.DropTestRpcSender; @Command(scope = "drop-test", name = "showDropStats", description = "Show drop statistics.") -public class ShowDropStatsCommandProvider extends OsgiCommandSupport { +@Service +public class ShowDropStatsCommandProvider implements Action { @Reference DropTestRpcSender rpcProvider; @Reference DropTestCommiter dsProvider; + @Reference + Session session; @Override - protected Object doExecute() { - var out = session.getConsole(); + public Object execute() { + final var out = session.getConsole(); out.format("RPC Test Statistics: %s%n", rpcProvider.getStats().toString()); out.format("FRM Test Statistics: %s%n", dsProvider.getStats().toString()); return null; diff --git a/drop-test-karaf/src/main/resources/OSGI-INF/blueprint/commands.xml b/drop-test-karaf/src/main/resources/OSGI-INF/blueprint/commands.xml deleted file mode 100644 index 4bb02855d5..0000000000 --- a/drop-test-karaf/src/main/resources/OSGI-INF/blueprint/commands.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file -- 2.36.6