Repository: ignite Updated Branches: refs/heads/ignite-1192 2fded40c5 -> f4c90c08b
IGNITE-1192: added more tests Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f4c90c08 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f4c90c08 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f4c90c08 Branch: refs/heads/ignite-1192 Commit: f4c90c08bb01ac8bb852ebc73177cafa6b1eb9dd Parents: 2fded40 Author: Denis Magda <[email protected]> Authored: Tue Apr 11 17:55:07 2017 -0700 Committer: Denis Magda <[email protected]> Committed: Tue Apr 11 17:55:07 2017 -0700 ---------------------------------------------------------------------- .../IgniteSpringDataCrudSelfTest.java | 233 +++++++++++++++ .../IgniteSpringDataQueriesSelfTest.java | 291 +++++++++++++++++++ .../springdata/IgniteSpringDataSelfTest.java | 286 ------------------ .../misc/ApplicationConfiguration.java | 2 +- .../ignite/springdata/misc/FirstRepository.java | 92 ------ .../apache/ignite/springdata/misc/Person.java | 22 ++ .../springdata/misc/PersonRepository.java | 92 ++++++ .../springdata/misc/PersonSecondRepository.java | 40 +++ .../springdata/misc/SecondRepository.java | 40 --- .../testsuites/IgniteSpringDataTestSuite.java | 6 +- 10 files changed, 683 insertions(+), 421 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/f4c90c08/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataCrudSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataCrudSelfTest.java b/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataCrudSelfTest.java new file mode 100644 index 0000000..14d6844 --- /dev/null +++ b/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataCrudSelfTest.java @@ -0,0 +1,233 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.springdata; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.TreeMap; +import java.util.TreeSet; +import org.apache.ignite.springdata.misc.ApplicationConfiguration; +import org.apache.ignite.springdata.misc.Person; +import org.apache.ignite.springdata.misc.PersonRepository; +import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +/** + * + */ +public class IgniteSpringDataCrudSelfTest extends GridCommonAbstractTest { + /** Repository. */ + private static PersonRepository repo; + + /** Context. */ + private static AnnotationConfigApplicationContext ctx; + + /** Number of entries to store */ + private static int CACHE_SIZE = 1000; + + /** {@inheritDoc} */ + @Override protected void beforeTestsStarted() throws Exception { + super.beforeTestsStarted(); + + ctx = new AnnotationConfigApplicationContext(); + + ctx.register(ApplicationConfiguration.class); + + ctx.refresh(); + + repo = ctx.getBean(PersonRepository.class); + } + + /** {@inheritDoc} */ + @Override protected void beforeTest() throws Exception { + super.beforeTest(); + + fillInRepository(); + + assertEquals(CACHE_SIZE, repo.count()); + } + + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + repo.deleteAll(); + + assertEquals(0, repo.count()); + + super.afterTest(); + } + + /** {@inheritDoc} */ + @Override protected void afterTestsStopped() throws Exception { + super.afterTestsStopped(); + + ctx.destroy(); + } + + /** + * + */ + public void testPutGet() { + Person person = new Person("some_name", "some_surname"); + + int id = CACHE_SIZE + 1; + + assertEquals(person, repo.save(id, person)); + + assertTrue(repo.exists(id)); + + assertEquals(person, repo.findOne(id)); + + try { + repo.save(person); + + fail("Managed to save a Person without ID"); + } + catch (UnsupportedOperationException e) { + //excepted + } + } + + /** + * + */ + public void testPutAllGetAll() { + LinkedHashMap<Integer, Person> map = new LinkedHashMap<>(); + + for (int i = CACHE_SIZE; i < CACHE_SIZE + 50; i++) + map.put(i, new Person("some_name" + i, "some_surname" + i)); + + Iterator<Person> persons = repo.save(map).iterator(); + + assertEquals(CACHE_SIZE + 50, repo.count()); + + Iterator<Person> origPersons = map.values().iterator(); + + while (persons.hasNext()) + assertEquals(origPersons.next(), persons.next()); + + try { + repo.save(map.values()); + + fail("Managed to save a list of Persons with ids"); + } + catch (UnsupportedOperationException e) { + //expected + } + + persons = repo.findAll(map.keySet()).iterator(); + + int counter = 0; + + while (persons.hasNext()) { + persons.next(); + counter++; + } + + assertEquals(map.size(), counter); + } + + /** + * + */ + public void testGetAll() { + assertEquals(CACHE_SIZE, repo.count()); + + Iterator<Person> persons = repo.findAll().iterator(); + + int counter = 0; + + while (persons.hasNext()) { + persons.next(); + counter++; + } + + assertEquals(repo.count(), counter); + } + + /** + * + */ + public void testDelete() { + assertEquals(CACHE_SIZE, repo.count()); + + repo.delete(0); + + assertEquals(CACHE_SIZE - 1, repo.count()); + assertNull(repo.findOne(0)); + + try { + repo.delete(new Person("", "")); + + fail("Managed to delete a Person without id"); + } + catch (UnsupportedOperationException e) { + //expected + } + } + + /** + * + */ + public void testDeleteSet() { + assertEquals(CACHE_SIZE, repo.count()); + + TreeSet<Integer> ids = new TreeSet<>(); + + for (int i = 0; i < CACHE_SIZE / 2; i++) + ids.add(i); + + repo.deleteAll(ids); + + assertEquals(CACHE_SIZE / 2, repo.count()); + + try { + ArrayList<Person> persons = new ArrayList<>(); + + for (int i = 0; i < 3; i++) + persons.add(new Person(String.valueOf(i), String.valueOf(i))); + + repo.delete(persons); + + fail("Managed to delete Persons without ids"); + } + catch (UnsupportedOperationException e) { + //expected + } + } + + /** + * + */ + public void testDeleteAll() { + assertEquals(CACHE_SIZE, repo.count()); + + repo.deleteAll(); + + assertEquals(0, repo.count()); + } + + /** + * + */ + private void fillInRepository() { + for (int i = 0; i < CACHE_SIZE; i++) + repo.save(i, new Person("person" + Integer.toHexString(i), + "lastName" + Integer.toHexString((i + 16) % 256))); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/f4c90c08/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataQueriesSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataQueriesSelfTest.java b/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataQueriesSelfTest.java new file mode 100644 index 0000000..40b7df2 --- /dev/null +++ b/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataQueriesSelfTest.java @@ -0,0 +1,291 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.springdata; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import javax.cache.Cache; +import org.apache.ignite.springdata.misc.ApplicationConfiguration; +import org.apache.ignite.springdata.misc.PersonRepository; +import org.apache.ignite.springdata.misc.Person; +import org.apache.ignite.springdata.misc.PersonSecondRepository; +import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Slice; +import org.springframework.data.domain.Sort; + +/** + * + */ +public class IgniteSpringDataQueriesSelfTest extends GridCommonAbstractTest { + /** Repository. */ + private static PersonRepository repo; + + /** Repository 2. */ + private static PersonSecondRepository repo2; + + /** Context. */ + private static AnnotationConfigApplicationContext ctx; + + /** Number of entries to store */ + private static int CACHE_SIZE = 1000; + + @Override protected void beforeTestsStarted() throws Exception { + super.beforeTestsStarted(); + + ctx = new AnnotationConfigApplicationContext(); + + ctx.register(ApplicationConfiguration.class); + + ctx.refresh(); + + repo = ctx.getBean(PersonRepository.class); + repo2 = ctx.getBean(PersonSecondRepository.class); + + for (int i = 0; i < CACHE_SIZE; i++) + repo.save(i, new Person("person" + Integer.toHexString(i), + "lastName" + Integer.toHexString((i + 16) % 256))); + } + + @Override protected void afterTestsStopped() throws Exception { + ctx.destroy(); + + super.afterTestsStopped(); + } + + /** */ + public void testExplicitQuery() { + List<Person> persons = repo.simpleQuery("person4a"); + + assertFalse(persons.isEmpty()); + + for (Person person : persons) + assertEquals("person4a", person.getFirstName()); + } + + /** */ + public void testEqualsPart() { + List<Person> persons = repo.findByFirstName("person4e"); + + assertFalse(persons.isEmpty()); + + for (Person person : persons) + assertEquals("person4e", person.getFirstName()); + } + + /** */ + public void testContainingPart() { + List<Person> persons = repo.findByFirstNameContaining("person4"); + + assertFalse(persons.isEmpty()); + + for (Person person : persons) + assertTrue(person.getFirstName().startsWith("person4")); + } + + /** */ + public void testTopPart() { + Iterable<Person> top = repo.findTopByFirstNameContaining("person4"); + + Iterator<Person> iter = top.iterator(); + + Person person = iter.next(); + + assertFalse(iter.hasNext()); + + assertTrue(person.getFirstName().startsWith("person4")); + } + + /** */ + public void testLikeAndLimit() { + Iterable<Person> like = repo.findFirst10ByFirstNameLike("person"); + + int cnt = 0; + + for (Person next : like) { + assertTrue(next.getFirstName().contains("person")); + + cnt++; + } + + assertEquals(10, cnt); + } + + /** */ + public void testCount() { + int cnt = repo.countByFirstNameLike("person"); + + assertEquals(1000, cnt); + } + + /** */ + public void testCount2() { + int cnt = repo.countByFirstNameLike("person4"); + + assertTrue(cnt < 1000); + } + + /** */ + public void testPageable() { + PageRequest pageable = new PageRequest(1, 5, Sort.Direction.DESC, "firstName"); + + HashSet<String> firstNames = new HashSet<>(); + + List<Person> pageable1 = repo.findByFirstNameRegex("^[a-z]+$", pageable); + + assertEquals(5, pageable1.size()); + + for (Person person : pageable1) { + firstNames.add(person.getFirstName()); + assertTrue(person.getFirstName().matches("^[a-z]+$")); + } + + List<Person> pageable2 = repo.findByFirstNameRegex("^[a-z]+$", pageable.next()); + + assertEquals(5, pageable2.size()); + + for (Person person : pageable2) { + firstNames.add(person.getFirstName()); + assertTrue(person.getFirstName().matches("^[a-z]+$")); + } + + assertEquals(10, firstNames.size()); + } + + /** */ + public void testAndAndOr() { + int cntAnd = repo.countByFirstNameLikeAndSecondNameLike("person1", "lastName1"); + + int cntOr = repo.countByFirstNameStartingWithOrSecondNameStartingWith("person1", "lastName1"); + + assertTrue(cntAnd <= cntOr); + } + + /** */ + public void testQueryWithSort() { + List<Person> persons = repo.queryWithSort("^[a-z]+$", new Sort(Sort.Direction.DESC, "secondName")); + + Person previous = persons.get(0); + + for (Person person : persons) { + assertTrue(person.getSecondName().compareTo(previous.getSecondName()) <= 0); + + assertTrue(person.getFirstName().matches("^[a-z]+$")); + + previous = person; + } + } + + /** */ + public void testQueryWithPaging() { + List<Person> persons = repo.queryWithPageable("^[a-z]+$", new PageRequest(1, 7, Sort.Direction.DESC, "secondName")); + + assertEquals(7, persons.size()); + + Person previous = persons.get(0); + + for (Person person : persons) { + assertTrue(person.getSecondName().compareTo(previous.getSecondName()) <= 0); + + assertTrue(person.getFirstName().matches("^[a-z]+$")); + + previous = person; + } + } + + /** */ + public void testQueryFields() { + List<String> persons = repo.selectField("^[a-z]+$", new PageRequest(1, 7, Sort.Direction.DESC, "secondName")); + + assertEquals(7, persons.size()); + } + + /** */ + public void testFindCacheEntries() { + List<Cache.Entry<Integer, Person>> cacheEntries = repo.findBySecondNameLike("stName1"); + + assertFalse(cacheEntries.isEmpty()); + + for (Cache.Entry<Integer, Person> entry : cacheEntries) + assertTrue(entry.getValue().getSecondName().contains("stName1")); + } + + /** */ + public void testFindOneCacheEntry() { + Cache.Entry<Integer, Person> cacheEntry = repo.findTopBySecondNameLike("tName18"); + + assertNotNull(cacheEntry); + + assertTrue(cacheEntry.getValue().getSecondName().contains("tName18")); + } + + /** */ + public void testFindOneValue() { + Person person = repo.findTopBySecondNameStartingWith("lastName18"); + + assertNotNull(person); + + assertTrue(person.getSecondName().startsWith("lastName18")); + } + + /** */ + public void testSelectSeveralFields() { + List<List> lists = repo.selectSeveralField("^[a-z]+$", new PageRequest(2, 6)); + + assertEquals(6, lists.size()); + + for (List list : lists) { + assertEquals(2, list.size()); + + assertTrue(list.get(0) instanceof Integer); + } + } + + /** */ + public void testCountQuery() { + int cnt = repo.countQuery(".*"); + + assertEquals(256, cnt); + } + + /** */ + public void testSliceOfCacheEntries() { + Slice<Cache.Entry<Integer, Person>> slice = repo2.findBySecondNameIsNot("lastName18", new PageRequest(3, 4)); + + assertEquals(4, slice.getSize()); + + for (Cache.Entry<Integer, Person> entry : slice) + assertFalse("lastName18".equals(entry.getValue().getSecondName())); + } + + /** */ + public void testSliceOfLists() { + Slice<List> lists = repo2.querySliceOfList("^[a-z]+$", new PageRequest(0, 3)); + + assertEquals(3, lists.getSize()); + + for (List list : lists) { + assertEquals(2, list.size()); + + assertTrue(list.get(0) instanceof Integer); + } + } +} + http://git-wip-us.apache.org/repos/asf/ignite/blob/f4c90c08/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataSelfTest.java b/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataSelfTest.java deleted file mode 100644 index a097c29..0000000 --- a/modules/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataSelfTest.java +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.springdata; - -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import javax.cache.Cache; -import org.apache.ignite.springdata.misc.FirstRepository; -import org.apache.ignite.springdata.misc.Person; -import org.apache.ignite.springdata.misc.SecondRepository; -import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Slice; -import org.springframework.data.domain.Sort; - -/** - * - */ -public class IgniteSpringDataSelfTest extends GridCommonAbstractTest { - /** Repository. */ - private static FirstRepository repo; - - /** Repository 2. */ - private static SecondRepository repo2; - - /** Context. */ - private static AnnotationConfigApplicationContext ctx; - - @Override protected void beforeTestsStarted() throws Exception { - super.beforeTestsStarted(); - - ctx = new AnnotationConfigApplicationContext(); - - ctx.scan("org.apache.ignite.springdata"); - ctx.refresh(); - - repo = ctx.getBean(FirstRepository.class); - repo2 = ctx.getBean(SecondRepository.class); - - for (int i = 0; i < 1000; i++) - repo.save(i, new Person("person" + Integer.toHexString(i), - "lastName" + Integer.toHexString((i + 16) % 256))); - } - - @Override protected void afterTestsStopped() throws Exception { - ctx.destroy(); - - super.afterTestsStopped(); - } - - /** */ - public void testExplicitQuery() { - List<Person> persons = repo.simpleQuery("person4a"); - - assertFalse(persons.isEmpty()); - - for (Person person : persons) - assertEquals("person4a", person.getFirstName()); - } - - /** */ - public void testEqualsPart() { - List<Person> persons = repo.findByFirstName("person4e"); - - assertFalse(persons.isEmpty()); - - for (Person person : persons) - assertEquals("person4e", person.getFirstName()); - } - - /** */ - public void testContainingPart() { - List<Person> persons = repo.findByFirstNameContaining("person4"); - - assertFalse(persons.isEmpty()); - - for (Person person : persons) - assertTrue(person.getFirstName().startsWith("person4")); - } - - /** */ - public void testTopPart() { - Iterable<Person> top = repo.findTopByFirstNameContaining("person4"); - - Iterator<Person> iter = top.iterator(); - - Person person = iter.next(); - - assertFalse(iter.hasNext()); - - assertTrue(person.getFirstName().startsWith("person4")); - } - - /** */ - public void testLikeAndLimit() { - Iterable<Person> like = repo.findFirst10ByFirstNameLike("person"); - - int cnt = 0; - - for (Person next : like) { - assertTrue(next.getFirstName().contains("person")); - - cnt++; - } - - assertEquals(10, cnt); - } - - /** */ - public void testCount() { - int cnt = repo.countByFirstNameLike("person"); - - assertEquals(1000, cnt); - } - - /** */ - public void testCount2() { - int cnt = repo.countByFirstNameLike("person4"); - - assertTrue(cnt < 1000); - } - - /** */ - public void testPageable() { - PageRequest pageable = new PageRequest(1, 5, Sort.Direction.DESC, "firstName"); - - HashSet<String> firstNames = new HashSet<>(); - - List<Person> pageable1 = repo.findByFirstNameRegex("^[a-z]+$", pageable); - - assertEquals(5, pageable1.size()); - - for (Person person : pageable1) { - firstNames.add(person.getFirstName()); - assertTrue(person.getFirstName().matches("^[a-z]+$")); - } - - List<Person> pageable2 = repo.findByFirstNameRegex("^[a-z]+$", pageable.next()); - - assertEquals(5, pageable2.size()); - - for (Person person : pageable2) { - firstNames.add(person.getFirstName()); - assertTrue(person.getFirstName().matches("^[a-z]+$")); - } - - assertEquals(10, firstNames.size()); - } - - /** */ - public void testAndAndOr() { - int cntAnd = repo.countByFirstNameLikeAndSecondNameLike("person1", "lastName1"); - - int cntOr = repo.countByFirstNameStartingWithOrSecondNameStartingWith("person1", "lastName1"); - - assertTrue(cntAnd <= cntOr); - } - - /** */ - public void testQueryWithSort() { - List<Person> persons = repo.queryWithSort("^[a-z]+$", new Sort(Sort.Direction.DESC, "secondName")); - - Person previous = persons.get(0); - - for (Person person : persons) { - assertTrue(person.getSecondName().compareTo(previous.getSecondName()) <= 0); - - assertTrue(person.getFirstName().matches("^[a-z]+$")); - - previous = person; - } - } - - /** */ - public void testQueryWithPaging() { - List<Person> persons = repo.queryWithPageable("^[a-z]+$", new PageRequest(1, 7, Sort.Direction.DESC, "secondName")); - - assertEquals(7, persons.size()); - - Person previous = persons.get(0); - - for (Person person : persons) { - assertTrue(person.getSecondName().compareTo(previous.getSecondName()) <= 0); - - assertTrue(person.getFirstName().matches("^[a-z]+$")); - - previous = person; - } - } - - /** */ - public void testQueryFields() { - List<String> persons = repo.selectField("^[a-z]+$", new PageRequest(1, 7, Sort.Direction.DESC, "secondName")); - - assertEquals(7, persons.size()); - } - - /** */ - public void testFindCacheEntries() { - List<Cache.Entry<Integer, Person>> cacheEntries = repo.findBySecondNameLike("stName1"); - - assertFalse(cacheEntries.isEmpty()); - - for (Cache.Entry<Integer, Person> entry : cacheEntries) - assertTrue(entry.getValue().getSecondName().contains("stName1")); - } - - /** */ - public void testFindOneCacheEntry() { - Cache.Entry<Integer, Person> cacheEntry = repo.findTopBySecondNameLike("tName18"); - - assertNotNull(cacheEntry); - - assertTrue(cacheEntry.getValue().getSecondName().contains("tName18")); - } - - /** */ - public void testFindOneValue() { - Person person = repo.findTopBySecondNameStartingWith("lastName18"); - - assertNotNull(person); - - assertTrue(person.getSecondName().startsWith("lastName18")); - } - - /** */ - public void testSelectSeveralFields() { - List<List> lists = repo.selectSeveralField("^[a-z]+$", new PageRequest(2, 6)); - - assertEquals(6, lists.size()); - - for (List list : lists) { - assertEquals(2, list.size()); - - assertTrue(list.get(0) instanceof Integer); - } - } - - /** */ - public void testCountQuery() { - int cnt = repo.countQuery(".*"); - - assertEquals(256, cnt); - } - - /** */ - public void testSliceOfCacheEntries() { - Slice<Cache.Entry<Integer, Person>> slice = repo2.findBySecondNameIsNot("lastName18", new PageRequest(3, 4)); - - assertEquals(4, slice.getSize()); - - for (Cache.Entry<Integer, Person> entry : slice) - assertFalse("lastName18".equals(entry.getValue().getSecondName())); - } - - /** */ - public void testSliceOfLists() { - Slice<List> lists = repo2.querySliceOfList("^[a-z]+$", new PageRequest(0, 3)); - - assertEquals(3, lists.getSize()); - - for (List list : lists) { - assertEquals(2, list.size()); - - assertTrue(list.get(0) instanceof Integer); - } - } -} - http://git-wip-us.apache.org/repos/asf/ignite/blob/f4c90c08/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/ApplicationConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/ApplicationConfiguration.java b/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/ApplicationConfiguration.java index fb614ae..731e6d9 100644 --- a/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/ApplicationConfiguration.java +++ b/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/ApplicationConfiguration.java @@ -35,7 +35,7 @@ public class ApplicationConfiguration { public Ignite igniteInstance() { IgniteConfiguration cfg = new IgniteConfiguration(); - CacheConfiguration ccfg = new CacheConfiguration("cache"); + CacheConfiguration ccfg = new CacheConfiguration("PersonCache"); ccfg.setIndexedTypes(Integer.class, Person.class); http://git-wip-us.apache.org/repos/asf/ignite/blob/f4c90c08/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/FirstRepository.java ---------------------------------------------------------------------- diff --git a/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/FirstRepository.java b/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/FirstRepository.java deleted file mode 100644 index 315162d..0000000 --- a/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/FirstRepository.java +++ /dev/null @@ -1,92 +0,0 @@ - -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.springdata.misc; - -import java.util.Collection; -import java.util.List; -import javax.cache.Cache; -import org.apache.ignite.springdata.repository.Query; -import org.apache.ignite.springdata.repository.config.RepositoryConfig; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.apache.ignite.springdata.repository.IgniteRepository; - -/** - * - */ -@RepositoryConfig(cacheName = "cache") -public interface FirstRepository extends IgniteRepository<Person, Integer> { - /** */ - public List<Person> findByFirstName(String val); - - /** */ - public List<Person> findByFirstNameContaining(String val); - - /** */ - public List<Person> findByFirstNameRegex(String val, Pageable pageable); - - /** */ - public Collection<Person> findTopByFirstNameContaining(String val); - - /** */ - public Iterable<Person> findFirst10ByFirstNameLike(String val); - - /** */ - public int countByFirstNameLike(String val); - - /** */ - public int countByFirstNameLikeAndSecondNameLike(String like1, String like2); - - /** */ - public int countByFirstNameStartingWithOrSecondNameStartingWith(String like1, String like2); - - /** */ - public List<Cache.Entry<Integer, Person>> findBySecondNameLike(String val); - - /** */ - public Cache.Entry<Integer, Person> findTopBySecondNameLike(String val); - - /** */ - public Person findTopBySecondNameStartingWith(String val); - - /** */ - @Query("firstName = ?") - public List<Person> simpleQuery(String val); - - /** */ - @Query("firstName REGEXP ?") - public List<Person> queryWithSort(String val, Sort sort); - - /** */ - @Query("SELECT * FROM Person WHERE firstName REGEXP ?") - public List<Person> queryWithPageable(String val, Pageable pageable); - - /** */ - @Query("SELECT secondName FROM Person WHERE firstName REGEXP ?") - public List<String> selectField(String val, Pageable pageable); - - /** */ - @Query("SELECT _key, secondName FROM Person WHERE firstName REGEXP ?") - public List<List> selectSeveralField(String val, Pageable pageable); - - /** */ - @Query("SELECT count(1) FROM (SELECT DISTINCT secondName FROM Person WHERE firstName REGEXP ?)") - public int countQuery(String val); -} - http://git-wip-us.apache.org/repos/asf/ignite/blob/f4c90c08/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/Person.java ---------------------------------------------------------------------- diff --git a/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/Person.java b/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/Person.java index 502d86d..a0adde5 100644 --- a/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/Person.java +++ b/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/Person.java @@ -72,4 +72,26 @@ public class Person { ", secondName='" + secondName + '\'' + '}'; } + + /** {@inheritDoc} */ + @Override public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + Person person = (Person)o; + + if (firstName != null ? !firstName.equals(person.firstName) : person.firstName != null) + return false; + return secondName != null ? secondName.equals(person.secondName) : person.secondName == null; + + } + + /** {@inheritDoc} */ + @Override public int hashCode() { + int result = firstName != null ? firstName.hashCode() : 0; + result = 31 * result + (secondName != null ? secondName.hashCode() : 0); + return result; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f4c90c08/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/PersonRepository.java ---------------------------------------------------------------------- diff --git a/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/PersonRepository.java b/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/PersonRepository.java new file mode 100644 index 0000000..dc164e6 --- /dev/null +++ b/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/PersonRepository.java @@ -0,0 +1,92 @@ + +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.springdata.misc; + +import java.util.Collection; +import java.util.List; +import javax.cache.Cache; +import org.apache.ignite.springdata.repository.Query; +import org.apache.ignite.springdata.repository.config.RepositoryConfig; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.apache.ignite.springdata.repository.IgniteRepository; + +/** + * + */ +@RepositoryConfig(cacheName = "PersonCache") +public interface PersonRepository extends IgniteRepository<Person, Integer> { + /** */ + public List<Person> findByFirstName(String val); + + /** */ + public List<Person> findByFirstNameContaining(String val); + + /** */ + public List<Person> findByFirstNameRegex(String val, Pageable pageable); + + /** */ + public Collection<Person> findTopByFirstNameContaining(String val); + + /** */ + public Iterable<Person> findFirst10ByFirstNameLike(String val); + + /** */ + public int countByFirstNameLike(String val); + + /** */ + public int countByFirstNameLikeAndSecondNameLike(String like1, String like2); + + /** */ + public int countByFirstNameStartingWithOrSecondNameStartingWith(String like1, String like2); + + /** */ + public List<Cache.Entry<Integer, Person>> findBySecondNameLike(String val); + + /** */ + public Cache.Entry<Integer, Person> findTopBySecondNameLike(String val); + + /** */ + public Person findTopBySecondNameStartingWith(String val); + + /** */ + @Query("firstName = ?") + public List<Person> simpleQuery(String val); + + /** */ + @Query("firstName REGEXP ?") + public List<Person> queryWithSort(String val, Sort sort); + + /** */ + @Query("SELECT * FROM Person WHERE firstName REGEXP ?") + public List<Person> queryWithPageable(String val, Pageable pageable); + + /** */ + @Query("SELECT secondName FROM Person WHERE firstName REGEXP ?") + public List<String> selectField(String val, Pageable pageable); + + /** */ + @Query("SELECT _key, secondName FROM Person WHERE firstName REGEXP ?") + public List<List> selectSeveralField(String val, Pageable pageable); + + /** */ + @Query("SELECT count(1) FROM (SELECT DISTINCT secondName FROM Person WHERE firstName REGEXP ?)") + public int countQuery(String val); +} + http://git-wip-us.apache.org/repos/asf/ignite/blob/f4c90c08/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/PersonSecondRepository.java ---------------------------------------------------------------------- diff --git a/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/PersonSecondRepository.java b/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/PersonSecondRepository.java new file mode 100644 index 0000000..defbb01 --- /dev/null +++ b/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/PersonSecondRepository.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.springdata.misc; + +import java.util.List; +import javax.cache.Cache; +import org.apache.ignite.springdata.repository.IgniteRepository; +import org.apache.ignite.springdata.repository.Query; +import org.apache.ignite.springdata.repository.config.RepositoryConfig; +import org.springframework.data.domain.AbstractPageRequest; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Slice; + +/** + * + */ +@RepositoryConfig(cacheName = "PersonCache") +public interface PersonSecondRepository extends IgniteRepository<Person, Integer> { + /** */ + public Slice<Cache.Entry<Integer, Person>> findBySecondNameIsNot(String val, PageRequest pageReq); + + /** */ + @Query("SELECT _key, secondName FROM Person WHERE firstName REGEXP ?") + public Slice<List> querySliceOfList(String val, AbstractPageRequest pageReq); +} http://git-wip-us.apache.org/repos/asf/ignite/blob/f4c90c08/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/SecondRepository.java ---------------------------------------------------------------------- diff --git a/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/SecondRepository.java b/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/SecondRepository.java deleted file mode 100644 index 63b0b8f..0000000 --- a/modules/spring-data/src/test/java/org/apache/ignite/springdata/misc/SecondRepository.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.springdata.misc; - -import java.util.List; -import javax.cache.Cache; -import org.apache.ignite.springdata.repository.IgniteRepository; -import org.apache.ignite.springdata.repository.Query; -import org.apache.ignite.springdata.repository.config.RepositoryConfig; -import org.springframework.data.domain.AbstractPageRequest; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Slice; - -/** - * - */ -@RepositoryConfig(cacheName = "cache") -public interface SecondRepository extends IgniteRepository<Person, Integer> { - /** */ - public Slice<Cache.Entry<Integer, Person>> findBySecondNameIsNot(String val, PageRequest pageReq); - - /** */ - @Query("SELECT _key, secondName FROM Person WHERE firstName REGEXP ?") - public Slice<List> querySliceOfList(String val, AbstractPageRequest pageReq); -} http://git-wip-us.apache.org/repos/asf/ignite/blob/f4c90c08/modules/spring-data/src/test/java/org/apache/ignite/testsuites/IgniteSpringDataTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/spring-data/src/test/java/org/apache/ignite/testsuites/IgniteSpringDataTestSuite.java b/modules/spring-data/src/test/java/org/apache/ignite/testsuites/IgniteSpringDataTestSuite.java index 36fb267..d44628c 100644 --- a/modules/spring-data/src/test/java/org/apache/ignite/testsuites/IgniteSpringDataTestSuite.java +++ b/modules/spring-data/src/test/java/org/apache/ignite/testsuites/IgniteSpringDataTestSuite.java @@ -18,7 +18,8 @@ package org.apache.ignite.testsuites; import junit.framework.TestSuite; -import org.apache.ignite.springdata.IgniteSpringDataSelfTest; +import org.apache.ignite.springdata.IgniteSpringDataCrudSelfTest; +import org.apache.ignite.springdata.IgniteSpringDataQueriesSelfTest; /** * @@ -31,7 +32,8 @@ public class IgniteSpringDataTestSuite extends TestSuite { public static TestSuite suite() throws Exception { TestSuite suite = new TestSuite("Spring Data Test Suite"); - suite.addTestSuite(IgniteSpringDataSelfTest.class); + suite.addTestSuite(IgniteSpringDataCrudSelfTest.class); + suite.addTestSuite(IgniteSpringDataQueriesSelfTest.class); return suite; }
