mirror of https://github.com/apache/kafka.git
KAFKA-9305: Add version 2.4 to Streams system tests (#7841)
Reviewers: A. Sophie Blee-Goldman <sophie@confluent.io>, Matthias J. Sax <matthias@confluent.io>
This commit is contained in:
parent
5a65da5fe9
commit
1d21cf166a
12
build.gradle
12
build.gradle
|
@ -1499,6 +1499,18 @@ project(':streams:upgrade-system-tests-23') {
|
|||
}
|
||||
}
|
||||
|
||||
project(':streams:upgrade-system-tests-24') {
|
||||
archivesBaseName = "kafka-streams-upgrade-system-tests-24"
|
||||
|
||||
dependencies {
|
||||
testCompile libs.kafkaStreams_24
|
||||
}
|
||||
|
||||
systemTestLibs {
|
||||
dependsOn testJar
|
||||
}
|
||||
}
|
||||
|
||||
project(':jmh-benchmarks') {
|
||||
|
||||
apply plugin: 'com.github.johnrengelman.shadow'
|
||||
|
|
|
@ -94,6 +94,7 @@ versions += [
|
|||
kafka_21: "2.1.1",
|
||||
kafka_22: "2.2.2",
|
||||
kafka_23: "2.3.1",
|
||||
kafka_24: "2.4.0",
|
||||
lz4: "1.6.0",
|
||||
mavenArtifact: "3.6.1",
|
||||
metrics: "2.2.0",
|
||||
|
@ -162,6 +163,7 @@ libs += [
|
|||
kafkaStreams_21: "org.apache.kafka:kafka-streams:$versions.kafka_21",
|
||||
kafkaStreams_22: "org.apache.kafka:kafka-streams:$versions.kafka_22",
|
||||
kafkaStreams_23: "org.apache.kafka:kafka-streams:$versions.kafka_23",
|
||||
kafkaStreams_24: "org.apache.kafka:kafka-streams:$versions.kafka_24",
|
||||
log4j: "log4j:log4j:$versions.log4j",
|
||||
lz4: "org.lz4:lz4-java:$versions.lz4",
|
||||
metrics: "com.yammer.metrics:metrics-core:$versions.metrics",
|
||||
|
|
|
@ -41,4 +41,5 @@ include 'clients',
|
|||
'streams:upgrade-system-tests-21',
|
||||
'streams:upgrade-system-tests-22',
|
||||
'streams:upgrade-system-tests-23',
|
||||
'streams:upgrade-system-tests-24',
|
||||
'tools'
|
||||
|
|
|
@ -0,0 +1,86 @@
|
|||
/*
|
||||
* 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.kafka.streams.tests;
|
||||
|
||||
import org.apache.kafka.common.utils.Utils;
|
||||
import org.apache.kafka.streams.KafkaStreams;
|
||||
import org.apache.kafka.streams.StreamsBuilder;
|
||||
import org.apache.kafka.streams.StreamsConfig;
|
||||
import org.apache.kafka.streams.kstream.KStream;
|
||||
import org.apache.kafka.streams.processor.AbstractProcessor;
|
||||
import org.apache.kafka.streams.processor.ProcessorContext;
|
||||
import org.apache.kafka.streams.processor.ProcessorSupplier;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
public class StreamsUpgradeTest {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static void main(final String[] args) throws Exception {
|
||||
if (args.length < 1) {
|
||||
System.err.println("StreamsUpgradeTest requires one argument (properties-file) but provided none");
|
||||
}
|
||||
final String propFileName = args[0];
|
||||
|
||||
final Properties streamsProperties = Utils.loadProps(propFileName);
|
||||
|
||||
System.out.println("StreamsTest instance started (StreamsUpgradeTest v2.4)");
|
||||
System.out.println("props=" + streamsProperties);
|
||||
|
||||
final StreamsBuilder builder = new StreamsBuilder();
|
||||
final KStream dataStream = builder.stream("data");
|
||||
dataStream.process(printProcessorSupplier());
|
||||
dataStream.to("echo");
|
||||
|
||||
final Properties config = new Properties();
|
||||
config.setProperty(StreamsConfig.APPLICATION_ID_CONFIG, "StreamsUpgradeTest");
|
||||
config.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000);
|
||||
config.putAll(streamsProperties);
|
||||
|
||||
final KafkaStreams streams = new KafkaStreams(builder.build(), config);
|
||||
streams.start();
|
||||
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||
streams.close();
|
||||
System.out.println("UPGRADE-TEST-CLIENT-CLOSED");
|
||||
System.out.flush();
|
||||
}));
|
||||
}
|
||||
|
||||
private static <K, V> ProcessorSupplier<K, V> printProcessorSupplier() {
|
||||
return () -> new AbstractProcessor<K, V>() {
|
||||
private int numRecordsProcessed = 0;
|
||||
|
||||
@Override
|
||||
public void init(final ProcessorContext context) {
|
||||
System.out.println("[2.4] initializing processor: topic=data taskId=" + context.taskId());
|
||||
numRecordsProcessed = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(final K key, final V value) {
|
||||
numRecordsProcessed++;
|
||||
if (numRecordsProcessed % 100 == 0) {
|
||||
System.out.println("processed " + numRecordsProcessed + " records from topic=data");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -70,6 +70,7 @@ RUN curl -s "$KAFKA_MIRROR/kafka-streams-2.0.1-test.jar" -o /opt/kafka-2.0.1/lib
|
|||
RUN curl -s "$KAFKA_MIRROR/kafka-streams-2.1.1-test.jar" -o /opt/kafka-2.1.1/libs/kafka-streams-2.1.1-test.jar
|
||||
RUN curl -s "$KAFKA_MIRROR/kafka-streams-2.2.2-test.jar" -o /opt/kafka-2.2.2/libs/kafka-streams-2.2.2-test.jar
|
||||
RUN curl -s "$KAFKA_MIRROR/kafka-streams-2.3.1-test.jar" -o /opt/kafka-2.3.1/libs/kafka-streams-2.3.1-test.jar
|
||||
RUN curl -s "$KAFKA_MIRROR/kafka-streams-2.4.0-test.jar" -o /opt/kafka-2.4.0/libs/kafka-streams-2.4.0-test.jar
|
||||
|
||||
# The version of Kibosh to use for testing.
|
||||
# If you update this, also update vagrant/base.sh
|
||||
|
|
|
@ -22,8 +22,7 @@ from ducktape.utils.util import wait_until
|
|||
from kafkatest.directory_layout.kafka_path import KafkaPathResolverMixin
|
||||
from kafkatest.services.kafka import KafkaConfig
|
||||
from kafkatest.services.monitor.jmx import JmxMixin
|
||||
from kafkatest.version import LATEST_0_10_0, LATEST_0_10_1, LATEST_0_10_2, LATEST_0_11_0, LATEST_1_0, LATEST_1_1, \
|
||||
LATEST_2_0, LATEST_2_1, LATEST_2_2, LATEST_2_3
|
||||
from kafkatest.version import LATEST_0_10_0, LATEST_0_10_1
|
||||
|
||||
STATE_DIR = "state.dir"
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ from kafkatest.services.streams import StreamsBrokerCompatibilityService
|
|||
from kafkatest.services.verifiable_consumer import VerifiableConsumer
|
||||
from kafkatest.services.zookeeper import ZookeeperService
|
||||
from kafkatest.version import LATEST_0_11_0, LATEST_0_10_2, LATEST_0_10_1, LATEST_0_10_0, LATEST_1_0, LATEST_1_1, \
|
||||
LATEST_2_0, LATEST_2_1, LATEST_2_2, LATEST_2_3, KafkaVersion
|
||||
LATEST_2_0, LATEST_2_1, LATEST_2_2, LATEST_2_3, LATEST_2_4, KafkaVersion
|
||||
|
||||
|
||||
class StreamsBrokerCompatibility(Test):
|
||||
|
@ -71,6 +71,7 @@ class StreamsBrokerCompatibility(Test):
|
|||
|
||||
self.kafka.stop()
|
||||
|
||||
@parametrize(broker_version=str(LATEST_2_4))
|
||||
@parametrize(broker_version=str(LATEST_2_3))
|
||||
@parametrize(broker_version=str(LATEST_2_2))
|
||||
@parametrize(broker_version=str(LATEST_2_1))
|
||||
|
|
|
@ -20,7 +20,7 @@ from kafkatest.services.kafka import KafkaService
|
|||
from kafkatest.services.verifiable_producer import VerifiableProducer
|
||||
from kafkatest.services.zookeeper import ZookeeperService
|
||||
from kafkatest.version import LATEST_0_10_0, LATEST_0_10_1, LATEST_0_10_2, LATEST_0_11_0, LATEST_1_0, LATEST_1_1, \
|
||||
LATEST_2_0, LATEST_2_1, LATEST_2_2, LATEST_2_3, DEV_BRANCH, DEV_VERSION, KafkaVersion
|
||||
LATEST_2_0, LATEST_2_1, LATEST_2_2, LATEST_2_3, LATEST_2_4, DEV_BRANCH, DEV_VERSION, KafkaVersion
|
||||
from kafkatest.services.streams import CooperativeRebalanceUpgradeService
|
||||
from kafkatest.tests.streams.utils import verify_stopped, stop_processors, verify_running
|
||||
|
||||
|
@ -43,6 +43,7 @@ class StreamsCooperativeRebalanceUpgradeTest(Test):
|
|||
first_bounce_phase = "first_bounce_phase-"
|
||||
second_bounce_phase = "second_bounce_phase-"
|
||||
|
||||
# !!CAUTION!!: THIS LIST OF VERSIONS IS FIXED, NO VERSIONS MUST BE ADDED
|
||||
streams_eager_rebalance_upgrade_versions = [str(LATEST_0_10_0), str(LATEST_0_10_1), str(LATEST_0_10_2), str(LATEST_0_11_0),
|
||||
str(LATEST_1_0), str(LATEST_1_1), str(LATEST_2_0), str(LATEST_2_1), str(LATEST_2_2),
|
||||
str(LATEST_2_3)]
|
||||
|
|
|
@ -25,20 +25,18 @@ from kafkatest.services.streams import StreamsSmokeTestDriverService, StreamsSmo
|
|||
from kafkatest.services.zookeeper import ZookeeperService
|
||||
from kafkatest.tests.streams.utils import extract_generation_from_logs
|
||||
from kafkatest.version import LATEST_0_10_0, LATEST_0_10_1, LATEST_0_10_2, LATEST_0_11_0, LATEST_1_0, LATEST_1_1, \
|
||||
LATEST_2_0, LATEST_2_1, LATEST_2_2, LATEST_2_3, DEV_BRANCH, DEV_VERSION, KafkaVersion
|
||||
LATEST_2_0, LATEST_2_1, LATEST_2_2, LATEST_2_3, LATEST_2_4, DEV_BRANCH, DEV_VERSION, KafkaVersion
|
||||
|
||||
# broker 0.10.0 is not compatible with newer Kafka Streams versions
|
||||
broker_upgrade_versions = [str(LATEST_0_10_1), str(LATEST_0_10_2), str(LATEST_0_11_0), str(LATEST_1_0), str(LATEST_1_1), \
|
||||
str(LATEST_2_0), str(LATEST_2_1), str(LATEST_2_2), str(LATEST_2_3), str(DEV_BRANCH)]
|
||||
str(LATEST_2_0), str(LATEST_2_1), str(LATEST_2_2), str(LATEST_2_3), str(LATEST_2_4), str(DEV_BRANCH)]
|
||||
|
||||
metadata_1_versions = [str(LATEST_0_10_0)]
|
||||
metadata_2_versions = [str(LATEST_0_10_1), str(LATEST_0_10_2), str(LATEST_0_11_0), str(LATEST_1_0), str(LATEST_1_1)]
|
||||
# once 0.10.1.2 is available backward_compatible_metadata_2_versions
|
||||
# can be replaced with metadata_2_versions
|
||||
backward_compatible_metadata_2_versions = [str(LATEST_0_10_2), str(LATEST_0_11_0), str(LATEST_1_0), str(LATEST_1_1)]
|
||||
# If we add a new version below, we also need to add this version to `streams.py`:
|
||||
# -> class `StreamsUpgradeTestJobRunnerService`, method `start_cmd`, variable `KAFKA_STREAMS_VERSION`
|
||||
metadata_3_or_higher_versions = [str(LATEST_2_0), str(LATEST_2_1), str(LATEST_2_2), str(LATEST_2_3), str(DEV_VERSION)]
|
||||
metadata_3_or_higher_versions = [str(LATEST_2_0), str(LATEST_2_1), str(LATEST_2_2), str(LATEST_2_3), str(LATEST_2_4), str(DEV_VERSION)]
|
||||
|
||||
"""
|
||||
After each release one should first check that the released version has been uploaded to
|
||||
|
@ -58,7 +56,7 @@ which are outlined here:
|
|||
"StreamsUpgradeTestJobRunnerService" on line 484 to make sure the correct arguments are passed
|
||||
during the system test run.
|
||||
|
||||
3. Update the vagrant/bash.sh file to include all new versions, including the newly released version
|
||||
3. Update the vagrant/base.sh file to include all new versions, including the newly released version
|
||||
and all point releases for existing releases. You only need to list the latest version in
|
||||
this file.
|
||||
|
||||
|
|
Loading…
Reference in New Issue