Search in sources :

Example 1 with Field

use of org.apache.hadoop.hbase.hbtop.field.Field in project hbase by apache.

the class TestFieldScreenPresenter method testChangeFieldsOrder.

@Test
public void testChangeFieldsOrder() {
    fieldScreenPresenter.turnOnMoveMode();
    fieldScreenPresenter.arrowUp();
    fieldScreenPresenter.turnOffMoveMode();
    Field removed = fields.remove(sortFieldPosition);
    fields.add(sortFieldPosition - 1, removed);
    assertThat(fieldScreenPresenter.transitionToNextScreen(), is(topScreenView));
    verify(resultListener).accept(any(), eq(fields), any());
}
Also used : Field(org.apache.hadoop.hbase.hbtop.field.Field) Test(org.junit.Test)

Example 2 with Field

use of org.apache.hadoop.hbase.hbtop.field.Field in project hbase by apache.

the class HBTop method run.

@Override
public int run(String[] args) throws Exception {
    long initialRefreshDelay = 3 * 1000;
    Mode initialMode = Mode.REGION;
    List<Field> initialFields = null;
    Field initialSortField = null;
    Boolean initialAscendingSort = null;
    List<RecordFilter> initialFilters = null;
    long numberOfIterations = Long.MAX_VALUE;
    boolean batchMode = false;
    try {
        Options opts = getOptions();
        CommandLine commandLine = new DefaultParser().parse(opts, args);
        if (commandLine.hasOption("help")) {
            printUsage(opts);
            return 0;
        }
        if (commandLine.hasOption("mode")) {
            String mode = commandLine.getOptionValue("mode");
            switch(mode) {
                case "n":
                    initialMode = Mode.NAMESPACE;
                    break;
                case "t":
                    initialMode = Mode.TABLE;
                    break;
                case "r":
                    initialMode = Mode.REGION;
                    break;
                case "s":
                    initialMode = Mode.REGION_SERVER;
                    break;
                case "u":
                    initialMode = Mode.USER;
                    break;
                case "c":
                    initialMode = Mode.CLIENT;
                    break;
                default:
                    LOGGER.warn("Mode set invalid, using default");
                    break;
            }
        }
        if (commandLine.hasOption("outputFieldNames")) {
            initialMode.getFieldInfos().forEach(f -> System.out.println(f.getField().getHeader()));
            return 0;
        }
        if (commandLine.hasOption("delay")) {
            int delay = 0;
            try {
                delay = Integer.parseInt(commandLine.getOptionValue("delay"));
            } catch (NumberFormatException ignored) {
            }
            if (delay < 1) {
                LOGGER.warn("Delay set too low or invalid, using default");
            } else {
                initialRefreshDelay = delay * 1000L;
            }
        }
        if (commandLine.hasOption("numberOfIterations")) {
            try {
                numberOfIterations = Long.parseLong(commandLine.getOptionValue("numberOfIterations"));
            } catch (NumberFormatException ignored) {
                LOGGER.warn("The number of iterations set invalid, ignoring");
            }
        }
        if (commandLine.hasOption("sortField")) {
            String sortField = commandLine.getOptionValue("sortField");
            String field;
            boolean ascendingSort;
            if (sortField.startsWith("+")) {
                field = sortField.substring(1);
                ascendingSort = false;
            } else if (sortField.startsWith("-")) {
                field = sortField.substring(1);
                ascendingSort = true;
            } else {
                field = sortField;
                ascendingSort = false;
            }
            Optional<FieldInfo> fieldInfo = initialMode.getFieldInfos().stream().filter(f -> f.getField().getHeader().equals(field)).findFirst();
            if (fieldInfo.isPresent()) {
                initialSortField = fieldInfo.get().getField();
                initialAscendingSort = ascendingSort;
            } else {
                LOGGER.warn("The specified sort field " + field + " is not found, using default");
            }
        }
        if (commandLine.hasOption("fields")) {
            String[] fields = commandLine.getOptionValue("fields").split(",");
            initialFields = new ArrayList<>();
            for (String field : fields) {
                Optional<FieldInfo> fieldInfo = initialMode.getFieldInfos().stream().filter(f -> f.getField().getHeader().equals(field)).findFirst();
                if (fieldInfo.isPresent()) {
                    initialFields.add(fieldInfo.get().getField());
                } else {
                    LOGGER.warn("The specified field " + field + " is not found, ignoring");
                }
            }
        }
        if (commandLine.hasOption("filters")) {
            String[] filters = commandLine.getOptionValue("filters").split(",");
            List<Field> fields = initialMode.getFieldInfos().stream().map(FieldInfo::getField).collect(Collectors.toList());
            for (String filter : filters) {
                RecordFilter f = RecordFilter.parse(filter, fields, false);
                if (f != null) {
                    if (initialFilters == null) {
                        initialFilters = new ArrayList<>();
                    }
                    initialFilters.add(f);
                } else {
                    LOGGER.warn("The specified filter " + filter + " is invalid, ignoring");
                }
            }
        }
        if (commandLine.hasOption("batchMode")) {
            batchMode = true;
        }
    } catch (Exception e) {
        LOGGER.error("Unable to parse options", e);
        return 1;
    }
    try (Screen screen = new Screen(getConf(), initialRefreshDelay, initialMode, initialFields, initialSortField, initialAscendingSort, initialFilters, numberOfIterations, batchMode)) {
        screen.run();
    }
    return 0;
}
Also used : Logger(org.slf4j.Logger) Options(org.apache.hbase.thirdparty.org.apache.commons.cli.Options) ToolRunner(org.apache.hadoop.util.ToolRunner) LoggerFactory(org.slf4j.LoggerFactory) HBaseInterfaceAudience(org.apache.hadoop.hbase.HBaseInterfaceAudience) HelpFormatter(org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter) Collectors(java.util.stream.Collectors) Tool(org.apache.hadoop.util.Tool) ArrayList(java.util.ArrayList) Objects(java.util.Objects) Screen(org.apache.hadoop.hbase.hbtop.screen.Screen) List(java.util.List) InterfaceAudience(org.apache.yetus.audience.InterfaceAudience) Field(org.apache.hadoop.hbase.hbtop.field.Field) FieldInfo(org.apache.hadoop.hbase.hbtop.field.FieldInfo) HBaseConfiguration(org.apache.hadoop.hbase.HBaseConfiguration) Mode(org.apache.hadoop.hbase.hbtop.mode.Mode) DefaultParser(org.apache.hbase.thirdparty.org.apache.commons.cli.DefaultParser) Configured(org.apache.hadoop.conf.Configured) Configuration(org.apache.hadoop.conf.Configuration) Optional(java.util.Optional) CommandLine(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine) Options(org.apache.hbase.thirdparty.org.apache.commons.cli.Options) Screen(org.apache.hadoop.hbase.hbtop.screen.Screen) Mode(org.apache.hadoop.hbase.hbtop.mode.Mode) Field(org.apache.hadoop.hbase.hbtop.field.Field) CommandLine(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine) FieldInfo(org.apache.hadoop.hbase.hbtop.field.FieldInfo) DefaultParser(org.apache.hbase.thirdparty.org.apache.commons.cli.DefaultParser)

Example 3 with Field

use of org.apache.hadoop.hbase.hbtop.field.Field in project hbase by apache.

the class TopScreenPresenter method getDisplayedHeaders.

private List<Header> getDisplayedHeaders() {
    List<Field> displayFields = topScreenModel.getFields().stream().filter(fieldDisplayMap::get).collect(Collectors.toList());
    if (displayFields.isEmpty()) {
        horizontalScroll = 0;
    } else if (horizontalScroll > displayFields.size() - 1) {
        horizontalScroll = displayFields.size() - 1;
    }
    List<Header> ret = new ArrayList<>();
    int length = 0;
    for (int i = horizontalScroll; i < displayFields.size(); i++) {
        Field field = displayFields.get(i);
        int fieldLength = fieldLengthMap.get(field);
        length += fieldLength + 1;
        if (length > terminalLength) {
            break;
        }
        ret.add(new Header(field, fieldLength));
    }
    return ret;
}
Also used : Field(org.apache.hadoop.hbase.hbtop.field.Field) ArrayList(java.util.ArrayList)

Example 4 with Field

use of org.apache.hadoop.hbase.hbtop.field.Field in project hbase by apache.

the class TopScreenPresenter method adjustFieldLengthIfNeeded.

private void adjustFieldLengthIfNeeded() {
    if (adjustFieldLength.get()) {
        adjustFieldLength.set(false);
        for (Field f : topScreenModel.getFields()) {
            if (f.isAutoAdjust()) {
                int maxLength = topScreenModel.getRecords().stream().map(r -> r.get(f).asString().length()).max(Integer::compareTo).orElse(0);
                fieldLengthMap.put(f, Math.max(maxLength, f.getHeader().length()));
            }
        }
    }
}
Also used : Field(org.apache.hadoop.hbase.hbtop.field.Field)

Example 5 with Field

use of org.apache.hadoop.hbase.hbtop.field.Field in project hbase by apache.

the class FieldScreenPresenter method setSortField.

public void setSortField() {
    if (!moveMode) {
        Field newSortField = fields.get(currentPosition);
        if (newSortField != this.sortField) {
            this.sortField = newSortField;
            fieldScreenView.showScreenDescription(sortField.getHeader());
            fieldScreenView.refreshTerminal();
        }
    }
}
Also used : Field(org.apache.hadoop.hbase.hbtop.field.Field)

Aggregations

Field (org.apache.hadoop.hbase.hbtop.field.Field)14 ArrayList (java.util.ArrayList)4 List (java.util.List)4 Collectors (java.util.stream.Collectors)4 FieldInfo (org.apache.hadoop.hbase.hbtop.field.FieldInfo)4 InterfaceAudience (org.apache.yetus.audience.InterfaceAudience)3 Arrays (java.util.Arrays)2 Collections (java.util.Collections)2 Map (java.util.Map)2 ClusterMetrics (org.apache.hadoop.hbase.ClusterMetrics)2 ServerMetrics (org.apache.hadoop.hbase.ServerMetrics)2 Record (org.apache.hadoop.hbase.hbtop.Record)2 RecordFilter (org.apache.hadoop.hbase.hbtop.RecordFilter)2 FieldValue (org.apache.hadoop.hbase.hbtop.field.FieldValue)2 Mode (org.apache.hadoop.hbase.hbtop.mode.Mode)2 Test (org.junit.Test)2 EnumMap (java.util.EnumMap)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Objects (java.util.Objects)1