You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2015/11/03 14:42:12 UTC

[2/2] ignite git commit: IGNITE-1838: WIP on tests.

IGNITE-1838: WIP on tests.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/12e86e71
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/12e86e71
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/12e86e71

Branch: refs/heads/ignite-1838
Commit: 12e86e71aad7d2eed60843a10cf05141293fc299
Parents: 4fc3b86
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Nov 3 16:42:53 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Nov 3 16:42:53 2015 +0300

----------------------------------------------------------------------
 .../portable/PortableFIeldsHeapSelfTest.java    |  32 ++++
 .../PortableFieldsAbstractSelfTest.java         | 179 +++++++++++++++++--
 .../IgnitePortableObjectsTestSuite.java         |   4 +-
 3 files changed, 200 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/12e86e71/modules/core/src/test/java/org/apache/ignite/internal/portable/PortableFIeldsHeapSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/PortableFIeldsHeapSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/PortableFIeldsHeapSelfTest.java
new file mode 100644
index 0000000..aa88ecc
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/portable/PortableFIeldsHeapSelfTest.java
@@ -0,0 +1,32 @@
+/*
+ * 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.internal.portable;
+
+import org.apache.ignite.marshaller.portable.PortableMarshaller;
+
+/**
+ * Field tests for heap-based portables.
+ */
+public class PortableFIeldsHeapSelfTest extends PortableFieldsAbstractSelfTest {
+    /** {@inheritDoc} */
+    @Override protected PortableObjectEx toPortable(PortableMarshaller marsh, Object obj) throws Exception {
+        byte[] bytes = marsh.marshal(obj);
+
+        return new PortableObjectImpl(ctx, bytes, 0);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/12e86e71/modules/core/src/test/java/org/apache/ignite/internal/portable/PortableFieldsAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/PortableFieldsAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/PortableFieldsAbstractSelfTest.java
index bc0919b..07b2745 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/portable/PortableFieldsAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/portable/PortableFieldsAbstractSelfTest.java
@@ -23,10 +23,15 @@ import org.apache.ignite.marshaller.MarshallerContextTestImpl;
 import org.apache.ignite.marshaller.portable.PortableMarshaller;
 import org.apache.ignite.portable.PortableField;
 import org.apache.ignite.portable.PortableMetadata;
+import org.apache.ignite.portable.PortableObject;
 import org.apache.ignite.portable.PortableTypeConfiguration;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
+import java.math.BigDecimal;
+import java.sql.Timestamp;
 import java.util.Arrays;
+import java.util.Date;
+import java.util.UUID;
 
 /**
  * Contains tests for portable object fields.
@@ -59,7 +64,8 @@ public abstract class PortableFieldsAbstractSelfTest extends GridCommonAbstractT
 
         marsh.setTypeConfigurations(Arrays.asList(
             new PortableTypeConfiguration(TestObject.class.getName()),
-            new PortableTypeConfiguration(TestOuterObject.class.getName())
+            new PortableTypeConfiguration(TestOuterObject.class.getName()),
+            new PortableTypeConfiguration(TestInnerObject.class.getName())
         ));
 
         marsh.setContext(new MarshallerContextTestImpl(null));
@@ -121,15 +127,16 @@ public abstract class PortableFieldsAbstractSelfTest extends GridCommonAbstractT
     }
 
     /**
-     * Test int field.
+     * Test float field.
      *
      * @throws Exception If failed.
      */
     public void testFloat() throws Exception {
         check("fFloat");
     }
+
     /**
-     * Test int field.
+     * Test double field.
      *
      * @throws Exception If failed.
      */
@@ -138,38 +145,115 @@ public abstract class PortableFieldsAbstractSelfTest extends GridCommonAbstractT
     }
 
     /**
+     * Test string field.
+     *
+     * @throws Exception If failed.
+     */
+    public void testString() throws Exception {
+        check("fString");
+    }
+
+    /**
+     * Test date field.
+     *
+     * @throws Exception If failed.
+     */
+    public void testDate() throws Exception {
+        check("fDate");
+    }
+
+    /**
+     * Test timestamp field.
+     *
+     * @throws Exception If failed.
+     */
+    public void testTimestamp() throws Exception {
+        check("fTimestamp");
+    }
+
+    /**
+     * Test UUID field.
+     *
+     * @throws Exception If failed.
+     */
+    public void testUuid() throws Exception {
+        check("fUuid");
+    }
+
+    /**
+     * Test decimal field.
+     *
+     * @throws Exception If failed.
+     */
+    public void testDecimal() throws Exception {
+        check("fDecimal");
+    }
+
+    /**
+     * Test object field.
+     *
+     * @throws Exception If failed.
+     */
+    public void testObject() throws Exception {
+        check("fObj");
+    }
+
+    /**
+     * Test null field.
+     *
+     * @throws Exception If failed.
+     */
+    public void testNull() throws Exception {
+        check("fNull");
+    }
+
+    /**
+     * Test missing field.
+     *
+     * @throws Exception If failed.
+     */
+    public void testMissing() throws Exception {
+        String fieldName = "fMissing";
+
+        checkNormal(fieldName, false);
+        checkNested(fieldName, false);
+    }
+
+    /**
      * Check field resolution in both normal and nested modes.
      *
      * @param fieldName Field name.
      * @throws Exception If failed.
      */
     public void check(String fieldName) throws Exception {
-        checkNormal(fieldName);
-        checkNested(fieldName);
+        checkNormal(fieldName, true);
+        checkNested(fieldName, true);
     }
 
     /**
      * Check field.
      *
      * @param fieldName Field name.
+     * @param exists Whether field should exist.
      * @throws Exception If failed.
      */
-    private void checkNormal(String fieldName) throws Exception {
+    private void checkNormal(String fieldName, boolean exists) throws Exception {
         TestContext ctx = context(fieldName);
 
-        check0(fieldName, ctx);
+        check0(fieldName, ctx, exists);
     }
 
     /**
      * Check nested field.
      *
      * @param fieldName Field name.
+     * @param exists Whether field should exist.
      * @throws Exception If failed.
      */
-    private void checkNested(String fieldName) throws Exception {
+    private void checkNested(String fieldName, boolean exists) throws Exception {
         TestContext ctx = nestedContext(fieldName);
 
-        check0(fieldName, ctx);
+        check0(fieldName, ctx, exists);
     }
 
     /**
@@ -177,14 +261,27 @@ public abstract class PortableFieldsAbstractSelfTest extends GridCommonAbstractT
      *
      * @param fieldName Field name.
      * @param ctx Context.
+     * @param exists Whether field should exist.
      * @throws Exception If failed.
      */
-    private void check0(String fieldName, TestContext ctx) throws Exception {
-        Object expVal = U.field(ctx.obj, fieldName);
+    private void check0(String fieldName, TestContext ctx, boolean exists) throws Exception {
+        Object val = ctx.field.value(ctx.portObj);
+
+        if (exists) {
+            assertTrue(ctx.field.exists(ctx.portObj));
 
-        assertTrue(ctx.field.exists(ctx.portObj));
+            Object expVal = U.field(ctx.obj, fieldName);
 
-        assertEquals(expVal, ctx.field.value(ctx.portObj));
+            if (val instanceof PortableObject)
+                val = ((PortableObject) val).deserialize();
+
+            assertEquals(expVal, val);
+        }
+        else {
+            assertFalse(ctx.field.exists(ctx.portObj));
+
+            assert val == null;
+        }
     }
 
     /**
@@ -284,6 +381,19 @@ public abstract class PortableFieldsAbstractSelfTest extends GridCommonAbstractT
         public float fFloat;
         public double fDouble;
 
+        /** Special fields. */
+        public String fString;
+        public Date fDate;
+        public Timestamp fTimestamp;
+        public UUID fUuid;
+        public BigDecimal fDecimal;
+
+        /** Nested object. */
+        public TestInnerObject fObj;
+
+        /** Field which is always set to null. */
+        public Object fNull;
+
         /**
          * Default constructor.
          */
@@ -305,6 +415,49 @@ public abstract class PortableFieldsAbstractSelfTest extends GridCommonAbstractT
             fLong = 5;
             fFloat = 6.6f;
             fDouble = 7.7;
+
+            fString = "8";
+            fDate = new Date();
+            fTimestamp = new Timestamp(new Date().getTime());
+            fUuid = UUID.randomUUID();
+            fDecimal = new BigDecimal(9);
+
+            fObj = new TestInnerObject(10);
+        }
+    }
+
+    /**
+     * Inner test object.
+     */
+    @SuppressWarnings("UnusedDeclaration")
+    public static class TestInnerObject {
+        /** Value. */
+        private int val;
+
+        /**
+         * Default constructor.
+         */
+        public TestInnerObject() {
+            // No-op.
+        }
+
+        /**
+         * Constructor.
+         *
+         * @param val Value.
+         */
+        public TestInnerObject(int val) {
+            this.val = val;
+        }
+
+        /** {@inheritDoc} */
+        @Override public int hashCode() {
+            return val;
+        }
+
+        /** {@inheritDoc} */
+        @Override public boolean equals(Object other) {
+            return other != null && other instanceof TestInnerObject && val == ((TestInnerObject)(other)).val;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/12e86e71/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePortableObjectsTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePortableObjectsTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePortableObjectsTestSuite.java
index c7391a6..22f8b1e 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePortableObjectsTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePortableObjectsTestSuite.java
@@ -28,7 +28,7 @@ import org.apache.ignite.internal.portable.GridPortableMarshallerSelfTest;
 import org.apache.ignite.internal.portable.GridPortableMetaDataDisabledSelfTest;
 import org.apache.ignite.internal.portable.GridPortableMetaDataSelfTest;
 import org.apache.ignite.internal.portable.GridPortableWildcardsSelfTest;
-import org.apache.ignite.internal.portable.PortableFieldsHeapSelfTest;
+import org.apache.ignite.internal.portable.PortableFIeldsHeapSelfTest;
 import org.apache.ignite.internal.portable.PortableFieldsOffheapSelfTest;
 import org.apache.ignite.internal.processors.cache.portable.GridCacheClientNodePortableMetadataMultinodeTest;
 import org.apache.ignite.internal.processors.cache.portable.GridCacheClientNodePortableMetadataTest;
@@ -62,7 +62,7 @@ public class IgnitePortableObjectsTestSuite extends TestSuite {
         suite.addTestSuite(GridPortableMarshallerCtxDisabledSelfTest.class);
         suite.addTestSuite(GridPortableBuilderSelfTest.class);
         suite.addTestSuite(GridPortableBuilderStringAsCharsSelfTest.class);
-        suite.addTestSuite(PortableFieldsHeapSelfTest.class);
+        suite.addTestSuite(PortableFIeldsHeapSelfTest.class);
         suite.addTestSuite(PortableFieldsOffheapSelfTest.class);
         suite.addTestSuite(GridPortableMetaDataSelfTest.class);
         suite.addTestSuite(GridPortableMetaDataDisabledSelfTest.class);