Refine search
@Test @LoadGraphWith(MODERN) public void g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX() { final Traversal<Vertex, Integer> traversal = get_g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX(); assertEquals(6, traversal.next().intValue()); assertFalse(traversal.hasNext()); assertEquals(6, traversal.asAdmin().getSideEffects().<Integer>get("a").intValue()); assertEquals(1, traversal.asAdmin().getSideEffects().keys().size()); checkSideEffects(traversal.asAdmin().getSideEffects(), "a", Integer.class); }
public default <S> S getScopeValue(final Pop pop, final String key, final Traverser.Admin<?> traverser) throws IllegalArgumentException { final Object object = traverser.get(); if (object instanceof Map && ((Map<String, S>) object).containsKey(key)) return ((Map<String, S>) object).get(key); /// if (traverser.getSideEffects().exists(key)) return traverser.getSideEffects().get(key); /// final Path path = traverser.path(); if (path.hasLabel(key)) return path.get(pop, key); /// throw new IllegalArgumentException("Neither the sideEffects, map, nor path has a " + key + "-key: " + this); }
/** * Add a particular value to the respective side-effect of the traverser (thus, traversal). * * @param sideEffectKey the key of the value to set int the sideEffects * @param sideEffectValue the value to set for the sideEffect key */ public default void sideEffects(final String sideEffectKey, final Object sideEffectValue) throws IllegalArgumentException { this.asAdmin().getSideEffects().add(sideEffectKey, sideEffectValue); }
private Map<String, Object> getMapOfSideEffects() { final TraversalSideEffects temp = this.getTraversal().getSideEffects(); final Map<String, Object> sideEffects = new HashMap<>(); for (final String sideEffectKey : this.sideEffectKeys) { if (temp.exists(sideEffectKey)) { final E result = temp.get(sideEffectKey); final SideEffectCapable<Object, E> sideEffectCapable = this.sideEffectCapableSteps.get(sideEffectKey); final E finalResult = null == sideEffectCapable ? result : sideEffectCapable.generateFinalResult(result); temp.set(sideEffectKey, finalResult); sideEffects.put(sideEffectKey, finalResult); } } return sideEffects; }
public static void checkSideEffects(final TraversalSideEffects sideEffects, final Object... keysClasses) { int counter = 0; for (int i = 0; i < keysClasses.length; i = i + 2) { counter++; final String key = (String) keysClasses[i]; final Class clazz = (Class) keysClasses[i + 1]; assertThat(sideEffects.keys().contains(key), is(true)); assertThat(sideEffects.exists(key), is(true)); assertThat(sideEffects.exists(UUID.randomUUID().toString()), is(false)); // there is slightly different behavior for remote side-effects so carving out a few asserts with that // in mind. the client really doesnt' really have a way of knowing what type of object to create when it // gets an empty iterator so it makes the result null and therefore we end up with a NPE if we try to // access it. the rest of the behavior is solid so better to do this than OptOut I think if (!(sideEffects instanceof RemoteTraversalSideEffects)) { assertEquals(clazz, sideEffects.get((String) keysClasses[i]).getClass()); } } assertEquals(sideEffects.keys().size(), counter); assertThat(sideEffects.keys().contains(UUID.randomUUID().toString()), is(false)); assertEquals(StringFactory.traversalSideEffectsString(sideEffects), sideEffects.toString()); }
@Test @LoadGraphWith(MODERN) @IgnoreEngine(TraversalEngine.Type.COMPUTER) public void g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profileXmetricsX() { final Traversal<Vertex, Vertex> traversal = get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profileXmetricsX(); printTraversalForm(traversal); traversal.iterate(); // This assertion is really only meant for tinkergraph if (graph.getClass().getSimpleName().equals("TinkerGraph")) assertEquals("There should be 7 steps in this traversal (counting injected profile steps).", 7, traversal.asAdmin().getSteps().size()); final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().get(METRICS_KEY); validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(traversalMetrics); }
printTraversalForm(traversal); checkResults(Arrays.asList("LET IT GROW", "UNCLE JOHNS BAND", "I KNOW YOU RIDER", "SHIP OF FOOLS", "GOOD LOVING"), traversal); final List<Map<String, Object>> list = new ArrayList<>(traversal.asAdmin().getSideEffects().<BulkSet<Map<String, Object>>>get("m")); assertEquals(5, list.size()); assertFalse(traversal.hasNext()); assertEquals("LET IT GROW", list.get(0).get("x")); assertEquals(276, list.get(0).get("y")); assertEquals(18L, list.get(4).get("z")); checkSideEffects(traversal.asAdmin().getSideEffects(), "m", BulkSet.class, "stash", BulkSet.class);
@Test @LoadGraphWith(MODERN) @IgnoreEngine(TraversalEngine.Type.COMPUTER) public void g_VX1X_out_sideEffectXincr_cX_name() { final Traversal<Vertex, String> traversal = get_g_VX1X_out_sideEffectXincr_cX_name(convertToVertexId("marko")); printTraversalForm(traversal); assert_g_v1_out_sideEffectXincr_cX_valueXnameX(traversal); assertEquals(new Integer(3), traversal.asAdmin().getSideEffects().<List<Integer>>get("c").get(0)); checkSideEffects(traversal.asAdmin().getSideEffects(), "c", ArrayList.class); }
@Override public <V> V get(final String key) throws IllegalArgumentException { return sideEffects.get(key); }
@Override public Set<String> keys() { return sideEffects.keys(); } }
@Override public <S> BinaryOperator<S> getSackMerger() { return this.sideEffects.getSackMerger(); }
@Override public void mergeInto(final TraversalSideEffects sideEffects) { this.sideEffects.mergeInto(sideEffects); }
public static Set<MemoryComputeKey> getMemoryComputeKeys(final Traversal.Admin<?, ?> traversal) { final Set<MemoryComputeKey> keys = new HashSet<>(); final TraversalSideEffects sideEffects = traversal.getSideEffects() instanceof MemoryTraversalSideEffects ? ((MemoryTraversalSideEffects) traversal.getSideEffects()).sideEffects : traversal.getSideEffects(); sideEffects.keys(). stream(). forEach(key -> keys.add(MemoryComputeKey.of(key, sideEffects.getReducer(key), true, false))); return keys; } }
private void processMemorySideEffects(final Memory memory) { // update the traversal side-effects with the state of the memory after the OLAP job execution final TraversalSideEffects sideEffects = this.getTraversal().getSideEffects(); for (final String key : memory.keys()) { if (sideEffects.exists(key)) { // halted traversers should never be propagated through sideEffects assert !key.equals(TraversalVertexProgram.HALTED_TRAVERSERS); sideEffects.set(key, memory.get(key)); } } }
@Override public Set<TraverserRequirement> getTraverserRequirements() { if (null == this.requirements) { // if (!this.locked) this.applyStrategies(); this.requirements = EnumSet.noneOf(TraverserRequirement.class); for (final Step<?, ?> step : this.getSteps()) { this.requirements.addAll(step.getRequirements()); } if (!this.requirements.contains(TraverserRequirement.LABELED_PATH) && TraversalHelper.hasLabels(this)) this.requirements.add(TraverserRequirement.LABELED_PATH); if (!this.getSideEffects().keys().isEmpty()) this.requirements.add(TraverserRequirement.SIDE_EFFECTS); if (null != this.getSideEffects().getSackInitialValue()) this.requirements.add(TraverserRequirement.SACK); if (this.requirements.contains(TraverserRequirement.ONE_BULK)) this.requirements.remove(TraverserRequirement.BULK); this.requirements = Collections.unmodifiableSet(this.requirements); } return this.requirements; }
@Test @LoadGraphWith(GRATEFUL) public void grateful_V_out_out_profileXmetricsX() { final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profileXmetricsX(); printTraversalForm(traversal); traversal.iterate(); final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().get(METRICS_KEY); validate_g_V_out_out_profile_grateful(traversalMetrics); }
@Test @LoadGraphWith(MODERN) public void shouldFilterOnIterate() { final Traversal<Vertex,String> traversal = g.V().out().out().<String>values("name").aggregate("x").iterate(); assertFalse(traversal.hasNext()); assertEquals(2, traversal.asAdmin().getSideEffects().<BulkSet>get("x").size()); assertTrue(traversal.asAdmin().getSideEffects().<BulkSet>get("x").contains("ripple")); assertTrue(traversal.asAdmin().getSideEffects().<BulkSet>get("x").contains("lop")); assertEquals(Traversal.Symbols.none, traversal.asAdmin().getBytecode().getStepInstructions().get(traversal.asAdmin().getBytecode().getStepInstructions().size()-1).getOperator()); }
metrics = (TraversalMetrics) t.asAdmin().getSideEffects().get("~metrics").get(); verifyMetrics(metrics.getMetrics(0), true, false); verifyMetrics(metrics.getMetrics(1), true, true); metrics = (TraversalMetrics) t.asAdmin().getSideEffects().get("~metrics").get(); verifyMetrics(metrics.getMetrics(0), true, false); verifyMetrics(metrics.getMetrics(1), true, true); metrics = (TraversalMetrics) t.asAdmin().getSideEffects().get("~metrics").get(); metrics = (TraversalMetrics) t.asAdmin().getSideEffects().get("~metrics").get();