ClickHouse et ses amis (1) compilent, développent, testent

Source originale: https://bohutang.me/2020/06/05/clickhouse-and-friends-development/

Par chance, j'ai eu une communication hors ligne avec l'équipe ClickHouse. Alexey a mentionné la philosophie de conception de ClickHouse:

  1. Le produit doit résoudre le problème réel

  2. Et fais-le mieux que les autres

Un modèle pour résoudre les problèmes commerciaux avec la pensée d'ingénierie!

Pour les utilisateurs, ce qui leur importe, ce n'est pas la haute technologie qui est dans le ciel ou le ciel. Ils ont juste besoin d'une solution qui peut résoudre leurs propres problèmes. Ceci est très rare dans la communauté open source et se développe par force "barbare".

Donc, j'étais plein de curiosité pour cette arme qui respire la saveur de la vodka, et j'ai participé à la communauté ClickHouse pour le découvrir.Le premier sentiment est qu'elle est ouverte, conviviale et puissante (AK47 vs CK16, ClickHouse 2016 open source).

Cet article commence par la compilation et les tests, puis comment contribuer à Patch à la communauté. J'espère qu'il sera utile aux étudiants qui souhaitent participer à la communauté CK.

Comment compiler et tester ClickHouse localement?

Acquisition de code source

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

Préparation à la compilation

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

Commencer la compilation

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

méthode d'essai

Les tests ClickHouse sont détaillés dans le document officiel de développement / tests (https://github.com/ClickHouse/ClickHouse/blob/master/docs/en/development/tests.md). Voici 3 modes de test couramment utilisés :

1. Tests fonctionnels

Test de fonction, principalement utilisé pour le test de fonction interne de ClickHouse, méthode: entrée d'un fichier sql, sortie d'un résultat, similaire à mtr dans MySQL, ensemble de test (https://github.com/ClickHouse/ClickHouse/tree/master/tests/queries )

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

2. Tests d'intégration

Tests d'intégration, principalement utilisés pour les tests impliquant des services tiers, tels que MySQL / Postgres / MongoDB, etc., orchestration et planification (pytest) de manière conteneurisée, test de la collecte

Comme il y a de nombreux modules impliqués, il est difficile de construire un environnement de test intégré.Il est recommandé d'utiliser l'image officielle du docker. Par exemple, pour exécuter l'ensemble de tests d'intégration sous 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. Tests unitaires

Les tests unitaires sont principalement utilisés pour tester les modules de code. L'ensemble de tests se trouve dans le répertoire tests de chaque module, tel que: Core / tests (https://github.com/ClickHouse/ClickHouse/tree/master/src/Core/tests)

Si vous souhaitez comprendre le fonctionnement d'un module, il est fortement recommandé de parcourir le répertoire des tests du module. Par exemple, si vous souhaitez comprendre le mécanisme de fonctionnement du processeur, suivez et déboguez Processors / tests / (https://github.com/ClickHouse/ClickHouse/ tree / master / src / Core / tests).

Comment fournir un patch à la communauté ClickHouse?

1. fourchette

Commencez par charger un code ClickHouse sur votre github, tel que https://github.com/BohuTANG/ClickHouse

2. Cloner en local

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

3. Créez une nouvelle branche

1
git checkout -B mysql_replica(branch名字)

4. Développement fonctionnel

Les développeurs peuvent soumettre une demande d'extraction préliminaire à l'officiel, github montrera que la demande d'extraction est à l'état brouillon et l'officiel ne peut pas fusionner

5. peut être des balises testd

Attendez que Upstream atteigne le label [peut être testé]. Une fois que les fous de CI sont marqués, ils courent fortement. Il faut environ des dizaines d'heures pour faire un tour.
Aider les développeurs à trouver des erreurs dans le style de code, la compilation et les tests, afin que les développeurs puissent itérer et corriger dans leurs propres branches.

Si vous modifiez simplement la faute de frappe, cette balise Upstream n'est généralement pas ajoutée.

6. Terminé

Le développement est terminé, le test est OK, le brouillon est promu en une demande de tirage formelle et la révision Upstraem est attendue.

7. Fusionner avec le maître

Si Upstream réussit, votre code sera fusionné avec Master, félicitations pour devenir contributeur ClickHouse

8. Questions nécessitant une attention particulière

L'itération ClickHouse Upstream est très rapide. Assurez-vous de prêter plus d'attention à la progression de la branche maître et essayez de synchroniser votre code de branche avec le maître. Sinon, si Upstream Docker est mis à jour, votre propre test peut échouer.

Il est recommandé de lire doc / development (https://github.com/ClickHouse/ClickHouse/tree/master/docs/en/development) une fois.

Le texte intégral est terminé.

Profitez de ClickHouse :)

La classe "MySQL Core Optimization" du professeur Ye a été mise à niveau vers MySQL 8.0, scannez le code pour commencer le voyage de la pratique de MySQL 8.0

Je suppose que tu aimes

Origine blog.csdn.net/n88Lpo/article/details/108891526
conseillé
Classement