ClickHouse e seus amigos (1) compilam, desenvolvem, testam

Fonte original: https://bohutang.me/2020/06/05/clickhouse-and-friends-development/

Por acaso, tive uma comunicação offline com a equipe ClickHouse. Alexey mencionou a filosofia de design da ClickHouse:

  1. O produto deve resolver o problema real

  2. E fazer melhor do que outros

Um modelo para resolver problemas de negócios com pensamento de engenharia!

Para os usuários, o que interessa não é a alta tecnologia que está no céu ou no céu. Eles só precisam de uma solução que possa resolver seus próprios problemas. Isso é muito raro na comunidade de código aberto e cresce com a força "bárbara".

Então, eu estava cheio de curiosidade sobre esta arma que exala o sabor de vodka e participei da comunidade ClickHouse para descobrir. A primeira sensação é que ela é aberta, amigável e poderosa (AK47 vs CK16, código aberto ClickHouse 2016).

Este artigo começa com a compilação e teste, e então como contribuir com o Patch para a comunidade. Espero que seja útil para aqueles alunos que desejam participar da comunidade CK.

Como compilar e testar o ClickHouse localmente?

Aquisição do código fonte

1
git clone --recursive https://github.com/ClickHouse/ClickHouse

Preparação para compilação

1
2
3
4
5
6
7
sudo apt install build-essential
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update

sudo apt-get install gcc-9 g++-9 git python ninja-build
sudo snap install cmake

Comece a compilar

1
2
3
4
5
6
7
cd ClickHouse
mkdir build
cd build
export CC=gcc-9
export CXX=g++-9
cmake ..
ninja

método de teste

Os testes ClickHouse são detalhados no documento oficial de desenvolvimento / testes (https://github.com/ClickHouse/ClickHouse/blob/master/docs/en/development/tests.md). Aqui estão três modos de teste comumente usados :

1. Testes funcionais

Teste de função, usado principalmente para o teste de função interna do ClickHouse, método: entrada de um arquivo sql, saída de um resultado, semelhante ao mtr no MySQL, conjunto de teste (https://github.com/ClickHouse/ClickHouse/tree/master/tests/queries )

1
2
cd tests
./clickhouse-test -c "../build/programs/clickhouse-client" 00001_select_1

2. Testes de integração

Teste de integração, usado principalmente para testes envolvendo serviços de terceiros, como MySQL / Postgres / MongoDB, etc., agendamento e operação de agendamento (pytest) em contêineres, coleta de teste

Como há muitos módulos envolvidos, é difícil construir um ambiente de teste integrado. Recomenda-se usar a imagem oficial do docker. Por exemplo, para executar o teste de integração definido em test_mysql_protocol:

1
2
3
cd tests/integration
docker pull yandex/clickhouse-integration-tests-runner
./runner --binary /your/ClickHouse/build/programs/clickhouse  --bridge-binary /your/ClickHouse/build/programs/clickhouse-odbc-bridge --configs-dir /your/ClickHouse/programs/server/ 'test_mysql_protocol/test.py::test_java_client -ss -vv'

3. Testes de Unidade

O teste de unidade é usado principalmente para testar módulos de código. O conjunto de teste está no diretório de testes de cada módulo, como: Core / tests (https://github.com/ClickHouse/ClickHouse/tree/master/src/Core/tests)

Se você quiser entender como um módulo funciona, é altamente recomendável consultar o diretório de testes do módulo. Por exemplo, se você quiser entender o mecanismo de funcionamento do processador, rastreie e depure Processadores / testes / (https://github.com/ClickHouse/ClickHouse/ árvore / mestre / src / Core / testes).

Como fornecer Patch para a comunidade ClickHouse?

1. garfo

Primeiro bifurque um código ClickHouse em seu github, como https://github.com/BohuTANG/ClickHouse

2. Clone para local

1
2
git clone --recursive https://github.com/BohuTANG/ClickHouse
git checkout -B mysql_replica(branch名字)

3. Crie uma nova filial

1
git checkout -B mysql_replica(branch名字)

4. Desenvolvimento de funções

Os desenvolvedores podem enviar uma solicitação de rascunho de pull para o oficial, o github mostrará que a solicitação de pull está no estado de rascunho e o oficial não pode mesclar

5. podem ser tags testd

Esperando que o Upstream atinja o rótulo [pode ser testado]. Depois que os loucos do CI forem marcados, eles funcionarão com força e levará dezenas de horas para executar uma rodada.
Ajude os desenvolvedores a encontrar alguns erros no estilo, compilação e teste do código, para que os desenvolvedores possam iterar e corrigir em seus próprios ramos.

Se você apenas modificar o erro de digitação, esta tag Upstream geralmente não é adicionada.

6. Concluído

O desenvolvimento é concluído, o teste está OK, o Draft é promovido a Pull Request formal e a Upstraem Review é aguardada.

7. Unir para Mestre

Se o Upstream for aprovado, seu código será mesclado com o Master, parabéns por se tornar um contribuidor ClickHouse

8. Assuntos que precisam de atenção

A iteração do ClickHouse Upstream é muito rápida. Preste mais atenção ao progresso do branch master e tente manter o código do branch sincronizado com o master. Caso contrário, se Upstream Docker for atualizado, seu próprio teste pode falhar.

Recomenda-se ler doc / development (https://github.com/ClickHouse/ClickHouse/tree/master/docs/en/development).

O texto completo acabou.

Aproveite o ClickHouse :)

A aula "MySQL Core Optimization" do professor Ye foi atualizada para o MySQL 8.0, leia o código para iniciar a jornada de prática do MySQL 8.0

Acho que você gosta

Origin blog.csdn.net/n88Lpo/article/details/108891526
Recomendado
Clasificación