@@ -2,12 +2,13 @@ package sd
2
2
3
3
import (
4
4
"fmt"
5
- "github.com/grafana/pyroscope/ebpf/util"
6
5
"io/fs"
7
6
"os"
8
7
"path/filepath"
9
8
"testing"
10
9
10
+ "github.com/grafana/pyroscope/ebpf/util"
11
+
11
12
"github.com/stretchr/testify/require"
12
13
)
13
14
@@ -49,6 +50,11 @@ func TestCGroupMatching(t *testing.T) {
49
50
"7edda1de1e0d1d366351e478359cf5fa16bb8ab53063a99bb119e56971bfb7e2" ,
50
51
expectedID : "7edda1de1e0d1d366351e478359cf5fa16bb8ab53063a99bb119e56971bfb7e2" ,
51
52
},
53
+ {
54
+ containerID : "" ,
55
+ cgroup : "0::/../../user.slice/user-501.slice/session-3.scope" ,
56
+ expectedID : "" ,
57
+ },
52
58
}
53
59
for i , tc := range testcases {
54
60
t .Run (fmt .Sprintf ("testcase %d %s" , i , tc .cgroup ), func (t * testing.T ) {
@@ -136,3 +142,44 @@ func TestTargetFinder(t *testing.T) {
136
142
target = tf .FindTarget (239 )
137
143
require .Nil (t , target )
138
144
}
145
+
146
+ func TestPreferPIDOverContainerID (t * testing.T ) {
147
+ fs , err := newMockFS ()
148
+ require .NoError (t , err )
149
+ defer fs .rm ()
150
+
151
+ options := TargetsOptions {
152
+ Targets : []DiscoveryTarget {
153
+ map [string ]string {
154
+ "__meta_kubernetes_pod_container_id" : "containerd://9a7c72f122922fe3445ba85ce72c507c8976c0f3d919403fda7c22dfe516f66f" ,
155
+ "__meta_kubernetes_namespace" : "foo" ,
156
+ "__meta_kubernetes_pod_container_name" : "bar" ,
157
+ "__process_pid__" : "1801264" ,
158
+ "exe" : "/bin/bash" ,
159
+ },
160
+ map [string ]string {
161
+ "__meta_kubernetes_pod_container_id" : "containerd://9a7c72f122922fe3445ba85ce72c507c8976c0f3d919403fda7c22dfe516f66f" ,
162
+ "__meta_kubernetes_namespace" : "foo" ,
163
+ "__meta_kubernetes_pod_container_name" : "bar" ,
164
+ "__process_pid__" : "1801265" ,
165
+ "exe" : "/bin/dash" ,
166
+ },
167
+ },
168
+ TargetsOnly : true ,
169
+ DefaultTarget : nil ,
170
+ ContainerCacheSize : 1024 ,
171
+ }
172
+
173
+ tf , err := NewTargetFinder (fs .root , util .TestLogger (t ), options )
174
+ require .NoError (t , err )
175
+
176
+ target := tf .FindTarget (1801264 )
177
+ require .NotNil (t , target )
178
+ require .Equal (t , "ebpf/foo/bar" , target .labels .Get ("service_name" ))
179
+ require .Equal (t , "/bin/bash" , target .labels .Get ("exe" ))
180
+
181
+ target = tf .FindTarget (1801265 )
182
+ require .NotNil (t , target )
183
+ require .Equal (t , "ebpf/foo/bar" , target .labels .Get ("service_name" ))
184
+ require .Equal (t , "/bin/dash" , target .labels .Get ("exe" ))
185
+ }
0 commit comments