Repository: cassandra Updated Branches: refs/heads/trunk 1007ba59a -> 7f161667d
Stop CommitLogTest hanging patch by branimir; reviewed by benedict for CASSANDRA-8992 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/7f161667 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/7f161667 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/7f161667 Branch: refs/heads/trunk Commit: 7f161667dfd7f12190442adf7b010111e0a42cd6 Parents: 1007ba5 Author: blambov <[email protected]> Authored: Fri Apr 3 22:57:59 2015 +0100 Committer: Benedict Elliott Smith <[email protected]> Committed: Fri Apr 3 22:58:39 2015 +0100 ---------------------------------------------------------------------- .../db/CommitLogFailurePolicyTest.java | 83 ++++++++++++++++++++ .../org/apache/cassandra/db/CommitLogTest.java | 48 +---------- 2 files changed, 85 insertions(+), 46 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/7f161667/test/unit/org/apache/cassandra/db/CommitLogFailurePolicyTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/CommitLogFailurePolicyTest.java b/test/unit/org/apache/cassandra/db/CommitLogFailurePolicyTest.java new file mode 100644 index 0000000..7dabd5f --- /dev/null +++ b/test/unit/org/apache/cassandra/db/CommitLogFailurePolicyTest.java @@ -0,0 +1,83 @@ +/* +* 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.cassandra.db; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.apache.cassandra.SchemaLoader; +import org.apache.cassandra.config.Config; +import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.db.commitlog.CommitLog; +import org.apache.cassandra.exceptions.ConfigurationException; +import org.apache.cassandra.gms.Gossiper; +import org.apache.cassandra.service.StorageService; +import org.apache.cassandra.utils.JVMStabilityInspector; +import org.apache.cassandra.utils.KillerForTests; + +public class CommitLogFailurePolicyTest +{ + + @BeforeClass + public static void defineSchema() throws ConfigurationException + { + SchemaLoader.prepareServer(); + System.setProperty("cassandra.commitlog.stop_on_errors", "true"); + } + + @Test + public void testCommitFailurePolicy_stop() throws ConfigurationException + { + // Need storage service active so stop policy can shutdown gossip + StorageService.instance.initServer(); + Assert.assertTrue(Gossiper.instance.isEnabled()); + + Config.CommitFailurePolicy oldPolicy = DatabaseDescriptor.getCommitFailurePolicy(); + try + { + DatabaseDescriptor.setCommitFailurePolicy(Config.CommitFailurePolicy.stop); + CommitLog.handleCommitError("Test stop error", new Throwable()); + Assert.assertFalse(Gossiper.instance.isEnabled()); + } + finally + { + DatabaseDescriptor.setCommitFailurePolicy(oldPolicy); + } + } + + @Test + public void testCommitFailurePolicy_die() + { + KillerForTests killerForTests = new KillerForTests(); + JVMStabilityInspector.Killer originalKiller = JVMStabilityInspector.replaceKiller(killerForTests); + Config.CommitFailurePolicy oldPolicy = DatabaseDescriptor.getCommitFailurePolicy(); + try + { + DatabaseDescriptor.setCommitFailurePolicy(Config.CommitFailurePolicy.die); + CommitLog.handleCommitError("Testing die policy", new Throwable()); + Assert.assertTrue(killerForTests.wasKilled()); + } + finally + { + DatabaseDescriptor.setCommitFailurePolicy(oldPolicy); + JVMStabilityInspector.replaceKiller(originalKiller); + } + } +} http://git-wip-us.apache.org/repos/asf/cassandra/blob/7f161667/test/unit/org/apache/cassandra/db/CommitLogTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/CommitLogTest.java b/test/unit/org/apache/cassandra/db/CommitLogTest.java index c825f2a..683d3f9 100644 --- a/test/unit/org/apache/cassandra/db/CommitLogTest.java +++ b/test/unit/org/apache/cassandra/db/CommitLogTest.java @@ -31,7 +31,6 @@ import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import java.util.UUID; -import java.util.concurrent.ExecutionException; import java.util.zip.CRC32; import java.util.zip.Checksum; @@ -40,10 +39,8 @@ import com.google.common.collect.ImmutableMap; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; - import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.Util; -import org.apache.cassandra.config.Config; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.config.KSMetaData; import org.apache.cassandra.config.ParameterizedClass; @@ -51,20 +48,17 @@ import org.apache.cassandra.db.commitlog.CommitLog; import org.apache.cassandra.db.commitlog.CommitLogDescriptor; import org.apache.cassandra.db.commitlog.CommitLogSegment; import org.apache.cassandra.db.commitlog.ReplayPosition; +import org.apache.cassandra.db.compaction.CompactionManager; import org.apache.cassandra.db.composites.CellName; import org.apache.cassandra.db.composites.CellNameType; import org.apache.cassandra.db.filter.NamesQueryFilter; import org.apache.cassandra.exceptions.ConfigurationException; -import org.apache.cassandra.gms.Gossiper; import org.apache.cassandra.io.util.ByteBufferDataInput; import org.apache.cassandra.io.util.FileDataInput; import org.apache.cassandra.locator.SimpleStrategy; import org.apache.cassandra.net.MessagingService; -import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; -import org.apache.cassandra.utils.JVMStabilityInspector; -import org.apache.cassandra.utils.KillerForTests; public class CommitLogTest { @@ -90,6 +84,7 @@ public class CommitLogTest SchemaLoader.standardCFMD(KEYSPACE1, CF1), SchemaLoader.standardCFMD(KEYSPACE1, CF2)); System.setProperty("cassandra.commitlog.stop_on_errors", "true"); + CompactionManager.instance.disableAutoCompaction(); } @Test @@ -316,45 +311,6 @@ public class CommitLogTest } @Test - public void testCommitFailurePolicy_stop() throws ConfigurationException - { - // Need storage service active so stop policy can shutdown gossip - StorageService.instance.initServer(); - Assert.assertTrue(Gossiper.instance.isEnabled()); - - Config.CommitFailurePolicy oldPolicy = DatabaseDescriptor.getCommitFailurePolicy(); - try - { - DatabaseDescriptor.setCommitFailurePolicy(Config.CommitFailurePolicy.stop); - CommitLog.handleCommitError("Test stop error", new Throwable()); - Assert.assertFalse(Gossiper.instance.isEnabled()); - } - finally - { - DatabaseDescriptor.setCommitFailurePolicy(oldPolicy); - } - } - - @Test - public void testCommitFailurePolicy_die() - { - KillerForTests killerForTests = new KillerForTests(); - JVMStabilityInspector.Killer originalKiller = JVMStabilityInspector.replaceKiller(killerForTests); - Config.CommitFailurePolicy oldPolicy = DatabaseDescriptor.getCommitFailurePolicy(); - try - { - DatabaseDescriptor.setCommitFailurePolicy(Config.CommitFailurePolicy.die); - CommitLog.handleCommitError("Testing die policy", new Throwable()); - Assert.assertTrue(killerForTests.wasKilled()); - } - finally - { - DatabaseDescriptor.setCommitFailurePolicy(oldPolicy); - JVMStabilityInspector.replaceKiller(originalKiller); - } - } - - @Test public void testTruncateWithoutSnapshot() { CommitLog.instance.resetUnsafe(true);
