instana 1.215.1 → 1.217.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.circleci/config.yml +102 -4
- data/.tekton/.currency/docs/report.md +15 -14
- data/.tekton/.currency/resources/requirements.txt +0 -1
- data/.tekton/.currency/resources/table.json +6 -0
- data/.tekton/.currency/scripts/generate_report.py +38 -130
- data/.tekton/README.md +278 -0
- data/.tekton/github-pr-eventlistener.yaml +1 -1
- data/.tekton/pipeline.yaml +154 -6
- data/.tekton/pipelinerun.yaml +2 -2
- data/.tekton/ruby-tracer-prepuller.yaml +4 -0
- data/.tekton/run_unittests.sh +27 -6
- data/.tekton/scheduled-eventlistener.yaml +2 -4
- data/.tekton/task.yaml +156 -0
- data/Rakefile +1 -1
- data/gemfiles/excon_0100.gemfile +14 -0
- data/gemfiles/excon_021.gemfile +1 -1
- data/gemfiles/excon_079.gemfile +1 -1
- data/gemfiles/excon_100.gemfile +2 -2
- data/gemfiles/rails_61.gemfile +1 -0
- data/gemfiles/rails_70.gemfile +1 -0
- data/gemfiles/rails_71.gemfile +2 -1
- data/gemfiles/rails_80.gemfile +17 -0
- data/gemfiles/{excon_02.gemfile → sequel_56.gemfile} +4 -5
- data/gemfiles/sequel_57.gemfile +16 -0
- data/gemfiles/sequel_58.gemfile +16 -0
- data/lib/instana/activators/sequel.rb +20 -0
- data/lib/instana/backend/host_agent.rb +12 -3
- data/lib/instana/config.rb +1 -0
- data/lib/instana/instrumentation/active_record.rb +1 -1
- data/lib/instana/instrumentation/instrumented_request.rb +2 -2
- data/lib/instana/instrumentation/sequel.rb +42 -0
- data/lib/instana/tracing/span.rb +2 -2
- data/lib/instana/version.rb +1 -1
- data/lib/instana.rb +4 -2
- data/test/activator_test.rb +1 -1
- data/test/instrumentation/rails_active_record_test.rb +1 -1
- data/test/instrumentation/sequel_test.rb +105 -0
- metadata +13 -9
- data/.tekton/.currency/currency-pipeline.yaml +0 -36
- data/.tekton/.currency/currency-pipelinerun.yaml +0 -20
- data/.tekton/.currency/currency-rbac.yaml +0 -29
- data/.tekton/.currency/currency-scheduled-eventlistener.yaml +0 -56
- data/.tekton/.currency/currency-tasks.yaml +0 -94
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3dab15815d0d5714580ad0c16fee1e922b809746f3423b6245a0a97762e2edff
|
4
|
+
data.tar.gz: 83fdd5e75c3137d8c53c25d3027bbf5a5b0398af3d685908679df4e47fb4ee26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62e192f63c9a7a13d90683e1a242d12dfc9d9f924a09ec189692f11498b986f011204b732cb9c66082cc3203751d2e0848dca4c68546f5a95d450df6a5aa3e8d
|
7
|
+
data.tar.gz: bb68582ebc71784a353ac361af56fb9849f22034ed0fdd097c5fbf96bc3a552134f41e3dca011adf810aacd7c67b0a4aec1545e71ea4f33db26641dfa0e9b441
|
data/.circleci/config.yml
CHANGED
@@ -10,6 +10,7 @@ library_gemfile: &library_gemfile
|
|
10
10
|
- "./gemfiles/dalli_30.gemfile"
|
11
11
|
- "./gemfiles/dalli_32.gemfile"
|
12
12
|
- "./gemfiles/excon_079.gemfile"
|
13
|
+
- "./gemfiles/excon_0100.gemfile"
|
13
14
|
- "./gemfiles/excon_100.gemfile"
|
14
15
|
- "./gemfiles/graphql_10.gemfile"
|
15
16
|
- "./gemfiles/graphql_20.gemfile"
|
@@ -183,6 +184,43 @@ executors:
|
|
183
184
|
environment:
|
184
185
|
POSTGRES_PASSWORD: 'test'
|
185
186
|
POSTGRES_DB: 'ci_test'
|
187
|
+
ruby_34:
|
188
|
+
docker:
|
189
|
+
- image: ruby:3.4.0-preview2-bookworm
|
190
|
+
environment:
|
191
|
+
MEMCACHED_HOST: '127.0.0.1:11211'
|
192
|
+
REDIS_URL: 'redis://127.0.0.1:6379'
|
193
|
+
DATABASE_URL: 'sqlite3::memory:'
|
194
|
+
- image: memcached
|
195
|
+
- image: redis
|
196
|
+
- image: amazon/dynamodb-local
|
197
|
+
- image: minio/minio:latest
|
198
|
+
command: ["server", "/data"]
|
199
|
+
- image: s12v/sns
|
200
|
+
- image: softwaremill/elasticmq-native
|
201
|
+
- image: mongo:5-focal
|
202
|
+
ruby_34_mysql2:
|
203
|
+
docker:
|
204
|
+
- image: ruby:3.4.0-preview2-bookworm
|
205
|
+
environment:
|
206
|
+
DATABASE_URL: "mysql2://root@127.0.0.1:3306/ci_test"
|
207
|
+
- image: mariadb
|
208
|
+
environment:
|
209
|
+
MYSQL_DATABASE: 'ci_test'
|
210
|
+
MYSQL_USER: 'root'
|
211
|
+
MYSQL_PASSWORD: ''
|
212
|
+
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
|
213
|
+
MYSQL_ROOT_PASSWORD: ''
|
214
|
+
MYSQL_ROOT_HOST: '%'
|
215
|
+
ruby_34_postgres:
|
216
|
+
docker:
|
217
|
+
- image: ruby:3.4.0-preview2-bookworm
|
218
|
+
environment:
|
219
|
+
DATABASE_URL: "postgres://postgres:test@127.0.0.1:5432/ci_test"
|
220
|
+
- image: postgres
|
221
|
+
environment:
|
222
|
+
POSTGRES_PASSWORD: 'test'
|
223
|
+
POSTGRES_DB: 'ci_test'
|
186
224
|
ruby_33_lint:
|
187
225
|
docker:
|
188
226
|
- image: cimg/ruby:3.3-node
|
@@ -319,12 +357,12 @@ jobs:
|
|
319
357
|
bundle check || bundle install
|
320
358
|
- run_rubocop
|
321
359
|
report_coverage:
|
322
|
-
executor:
|
360
|
+
executor: ruby_33
|
323
361
|
steps:
|
324
362
|
- checkout
|
325
|
-
- run_sonarqube
|
363
|
+
# - run_sonarqube
|
326
364
|
publish:
|
327
|
-
executor:
|
365
|
+
executor: ruby_33
|
328
366
|
steps:
|
329
367
|
- checkout
|
330
368
|
- setup
|
@@ -350,7 +388,8 @@ workflows:
|
|
350
388
|
- ruby_31
|
351
389
|
- ruby_32
|
352
390
|
- ruby_33
|
353
|
-
|
391
|
+
- ruby_34
|
392
|
+
libraries_ruby_30_32:
|
354
393
|
jobs:
|
355
394
|
- test_apprisal:
|
356
395
|
matrix:
|
@@ -359,8 +398,26 @@ workflows:
|
|
359
398
|
- ruby_30
|
360
399
|
- ruby_31
|
361
400
|
- ruby_32
|
401
|
+
<<: *library_gemfile
|
402
|
+
libraries_ruby_33_34:
|
403
|
+
jobs:
|
404
|
+
- test_apprisal:
|
405
|
+
matrix:
|
406
|
+
parameters:
|
407
|
+
stack:
|
362
408
|
- ruby_33
|
409
|
+
- ruby_34
|
363
410
|
<<: *library_gemfile
|
411
|
+
# Currently compiling the native extensions for `grpc`
|
412
|
+
# exceeds an internal RAM and/or CPU limit of CircleCI executor,
|
413
|
+
# and the job gets terminated with:
|
414
|
+
# `Received "killed" signal`
|
415
|
+
# Hence we exclude it here for the time being.
|
416
|
+
# TODO: Remove this exclusion as soon as pre-built binaries are available
|
417
|
+
# on https://rubygems.org/gems/grpc/versions
|
418
|
+
exclude:
|
419
|
+
- stack: ruby_34
|
420
|
+
gemfile: "./gemfiles/grpc_10.gemfile"
|
364
421
|
rails_ruby_3:
|
365
422
|
jobs:
|
366
423
|
- test_apprisal:
|
@@ -376,12 +433,53 @@ workflows:
|
|
376
433
|
- ruby_32
|
377
434
|
- ruby_32_postgres
|
378
435
|
- ruby_32_mysql2
|
436
|
+
- ruby_33
|
379
437
|
- ruby_33_postgres
|
380
438
|
- ruby_33_mysql2
|
439
|
+
- ruby_34
|
440
|
+
- ruby_34_postgres
|
441
|
+
- ruby_34_mysql2
|
381
442
|
gemfile:
|
382
443
|
- "./gemfiles/rails_61.gemfile"
|
383
444
|
- "./gemfiles/rails_70.gemfile"
|
384
445
|
- "./gemfiles/rails_71.gemfile"
|
446
|
+
rails8_ruby_33_34:
|
447
|
+
jobs:
|
448
|
+
- test_apprisal:
|
449
|
+
matrix:
|
450
|
+
parameters:
|
451
|
+
stack:
|
452
|
+
- ruby_32
|
453
|
+
- ruby_32_postgres
|
454
|
+
- ruby_32_mysql2
|
455
|
+
- ruby_33
|
456
|
+
- ruby_33_postgres
|
457
|
+
- ruby_33_mysql2
|
458
|
+
- ruby_34
|
459
|
+
- ruby_34_postgres
|
460
|
+
- ruby_34_mysql2
|
461
|
+
gemfile:
|
462
|
+
- "./gemfiles/rails_80.gemfile"
|
463
|
+
sequel:
|
464
|
+
jobs:
|
465
|
+
- test_apprisal:
|
466
|
+
matrix:
|
467
|
+
parameters:
|
468
|
+
stack:
|
469
|
+
- ruby_30
|
470
|
+
- ruby_30_mysql2
|
471
|
+
- ruby_31
|
472
|
+
- ruby_31_mysql2
|
473
|
+
- ruby_32
|
474
|
+
- ruby_32_mysql2
|
475
|
+
- ruby_33
|
476
|
+
- ruby_33_mysql2
|
477
|
+
- ruby_34
|
478
|
+
- ruby_34_mysql2
|
479
|
+
gemfile:
|
480
|
+
- "./gemfiles/sequel_56.gemfile"
|
481
|
+
- "./gemfiles/sequel_57.gemfile"
|
482
|
+
- "./gemfiles/sequel_58.gemfile"
|
385
483
|
report_coverage:
|
386
484
|
jobs:
|
387
485
|
- report_coverage
|
@@ -3,17 +3,18 @@
|
|
3
3
|
| Package name | Support Policy | Beta version | Last Supported Version | Latest version | Up-to-date | Cloud Native |
|
4
4
|
|:---------------|:-----------------|:---------------|:-------------------------|:-----------------|:-------------|:---------------|
|
5
5
|
| Cuba | On demand | No | 4.0.3 | 4.0.3 | Yes | No |
|
6
|
-
| Rack |
|
7
|
-
| Rails |
|
8
|
-
| Rails::API |
|
9
|
-
| Rails LTS | On demand | No |
|
10
|
-
| Roda |
|
11
|
-
| Sinatra |
|
12
|
-
| Excon |
|
13
|
-
| gRPC |
|
14
|
-
| Net::HTTP | 0-day |
|
15
|
-
| Rest-Client |
|
16
|
-
| Dalli |
|
17
|
-
| Resque |
|
18
|
-
| Sidekiq |
|
19
|
-
| GraphQL |
|
6
|
+
| Rack | 45-days | No | 3.1.7 | 3.1.7 | Yes | No |
|
7
|
+
| Rails | 45-days | No | 7.2.1 | 7.2.1 | Yes | No |
|
8
|
+
| Rails::API | 45-days | No | 0.4.1 | 0.4.1 | Yes | No |
|
9
|
+
| Rails LTS | On demand | No | 6.1 | 6.1 | Yes | No |
|
10
|
+
| Roda | 45-days | No | 3.84.0 | 3.84.0 | Yes | No |
|
11
|
+
| Sinatra | 45-days | No | 4.0.0 | 4.0.0 | Yes | No |
|
12
|
+
| Excon | 45-days | No | 0.112.0 | 0.112.0 | Yes | Yes |
|
13
|
+
| gRPC | 45-days | No | 1.66.0 | 1.66.0 | Yes | No |
|
14
|
+
| Net::HTTP | 0-day | Yes | 0.4.1 | 0.4.1 | Yes | No |
|
15
|
+
| Rest-Client | 45-days | No | 2.1.0 | 2.1.0 | Yes | No |
|
16
|
+
| Dalli | 45-days | No | 3.2.8 | 3.2.8 | Yes | No |
|
17
|
+
| Resque | 45-days | No | 2.6.0 | 2.6.0 | Yes | Yes |
|
18
|
+
| Sidekiq | 45-days | No | 7.3.2 | 7.3.2 | Yes | Yes |
|
19
|
+
| GraphQL | 45-days | No | 2.3.17 | 2.3.17 | Yes | Yes |
|
20
|
+
| Sequel | 45-days | No | 5.60.0 | 5.84.0 | Yes | No |
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# Standard Libraries
|
2
|
+
import glob
|
2
3
|
import re
|
3
4
|
from json import load
|
4
5
|
|
@@ -6,143 +7,50 @@ from json import load
|
|
6
7
|
from requests import get
|
7
8
|
from pandas import DataFrame
|
8
9
|
from bs4 import BeautifulSoup
|
9
|
-
from kubernetes import client, config
|
10
10
|
|
11
11
|
JSON_FILE = "resources/table.json"
|
12
12
|
REPORT_FILE = "docs/report.md"
|
13
13
|
API_V1_ENDPOINT = "https://rubygems.org/api/v1/versions/"
|
14
14
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
group,
|
33
|
-
version,
|
34
|
-
namespace,
|
35
|
-
plural,
|
36
|
-
label_selector=f"{group}/task={task_name}, triggers.tekton.dev/trigger=ruby-tracer-scheduled-pipeline-triggger",
|
37
|
-
)["items"]
|
38
|
-
|
39
|
-
return taskruns
|
40
|
-
|
41
|
-
|
42
|
-
def process_taskrun_logs(
|
43
|
-
taskruns, core_v1_client, namespace, library, tekton_ci_output
|
44
|
-
):
|
45
|
-
for tr in taskruns:
|
46
|
-
pod_name = tr["status"]["podName"]
|
47
|
-
taskrun_name = tr["metadata"]["name"]
|
48
|
-
logs = core_v1_client.read_namespaced_pod_log(
|
49
|
-
pod_name, namespace, container="step-unittest"
|
50
|
-
)
|
51
|
-
if "Installing" not in logs:
|
52
|
-
print(
|
53
|
-
f"Unable to retrieve logs from taskrun pod {pod_name} of taskrun {taskrun_name} for gem {library}."
|
54
|
-
)
|
55
|
-
continue
|
56
|
-
|
57
|
-
print(
|
58
|
-
f"Retrieving logs from taskrun pod {pod_name} of taskrun {taskrun_name} for gem {library}.."
|
59
|
-
)
|
60
|
-
|
61
|
-
match = re.search(f"Installing ({library} [^\s]+)", logs)
|
62
|
-
tekton_ci_output += f"{match[1]}\n"
|
63
|
-
break
|
64
|
-
|
65
|
-
return tekton_ci_output
|
66
|
-
|
67
|
-
|
68
|
-
def get_tekton_ci_output():
|
69
|
-
config.load_incluster_config()
|
70
|
-
|
71
|
-
namespace = "default"
|
72
|
-
core_v1_client = client.CoreV1Api()
|
73
|
-
|
74
|
-
ruby_33_prefix = "unittest-default-ruby-33-"
|
75
|
-
ruby_31_prefix = "unittest-default-ruby-31-"
|
76
|
-
|
77
|
-
default_libraries_dict = {
|
78
|
-
"cuba": f"{ruby_33_prefix}1",
|
79
|
-
"excon": f"{ruby_33_prefix}4",
|
80
|
-
"graphql": f"{ruby_33_prefix}6",
|
81
|
-
"grpc": f"{ruby_33_prefix}7",
|
82
|
-
"rack": f"{ruby_33_prefix}10",
|
83
|
-
"rest-client": f"{ruby_33_prefix}11",
|
84
|
-
"roda": f"{ruby_33_prefix}13",
|
85
|
-
"sinatra": f"{ruby_33_prefix}16",
|
86
|
-
"net-http": f"{ruby_31_prefix}8",
|
15
|
+
def get_bundle_install_output():
|
16
|
+
|
17
|
+
libraries_from_logs = {
|
18
|
+
"cuba": "cuba_40_ruby_3.3.",
|
19
|
+
"excon": "excon_100_ruby_3.3.",
|
20
|
+
"graphql": "graphql_20_ruby_3.3.",
|
21
|
+
"grpc": "grpc_10_ruby_3.3.",
|
22
|
+
"rack": "rack_30_ruby_3.3.",
|
23
|
+
"rest-client": "rest_client_20_ruby_3.3.",
|
24
|
+
"roda": "roda_30_ruby_3.3.",
|
25
|
+
"sinatra": "sinatra_40_ruby_3.3.",
|
26
|
+
"net-http": "net_http_01_ruby_3.1.",
|
27
|
+
"rails": "rails_71_sqlite3_ruby_3.3.",
|
28
|
+
"dalli": "dalli_32_ruby_3.3.",
|
29
|
+
"resque": "resque_20_ruby_3.3.",
|
30
|
+
"sidekiq": "sidekiq_70_ruby_3.3.",
|
31
|
+
"sequel": "sequel_58_ruby_3.3."
|
87
32
|
}
|
88
33
|
|
89
|
-
|
90
|
-
task_name = "ruby-tracer-unittest-default-libraries-task"
|
91
|
-
default_taskruns = get_taskruns(namespace, task_name)
|
34
|
+
bundle_install_output = ""
|
92
35
|
|
93
|
-
for library, pattern in
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
filtered_default_taskruns = filter_taskruns(taskrun_filter, default_taskruns)
|
99
|
-
|
100
|
-
tekton_ci_output = process_taskrun_logs(
|
101
|
-
filtered_default_taskruns,
|
102
|
-
core_v1_client,
|
103
|
-
namespace,
|
104
|
-
library,
|
105
|
-
tekton_ci_output,
|
106
|
-
)
|
36
|
+
for library, pattern in libraries_from_logs.items():
|
37
|
+
glob_result = glob.glob(f"../../dep_{pattern}*")
|
38
|
+
if not glob_result:
|
39
|
+
print(f"Could not find bundle install log for gem '{library}'.")
|
40
|
+
continue
|
107
41
|
|
108
|
-
|
109
|
-
|
110
|
-
"pattern": "rails-postgres-11",
|
111
|
-
"task_name": "ruby-tracer-unittest-rails-postgres-task",
|
112
|
-
},
|
113
|
-
"dalli": {
|
114
|
-
"pattern": "memcached-11",
|
115
|
-
"task_name": "ruby-tracer-unittest-memcached-libraries-task",
|
116
|
-
},
|
117
|
-
"resque": {
|
118
|
-
"pattern": "unittest-redis-ruby-32-33-9",
|
119
|
-
"task_name": "ruby-tracer-unittest-redis-libraries-task",
|
120
|
-
},
|
121
|
-
"sidekiq": {
|
122
|
-
"pattern": "unittest-redis-ruby-32-33-18",
|
123
|
-
"task_name": "ruby-tracer-unittest-redis-libraries-task",
|
124
|
-
},
|
125
|
-
}
|
42
|
+
with open(glob_result[0], 'r') as file:
|
43
|
+
logs = file.read().replace('\n', ' ')
|
126
44
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
other_taskruns = get_taskruns(namespace, task_name)
|
135
|
-
filtered_other_taskruns = filter_taskruns(taskrun_filter, other_taskruns)
|
136
|
-
|
137
|
-
tekton_ci_output = process_taskrun_logs(
|
138
|
-
filtered_other_taskruns,
|
139
|
-
core_v1_client,
|
140
|
-
namespace,
|
141
|
-
library,
|
142
|
-
tekton_ci_output
|
143
|
-
)
|
45
|
+
if "Installing" not in logs:
|
46
|
+
print( f"Unable to retrieve logs from for gem '{library}'.")
|
47
|
+
continue
|
48
|
+
|
49
|
+
print(f"Retrieving currency for gem '{library}'.")
|
50
|
+
match = re.search(f"Installing ({library} [^\s]+)", logs)
|
51
|
+
bundle_install_output += f"{match[1]}\n"
|
144
52
|
|
145
|
-
return
|
53
|
+
return bundle_install_output
|
146
54
|
|
147
55
|
|
148
56
|
def get_upstream_version(dependency):
|
@@ -161,11 +69,11 @@ def get_upstream_version(dependency):
|
|
161
69
|
return latest_version
|
162
70
|
|
163
71
|
|
164
|
-
def get_last_supported_version(
|
72
|
+
def get_last_supported_version(bundle_install_output, dependency):
|
165
73
|
"""get up-to-date supported version"""
|
166
74
|
pattern = r" ([^\s]+)"
|
167
75
|
|
168
|
-
last_supported_version = re.search(dependency + pattern,
|
76
|
+
last_supported_version = re.search(dependency + pattern, bundle_install_output, flags=re.I | re.M)
|
169
77
|
|
170
78
|
return last_supported_version[1]
|
171
79
|
|
@@ -183,7 +91,7 @@ def main():
|
|
183
91
|
with open(JSON_FILE) as file:
|
184
92
|
data = load(file)
|
185
93
|
|
186
|
-
|
94
|
+
bundle_install_output = get_bundle_install_output()
|
187
95
|
|
188
96
|
items = data["table"]
|
189
97
|
|
@@ -194,7 +102,7 @@ def main():
|
|
194
102
|
latest_version = get_upstream_version(package)
|
195
103
|
|
196
104
|
if not package in ["rails lts", "rails-api"]:
|
197
|
-
last_supported_version = get_last_supported_version(
|
105
|
+
last_supported_version = get_last_supported_version(bundle_install_output, package)
|
198
106
|
else:
|
199
107
|
last_supported_version = latest_version
|
200
108
|
|