Michael Blow has submitted this change and it was merged. Change subject: [NO ISSUE] Minor config usage test refactoring ......................................................................
[NO ISSUE] Minor config usage test refactoring Change-Id: I5c4a0a9face0f044353c187e311a9105ed14d7ca Reviewed-on: https://asterix-gerrit.ics.uci.edu/1981 Sonar-Qube: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> --- M asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java 2 files changed, 58 insertions(+), 28 deletions(-) Approvals: Jenkins: Verified; No violations found; ; Verified Murtadha Hubail: Looks good to me, approved diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java index 2018e5a..b1b0d1d 100644 --- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java +++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/config/ConfigUsageTest.java @@ -28,10 +28,12 @@ import java.util.List; import java.util.Set; import java.util.TreeSet; +import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; import org.apache.asterix.hyracks.bootstrap.CCApplication; +import org.apache.asterix.hyracks.bootstrap.NCApplication; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.hyracks.api.config.IOption; @@ -49,10 +51,10 @@ private ConfigManager configManager; final EnumMap<Column, Integer> maxWidths = new EnumMap<>(Column.class); - enum Column { + protected enum Column { SECTION, PARAMETER, - MEANING, + DESCRIPTION, DEFAULT } @@ -64,38 +66,52 @@ } @Test - public void generateUsage() { + public void generateCcUsage() { + generateUsage(Section.CC); + } + + @Test + public void generateNcUsage() { + generateUsage(Section.NC); + } + + @Test + public void generateCommonUsage() { + generateUsage(Section.COMMON); + } + + protected void generateUsage(Section... sections) { final EnumMap<Column, Boolean> align = new EnumMap<>(Column.class); align.put(Column.SECTION, true); align.put(Column.PARAMETER, true); System.err.println(); - generateUsage("| ", " | ", " |", align, System.err); + generateUsage("| ", " | ", " |", align, System.err, sections); } @Test public void generateUsageCSV() throws IOException { new File(CSV_FILE).getParentFile().mkdirs(); try (final PrintStream output = new PrintStream(new FileOutputStream(CSV_FILE))) { - generateUsage("\"", "\",\"", "\"", new EnumMap<>(Column.class), output); + generateUsage("\"", "\",\"", "\"", new EnumMap<>(Column.class), output, getSections(configManager)); // TODO(mblow): add some validation (in addition to just ensuring no exceptions...) } } protected ConfigManager getConfigManager() { ConfigManager configManager = new ConfigManager(); - CCApplication application = new CCApplication(); - application.registerConfig(configManager); + new CCApplication().registerConfig(configManager); + new NCApplication().registerConfig(configManager); ControllerConfig.Option.DEFAULT_DIR .setDefaultValue(((String) ControllerConfig.Option.DEFAULT_DIR.defaultValue()) .replace(System.getProperty("java.io.tmpdir"), "${java.io.tmpdir}/")); return configManager; } - protected Set<Section> getSections(ConfigManager configManager) { + protected Section[] getSections(ConfigManager configManager) { TreeSet<Section> sections = new TreeSet<>(Comparator.comparing(Section::sectionName)); sections.addAll(configManager.getSections()); sections.remove(Section.LOCALNC); - return sections; + return sections.toArray(new Section[0]); } protected Predicate<IOption> optionSelector() { @@ -108,7 +124,7 @@ } public void generateUsage(String startDelim, String midDelim, String endDelim, EnumMap<Column, Boolean> align, - PrintStream output) { + PrintStream output, Section... sections) { ConfigManager configManager = getConfigManager(); StringBuilder buf = new StringBuilder(); @@ -125,7 +141,7 @@ // output header for (Column column : columns) { buf.append(column.ordinal() == 0 ? startDelim : midDelim); - pad(buf, StringUtils.capitalize(column.name().toLowerCase()), + pad(buf, getColumnDisplayFunction().apply(column), align.computeIfAbsent(column, c -> false) ? calculateMaxWidth(column, column.name()) : 0); } buf.append(endDelim).append('\n'); @@ -138,22 +154,36 @@ sepLine.append(endDelim).append('\n'); buf.append(sepLine.toString().replace(' ', '-')); - for (Section section : getSections(configManager)) { - List<IOption> options = new ArrayList<>(getSectionOptions(configManager, section)); - options.sort(Comparator.comparing(IOption::ini)); - for (IOption option : options) { - for (Column column : columns) { - buf.append(column.ordinal() == 0 ? startDelim : midDelim); - if (column == Column.SECTION) { - center(buf, extractValue(column, option), maxWidths.getOrDefault(column, 0)); - } else { - pad(buf, extractValue(column, option), maxWidths.getOrDefault(column, 0)); - } + List<IOption> options = new ArrayList<>(); + + for (Section section : sections) { + options.addAll(getSectionOptions(configManager, section)); + } + options.sort(Comparator.comparing(getIOptionNameDisplayFunction())); + for (IOption option : options) { + for (Column column : columns) { + buf.append(column.ordinal() == 0 ? startDelim : midDelim); + if (column == Column.SECTION) { + center(buf, extractValue(column, option), maxWidths.getOrDefault(column, 0)); + } else { + pad(buf, extractValue(column, option), maxWidths.getOrDefault(column, 0)); } - buf.append(endDelim).append('\n'); } + buf.append(endDelim).append('\n'); } output.println(buf); + } + + protected Function<Column, String> getColumnDisplayFunction() { + return column -> StringUtils.capitalize(column.name().toLowerCase()); + } + + protected Function<IOption, String> getIOptionNameDisplayFunction() { + return IOption::ini; + } + + protected Function<Section, String> getSectionDisplayFunction() { + return Section::sectionName; } protected int calculateMaxWidth(IOption option, Column column) { @@ -170,13 +200,13 @@ private String extractValue(Column column, IOption option) { switch (column) { case SECTION: - return option.section().sectionName(); + return getSectionDisplayFunction().apply(option.section()); case PARAMETER: - return option.ini(); - case MEANING: + return getIOptionNameDisplayFunction().apply(option); + case DESCRIPTION: return option.description() == null ? "N/A" : option.description(); case DEFAULT: - return configManager.defaultTextForUsage(option, IOption::ini); + return configManager.defaultTextForUsage(option, getIOptionNameDisplayFunction()); default: throw new IllegalStateException(String.valueOf(column)); } diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java index cfd01ac..06fbe63 100644 --- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java +++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java @@ -1263,7 +1263,7 @@ } } catch (Exception e) { - LOGGER.log(Level.FINE, "received exception on poll", e); + LOGGER.log(Level.INFO, "received exception on poll", e); responsesReceived++; if (isExpected(e, cUnit)) { expectedException = true; -- To view, visit https://asterix-gerrit.ics.uci.edu/1981 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5c4a0a9face0f044353c187e311a9105ed14d7ca Gerrit-PatchSet: 4 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael Blow <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Xikui Wang <[email protected]>
