@Test(expected = EsHadoopParsingException.class) public void testScrollWithParsingValueException() throws IOException { InputStream stream = getClass().getResourceAsStream(mappingData("numbers-as-strings")); MappingSet fl = FieldParser.parseTypelessMappings(new ObjectMapper().readValue(stream, Map.class)); ScrollReaderConfigBuilder scrollCfg = getScrollCfg() .setResolvedMapping(fl.getResolvedView()) .setReturnRawJson(false); // parsing the doc (don't just read it as json) yields parsing exception reader = new ScrollReader(scrollCfg); stream = getClass().getResourceAsStream(scrollData("numbers-as-strings")); List<Object[]> read = reader.read(stream).getHits(); } }
@Test public void testScrollWithSource() throws IOException { InputStream stream = getClass().getResourceAsStream(scrollData("source")); List<Object[]> read = reader.read(stream).getHits(); assertEquals(3, read.size()); Object[] objects = read.get(0); String doc = objects[1].toString(); Map value = mapper.readValue(doc, Map.class); assertEquals("source", value.get("source")); if (readMetadata) { assertTrue(value.containsKey(metadataField)); assertEquals("23hrGo7VRCyao8lB9Uu5Kw", ((Map) value.get(metadataField)).get("_id")); } }
public ScrollReaderJsonTest(boolean readMetadata, String metadataField, boolean readAsJson) { this.readMetadata = readMetadata; this.readAsJson = readAsJson; this.metadataField = metadataField; this.mapper = new ObjectMapper(); reader = new ScrollReader(getScrollCfg()); }
@Test public void testScrollWithMatchedQueries() throws IOException { InputStream stream = getClass().getResourceAsStream(scrollData("matched-queries")); List<Object[]> read = reader.read(stream).getHits(); assertEquals(3, read.size()); Object[] objects = read.get(1); String doc = objects[1].toString(); Map value = mapper.readValue(doc, Map.class); assertTrue(value.containsKey("links")); if (readMetadata) { assertTrue(value.containsKey(metadataField)); assertEquals(Arrays.asList("myquery"), ((Map) value.get(metadataField)).get("matched_queries")); } }
@Test public void testScrollWithNestedFields() throws IOException { InputStream stream = getClass().getResourceAsStream(mappingData("source")); MappingSet fl = parseTypelessMappings(new ObjectMapper().readValue(stream, Map.class)); ScrollReaderConfigBuilder scrollCfg = getScrollCfg().setResolvedMapping(fl.getResolvedView()); reader = new ScrollReader(scrollCfg); stream = getClass().getResourceAsStream(scrollData("source")); List<Object[]> read = reader.read(stream).getHits(); assertEquals(3, read.size()); Object[] objects = read.get(2); String doc = objects[1].toString(); Map value = mapper.readValue(doc, Map.class); assertTrue(value.containsKey("links")); // the raw json is returned which ignored mapping assertEquals("125", ((Map) value.get("links")).get("number")); }
@Test public void testScrollWithFields() throws IOException { InputStream stream = getClass().getResourceAsStream(scrollData("fields")); List<Object[]> read = reader.read(stream).getHits(); assertEquals(3, read.size()); Object[] objects = read.get(0); String doc = objects[1].toString(); Map value = mapper.readValue(doc, Map.class); assertTrue(value.containsKey("fields")); if (readMetadata) { assertTrue(value.containsKey(metadataField)); assertEquals("23hrGo7VRCyao8lB9Uu5Kw", ((Map) value.get(metadataField)).get("_id")); } }
@Test public void testScrollWithJoinField() throws Exception { Map value = new ObjectMapper().readValue(getClass().getResourceAsStream(mappingData("join")), Map.class); MappingSet mappings = parseTypelessMappings(value); ScrollReaderConfigBuilder scrollCfg = getScrollCfg().setResolvedMapping(mappings.getResolvedView()).setIgnoreUnmappedFields(false); ScrollReader myReader = new ScrollReader(scrollCfg); InputStream stream = getClass().getResourceAsStream(scrollData("join")); List<Object[]> read = myReader.read(stream).getHits(); assertEquals(7, read.size());
@Test public void testScrollWithoutSource() throws IOException { InputStream stream = getClass().getResourceAsStream(scrollData("empty-source")); List<Object[]> read = reader.read(stream).getHits(); assertEquals(2, read.size()); Object[] objects = read.get(1); String doc = objects[1].toString(); Map value = mapper.readValue(doc, Map.class); if (!readMetadata) { assertTrue(value.isEmpty()); } else { assertTrue(value.containsKey(metadataField)); assertEquals("PTi2NxdDRxmXhv6S8DgIeQ", ((Map) value.get(metadataField)).get("_id")); } }
@Test public void testScrollMultiValueList() throws IOException { InputStream stream = getClass().getResourceAsStream(scrollData("list")); List<Object[]> read = reader.read(stream).getHits(); assertEquals(1, read.size()); Object[] objects = read.get(0); String doc = objects[1].toString(); Map value = mapper.readValue(doc, Map.class); assertTrue(value.containsKey("name")); List links = (List) value.get("links"); assertTrue(links.contains(null)); if (readMetadata) { assertTrue(value.containsKey(metadataField)); assertEquals("aqOqDwYnTA29J1gfy3m8_Q", ((Map) value.get(metadataField)).get("_id")); } }