Merge branch 'cassandra-4.1' into trunk

This commit is contained in:
Stefan Miklosovic 2023-01-28 17:40:49 +01:00
commit 61a83b3cef
No known key found for this signature in database
GPG Key ID: 32F35CB2F546D93E
21 changed files with 126 additions and 22 deletions

View File

@ -115,6 +115,7 @@ Merged from 4.0:
* Restore internode custom tracing on 4.0's new messaging system (CASSANDRA-17981)
Merged from 3.11:
Merged from 3.0:
* Introduce check for names of test classes (CASSANDRA-17964)
* Suppress CVE-2021-1471, CVE-2021-3064, CVE-2021-4235 (CASSANDRA-18149)
* Switch to snakeyaml's SafeConstructor (CASSANDRA-18150)
* Expand build.dir property in rat targets (CASSANDRA-18183)

View File

@ -991,6 +991,7 @@
<target name="build-test" depends="_main-jar,stress-build-test,fqltool-build,resolver-dist-lib,simulator-jars,checkstyle-test"
description="Compile test classes">
<antcall target="_build-test"/>
<checktestnameshelper/>
</target>
<target name="_build-test">
@ -1027,6 +1028,18 @@
</copy>
</target>
<macrodef name="checktestnameshelper">
<sequential>
<taskdef name="test-name-check_" classname="org.apache.cassandra.anttasks.TestNameCheckTask" classpath="${test.classes}">
<classpath>
<path refid="cassandra.classpath.test"/>
<path location="${fqltool.build.classes}"/>
</classpath>
</taskdef>
<test-name-check_/>
</sequential>
</macrodef>
<!-- Run tests separately and report errors after and generate a junit report -->
<macrodef name="testhelper">
<attribute name="testdelegate"/>

View File

@ -0,0 +1,85 @@
/*
* 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.anttasks;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.List;
import java.util.Set;
import java.util.stream.Stream;
import org.junit.Test;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.reflections.Reflections;
import org.reflections.scanners.Scanners;
import org.reflections.util.ConfigurationBuilder;
import static java.util.stream.Collectors.toList;
public class TestNameCheckTask extends Task
{
private static final Reflections reflections = new Reflections(new ConfigurationBuilder()
.forPackage("org.apache.cassandra")
.setScanners(Scanners.MethodsAnnotated, Scanners.SubTypes)
.setExpandSuperTypes(true)
.setParallel(true));
public TestNameCheckTask()
{
}
@Override
public void execute() throws BuildException
{
Set<Method> methodsAnnotatedWith = reflections.getMethodsAnnotatedWith(Test.class);
List<String> testFiles = methodsAnnotatedWith.stream().map(Method::getDeclaringClass).distinct()
.flatMap(TestNameCheckTask::expand)
.map(TestNameCheckTask::normalize)
.map(Class::getCanonicalName)
.filter(s -> !s.endsWith("Test"))
.distinct().sorted()
.collect(toList());
if (!testFiles.isEmpty())
throw new BuildException("Detected tests that have a bad naming convention. All tests have to end on 'Test': \n" + String.join("\n", testFiles));
}
private static Class<?> normalize(Class<?> klass)
{
for (; klass.getEnclosingClass() != null; klass = klass.getEnclosingClass())
{
}
return klass;
}
private static Stream<Class<?>> expand(Class<?> klass)
{
Set<? extends Class<?>> subTypes = reflections.getSubTypesOf(klass);
if (subTypes == null || subTypes.isEmpty())
return Stream.of(klass);
Stream<Class<?>> subs = (Stream<Class<?>>) subTypes.stream();
// assume we include if not abstract
if (!Modifier.isAbstract(klass.getModifiers()))
subs = Stream.concat(Stream.of(klass), subs);
return subs;
}
}

View File

@ -41,7 +41,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
public class ByteBuddyExamples extends TestBaseImpl
public class ByteBuddyExamplesTest extends TestBaseImpl
{
@Test
public void writeFailureTest() throws Throwable

View File

@ -30,7 +30,7 @@ import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
import static org.apache.cassandra.distributed.api.Feature.NATIVE_PROTOCOL;
import static org.apache.cassandra.distributed.api.Feature.NETWORK;
public class ReprepareTestOldBehaviour extends ReprepareTestBase
public class ReprepareOldBehaviourTest extends ReprepareTestBase
{
@Test
public void testReprepareMixedVersion() throws Throwable

View File

@ -37,7 +37,7 @@ import org.apache.cassandra.locator.InetAddressAndPort;
import static org.apache.cassandra.distributed.util.QueryResultUtil.assertThat;
import static org.assertj.core.api.Assertions.assertThat;
public class VirtualTableFromInternode extends TestBaseImpl
public class VirtualTableFromInternodeTest extends TestBaseImpl
{
private static Cluster CLUSTER;

View File

@ -16,7 +16,7 @@
* limitations under the License.
*/
package org.apache.cassandra.cql3;
package org.apache.cassandra.test.microbench;
import java.util.ArrayList;
import java.util.Arrays;
@ -34,10 +34,13 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.Assert;
import org.apache.cassandra.config.Config.CommitLogSync;
import org.apache.cassandra.config.Config.DiskAccessMode;
import org.apache.cassandra.cache.ChunkCache;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.cql3.CQLTester;
import org.apache.cassandra.cql3.UntypedResultSet;
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.rows.Row;
@ -52,7 +55,7 @@ import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
import static org.assertj.core.api.Assertions.assertThat;
public class CachingBench extends CQLTester
public class CachingBenchTest extends CQLTester
{
private static final String STRATEGY = "LeveledCompactionStrategy";

View File

@ -16,7 +16,7 @@
* limitations under the License.
*/
package org.apache.cassandra.cql3;
package org.apache.cassandra.test.microbench;
import java.util.ArrayList;
import java.util.Arrays;
@ -34,8 +34,11 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.Assert;
import org.apache.cassandra.config.Config.CommitLogSync;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.cql3.CQLTester;
import org.apache.cassandra.cql3.UntypedResultSet;
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.rows.Row;
@ -49,7 +52,7 @@ import org.apache.cassandra.utils.FBUtilities;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
public class GcCompactionBench extends CQLTester
public class GcCompactionBenchTest extends CQLTester
{
private static final String SIZE_TIERED_STRATEGY = "SizeTieredCompactionStrategy', 'min_sstable_size' : '0";
private static final String LEVELED_STRATEGY = "LeveledCompactionStrategy', 'sstable_size_in_mb' : '16";

View File

@ -48,7 +48,7 @@ import static org.junit.Assert.assertTrue;
/**
* For Authorizer based tests where we need to fully truncate the roles, members, and permissions between tests
*/
public class CassandraAuthorizerTruncatingTests extends CQLTester
public class CassandraAuthorizerTruncatingTest extends CQLTester
{
@BeforeClass
public static void setupClass()

View File

@ -33,7 +33,7 @@ import org.junit.Test;
import java.io.IOException;
public class BatchTests
public class BatchTest extends CQLTester
{
private static EmbeddedCassandraService cassandra;

View File

@ -28,7 +28,7 @@ import org.junit.runners.Parameterized;
* KeywordTestSplitN to prevent CI timing out. If timeouts reappear split it further
*/
@RunWith(Parameterized.class)
public class KeywordTestSplit1 extends KeywordTestBase
public class KeywordSplit1Test extends KeywordTestBase
{
static int SPLIT = 1;
static int TOTAL_SPLITS = 2;
@ -38,7 +38,7 @@ public class KeywordTestSplit1 extends KeywordTestBase
return KeywordTestBase.getKeywordsForSplit(SPLIT, TOTAL_SPLITS);
}
public KeywordTestSplit1(String keyword, boolean isReserved)
public KeywordSplit1Test(String keyword, boolean isReserved)
{
super(keyword, isReserved);
}

View File

@ -28,7 +28,7 @@ import org.junit.runners.Parameterized;
* KeywordTestSplitN to prevent CI timing out. If timeouts reappear split it further
*/
@RunWith(Parameterized.class)
public class KeywordTestSplit2 extends KeywordTestBase
public class KeywordSplitTest extends KeywordTestBase
{
static int SPLIT = 2;
static int TOTAL_SPLITS = 2;
@ -38,7 +38,7 @@ public class KeywordTestSplit2 extends KeywordTestBase
return KeywordTestBase.getKeywordsForSplit(SPLIT, TOTAL_SPLITS);
}
public KeywordTestSplit2(String keyword, boolean isReserved)
public KeywordSplitTest(String keyword, boolean isReserved)
{
super(keyword, isReserved);
}

View File

@ -35,7 +35,7 @@ import org.apache.cassandra.exceptions.SyntaxException;
* This class tests all keywords which took a long time. Hence it was split into multiple
* KeywordTestSplitN to prevent CI timing out. If timeouts reappear split it further
*/
public class KeywordTestBase extends CQLTester
public abstract class KeywordTestBase extends CQLTester
{
public static List<Object[]> keywords = Arrays.stream(CqlParser.tokenNames)
.filter(k -> k.startsWith("K_"))

View File

@ -24,7 +24,7 @@ import org.junit.Test;
import org.apache.cassandra.schema.Schema;
import org.apache.cassandra.schema.TableMetadata;
public class GuardrailAllowUncompressedTables extends GuardrailTester
public class GuardrailAllowUncompressedTablesTest extends GuardrailTester
{
private void setGuardrail(boolean enabled)
{

View File

@ -26,9 +26,9 @@ import static java.lang.String.format;
/**
* Tests the guardrail for disabling user creation of secondary indexes, {@link Guardrails#setSecondaryIndexesEnabled(boolean)}.
*/
public class GuardrailSecondaryIndexTester extends GuardrailTester
public class GuardrailSecondaryIndexTest extends GuardrailTester
{
public GuardrailSecondaryIndexTester()
public GuardrailSecondaryIndexTest()
{
super(Guardrails.createSecondaryIndexesEnabled);
}

View File

@ -26,12 +26,12 @@ import static java.lang.String.format;
/**
* Tests the guardrail for the number of secondary indexes in a table, {@link Guardrails#secondaryIndexesPerTable}.
*/
public class GuardrailSecondaryIndexesPerTable extends ThresholdTester
public class GuardrailSecondaryIndexesPerTableTest extends ThresholdTester
{
private static final int INDEXES_PER_TABLE_WARN_THRESHOLD = 1;
private static final int INDEXES_PER_TABLE_FAIL_THRESHOLD = 3;
public GuardrailSecondaryIndexesPerTable()
public GuardrailSecondaryIndexesPerTableTest()
{
super(INDEXES_PER_TABLE_WARN_THRESHOLD,
INDEXES_PER_TABLE_FAIL_THRESHOLD,

View File

@ -42,7 +42,7 @@ import org.github.jamm.MemoryMeter;
// Note: This test can be run in idea with the allocation type configured in the test yaml and memtable using the
// value memtableClass is initialized with.
@RunWith(Parameterized.class)
public class MemtableSizeTestBase extends CQLTester
public abstract class MemtableSizeTestBase extends CQLTester
{
// Note: To see a printout of the usage for each object, add .enableDebug() here (most useful with smaller number of
// partitions).

View File

@ -35,7 +35,6 @@ import org.junit.Test;
import com.google.common.collect.Sets;
import org.apache.cassandra.db.marshal.TimeUUIDType;
import org.cliffc.high_scale_lib.NonBlockingHashMap;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
@ -43,7 +42,7 @@ import static org.apache.cassandra.utils.TimeUUID.Generator.nextTimeUUID;
import static org.apache.cassandra.utils.TimeUUID.Generator.nextTimeUUIDAsBytes;
public class UUIDTests
public class UUIDTest
{
@Test
public void verifyType1()