You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/02/04 15:45:46 UTC

[37/50] [abbrv] ignite git commit: Added test, fixed NPE

Added test, fixed NPE


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

Branch: refs/heads/sql-store-cmp
Commit: d20e43fc5f99893ff25f329f144d2cf14c9f5990
Parents: 2476bb1
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Sun Jan 24 20:31:59 2016 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Wed Feb 3 17:13:41 2016 +0300

----------------------------------------------------------------------
 .../processors/cache/CacheObjectAdapter.java    |   3 +
 .../cache/IgniteCacheObjectPutSelfTest.java     | 177 +++++++++++++++++++
 2 files changed, 180 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d20e43fc/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
index 21873d4..28a95d8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
@@ -71,6 +71,9 @@ public abstract class CacheObjectAdapter implements CacheObject, Externalizable
 
     /** {@inheritDoc} */
     @Override public boolean putValue(ByteBuffer buf, CacheObjectContext ctx) throws IgniteCheckedException {
+        if (valBytes == null)
+            valueBytes(ctx);
+
         if (buf.remaining() < valBytes.length + 5)
             return false;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/d20e43fc/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheObjectPutSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheObjectPutSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheObjectPutSelfTest.java
new file mode 100644
index 0000000..2dc18f5
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheObjectPutSelfTest.java
@@ -0,0 +1,177 @@
+/*
+ * 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.processors.cache;
+
+import java.io.Serializable;
+import java.nio.ByteBuffer;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+
+/**
+ *
+ */
+public class IgniteCacheObjectPutSelfTest extends GridCommonAbstractTest {
+    /** */
+    public static final String CACHE_NAME = "partitioned";
+
+    /** {@inheritDoc} */
+    @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+        IgniteConfiguration cfg = super.getConfiguration(gridName);
+
+        CacheConfiguration ccfg = new CacheConfiguration();
+
+        ccfg.setName(CACHE_NAME);
+
+        cfg.setCacheConfiguration(ccfg);
+
+        cfg.setMarshaller(null);
+
+        return cfg;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void beforeTestsStarted() throws Exception {
+        super.beforeTestsStarted();
+
+        startGrid(0);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void afterTestsStopped() throws Exception {
+        stopAllGrids();
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testPrimitiveValues() throws Exception {
+        IgniteEx ignite = grid(0);
+
+        IgniteCache<Object, Object> cache = ignite.cache(CACHE_NAME);
+
+        for (int i = 0; i < 10; i++)
+            cache.put(i, String.valueOf(i));
+
+        IgniteCacheObjectProcessor co = ignite.context().cacheObjects();
+        GridCacheAdapter<Object, Object> iCache = ignite.context().cache().internalCache(CACHE_NAME);
+        CacheObjectContext coCtx = iCache.context().cacheObjectContext();
+
+        ByteBuffer buf = ByteBuffer.allocate(2048);
+
+        for (int i = 0; i < 10; i++) {
+            KeyCacheObject key = co.toCacheKeyObject(coCtx, i, false);
+
+            GridCacheEntryEx entry = iCache.peekEx(key);
+
+            assertNotNull(entry);
+
+            assertTrue(entry.key().putValue(buf, coCtx));
+            assertTrue(entry.valueBytes().putValue(buf, coCtx));
+        }
+
+        buf.flip();
+
+        for (int i = 0; i < 10; i++) {
+            CacheObject co1 = co.toCacheObject(coCtx, buf);
+
+            assertEquals(i, co1.value(coCtx, false));
+
+            CacheObject co2 = co.toCacheObject(coCtx, buf);
+
+            assertEquals(String.valueOf(i), co2.value(coCtx, false));
+        }
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testClassValues() throws Exception {
+        IgniteEx ignite = grid(0);
+
+        IgniteCache<Object, Object> cache = ignite.cache(CACHE_NAME);
+
+        for (int i = 0; i < 10; i++)
+            cache.put(new TestValue(i), new TestValue(i));
+
+        IgniteCacheObjectProcessor co = ignite.context().cacheObjects();
+        GridCacheAdapter<Object, Object> iCache = ignite.context().cache().internalCache(CACHE_NAME);
+        CacheObjectContext coCtx = iCache.context().cacheObjectContext();
+
+        ByteBuffer buf = ByteBuffer.allocate(2048);
+
+        for (int i = 0; i < 10; i++) {
+            KeyCacheObject key = co.toCacheKeyObject(coCtx, new TestValue(i), false);
+
+            GridCacheEntryEx entry = iCache.peekEx(key);
+
+            assertNotNull(entry);
+
+            assertTrue(entry.key().putValue(buf, coCtx));
+            assertTrue(entry.valueBytes().putValue(buf, coCtx));
+        }
+
+        buf.flip();
+
+        for (int i = 0; i < 10; i++) {
+            CacheObject co1 = co.toCacheObject(coCtx, buf);
+
+            assertEquals(new TestValue(i), co1.value(coCtx, false));
+
+            CacheObject co2 = co.toCacheObject(coCtx, buf);
+
+            assertEquals(new TestValue(i), co2.value(coCtx, false));
+        }
+    }
+
+    /**
+     *
+     */
+    private static class TestValue implements Serializable {
+        /** */
+        private int val;
+
+        /**
+         * @param val Value.
+         */
+        private TestValue(int val) {
+            this.val = val;
+        }
+
+        /** {@inheritDoc} */
+        @Override public boolean equals(Object o) {
+            if (this == o)
+                return true;
+
+            if (!(o instanceof TestValue))
+                return false;
+
+            TestValue value = (TestValue)o;
+
+            return val == value.val;
+        }
+
+        /** {@inheritDoc} */
+        @Override public int hashCode() {
+            return val;
+        }
+    }
+}