@Test public void shouldFailToConsistentlySwapVerticesWithNoToStringImplementation() { // Given final List<Edge> edges = new ArrayList<>(); final List<Vertex2> sources = new ArrayList<>(); final List<Vertex2> destinations = new ArrayList<>(); // Create a load of edges with Vertex2 objects as source and destination. // Vertex2 has no toString method and does not implement Comparable, so // this should result in Edges being created with different sources and // destinations. for (int i = 0; i < 1000; i++) { final Vertex2 source = new Vertex2("1"); final Vertex2 destination = new Vertex2("2"); sources.add(source); destinations.add(destination); } for (int i = 0; i < 1000; i++) { final Edge edge = new Edge.Builder().group(TestGroups.EDGE) .directed(false) .source(sources.get(i)) .dest(destinations.get(i)) .build(); edges.add(edge); } // Then assertThat(edges.stream().map(Edge::getSource).distinct().count(), greaterThan(1L)); assertThat(edges.stream().map(Edge::getDestination).distinct().count(), greaterThan(1L)); }
@Test public void shouldAggregateElementUsingMockBinaryOperator() { // Given final String reference = "reference1"; final Integer valueResult = 3; final BinaryOperator<Integer> function = mock(BinaryOperator.class); given(function.apply(1, 2)).willReturn(valueResult); final ElementAggregator aggregator = new ElementAggregator.Builder() .select(reference) .execute(function) .build(); final Edge edge1 = new Edge.Builder() .property(reference, 1) .build(); final Edge edge2 = new Edge.Builder() .property(reference, 2) .build(); // When final Element result = aggregator.apply(edge1, edge2); // Then assertEquals(valueResult, result.getProperty(reference)); }
new Edge.Builder() .group(ElementGroup.REGION_CONTAINS_LOCATION) .source(region) .dest(location) .directed(true) .build(), new Edge.Builder() .group(ElementGroup.LOCATION_CONTAINS_ROAD) .source(location) .dest(road) .directed(true) .build(), new Edge.Builder() .group(ElementGroup.ROAD_HAS_JUNCTION) .source(road) .dest(junctionA) .directed(true) .build(), new Edge.Builder() .group(ElementGroup.ROAD_HAS_JUNCTION) .source(road) .dest(junctionB) .directed(true) .build(), new Edge.Builder()
new Edge.Builder() .group(ElementGroup.REGION_CONTAINS_LOCATION) .source(region) .dest(location) .directed(true) .build(), new Edge.Builder() .group(ElementGroup.LOCATION_CONTAINS_ROAD) .source(location) .dest(road) .directed(true) .build(), new Edge.Builder() .group(ElementGroup.ROAD_HAS_JUNCTION) .source(road) .dest(junctionA) .directed(true) .build(), new Edge.Builder() .group(ElementGroup.ROAD_HAS_JUNCTION) .source(road) .dest(junctionB) .directed(true) .build(), new Edge.Builder()
final Date midnight10th = LoadAndQuery8.getDate("10/01/17"); for (int i = 0; i < 1000; i++) { final Edge edge = new Edge.Builder() .group("red") .source("A") .dest("B" + i) .property("startDate", midnight9th) .property("endDate", midnight10th) .property("count", 1L) .build(); elements.add(edge); final Union union = Sketches.setOperationBuilder().buildUnion(); final Edge edge = new Edge.Builder() .group("red") .source("A") .dest("B" + i) .property("startDate", midnight10th) .property("endDate", midnight11th) .property("count", 1L) .build(); elements.add(edge); final Union union = Sketches.setOperationBuilder().buildUnion();
final Date midnight10th = getDate("10/01/17"); for (int i = 0; i < 1000; i++) { final Edge edge = new Edge.Builder() .group("red") .source("A") .dest("B" + i) .property("startDate", midnight9th) .property("endDate", midnight10th) .property("count", 1L) .build(); elements.add(edge); final Union union = Sketches.setOperationBuilder().buildUnion(); final Edge edge = new Edge.Builder() .group("red") .source("A") .dest("B" + i) .property("startDate", midnight10th) .property("endDate", midnight11th) .property("count", 1L) .build(); elements.add(edge); final Union union = Sketches.setOperationBuilder().buildUnion();
final ReservoirItemsUnion<String> reservoirStringsUnion = ReservoirItemsUnion.newInstance(20); reservoirStringsUnion.update(getRandomString()); final Edge edge = new Edge.Builder() .group("red") .source("A") .dest("B") .property("stringsSample", reservoirStringsUnion) .build(); elements.add(edge); final Edge edge = new Edge.Builder() .group("blue") .source("X") .dest("Y" + i) .build(); elements.add(edge); final ReservoirItemsUnion<String> reservoirStringsUnionX = ReservoirItemsUnion.newInstance(20);
final ReservoirItemsUnion<String> reservoirStringsUnion = ReservoirItemsUnion.getInstance(20); reservoirStringsUnion.update(getRandomString()); final Edge edge = new Edge.Builder() .group("red") .source("A") .dest("B") .property("stringsSample", reservoirStringsUnion) .build(); elements.add(edge); final Edge edge = new Edge.Builder() .group("blue") .source("X") .dest("Y" + i) .build(); elements.add(edge); final ReservoirItemsUnion<String> reservoirStringsUnionX = ReservoirItemsUnion.getInstance(20);
new Edge.Builder() .group("RoadHasJunction") .source(road) .dest(junctionA) .directed(true) .build(), new Edge.Builder() .group("RoadHasJunction") .source(road) .dest(junctionB) .directed(true) .build(), new Edge.Builder() .group("RoadUse") .source(junctionA) .dest(junctionB) .directed(true) .property("count", 1L) .property("startDate", startDate) .property("endDate", endDate) .build() );
new Edge.Builder() .group("RoadHasJunction") .source(road) .dest(junctionA) .directed(true) .build(), new Edge.Builder() .group("RoadHasJunction") .source(road) .dest(junctionB) .directed(true) .build(), new Edge.Builder() .group("RoadUse") .source(junctionA) .dest(junctionB) .directed(true) .property("count", 1L) .property("visibility", visibility) .build() );
new Edge.Builder() .group("RoadHasJunction") .source(road) .dest(junctionA) .directed(true) .build(), new Edge.Builder() .group("RoadHasJunction") .source(road) .dest(junctionB) .directed(true) .build(), new Edge.Builder() .group("RoadUse") .source(junctionA) .dest(junctionB) .directed(true) .property("count", 1L) .property("startDate", startDate) .property("endDate", endDate) .build() );
new Edge.Builder() .group("RoadHasJunction") .source(road) .dest(junctionA) .directed(true) .build(), new Edge.Builder() .group("RoadHasJunction") .source(road) .dest(junctionB) .directed(true) .build(), new Edge.Builder() .group("RoadUse") .source(junctionA) .dest(junctionB) .directed(true) .property("count", 1L) .build() );
@Override public Iterable<Element> _apply(final String line) { final List<Element> elements = new ArrayList<>(); for (int i = 0; i < 3; i++) { final TimestampSet timestampSet = new BoundedTimestampSet(CommonTimeUtil.TimeBucket.MINUTE, 25); timestampSet.add(START_OF_2017.plusSeconds(RANDOM.nextInt(SECONDS_IN_YEAR))); final Edge edge = new Edge.Builder() .group("red") .source("A") .dest("B") .property("boundedTimestampSet", timestampSet) .build(); elements.add(edge); } for (int i = 0; i < 1000; i++) { final TimestampSet timestampSet = new BoundedTimestampSet(CommonTimeUtil.TimeBucket.MINUTE, 25); timestampSet.add(START_OF_2017.plusSeconds(RANDOM.nextInt(SECONDS_IN_YEAR))); final Edge edge = new Edge.Builder() .group("red") .source("A") .dest("C") .property("boundedTimestampSet", timestampSet) .build(); elements.add(edge); } return elements; } }
@Override protected Element transform(final Object value) { try { final Class<?> valueClass; final byte[] valueJson; if (null == value) { valueClass = Object.class; valueJson = null; } else { valueClass = value.getClass(); valueJson = JSONSerialiser.serialise(value); } return new Edge.Builder() .group("result") .source(jobId) .dest(key) .directed(true) .property("opAuths", requiredOpAuths) .property("timestamp", timestamp) .property("visibility", visibility) .property("resultClass", valueClass.getName()) .property("result", valueJson) .build(); } catch (final SerialisationException e) { throw new RuntimeException("Unable to serialise results to json", e); } } };
@Override public Element _apply(final Object domainObject) { if (domainObject instanceof DomainObject1) { final DomainObject1 obj1 = (DomainObject1) domainObject; return new Entity.Builder() .group("entity") .vertex(obj1.a) .property("count", obj1.c) .build(); } else if (domainObject instanceof DomainObject2) { final DomainObject2 obj1 = (DomainObject2) domainObject; return new Edge.Builder() .group("edge") .source(obj1.a) .dest(obj1.b) .directed(true) .property("count", obj1.c) .build(); } else { throw new IllegalArgumentException("Unsupported domain object"); } } }
@Override public Element _apply(final String line) { final String[] t = line.split(","); final Element element; if (t.length > 2) { element = new Edge.Builder() .group("edge") .source(Integer.parseInt(t[0])) .dest(Integer.parseInt(t[1])) .directed(true) .property("count", Integer.parseInt(t[2])) .build(); } else { element = new Entity.Builder() .group("entity") .vertex(Integer.parseInt(t[0])) .property("count", Integer.parseInt(t[1])) .build(); } return element; } }
@Override public Element getElement(final Object domainObject) { if (domainObject instanceof DomainObject1) { final DomainObject1 obj1 = (DomainObject1) domainObject; return new Entity.Builder() .group("entity") .vertex(obj1.a) .property("count", obj1.c) .build(); } else if (domainObject instanceof DomainObject2) { final DomainObject2 obj1 = (DomainObject2) domainObject; return new Edge.Builder() .group("edge") .source(obj1.a) .dest(obj1.b) .directed(true) .property("count", obj1.c) .build(); } else { throw new IllegalArgumentException("Unsupported domain object"); } }
@Override public Element getElement(final String line) { final String[] t = line.split(","); final Edge.Builder edgeBuilder = new Edge.Builder() .group("data") .source(t[0]) .dest(t[1]) .directed(true) .property("visibility", t[3]) .property("count", 1L); final Date startDate; try { startDate = DateUtils.truncate(new SimpleDateFormat("dd/MM/yyyy HH:mm").parse(t[2]), Calendar.DAY_OF_MONTH); edgeBuilder .property("startDate", startDate) .property("endDate", DateUtils.addDays(startDate, 1)); } catch (ParseException e) { throw new IllegalArgumentException("Unable to parse date", e); } return edgeBuilder.build(); }