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 2017/03/10 07:23:55 UTC
[34/43] ignite git commit: IGNITE-4694 Add tests to check there are
no memory leaks in PageMemory
IGNITE-4694 Add tests to check there are no memory leaks in PageMemory
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b9fcc144
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b9fcc144
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b9fcc144
Branch: refs/heads/ignite-4712
Commit: b9fcc1446ca1296d6f0d751947b4e91ab84cb84d
Parents: 1678e1b
Author: Igor Seliverstov <gv...@gmail.com>
Authored: Tue Feb 21 11:49:35 2017 +0300
Committer: Igor Seliverstov <gv...@gmail.com>
Committed: Wed Mar 1 10:44:55 2017 +0300
----------------------------------------------------------------------
.../IgniteDbMemoryLeakAbstractTest.java | 19 ++++--
.../IgniteDbMemoryLeakLargeObjectsTest.java | 8 +--
.../database/IgniteDbMemoryLeakTest.java | 4 +-
.../IgniteDbMemoryLeakWithExpirationTest.java | 1 +
.../testsuites/IgniteDbMemoryLeakTestSuite.java | 46 +++++++++++++
.../IgniteDbMemoryLeakSqlQueryTest.java | 71 ++++++++++++++++++++
...IgniteDbMemoryLeakWithIndexingTestSuite.java | 40 +++++++++++
7 files changed, 177 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/b9fcc144/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakAbstractTest.java
index ccb1fa0..93306d9 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakAbstractTest.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.database;
-import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import org.apache.ignite.IgniteCache;
@@ -25,7 +24,6 @@ import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.MemoryConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.processors.cache.database.DataStructure;
-import org.jetbrains.annotations.NotNull;
/**
* Base class for memory leaks tests.
@@ -55,6 +53,7 @@ public abstract class IgniteDbMemoryLeakAbstractTest extends IgniteDbAbstractTes
/** */
private long probeCnt = 0;
+ /** {@inheritDoc} */
@Override protected void beforeTest() throws Exception {
super.beforeTest();
DataStructure.rnd = null;
@@ -130,7 +129,7 @@ public abstract class IgniteDbMemoryLeakAbstractTest extends IgniteDbAbstractTes
Object key = key();
Object value = value(key);
- switch (getRandom().nextInt(3)) {
+ switch (nextInt(3)) {
case 0:
cache.getAndPut(key, value);
@@ -145,10 +144,18 @@ public abstract class IgniteDbMemoryLeakAbstractTest extends IgniteDbAbstractTes
}
/**
- * @return Random.
+ * @param bound Upper bound (exclusive). Must be positive.
+ * @return Random int value.
+ */
+ protected static int nextInt(int bound) {
+ return ThreadLocalRandom.current().nextInt(bound);
+ }
+
+ /**
+ * @return Random int value.
*/
- @NotNull protected static Random getRandom() {
- return ThreadLocalRandom.current();
+ protected static int nextInt() {
+ return ThreadLocalRandom.current().nextInt();
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/b9fcc144/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakLargeObjectsTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakLargeObjectsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakLargeObjectsTest.java
index 3aab102..077a1e1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakLargeObjectsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakLargeObjectsTest.java
@@ -31,7 +31,7 @@ public class IgniteDbMemoryLeakLargeObjectsTest extends IgniteDbMemoryLeakAbstra
ARRAY = new int[1024];
for (int i = 0; i < ARRAY.length; i++)
- ARRAY[i] = getRandom().nextInt();
+ ARRAY[i] = nextInt();
}
/** {@inheritDoc} */
@@ -41,16 +41,16 @@ public class IgniteDbMemoryLeakLargeObjectsTest extends IgniteDbMemoryLeakAbstra
/** {@inheritDoc} */
@Override protected Object key() {
- return new LargeDbKey(getRandom().nextInt(10_000), 1024);
+ return new LargeDbKey(nextInt(10_000), 1024);
}
/** {@inheritDoc} */
@Override protected Object value(Object key) {
- return new LargeDbValue("test-value-1-" + getRandom().nextInt(200), "test-value-2-" + getRandom().nextInt(200), ARRAY);
+ return new LargeDbValue("test-value-1-" + nextInt(200), "test-value-2-" + nextInt(200), ARRAY);
}
/** {@inheritDoc} */
@Override protected long pagesMax() {
- return 35000;
+ return 35_000;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b9fcc144/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakTest.java
index 30ff18f..b8ac8f0 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakTest.java
@@ -31,12 +31,12 @@ public class IgniteDbMemoryLeakTest extends IgniteDbMemoryLeakAbstractTest {
/** {@inheritDoc} */
@Override protected Object key() {
- return new DbKey(getRandom().nextInt(200_000));
+ return new DbKey(nextInt(200_000));
}
/** {@inheritDoc} */
@Override protected Object value(Object key) {
- return new DbValue(((DbKey)key).val, "test-value-" + getRandom().nextInt(200), getRandom().nextInt(500));
+ return new DbValue(((DbKey)key).val, "test-value-" + nextInt(200), nextInt(500));
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/b9fcc144/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakWithExpirationTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakWithExpirationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakWithExpirationTest.java
index 212daa1..19502b0 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakWithExpirationTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakWithExpirationTest.java
@@ -38,6 +38,7 @@ public class IgniteDbMemoryLeakWithExpirationTest extends IgniteDbMemoryLeakTest
return ig.cache("non-primitive").withExpiryPolicy(EXPIRY);
}
+ /** {@inheritDoc} */
@Override protected long pagesMax() {
return 7000;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b9fcc144/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakTestSuite.java
new file mode 100644
index 0000000..75b31b0
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakTestSuite.java
@@ -0,0 +1,46 @@
+/*
+ * 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.testsuites;
+
+import junit.framework.TestSuite;
+import org.apache.ignite.internal.processors.database.IgniteDbMemoryLeakLargeObjectsTest;
+import org.apache.ignite.internal.processors.database.IgniteDbMemoryLeakLargePagesTest;
+import org.apache.ignite.internal.processors.database.IgniteDbMemoryLeakNonTransactionalTest;
+import org.apache.ignite.internal.processors.database.IgniteDbMemoryLeakTest;
+import org.apache.ignite.internal.processors.database.IgniteDbMemoryLeakWithExpirationTest;
+
+/**
+ * Page memory leaks tests.
+ */
+public class IgniteDbMemoryLeakTestSuite extends TestSuite {
+ /**
+ * @return Test suite.
+ * @throws Exception Thrown in case of the failure.
+ */
+ public static TestSuite suite() throws Exception {
+ TestSuite suite = new TestSuite("Ignite Db Memory Leaks Test Suite");
+
+ suite.addTestSuite(IgniteDbMemoryLeakTest.class);
+ suite.addTestSuite(IgniteDbMemoryLeakWithExpirationTest.class);
+ suite.addTestSuite(IgniteDbMemoryLeakLargePagesTest.class);
+ suite.addTestSuite(IgniteDbMemoryLeakLargeObjectsTest.class);
+ suite.addTestSuite(IgniteDbMemoryLeakNonTransactionalTest.class);
+
+ return suite;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b9fcc144/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakSqlQueryTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakSqlQueryTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakSqlQueryTest.java
new file mode 100644
index 0000000..b65cac0
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbMemoryLeakSqlQueryTest.java
@@ -0,0 +1,71 @@
+/*
+ * 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.database;
+
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ *
+ */
+public class IgniteDbMemoryLeakSqlQueryTest extends IgniteDbMemoryLeakTest {
+ /** {@inheritDoc} */
+ @Override protected boolean indexingEnabled() {
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected long pagesMax() {
+ return 24_000;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void operation(IgniteCache<Object, Object> cache) {
+ Object key = key();
+ Object value = value(key);
+
+ switch (nextInt(4)) {
+ case 0:
+ cache.getAndPut(key, value);
+
+ break;
+ case 1:
+ cache.get(key);
+
+ break;
+ case 2:
+ cache.getAndRemove(key);
+
+ break;
+ case 3:
+ cache.query(sqlQuery(cache)).getAll();
+ }
+ }
+
+ /**
+ * @param cache IgniteCache.
+ * @return SqlFieldsQuery.
+ */
+ @NotNull private SqlFieldsQuery sqlQuery(IgniteCache<Object, Object> cache) {
+ String query = String.format("select _key from \"%s\".DbValue where iVal=?", cache.getName());
+ SqlFieldsQuery sqlQuery = new SqlFieldsQuery(query);
+ sqlQuery.setArgs(nextInt(200_000));
+ return sqlQuery;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b9fcc144/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakWithIndexingTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakWithIndexingTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakWithIndexingTestSuite.java
new file mode 100644
index 0000000..36cd101
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDbMemoryLeakWithIndexingTestSuite.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.testsuites;
+
+import junit.framework.TestSuite;
+import org.apache.ignite.internal.processors.database.IgniteDbMemoryLeakIndexedTest;
+import org.apache.ignite.internal.processors.database.IgniteDbMemoryLeakSqlQueryTest;
+
+/**
+ * Page memory leaks tests using indexing.
+ */
+public class IgniteDbMemoryLeakWithIndexingTestSuite extends TestSuite {
+ /**
+ * @return Test suite.
+ * @throws Exception Thrown in case of the failure.
+ */
+ public static TestSuite suite() throws Exception {
+ TestSuite suite = new TestSuite("Ignite Db Memory Leaks With Indexing Test Suite");
+
+ suite.addTestSuite(IgniteDbMemoryLeakSqlQueryTest.class);
+ suite.addTestSuite(IgniteDbMemoryLeakIndexedTest.class);
+
+ return suite;
+ }
+}