You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by vf...@apache.org on 2015/11/25 20:07:59 UTC
[46/50] [abbrv] incubator-geode git commit: [GEODE-384] Fix for
failing tests: PRColocatedEquiJoinDUnitTest.testPRLocalQuerying and
QueryREUpdateInProgressJUnitTest Refactor of GEODE-280 missed on comparing
struct types
[GEODE-384] Fix for failing tests:
PRColocatedEquiJoinDUnitTest.testPRLocalQuerying and QueryREUpdateInProgressJUnitTest
Refactor of GEODE-280 missed on comparing struct types
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/8087818d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/8087818d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/8087818d
Branch: refs/heads/feature/GEODE-78
Commit: 8087818d56b03784652898e4d6254516e660c2c6
Parents: 2eb4e17
Author: Jason Huynh <hu...@gmail.com>
Authored: Tue Oct 6 10:50:24 2015 -0700
Committer: Jason Huynh <hu...@gmail.com>
Committed: Tue Oct 6 10:53:17 2015 -0700
----------------------------------------------------------------------
.../query/functional/StructSetOrResultsSet.java | 41 +++++++++++++++++++-
1 file changed, 39 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8087818d/gemfire-core/src/test/java/com/gemstone/gemfire/cache/query/functional/StructSetOrResultsSet.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache/query/functional/StructSetOrResultsSet.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache/query/functional/StructSetOrResultsSet.java
index d53c28b..7f3e14d 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache/query/functional/StructSetOrResultsSet.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache/query/functional/StructSetOrResultsSet.java
@@ -382,7 +382,7 @@ public class StructSetOrResultsSet extends TestCase {
Object p1 = itert1.next();
Object p2 = null;
if (!checkOrder) {
- if (!result2.contains(p1)) {
+ if (!collectionContains(result2, p1)) {
fail("Atleast one element in the pair of SelectResults "
+ "supposedly identical, is not equal " + "Match not found for :"
+ p1 + " compared with:" + p2 + "; failed query=" + query + "; element unmatched ="
@@ -394,7 +394,7 @@ public class StructSetOrResultsSet extends TestCase {
boolean matched = false;
if (itert2.hasNext()) {
p2 = itert2.next();
- matched = (p2 == p1) || p2.equals(p1);
+ matched = objectsEqual(p1, p2);
if (!matched) {
fail("Order of results was not the same, match not found for :"
+ p1 + " compared with:" + p2 + "; failed query=" + query + "; element unmatched ="
@@ -407,4 +407,41 @@ public class StructSetOrResultsSet extends TestCase {
currentIndex ++;
}
}
+
+ private boolean collectionContains(Collection collection, Object object) {
+ Iterator iterator = collection.iterator();
+ while (iterator.hasNext()) {
+ Object o = iterator.next();
+ if (objectsEqual(object, o)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean objectsEqual(Object o1, Object o2) {
+ //Assumed that o1 and o2 are the same object type as both are from collections created by executing the same query
+ if (o1 instanceof Struct) {
+ //if o2 is null, an NPE will be thrown.
+ Object[] values1 = ((Struct) o1).getFieldValues();
+ Object[] values2 = ((Struct) o2).getFieldValues();
+ assertEquals(values1.length, values2.length);
+ boolean elementEqual = true;
+ for (int i = 0; i < values1.length; ++i) {
+ elementEqual = elementEqual
+ && ((values1[i] == values2[i]) || values1[i]
+ .equals(values2[i]));
+ }
+ if (elementEqual) {
+ return true;
+ }
+ }
+ else {
+ //if o1 is null and o2 is not, an NPE will be thrown
+ if (o1 == o2 || o1.equals(o2)) {
+ return true;
+ }
+ }
+ return false;
+ }
}