66package io .opentelemetry .javaagent .instrumentation .kubernetesclient .v7_0 ;
77
88import static org .assertj .core .api .Assertions .assertThat ;
9+ import static org .junit .jupiter .params .provider .Arguments .arguments ;
910
1011import java .util .stream .Stream ;
1112import org .junit .jupiter .api .Test ;
@@ -38,46 +39,27 @@ void isResourceRequest() {
3839 .isTrue ();
3940 }
4041
41- @ ParameterizedTest
42+ @ ParameterizedTest ( name = "{0}" )
4243 @ MethodSource ("parseCoreResourceArguments" )
43- void parseCoreResource (
44- String urlPath ,
45- String apiGroup ,
46- String apiVersion ,
47- String resource ,
48- String subResource ,
49- String namespace ,
50- String name )
44+ void parseCoreResource (String name , String urlPath , KubernetesResource expected )
5145 throws ParseKubernetesResourceException {
52- assertThat (KubernetesResource .parseCoreResource (urlPath ).getApiGroup ()).isEqualTo (apiGroup );
53- assertThat (KubernetesResource .parseCoreResource (urlPath ).getApiVersion ()).isEqualTo (apiVersion );
54- assertThat (KubernetesResource .parseCoreResource (urlPath ).getResource ()).isEqualTo (resource );
55- assertThat (KubernetesResource .parseCoreResource (urlPath ).getSubResource ())
56- .isEqualTo (subResource );
57- assertThat (KubernetesResource .parseCoreResource (urlPath ).getNamespace ()).isEqualTo (namespace );
58- assertThat (KubernetesResource .parseCoreResource (urlPath ).getName ()).isEqualTo (name );
46+ assertResourceEquals (KubernetesResource .parseCoreResource (urlPath ), expected );
5947 }
6048
61- @ ParameterizedTest
49+ @ ParameterizedTest ( name = "{0}" )
6250 @ MethodSource ("parseRegularResourceArguments" )
63- void parseRegularResource (
64- String urlPath ,
65- String apiGroup ,
66- String apiVersion ,
67- String resource ,
68- String subResource ,
69- String namespace ,
70- String name )
51+ void parseRegularResource (String name , String urlPath , KubernetesResource expected )
7152 throws ParseKubernetesResourceException {
72- assertThat (KubernetesResource .parseRegularResource (urlPath ).getApiGroup ()).isEqualTo (apiGroup );
73- assertThat (KubernetesResource .parseRegularResource (urlPath ).getApiVersion ())
74- .isEqualTo (apiVersion );
75- assertThat (KubernetesResource .parseRegularResource (urlPath ).getResource ()).isEqualTo (resource );
76- assertThat (KubernetesResource .parseRegularResource (urlPath ).getSubResource ())
77- .isEqualTo (subResource );
78- assertThat (KubernetesResource .parseRegularResource (urlPath ).getNamespace ())
79- .isEqualTo (namespace );
80- assertThat (KubernetesResource .parseRegularResource (urlPath ).getName ()).isEqualTo (name );
53+ assertResourceEquals (KubernetesResource .parseRegularResource (urlPath ), expected );
54+ }
55+
56+ private static void assertResourceEquals (KubernetesResource actual , KubernetesResource expected ) {
57+ assertThat (actual .getApiGroup ()).isEqualTo (expected .getApiGroup ());
58+ assertThat (actual .getApiVersion ()).isEqualTo (expected .getApiVersion ());
59+ assertThat (actual .getResource ()).isEqualTo (expected .getResource ());
60+ assertThat (actual .getSubResource ()).isEqualTo (expected .getSubResource ());
61+ assertThat (actual .getNamespace ()).isEqualTo (expected .getNamespace ());
62+ assertThat (actual .getName ()).isEqualTo (expected .getName ());
8163 }
8264
8365 @ ParameterizedTest
@@ -104,73 +86,59 @@ private static Stream<Arguments> k8sRequestVerbsArguments() {
10486 }
10587
10688 private static Stream <Arguments > parseRegularResourceArguments () {
89+ KubernetesResource deploymentsList =
90+ new KubernetesResource ("apps" , "v1" , "deployments" , null , null , null );
91+ KubernetesResource namespacedDeployments =
92+ new KubernetesResource ("apps" , "v1" , "deployments" , null , "default" , null );
93+ KubernetesResource namedDeployment =
94+ new KubernetesResource ("apps" , "v1" , "deployments" , null , "default" , "foo" );
95+ KubernetesResource namedDeploymentStatus =
96+ new KubernetesResource ("apps" , "v1" , "deployments" , "status" , "default" , "foo" );
97+ KubernetesResource foosList =
98+ new KubernetesResource ("example.io" , "v1alpha1" , "foos" , null , null , null );
99+ KubernetesResource namespacedFoos =
100+ new KubernetesResource ("example.io" , "v1alpha1" , "foos" , null , "default" , null );
101+ KubernetesResource namedFoo =
102+ new KubernetesResource ("example.io" , "v1alpha1" , "foos" , null , "default" , "foo" );
103+ KubernetesResource namedFooStatus =
104+ new KubernetesResource ("example.io" , "v1alpha1" , "foos" , "status" , "default" , "foo" );
107105 return Stream .of (
108- Arguments .of ("/apis/apps/v1/deployments" , "apps" , "v1" , "deployments" , null , null , null ),
109- Arguments .of (
110- "/apis/apps/v1/namespaces/default/deployments" ,
111- "apps" ,
112- "v1" ,
113- "deployments" ,
114- null ,
115- "default" ,
116- null ),
117- Arguments .of (
118- "/apis/apps/v1/namespaces/default/deployments/foo" ,
119- "apps" ,
120- "v1" ,
121- "deployments" ,
122- null ,
123- "default" ,
124- "foo" ),
125- Arguments .of (
106+ arguments ("cluster-scoped list" , "/apis/apps/v1/deployments" , deploymentsList ),
107+ arguments (
108+ "namespaced list" , "/apis/apps/v1/namespaces/default/deployments" , namespacedDeployments ),
109+ arguments (
110+ "namespaced named" , "/apis/apps/v1/namespaces/default/deployments/foo" , namedDeployment ),
111+ arguments (
112+ "namespaced named subresource" ,
126113 "/apis/apps/v1/namespaces/default/deployments/foo/status" ,
127- "apps" ,
128- "v1" ,
129- "deployments" ,
130- "status" ,
131- "default" ,
132- "foo" ),
133- Arguments .of (
134- "/apis/example.io/v1alpha1/foos" , "example.io" , "v1alpha1" , "foos" , null , null , null ),
135- Arguments .of (
114+ namedDeploymentStatus ),
115+ arguments ("custom resource cluster-scoped list" , "/apis/example.io/v1alpha1/foos" , foosList ),
116+ arguments (
117+ "custom resource namespaced list" ,
136118 "/apis/example.io/v1alpha1/namespaces/default/foos" ,
137- "example.io" ,
138- "v1alpha1" ,
139- "foos" ,
140- null ,
141- "default" ,
142- null ),
143- Arguments .of (
119+ namespacedFoos ),
120+ arguments (
121+ "custom resource namespaced named" ,
144122 "/apis/example.io/v1alpha1/namespaces/default/foos/foo" ,
145- "example.io" ,
146- "v1alpha1" ,
147- "foos" ,
148- null ,
149- "default" ,
150- "foo" ),
151- Arguments .of (
123+ namedFoo ),
124+ arguments (
125+ "custom resource namespaced named subresource" ,
152126 "/apis/example.io/v1alpha1/namespaces/default/foos/foo/status" ,
153- "example.io" ,
154- "v1alpha1" ,
155- "foos" ,
156- "status" ,
157- "default" ,
158- "foo" ));
127+ namedFooStatus ));
159128 }
160129
161130 private static Stream <Arguments > parseCoreResourceArguments () {
131+ KubernetesResource podsList = new KubernetesResource ("" , "v1" , "pods" , null , null , null );
132+ KubernetesResource namespacedPods =
133+ new KubernetesResource ("" , "v1" , "pods" , null , "default" , null );
134+ KubernetesResource namedPod = new KubernetesResource ("" , "v1" , "pods" , null , "default" , "foo" );
135+ KubernetesResource namedPodExec =
136+ new KubernetesResource ("" , "v1" , "pods" , "exec" , "default" , "foo" );
162137 return Stream .of (
163- Arguments .of ("/api/v1/pods" , "" , "v1" , "pods" , null , null , null ),
164- Arguments .of ("/api/v1/namespaces/default/pods" , "" , "v1" , "pods" , null , "default" , null ),
165- Arguments .of (
166- "/api/v1/namespaces/default/pods/foo" , "" , "v1" , "pods" , null , "default" , "foo" ),
167- Arguments .of (
168- "/api/v1/namespaces/default/pods/foo/exec" ,
169- "" ,
170- "v1" ,
171- "pods" ,
172- "exec" ,
173- "default" ,
174- "foo" ));
138+ arguments ("cluster-scoped list" , "/api/v1/pods" , podsList ),
139+ arguments ("namespaced list" , "/api/v1/namespaces/default/pods" , namespacedPods ),
140+ arguments ("namespaced named" , "/api/v1/namespaces/default/pods/foo" , namedPod ),
141+ arguments (
142+ "namespaced named subresource" , "/api/v1/namespaces/default/pods/foo/exec" , namedPodExec ));
175143 }
176144}
0 commit comments