Module: GitlabQuality::TestTooling::TestMetricsExporter::Utils
- Included in:
- Formatter
- Defined in:
- lib/gitlab_quality/test_tooling/test_metrics_exporter/utils.rb
Class Method Summary collapse
-
.clickhouse_client ⇒ ClickHouse::Client
Configured clickhouse client.
-
.config ⇒ Config
Instance of metrics exporter configuration.
-
.logger ⇒ Logger
Configured logger instance.
Instance Method Summary collapse
-
#create_clickhouse_metrics_table ⇒ void
Create table for metrics export using current ClickHouse configuration.
-
#gcs_client ⇒ Fog::Storage::Google, GcsTools::GCSMockClient
GCS client instance.
Class Method Details
.clickhouse_client ⇒ ClickHouse::Client
Configured clickhouse client
24 25 26 27 28 29 30 31 32 |
# File 'lib/gitlab_quality/test_tooling/test_metrics_exporter/utils.rb', line 24 def clickhouse_client ClickHouse::Client.new( url: config.clickhouse_config.url, database: config.clickhouse_config.database, username: config.clickhouse_config.username, password: config.clickhouse_config.password, logger: logger ) end |
.config ⇒ Config
Instance of metrics exporter configuration
10 11 12 |
# File 'lib/gitlab_quality/test_tooling/test_metrics_exporter/utils.rb', line 10 def config Config.configuration end |
.logger ⇒ Logger
Configured logger instance
17 18 19 |
# File 'lib/gitlab_quality/test_tooling/test_metrics_exporter/utils.rb', line 17 def logger config.logger end |
Instance Method Details
#create_clickhouse_metrics_table ⇒ void
This method returns an undefined value.
Create table for metrics export using current ClickHouse configuration
This method is mostly for schema documentation but it can be used together with initial_run! method in
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/gitlab_quality/test_tooling/test_metrics_exporter/utils.rb', line 50 def create_clickhouse_metrics_table table_name = config.clickhouse_config.table_name clickhouse_client.query(<<~SQL) CREATE TABLE IF NOT EXISTS #{table_name} ( timestamp DateTime64(6, 'UTC'), id String, name String, hash String, file_path String, status LowCardinality(String), run_time UInt32, location String, quarantined Bool, test_retried Bool, feature_category LowCardinality(String) DEFAULT 'unknown', run_type LowCardinality(String) DEFAULT 'unknown', spec_file_path_prefix LowCardinality(String) DEFAULT '', ci_project_id UInt32, ci_job_name LowCardinality(String), ci_job_id UInt64, ci_pipeline_id UInt64, ci_merge_request_iid UInt32 DEFAULT 0, ci_project_path LowCardinality(String), ci_branch String, ci_target_branch LowCardinality(String), ci_server_url LowCardinality(String) DEFAULT 'https://gitlab.com', exception_class String DEFAULT '', exception_classes Array(String) DEFAULT [], failure_exception String DEFAULT '' ) ENGINE = MergeTree() PARTITION BY toYYYYMM(timestamp) ORDER BY (ci_project_path, status, run_type, feature_category, file_path, timestamp, ci_pipeline_id) SETTINGS index_granularity = 8192; SQL return if config..empty? clickhouse_client.query( "ALTER TABLE #{table_name} #{config..map { |column| "ADD COLUMN IF NOT EXISTS #{column}" }.join(', ')};" ) end |
#gcs_client ⇒ Fog::Storage::Google, GcsTools::GCSMockClient
GCS client instance
37 38 39 40 41 42 43 |
# File 'lib/gitlab_quality/test_tooling/test_metrics_exporter/utils.rb', line 37 def gcs_client GcsTools.gcs_client( project_id: config.gcs_config.project_id, credentials: config.gcs_config.credentials, dry_run: config.gcs_config.dry_run ) end |