/** * To be overridden by subclasses that need a different query factory. */ protected QueryFactory getQueryFactory() { return Search.getQueryFactory((Cache) getCacheForQuery()); }
@Test public void testBroadcastNativeInfinispanFuzzyQuery() { String q = String.format("FROM %s p where p.name:'nome'~2", Person.class.getName()); Query query = Search.getQueryFactory(cacheAMachine1).create(q, IndexedQueryMode.BROADCAST); assertEquals(10, query.list().size()); }
@Test public void testNonIndexedBroadcastInfinispanQuery() { QueryFactory queryFactory = Search.getQueryFactory(cacheAMachine2); Query slowQuery = queryFactory.create("FROM " + Person.class.getName() + " WHERE nonIndexedField LIKE 'na%'", IndexedQueryMode.BROADCAST); assertEquals(NUM_ENTRIES, slowQuery.list().size()); }
@Test public void testBroadcastNativeInfinispanHybridQuery() { String q = "FROM " + Person.class.getName() + " where age >= 40 and nonIndexedField = 'na'"; Query query = Search.getQueryFactory(cacheAMachine1).create(q, IndexedQueryMode.BROADCAST); assertEquals(10, query.list().size()); }
@Test public void testBroadcastAggregatedInfinispanQuery() { QueryFactory queryFactory = Search.getQueryFactory(cacheAMachine2); Query hybridQuery = queryFactory.create("select name FROM " + Person.class.getName() + " WHERE name : 'na*' group by name", IndexedQueryMode.BROADCAST); assertEquals(NUM_ENTRIES, hybridQuery.list().size()); }
/** * Test querying for entities defined as inner classes. */ public void testQueryInnerClass() throws Exception { QueryFactory queryFactory = Search.getQueryFactory(cache); Query query = queryFactory.from(Person.class).build(); List<Person> matches = query.list(); assertEquals(1, matches.size()); }
@Test public void testBroadcastNativeInfinispanMatchAllQuery() { String q = String.format("FROM %s", Person.class.getName()); Query partialResultQuery = Search.getQueryFactory(cacheAMachine1).create(q); Query fullResultQuery = Search.getQueryFactory(cacheAMachine2).create(q, IndexedQueryMode.BROADCAST); int docsInMachine1 = countLocalIndex(cacheAMachine1); assertEquals(docsInMachine1, partialResultQuery.list().size()); assertEquals(NUM_ENTRIES, fullResultQuery.list().size()); }
@Test public void testQuery() throws Exception { cache.put("1", new Person("Donald", "MAGA", 78)); assertEquals(getIndexDocs(), 1); CacheQuery<Object> queryFromLucene = createCacheQuery(cache, "name", "Donald"); assertEquals(1, queryFromLucene.list().size()); Query queryFromIckle = Search.getQueryFactory(cache) .create("From org.infinispan.query.test.Person p where p.name:'Donald'"); assertEquals(1, queryFromIckle.list().size()); }
@Test public void testBroadcastSortedInfinispanQuery() { QueryFactory queryFactory = Search.getQueryFactory(cacheAMachine1); Query sortedQuery = queryFactory.create("FROM " + Person.class.getName() + " p order by p.age desc", IndexedQueryMode.BROADCAST); List<Person> results = sortedQuery.list(); assertEquals(NUM_ENTRIES, results.size()); assertEquals(NUM_ENTRIES - 1, results.iterator().next().getAge()); StaticTestingErrorHandler.assertAllGood(cacheAMachine1, cacheAMachine2); }
/** * Test querying for a field - direct access to field. */ public void testField() throws Exception { QueryFactory queryFactory = Search.getQueryFactory(cache); Query query = queryFactory.from(Person.class) .having("driverLicenseId").eq("ZZ3141592") .build(); List<Person> matches = query.list(); assertEquals(1, matches.size()); }
/** * Test querying for an inherited indexed field - interface method implemented in class. */ public void testInheritedField3() throws Exception { QueryFactory queryFactory = Search.getQueryFactory(cache); Query query = queryFactory.from(Person.class) .having("gender").eq("M") .build(); List<Person> matches = query.list(); assertEquals(1, matches.size()); }
/** * Test querying for an inherited indexed field - direct inherited field access. */ public void testInheritedField() throws Exception { QueryFactory queryFactory = Search.getQueryFactory(cache); Query query = queryFactory.from(Person.class) .having("age").lte(52) .build(); List<Person> matches = query.list(); assertEquals(1, matches.size()); }
private void executeQueries() { String q = getQuery(); caches().forEach(c -> { Query allNodesQuery = Search.getQueryFactory(c).create(q, getIndexedQueryMode()); assertAllNodesQueryResults(allNodesQuery.getResultSize()); }); Query singleNodeQuery = Search.getQueryFactory(cache(0)).create(q); assertSingleNodeQueryResults(singleNodeQuery.list().size()); }
private Query makeQuery(Cache c) { QueryFactory qf = Search.getQueryFactory(c); return qf.from(Person.class) .having("age").gte(18) .build(); } }
private Query makeQuery(Cache c) { QueryFactory qf = Search.getQueryFactory(c); return qf.from(Person.class) .having("age").gte(18) .build(); }
@Test(expectedExceptions = ParsingException.class, expectedExceptionsMessageRegExp = "ISPN028523: Filters cannot use full-text searches") public void testDisallowFullTextQuery() { Query query = Search.getQueryFactory(cache()).create("from org.infinispan.query.test.Person where name : 'john'"); cache().addListener(new EntryListener(), Search.makeFilter(query), null); }
/** * Fulltext continuous queries are not allowed. */ @Test(expectedExceptions = ParsingException.class, expectedExceptionsMessageRegExp = ".*ISPN028521:.*") public void testDisallowFullTextQuery() { Query query = Search.getQueryFactory(cache()).create("from org.infinispan.query.test.Person where name : 'john'"); ContinuousQuery<Object, Object> cq = Search.getContinuousQuery(cache()); cq.addContinuousQueryListener(query, new CallCountingCQResultListener<>()); }
/** * Using grouping and aggregation with continuous query is not allowed. */ @Test(expectedExceptions = ParsingException.class, expectedExceptionsMessageRegExp = ".*ISPN028509:.*") public void testDisallowGroupingAndAggregation() { Query query = Search.getQueryFactory(cache()).from(Person.class) .select(max("age")) .having("age").gte(20) .build(); ContinuousQuery<Object, Object> cq = Search.getContinuousQuery(cache()); cq.addContinuousQueryListener(query, new CallCountingCQResultListener<>()); }
/** * Using grouping and aggregation with event filters is not allowed. */ @Test(expectedExceptions = ParsingException.class, expectedExceptionsMessageRegExp = ".*ISPN028509:.*") public void testDisallowGroupingAndAggregation() { Query query = Search.getQueryFactory(cache(0)).from(Person.class) .having("age").gte(20) .select(max("age")) .build(); cache(0).addListener(new EntryListener(), Search.makeFilter(query), null); }
protected CallCountingCQResultListener<Object, Object> createContinuousQuery() { QueryFactory qf = Search.getQueryFactory(cache(0)); Query query = qf.from(Person.class) .having("age").lte(30) .build(); CallCountingCQResultListener<Object, Object> listener = new CallCountingCQResultListener<>(); ContinuousQuery<Object, Object> cq = Search.getContinuousQuery(cache(0)); cq.addContinuousQueryListener(query, listener); return listener; }