Skip to content

Commit d954b2e

Browse files
committed
Fix: Implement a mock data_collector
* Also update go.mod and go.sum
1 parent 3170f31 commit d954b2e

File tree

4 files changed

+171
-168
lines changed

4 files changed

+171
-168
lines changed

go.mod

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ module github.com/nginxinc/nginx-k8s-supportpkg
33
go 1.24.3
44

55
require (
6-
github.com/mittwald/go-helm-client v0.12.17
6+
github.com/mittwald/go-helm-client v0.12.18
77
github.com/spf13/cobra v1.9.1
8-
k8s.io/client-go v0.33.1
8+
go.uber.org/mock v0.5.0
9+
helm.sh/helm/v3 v3.18.4
10+
k8s.io/client-go v0.33.2
911
)
1012

1113
require (
@@ -84,17 +86,15 @@ require (
8486
go.opentelemetry.io/otel/metric v1.36.0 // indirect
8587
go.opentelemetry.io/otel/sdk v1.36.0 // indirect
8688
go.opentelemetry.io/otel/trace v1.36.0 // indirect
87-
golang.org/x/crypto v0.38.0 // indirect
88-
golang.org/x/sync v0.14.0 // indirect
89-
golang.org/x/tools v0.33.0 // indirect
89+
golang.org/x/crypto v0.39.0 // indirect
90+
golang.org/x/sync v0.15.0 // indirect
9091
google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect
9192
google.golang.org/grpc v1.72.1 // indirect
9293
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
93-
helm.sh/helm/v3 v3.18.0 // indirect
94-
k8s.io/apiserver v0.33.1 // indirect
95-
k8s.io/cli-runtime v0.33.1 // indirect
96-
k8s.io/component-base v0.33.1 // indirect
97-
k8s.io/kubectl v0.33.1 // indirect
94+
k8s.io/apiserver v0.33.2 // indirect
95+
k8s.io/cli-runtime v0.33.2 // indirect
96+
k8s.io/component-base v0.33.2 // indirect
97+
k8s.io/kubectl v0.33.2 // indirect
9898
oras.land/oras-go/v2 v2.6.0 // indirect
9999
sigs.k8s.io/kustomize/api v0.19.0 // indirect
100100
sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
@@ -122,17 +122,17 @@ require (
122122
golang.org/x/oauth2 v0.30.0 // indirect
123123
golang.org/x/sys v0.33.0 // indirect
124124
golang.org/x/term v0.32.0 // indirect
125-
golang.org/x/text v0.25.0 // indirect
125+
golang.org/x/text v0.26.0 // indirect
126126
golang.org/x/time v0.11.0 // indirect
127127
google.golang.org/protobuf v1.36.6 // indirect
128128
gopkg.in/inf.v0 v0.9.1 // indirect
129129
gopkg.in/yaml.v3 v3.0.1 // indirect
130-
k8s.io/api v0.33.1
131-
k8s.io/apiextensions-apiserver v0.33.1
132-
k8s.io/apimachinery v0.33.1
130+
k8s.io/api v0.33.2
131+
k8s.io/apiextensions-apiserver v0.33.2
132+
k8s.io/apimachinery v0.33.2
133133
k8s.io/klog/v2 v2.130.1 // indirect
134134
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
135-
k8s.io/metrics v0.33.1
135+
k8s.io/metrics v0.33.2
136136
k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979 // indirect
137137
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
138138
sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect

go.sum

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,8 @@ github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQ
189189
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
190190
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
191191
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
192-
github.com/mittwald/go-helm-client v0.12.17 h1:PncoE1u3fXuHWLineNDQ4hI5J4uVbMW3JWrtdBR86TI=
193-
github.com/mittwald/go-helm-client v0.12.17/go.mod h1:GQxuPspUcMsxWWDtYzjRdxOAjh3LKADIfgqtUf9mjHk=
192+
github.com/mittwald/go-helm-client v0.12.18 h1:i9cJNv/YC3ZPKUKVNYTlrOO7ZO6YFKE/ak3J5TeYHPU=
193+
github.com/mittwald/go-helm-client v0.12.18/go.mod h1:dLl5NkdKCvwKvLIdZzg4MDbxhSKmuimdmM3WpsAzS0I=
194194
github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU=
195195
github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
196196
github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ=
@@ -330,15 +330,17 @@ go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9f
330330
go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc=
331331
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
332332
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
333+
go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
334+
go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
333335
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
334336
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
335337
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
336-
golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8=
337-
golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw=
338+
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
339+
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
338340
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
339341
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
340-
golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
341-
golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
342+
golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
343+
golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
342344
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
343345
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
344346
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -350,8 +352,8 @@ golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKl
350352
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
351353
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
352354
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
353-
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
354-
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
355+
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
356+
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
355357
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
356358
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
357359
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -364,8 +366,8 @@ golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
364366
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
365367
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
366368
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
367-
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
368-
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
369+
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
370+
golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
369371
golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
370372
golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
371373
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -399,30 +401,30 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
399401
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
400402
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
401403
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
402-
helm.sh/helm/v3 v3.18.0 h1:ItOAm3Quo0dus3NUHjs+lluqWWEIO7xrSW+zKWCrvlw=
403-
helm.sh/helm/v3 v3.18.0/go.mod h1:43QHS1W97RcoFJRk36ZBhHdTfykqBlJdsWp3yhzdq8w=
404-
k8s.io/api v0.33.1 h1:tA6Cf3bHnLIrUK4IqEgb2v++/GYUtqiu9sRVk3iBXyw=
405-
k8s.io/api v0.33.1/go.mod h1:87esjTn9DRSRTD4fWMXamiXxJhpOIREjWOSjsW1kEHw=
406-
k8s.io/apiextensions-apiserver v0.33.1 h1:N7ccbSlRN6I2QBcXevB73PixX2dQNIW0ZRuguEE91zI=
407-
k8s.io/apiextensions-apiserver v0.33.1/go.mod h1:uNQ52z1A1Gu75QSa+pFK5bcXc4hq7lpOXbweZgi4dqA=
408-
k8s.io/apimachinery v0.33.1 h1:mzqXWV8tW9Rw4VeW9rEkqvnxj59k1ezDUl20tFK/oM4=
409-
k8s.io/apimachinery v0.33.1/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM=
410-
k8s.io/apiserver v0.33.1 h1:yLgLUPDVC6tHbNcw5uE9mo1T6ELhJj7B0geifra3Qdo=
411-
k8s.io/apiserver v0.33.1/go.mod h1:VMbE4ArWYLO01omz+k8hFjAdYfc3GVAYPrhP2tTKccs=
412-
k8s.io/cli-runtime v0.33.1 h1:TvpjEtF71ViFmPeYMj1baZMJR4iWUEplklsUQ7D3quA=
413-
k8s.io/cli-runtime v0.33.1/go.mod h1:9dz5Q4Uh8io4OWCLiEf/217DXwqNgiTS/IOuza99VZE=
414-
k8s.io/client-go v0.33.1 h1:ZZV/Ks2g92cyxWkRRnfUDsnhNn28eFpt26aGc8KbXF4=
415-
k8s.io/client-go v0.33.1/go.mod h1:JAsUrl1ArO7uRVFWfcj6kOomSlCv+JpvIsp6usAGefA=
416-
k8s.io/component-base v0.33.1 h1:EoJ0xA+wr77T+G8p6T3l4efT2oNwbqBVKR71E0tBIaI=
417-
k8s.io/component-base v0.33.1/go.mod h1:guT/w/6piyPfTgq7gfvgetyXMIh10zuXA6cRRm3rDuY=
404+
helm.sh/helm/v3 v3.18.4 h1:pNhnHM3nAmDrxz6/UC+hfjDY4yeDATQCka2/87hkZXQ=
405+
helm.sh/helm/v3 v3.18.4/go.mod h1:WVnwKARAw01iEdjpEkP7Ii1tT1pTPYfM1HsakFKM3LI=
406+
k8s.io/api v0.33.2 h1:YgwIS5jKfA+BZg//OQhkJNIfie/kmRsO0BmNaVSimvY=
407+
k8s.io/api v0.33.2/go.mod h1:fhrbphQJSM2cXzCWgqU29xLDuks4mu7ti9vveEnpSXs=
408+
k8s.io/apiextensions-apiserver v0.33.2 h1:6gnkIbngnaUflR3XwE1mCefN3YS8yTD631JXQhsU6M8=
409+
k8s.io/apiextensions-apiserver v0.33.2/go.mod h1:IvVanieYsEHJImTKXGP6XCOjTwv2LUMos0YWc9O+QP8=
410+
k8s.io/apimachinery v0.33.2 h1:IHFVhqg59mb8PJWTLi8m1mAoepkUNYmptHsV+Z1m5jY=
411+
k8s.io/apimachinery v0.33.2/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM=
412+
k8s.io/apiserver v0.33.2 h1:KGTRbxn2wJagJowo29kKBp4TchpO1DRO3g+dB/KOJN4=
413+
k8s.io/apiserver v0.33.2/go.mod h1:9qday04wEAMLPWWo9AwqCZSiIn3OYSZacDyu/AcoM/M=
414+
k8s.io/cli-runtime v0.33.2 h1:koNYQKSDdq5AExa/RDudXMhhtFasEg48KLS2KSAU74Y=
415+
k8s.io/cli-runtime v0.33.2/go.mod h1:gnhsAWpovqf1Zj5YRRBBU7PFsRc6NkEkwYNQE+mXL88=
416+
k8s.io/client-go v0.33.2 h1:z8CIcc0P581x/J1ZYf4CNzRKxRvQAwoAolYPbtQes+E=
417+
k8s.io/client-go v0.33.2/go.mod h1:9mCgT4wROvL948w6f6ArJNb7yQd7QsvqavDeZHvNmHo=
418+
k8s.io/component-base v0.33.2 h1:sCCsn9s/dG3ZrQTX/Us0/Sx2R0G5kwa0wbZFYoVp/+0=
419+
k8s.io/component-base v0.33.2/go.mod h1:/41uw9wKzuelhN+u+/C59ixxf4tYQKW7p32ddkYNe2k=
418420
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
419421
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
420422
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4=
421423
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
422-
k8s.io/kubectl v0.33.1 h1:OJUXa6FV5bap6iRy345ezEjU9dTLxqv1zFTVqmeHb6A=
423-
k8s.io/kubectl v0.33.1/go.mod h1:Z07pGqXoP4NgITlPRrnmiM3qnoo1QrK1zjw85Aiz8J0=
424-
k8s.io/metrics v0.33.1 h1:Ypd5ITCf+fM+LDNFk7hESXTc3vh02CQYGiwRoVRaGsM=
425-
k8s.io/metrics v0.33.1/go.mod h1:wK8cFTK5ykBdhL0Wy4RZwLH28XM7j/Klc+NQrMRWVxg=
424+
k8s.io/kubectl v0.33.2 h1:7XKZ6DYCklu5MZQzJe+CkCjoGZwD1wWl7t/FxzhMz7Y=
425+
k8s.io/kubectl v0.33.2/go.mod h1:8rC67FB8tVTYraovAGNi/idWIK90z2CHFNMmGJZJ3KI=
426+
k8s.io/metrics v0.33.2 h1:gNCBmtnUMDMCRg9Ly5ehxP3OdKISMsOnh1vzk01iCgE=
427+
k8s.io/metrics v0.33.2/go.mod h1:yxoAosKGRsZisv3BGekC5W6T1J8XSV+PoUEevACRv7c=
426428
k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979 h1:jgJW5IePPXLGB8e/1wvd0Ich9QE97RvvF3a8J3fP/Lg=
427429
k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
428430
oras.land/oras-go/v2 v2.6.0 h1:X4ELRsiGkrbeox69+9tzTu492FMUu7zJQW6eJU+I2oc=

pkg/jobs/common_job_list_test.go

Lines changed: 3 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -2,136 +2,16 @@ package jobs
22

33
import (
44
"context"
5-
"io"
6-
"log"
75
"path/filepath"
86
"strings"
97
"testing"
108
"time"
119

12-
"github.com/nginxinc/nginx-k8s-supportpkg/pkg/data_collector"
13-
"helm.sh/helm/v3/pkg/cli"
14-
"helm.sh/helm/v3/pkg/release"
15-
16-
appsv1 "k8s.io/api/apps/v1"
17-
corev1 "k8s.io/api/core/v1"
18-
rbacv1 "k8s.io/api/rbac/v1"
19-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
20-
"k8s.io/apimachinery/pkg/runtime"
21-
22-
helmclient "github.com/mittwald/go-helm-client"
23-
mockHelmClient "github.com/mittwald/go-helm-client/mock"
24-
"go.uber.org/mock/gomock"
25-
26-
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
27-
apiextensionsfake "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake"
28-
"k8s.io/client-go/kubernetes/fake"
29-
"k8s.io/client-go/rest"
30-
metricsfake "k8s.io/metrics/pkg/client/clientset/versioned/fake"
10+
"github.com/nginxinc/nginx-k8s-supportpkg/pkg/mock"
3111
)
3212

33-
// helper creates int32 ptr
34-
func i32(v int32) *int32 { return &v }
35-
36-
func setupDataCollector(t *testing.T) *data_collector.DataCollector {
37-
t.Helper()
38-
39-
tmpDir := t.TempDir()
40-
41-
// Seed fake objects (namespace default implied by metadata)
42-
objs := []runtime.Object{
43-
&corev1.Pod{
44-
ObjectMeta: metav1.ObjectMeta{Name: "pod-1", Namespace: "default"},
45-
Spec: corev1.PodSpec{
46-
Containers: []corev1.Container{{Name: "c1", Image: "nginx:latest"}},
47-
},
48-
},
49-
&corev1.Service{
50-
ObjectMeta: metav1.ObjectMeta{Name: "svc-1", Namespace: "default"},
51-
Spec: corev1.ServiceSpec{Selector: map[string]string{"app": "demo"}},
52-
},
53-
&appsv1.Deployment{
54-
ObjectMeta: metav1.ObjectMeta{Name: "dep-1", Namespace: "default"},
55-
Spec: appsv1.DeploymentSpec{
56-
Replicas: i32(1),
57-
Selector: &metav1.LabelSelector{MatchLabels: map[string]string{"app": "demo"}},
58-
Template: corev1.PodTemplateSpec{
59-
ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{"app": "demo"}},
60-
Spec: corev1.PodSpec{
61-
Containers: []corev1.Container{{Name: "dep-c1", Image: "nginx:latest"}},
62-
},
63-
},
64-
},
65-
},
66-
&rbacv1.Role{
67-
ObjectMeta: metav1.ObjectMeta{Name: "role-1", Namespace: "default"},
68-
Rules: []rbacv1.PolicyRule{{APIGroups: []string{""}, Resources: []string{"pods"}, Verbs: []string{"get"}}},
69-
},
70-
&corev1.ConfigMap{
71-
ObjectMeta: metav1.ObjectMeta{Name: "cm-1", Namespace: "default"},
72-
Data: map[string]string{"k": "v"},
73-
},
74-
}
75-
76-
client := fake.NewSimpleClientset(objs...)
77-
// Mock rest.Config
78-
restConfig := &rest.Config{
79-
Host: "https://mock-k8s-server",
80-
}
81-
82-
// Create a CRD clientset (using the real clientset, but not actually connecting)
83-
crd := &apiextensionsv1.CustomResourceDefinition{
84-
ObjectMeta: metav1.ObjectMeta{
85-
Name: "testcrd.example.com",
86-
},
87-
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
88-
Group: "example.com",
89-
Names: apiextensionsv1.CustomResourceDefinitionNames{
90-
Kind: "TestCRD",
91-
Plural: "testcrds",
92-
Singular: "testcrd",
93-
},
94-
Scope: apiextensionsv1.NamespaceScoped,
95-
Versions: []apiextensionsv1.CustomResourceDefinitionVersion{
96-
{
97-
Name: "v1",
98-
Served: true,
99-
Storage: true,
100-
},
101-
},
102-
},
103-
}
104-
// crdClient := &apiextensionsclientset.Clientset{}
105-
crdClient := apiextensionsfake.NewSimpleClientset(crd)
106-
metricsClient := metricsfake.NewSimpleClientset()
107-
// helmClient := &FakeHelmClient{}
108-
109-
ctrl := gomock.NewController(t)
110-
defer ctrl.Finish()
111-
helmClient := mockHelmClient.NewMockClient(ctrl)
112-
if helmClient == nil {
113-
t.Fail()
114-
}
115-
helmClient.EXPECT().GetSettings().Return(&cli.EnvSettings{}).AnyTimes()
116-
var mockedRelease = release.Release{Name: "test", Namespace: "test", Manifest: "apiVersion: v1\nkind: ConfigMap\nmetadata:\n name: example-config\n namespace: default\ndata:\n key: value\n"}
117-
helmClient.EXPECT().ListDeployedReleases().Return([]*release.Release{&mockedRelease}, nil).AnyTimes()
118-
119-
return &data_collector.DataCollector{
120-
BaseDir: tmpDir,
121-
Namespaces: []string{"default"},
122-
Logger: log.New(io.Discard, "", 0),
123-
K8sCoreClientSet: client,
124-
K8sCrdClientSet: crdClient,
125-
K8sRestConfig: restConfig,
126-
K8sMetricsClientSet: metricsClient,
127-
K8sHelmClientSet: map[string]helmclient.Client{"default": helmClient},
128-
129-
// Leave other client sets nil; we will not execute jobs that depend on them in this focused test.
130-
}
131-
}
132-
13313
func TestCommonJobList_SelectedJobsProduceFiles(t *testing.T) {
134-
dc := setupDataCollector(t)
14+
dc := mock.SetupMockDataCollector(t)
13515
jobList := CommonJobList()
13616

13717
for _, job := range jobList {
@@ -166,7 +46,7 @@ func TestCommonJobList_SelectedJobsProduceFiles(t *testing.T) {
16646
}
16747

16848
func TestCommonJobList_PodListJSONKeyPresence(t *testing.T) {
169-
dc := setupDataCollector(t)
49+
dc := mock.SetupMockDataCollector(t)
17050
var podListJob *Job
17151
jobs := CommonJobList()
17252
for i, j := range jobs {

0 commit comments

Comments
 (0)