public List<Class<?>> getAllCommandClass() {
        final Set<String> commandList =
                frameworkModel.getExtensionLoader(BaseCommand.class).getSupportedExtensions();
        final List<Class<?>> classes = new ArrayList<>();

        for (String commandName : commandList) {
            BaseCommand command =
                    frameworkModel.getExtensionLoader(BaseCommand.class).getExtension(commandName);
            classes.add(command.getClass());
        }

        return classes;
    }
@Test
    void testGetAllCommandClass() {
        List<Class<?>> classes = commandHelper.getAllCommandClass();

        // update this list when introduce a new command
        List<Class<?>> expectedClasses = new LinkedList<>();
        expectedClasses.add(GreetingCommand.class);
        expectedClasses.add(Help.class);
        expectedClasses.add(Live.class);
        expectedClasses.add(Ls.class);
        expectedClasses.add(Offline.class);
        expectedClasses.add(OfflineApp.class);
        expectedClasses.add(OfflineInterface.class);
        expectedClasses.add(Online.class);
        expectedClasses.add(OnlineApp.class);
        expectedClasses.add(OnlineInterface.class);
        expectedClasses.add(PublishMetadata.class);
        expectedClasses.add(Quit.class);
        expectedClasses.add(Ready.class);
        expectedClasses.add(Startup.class);
        expectedClasses.add(Version.class);
        expectedClasses.add(ChangeTelnet.class);
        expectedClasses.add(CountTelnet.class);
        expectedClasses.add(InvokeTelnet.class);
        expectedClasses.add(SelectTelnet.class);
        expectedClasses.add(PortTelnet.class);
        expectedClasses.add(PwdTelnet.class);
        expectedClasses.add(ShutdownTelnet.class);
        expectedClasses.add(EnableDetailProfiler.class);
        expectedClasses.add(DisableDetailProfiler.class);
        expectedClasses.add(EnableSimpleProfiler.class);
        expectedClasses.add(DisableSimpleProfiler.class);
        expectedClasses.add(SetProfilerWarnPercent.class);
        expectedClasses.add(GetRouterSnapshot.class);
        expectedClasses.add(GetEnabledRouterSnapshot.class);
        expectedClasses.add(EnableRouterSnapshot.class);
        expectedClasses.add(DisableRouterSnapshot.class);
        expectedClasses.add(GetRecentRouterSnapshot.class);
        expectedClasses.add(LoggerInfo.class);
        expectedClasses.add(SwitchLogger.class);
        expectedClasses.add(SwitchLogLevel.class);
        expectedClasses.add(SerializeCheckStatus.class);
        expectedClasses.add(SerializeWarnedClasses.class);
        expectedClasses.add(GetConfig.class);
        expectedClasses.add(GetAddress.class);
        expectedClasses.add(GracefulShutdown.class);
        expectedClasses.add(DefaultMetricsReporterCmd.class);
        assertThat(classes, containsInAnyOrder(expectedClasses.toArray(new Class<?>[0])));
    }