Search in sources :

Example 1 with Plan

use of org.neo4j.driver.summary.Plan in project neo4j by neo4j.

the class TablePlanFormatterTest method withEmptyDetails.

@Test
public void withEmptyDetails() {
    Plan plan = mock(Plan.class);
    Map<String, Value> args = new HashMap<String, Value>(2) {

        {
            put("EstimatedRows", new FloatValue(55));
            put("Details", new StringValue(""));
        }
    };
    when(plan.arguments()).thenReturn(args);
    when(plan.operatorType()).thenReturn("Projection");
    assertThat(tablePlanFormatter.formatPlan(plan), is(String.join(NEWLINE, "+-------------+---------+----------------+", "| Operator    | Details | Estimated Rows |", "+-------------+---------+----------------+", "| +Projection |         |             55 |", "+-------------+---------+----------------+", "")));
}
Also used : HashMap(java.util.HashMap) StringValue(org.neo4j.driver.internal.value.StringValue) Value(org.neo4j.driver.Value) FloatValue(org.neo4j.driver.internal.value.FloatValue) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) FloatValue(org.neo4j.driver.internal.value.FloatValue) Plan(org.neo4j.driver.summary.Plan) StringValue(org.neo4j.driver.internal.value.StringValue) Test(org.junit.Test)

Example 2 with Plan

use of org.neo4j.driver.summary.Plan in project neo4j by neo4j.

the class TablePlanFormatterTest method renderShortDetails.

@Test
public void renderShortDetails() {
    Plan plan = mock(Plan.class);
    Map<String, Value> args = Collections.singletonMap("Details", new StringValue("x.prop AS prop"));
    when(plan.arguments()).thenReturn(args);
    when(plan.operatorType()).thenReturn("Projection");
    assertThat(tablePlanFormatter.formatPlan(plan), is(String.join(NEWLINE, "+-------------+----------------+", "| Operator    | Details        |", "+-------------+----------------+", "| +Projection | x.prop AS prop |", "+-------------+----------------+", "")));
}
Also used : StringValue(org.neo4j.driver.internal.value.StringValue) Value(org.neo4j.driver.Value) FloatValue(org.neo4j.driver.internal.value.FloatValue) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) Plan(org.neo4j.driver.summary.Plan) StringValue(org.neo4j.driver.internal.value.StringValue) Test(org.junit.Test)

Example 3 with Plan

use of org.neo4j.driver.summary.Plan in project neo4j by neo4j.

the class TablePlanFormatterTest method renderExactMaxLengthDetails.

@Test
public void renderExactMaxLengthDetails() {
    Plan plan = mock(Plan.class);
    String details = stringOfLength(TablePlanFormatter.MAX_DETAILS_COLUMN_WIDTH);
    Map<String, Value> args = Collections.singletonMap("Details", new StringValue(details));
    when(plan.arguments()).thenReturn(args);
    when(plan.operatorType()).thenReturn("Projection");
    assertThat(tablePlanFormatter.formatPlan(plan), containsString("| +Projection | " + details + " |"));
}
Also used : StringValue(org.neo4j.driver.internal.value.StringValue) Value(org.neo4j.driver.Value) FloatValue(org.neo4j.driver.internal.value.FloatValue) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) Plan(org.neo4j.driver.summary.Plan) StringValue(org.neo4j.driver.internal.value.StringValue) Test(org.junit.Test)

Example 4 with Plan

use of org.neo4j.driver.summary.Plan in project neo4j by neo4j.

the class TablePlanFormatter method details.

@Nonnull
private Map<String, Cell> details(@Nonnull Plan plan, @Nonnull Map<String, Integer> columns) {
    Map<String, Value> args = plan.arguments();
    Stream<Optional<Pair<String, Cell>>> formattedPlan = args.entrySet().stream().map(e -> {
        Value value = e.getValue();
        switch(e.getKey()) {
            case "EstimatedRows":
                return mapping(ESTIMATED_ROWS, new RightJustifiedCell(format(value.asDouble())), columns);
            case "Rows":
                return mapping(ROWS, new RightJustifiedCell(value.asNumber().toString()), columns);
            case "DbHits":
                return mapping(HITS, new RightJustifiedCell(value.asNumber().toString()), columns);
            case "PageCacheHits":
                return mapping(PAGE_CACHE, new RightJustifiedCell(String.format("%s/%s", value.asNumber(), args.getOrDefault("PageCacheMisses", ZERO_VALUE).asNumber())), columns);
            case "Time":
                return mapping(TIME, new RightJustifiedCell(String.format("%.3f", value.asLong() / 1000000.0d)), columns);
            case "Order":
                return mapping(ORDER, new LeftJustifiedCell(String.format("%s", value.asString())), columns);
            case "Details":
                return mapping(DETAILS, new LeftJustifiedCell(splitDetails(value.asString())), columns);
            case "Memory":
                return mapping(MEMORY, new RightJustifiedCell(String.format("%s", value.asNumber().toString())), columns);
            default:
                return Optional.empty();
        }
    });
    return Stream.concat(formattedPlan, Stream.of(Optional.of(Pair.of(IDENTIFIERS, new LeftJustifiedCell(identifiers(plan, columns)))), Optional.of(Pair.of(OTHER, new LeftJustifiedCell(other(plan, columns)))))).filter(Optional::isPresent).collect(toMap(o -> o.get()._1, o -> o.get()._2));
}
Also used : Collection(java.util.Collection) Set(java.util.Set) HashMap(java.util.HashMap) Plan(org.neo4j.driver.summary.Plan) Function(java.util.function.Function) Collectors(java.util.stream.Collectors) Collectors.joining(java.util.stream.Collectors.joining) ArrayList(java.util.ArrayList) Value(org.neo4j.driver.Value) Values(org.neo4j.driver.Values) List(java.util.List) Matcher(java.util.regex.Matcher) Stream(java.util.stream.Stream) Collectors.toMap(java.util.stream.Collectors.toMap) OutputFormatter.repeat(org.neo4j.shell.prettyprint.OutputFormatter.repeat) Arrays.asList(java.util.Arrays.asList) Map(java.util.Map) NEWLINE(org.neo4j.shell.prettyprint.OutputFormatter.NEWLINE) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) Nonnull(javax.annotation.Nonnull) LinkedHashSet(java.util.LinkedHashSet) Nullable(javax.annotation.Nullable) Optional(java.util.Optional) Value(org.neo4j.driver.Value) Nonnull(javax.annotation.Nonnull)

Example 5 with Plan

use of org.neo4j.driver.summary.Plan in project neo4j by neo4j.

the class TablePlanFormatterTest method multiLineDetails.

@Test
public void multiLineDetails() {
    Plan argumentPlan = mock(Plan.class);
    when(argumentPlan.arguments()).thenReturn(Collections.emptyMap());
    when(argumentPlan.operatorType()).thenReturn("Argument");
    Plan childPlan = mock(Plan.class);
    Map<String, Value> args = Collections.singletonMap("Details", new StringValue(stringOfLength(TablePlanFormatter.MAX_DETAILS_COLUMN_WIDTH + 5)));
    when(childPlan.arguments()).thenReturn(args);
    when(childPlan.operatorType()).thenReturn("Expand");
    doReturn(new ArrayList<Plan>() {

        {
            add(argumentPlan);
            add(argumentPlan);
        }
    }).when(childPlan).children();
    Plan plan = mock(Plan.class);
    String details = stringOfLength(TablePlanFormatter.MAX_DETAILS_COLUMN_WIDTH + 1);
    args = Collections.singletonMap("Details", new StringValue(details));
    when(plan.arguments()).thenReturn(args);
    when(plan.operatorType()).thenReturn("Projection");
    doReturn(new ArrayList<Plan>() {

        {
            add(childPlan);
            add(childPlan);
        }
    }).when(plan).children();
    assertThat(tablePlanFormatter.formatPlan(plan), is(String.join(NEWLINE, "+---------------+------------------------------------------------------------------------------------------------------+", "| Operator      | Details                                                                                              |", "+---------------+------------------------------------------------------------------------------------------------------+", "| +Projection   | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |", "| |             | a                                                                                                    |", "| |\\            +------------------------------------------------------------------------------------------------------+", "| | +Expand     | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |", "| | |           | aaaaa                                                                                                |", "| | |\\          +------------------------------------------------------------------------------------------------------+", "| | | +Argument |                                                                                                      |", "| | |           +------------------------------------------------------------------------------------------------------+", "| | +Argument   |                                                                                                      |", "| |             +------------------------------------------------------------------------------------------------------+", "| +Expand       | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |", "| |             | aaaaa                                                                                                |", "| |\\            +------------------------------------------------------------------------------------------------------+", "| | +Argument   |                                                                                                      |", "| |             +------------------------------------------------------------------------------------------------------+", "| +Argument     |                                                                                                      |", "+---------------+------------------------------------------------------------------------------------------------------+", "")));
}
Also used : StringValue(org.neo4j.driver.internal.value.StringValue) Value(org.neo4j.driver.Value) FloatValue(org.neo4j.driver.internal.value.FloatValue) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) Plan(org.neo4j.driver.summary.Plan) StringValue(org.neo4j.driver.internal.value.StringValue) Test(org.junit.Test)

Aggregations

Value (org.neo4j.driver.Value)7 Plan (org.neo4j.driver.summary.Plan)7 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)5 Test (org.junit.Test)5 FloatValue (org.neo4j.driver.internal.value.FloatValue)5 StringValue (org.neo4j.driver.internal.value.StringValue)5 HashMap (java.util.HashMap)2 Nonnull (javax.annotation.Nonnull)2 ArrayList (java.util.ArrayList)1 Arrays.asList (java.util.Arrays.asList)1 Collection (java.util.Collection)1 LinkedHashMap (java.util.LinkedHashMap)1 LinkedHashSet (java.util.LinkedHashSet)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Set (java.util.Set)1 Function (java.util.function.Function)1 Matcher (java.util.regex.Matcher)1 Pattern (java.util.regex.Pattern)1