Skip to content
This repository has been archived by the owner on Aug 23, 2023. It is now read-only.

Commit

Permalink
Update code for the new Google CLI API.
Browse files Browse the repository at this point in the history
Signed-off-by: Stéphane Galland <galland@arakhne.org>
  • Loading branch information
gallandarakhneorg committed Nov 23, 2015
1 parent b34107d commit 15fe2ce
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 37 deletions.
31 changes: 16 additions & 15 deletions io.janusproject.kernel/src/main/java/io/janusproject/Boot.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ public final class Boot {
private static final int ERROR_EXIT_CODE = 255;

private static PrintStream consoleLogger;

private static Exiter applicationExiter;

private Boot() {
Expand Down Expand Up @@ -110,17 +111,17 @@ public static String[] parseCommandLine(String[] args) {
Iterator<Option> optIterator = cmd.iterator();
while (optIterator.hasNext()) {
Option opt = optIterator.next();
switch (opt.getOpt()) {
case "h": //$NON-NLS-1$
switch (opt.getLongOpt()) {
case "help": //$NON-NLS-1$
showHelp();
return null;
case "s": //$NON-NLS-1$
case "showdefaults": //$NON-NLS-1$
showDefaults();
return null;
case "cli": //$NON-NLS-1$
showCommandLineArguments(args);
return null;
case "f": //$NON-NLS-1$
case "file": //$NON-NLS-1$
String rawFilename = opt.getValue();
if (rawFilename == null || "".equals(rawFilename)) { //$NON-NLS-1$
showHelp();
Expand All @@ -134,33 +135,33 @@ public static String[] parseCommandLine(String[] args) {
}
setPropertiesFrom(file);
break;
case "o": //$NON-NLS-1$
case "offline": //$NON-NLS-1$
setOffline(true);
break;
case "R": //$NON-NLS-1$
case "randomid": //$NON-NLS-1$
setRandomContextUUID();
break;
case "B": //$NON-NLS-1$
case "bootid": //$NON-NLS-1$
setBootAgentTypeContextUUID();
break;
case "W": //$NON-NLS-1$
case "worldid": //$NON-NLS-1$
setDefaultContextUUID();
break;
case "D": //$NON-NLS-1$
case "define": //$NON-NLS-1$
String name = opt.getValue(0);
if (!Strings.isNullOrEmpty(name)) {
setProperty(name, Strings.emptyToNull(opt.getValue(1)));
}
break;
case "l": //$NON-NLS-1$
case "log": //$NON-NLS-1$
verbose = Math.max(LoggerCreator.toInt(opt.getValue()), 0);
break;
case "q": //$NON-NLS-1$
case "quiet": //$NON-NLS-1$
if (verbose > 0) {
--verbose;
}
break;
case "v": //$NON-NLS-1$
case "verbose": //$NON-NLS-1$
++verbose;
break;
case "nologo": //$NON-NLS-1$
Expand Down Expand Up @@ -313,7 +314,7 @@ public static Options getOptions() {
options.addOption("h", "help", false, //$NON-NLS-1$//$NON-NLS-2$
Locale.getString("CLI_HELP_H")); //$NON-NLS-1$

options.addOption("nologo", false, //$NON-NLS-1$
options.addOption(null, "nologo", false, //$NON-NLS-1$
Locale.getString("CLI_HELP_NOLOGO")); //$NON-NLS-1$

options.addOption("o", "offline", false, //$NON-NLS-1$//$NON-NLS-2$
Expand All @@ -329,7 +330,7 @@ public static Options getOptions() {

options.addOption("s", "showdefaults", false, //$NON-NLS-1$//$NON-NLS-2$
Locale.getString("CLI_HELP_S")); //$NON-NLS-1$
options.addOption("cli", false, //$NON-NLS-1$
options.addOption(null, "cli", false, //$NON-NLS-1$
Locale.getString("CLI_HELP_CLI")); //$NON-NLS-1$

options.addOption("v", "verbose", false, //$NON-NLS-1$//$NON-NLS-2$
Expand All @@ -355,7 +356,7 @@ public static Options getOptions() {
JanusConfig.VERBOSE_LEVEL_VALUE, b));
opt.setArgs(1);
options.addOption(opt);
opt = new Option("D", true, Locale.getString("CLI_HELP_D")); //$NON-NLS-1$//$NON-NLS-2$
opt = new Option("D", "define", true, Locale.getString("CLI_HELP_D")); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
opt.setArgs(2);
opt.setValueSeparator('=');
opt.setArgName(Locale.getString("CLI_HELP_D_ARGNAME")); //$NON-NLS-1$
Expand Down
76 changes: 54 additions & 22 deletions io.janusproject.kernel/src/test/java/io/janusproject/BootTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeNotNull;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyVararg;
Expand All @@ -37,29 +38,31 @@
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
import io.janusproject.Boot.Exiter;
import io.janusproject.kernel.Kernel;
import io.janusproject.services.executor.ChuckNorrisException;
import io.janusproject.testutils.AbstractJanusRunTest;
import io.janusproject.testutils.AbstractJanusTest;
import io.sarl.core.DefaultContextInteractions;
import io.sarl.lang.core.Agent;
import io.sarl.lang.core.BuiltinCapacitiesProvider;

import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.logging.Logger;

import javax.annotation.Nullable;
import javax.inject.Inject;

import org.apache.commons.cli.DefaultParser;
import com.google.inject.Binder;
import com.google.inject.Module;
import com.google.inject.Provides;
import com.google.inject.name.Named;
import io.janusproject.Boot.Exiter;
import io.janusproject.kernel.Kernel;
import io.janusproject.testutils.AbstractJanusRunTest;
import io.janusproject.testutils.AbstractJanusTest;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.Options;
import org.arakhne.afc.vmutil.FileSystem;
import org.arakhne.afc.vmutil.Resources;
Expand All @@ -76,9 +79,9 @@
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;

import com.google.inject.Binder;
import com.google.inject.Module;
import com.google.inject.Provides;
import io.sarl.core.DefaultContextInteractions;
import io.sarl.lang.core.Agent;
import io.sarl.lang.core.BuiltinCapacitiesProvider;

/**
* @author $Author: sgalland$
Expand Down Expand Up @@ -289,36 +292,65 @@ public void testHelp() throws Exception {

cmd = this.parser.parse(this.janusOptions, args("-f", "thefile"));
assertTrue(cmd.hasOption('f'));
assertEquals("thefile", cmd.getOptionValue('f'));
cmd = this.parser.parse(this.janusOptions, args("-file", "thefile"));
assertTrue(cmd.hasOption('f'));
assertEquals("thefile", cmd.getOptionValue('f'));
cmd = this.parser.parse(this.janusOptions, args("--file", "thefile"));
assertTrue(cmd.hasOption('f'));
assertEquals("thefile", cmd.getOptionValue('f'));

cmd = this.parser.parse(this.janusOptions, args("-B", "uid"));
assertTrue(cmd.hasOption('B'));
assertEquals("uid", cmd.getArgs()[0]);
cmd = this.parser.parse(this.janusOptions, args("-bootid", "uid"));
assertTrue(cmd.hasOption('B'));
assertEquals("uid", cmd.getArgs()[0]);
cmd = this.parser.parse(this.janusOptions, args("--bootid", "uid"));
assertTrue(cmd.hasOption('B'));
assertEquals("uid", cmd.getArgs()[0]);

cmd = this.parser.parse(this.janusOptions, args("-R", "uid"));
assertTrue(cmd.hasOption('R'));
assertEquals("uid", cmd.getArgs()[0]);
cmd = this.parser.parse(this.janusOptions, args("-randomid", "uid"));
assertTrue(cmd.hasOption('R'));
assertEquals("uid", cmd.getArgs()[0]);
cmd = this.parser.parse(this.janusOptions, args("--randomid", "uid"));
assertTrue(cmd.hasOption('R'));
assertEquals("uid", cmd.getArgs()[0]);

cmd = this.parser.parse(this.janusOptions, args("-W", "uid"));
assertTrue(cmd.hasOption('W'));
assertEquals("uid", cmd.getArgs()[0]);
cmd = this.parser.parse(this.janusOptions, args("-worldid", "uid"));
assertTrue(cmd.hasOption('W'));
assertEquals("uid", cmd.getArgs()[0]);
cmd = this.parser.parse(this.janusOptions, args("--worldid", "uid"));
assertTrue(cmd.hasOption('W'));
assertEquals("uid", cmd.getArgs()[0]);

cmd = this.parser.parse(this.janusOptions, args("-D", "name=value"));
assertTrue(cmd.hasOption('D'));
cmd = this.parser.parse(this.janusOptions, args("-D", "name"));
assertArrayEquals(new String[] {"name", "value"}, cmd.getOptionValues('D'));
cmd = this.parser.parse(this.janusOptions, args("-Dname=value"));
assertTrue(cmd.hasOption('D'));
assertArrayEquals(new String[] {"name", "value"}, cmd.getOptionValues('D'));
cmd = this.parser.parse(this.janusOptions, args("-D", "name", "value"));
assertTrue(cmd.hasOption('D'));
assertArrayEquals(new String[] {"name", "value"}, cmd.getOptionValues('D'));
try {
this.parser.parse(this.janusOptions, args("-D", "name"));
fail("Expecting failure");
} catch (Throwable exception) {
//
}
try {
this.parser.parse(this.janusOptions, args("-D"));
fail("Expecting failure");
} catch (Throwable exception) {
//
}
}

@Test
Expand Down Expand Up @@ -624,7 +656,7 @@ public void option_s_asArg() {
}

@Test
public void option_cli_valid() {
public void option_cli_valid() throws IOException {
Object[] freeArgs = Boot.parseCommandLine(args("arg1", "--cli", "--", "-x", "arg2", "-y"));
// The properties are null since resetProperties() is invoked for resetting the properties in
// the start-up function inherited from AbstractJanusTest
Expand All @@ -644,9 +676,9 @@ public void option_cli_valid() {
verify(this.exiter, only()).exit();
}

private void verifyCli(String... text) {
private void verifyCli(String... text) throws IOException {
ArgumentCaptor<String> arg = ArgumentCaptor.forClass(String.class);
verify(this.logger, times(text.length)).println(arg.capture());
verify(this.logger, Mockito.times(text.length)).println(arg.capture());
List<String> list = arg.getAllValues();
assertEquals("invalid list size", text.length, list.size());
for (int i = 0; i < text.length; ++i) {
Expand Down Expand Up @@ -1069,12 +1101,12 @@ public void randomContextUUID() throws Exception {
*/
public static class RCAgent extends TestingAgent {

public RCAgent(UUID parentID) {
super(parentID);
}

public RCAgent(UUID parentID, UUID agentID) {
super(parentID, agentID);
@Inject
public RCAgent(
BuiltinCapacitiesProvider provider,
@Named(Agent.PARENT_ID_KEY_NAME) UUID parentID,
@Named(Agent.AGENT_ID_KEY_NAME) UUID agentID) {
super(provider, parentID, agentID);
}

@Override
Expand Down

0 comments on commit 15fe2ce

Please sign in to comment.