zentol commented on a change in pull request #10436: [FLINK-14920] [flink-end-to-end-perf-tests] Set up environment to run performance e2e tests URL: https://github.com/apache/flink/pull/10436#discussion_r369590198
########## File path: tools/jenkins/run.py ########## @@ -0,0 +1,65 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +################################################################################ +# 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. +################################################################################ + +# This file will be used in the task's config of jenkins,like this: +# python3 run.py ${WORKSPACE} slave_file dest_path result_file am_seserver_dddress inter_nums wait_minute + +import sys +from logger import logger +from init_env import init_env +from run_case import run_cases +from utils import run_command + + +def usage(): + logger.info("python3 run.py flink_code_path slave_file dest_path " + "result_file am_seserver_dddress inter_nums wait_minute") + + +if __name__ == "__main__": + if len(sys.argv) < 5: + logger.error("The param's number must be larger than 5") + usage() + sys.exit(1) + + flink_code_path = sys.argv[1] Review comment: The `FlinkDistribution` class is a wrapper around a distribution and allows you to call scripts, modify the config, copy jars etc. . The main user of this class is the `LocalStandaloneFlinkResource`, which is used in some e2e tests (StreamingKafkaITCase, SQLClientKafkaITCase`, but there's also the `PrometheusReporterEndToEndITCase` that uses it directly. Ultimately what we need is a `DistributedStandaloneFlinkResource` that ssh's into a configured set of machines, copy the distribution, and aggregates log files; from what I see this should be the main thing actually missing. The cool thing (like, _really_ cool) is that if we had that then we could also run our e2e tests in a distributed standalone fashion, without having to change the tests. This is one of the reasons why I'm so adamant on having this in Java; we can re-use this logic for other purposes than just benchmarks. Historically we also had _significant_ problems with maintaining anything that is not Java (see existing e2e tests in bash, our jepsen setup in closure); having it in Java makes it a lot easier for people to actually maintain it. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
