@@ -929,65 +929,44 @@ func testK8sClusterReceiverMetrics(t *testing.T) {
929929 metricsConsumer := globalSinks .k8sclusterReceiverMetricsConsumer
930930 expectedMetricsFile := filepath .Join (testDir , expectedValuesDir , "expected_cluster_receiver.yaml" )
931931 expectedMetrics , err := golden .ReadMetrics (expectedMetricsFile )
932- require .NoError (t , err )
932+ require .NoError (t , err , "Failed to read expected metrics from expected_cluster_receiver.yaml" )
933933
934- metricNames := []string {"k8s.node.condition_ready" , "k8s.namespace.phase" , "k8s.pod.phase" , "k8s.replicaset.desired" , "k8s.replicaset.available" , "k8s.daemonset.ready_nodes" , "k8s.daemonset.misscheduled_nodes" , "k8s.daemonset.desired_scheduled_nodes" , "k8s.daemonset.current_scheduled_nodes" , "k8s.container.ready" , "k8s.container.memory_request" , "k8s.container.memory_limit" , "k8s.container.cpu_request" , "k8s.container.cpu_limit" , "k8s.deployment.desired" , "k8s.deployment.available" , "k8s.container.restarts" , "k8s.container.cpu_request" , "k8s.container.memory_request" , "k8s.container.memory_limit" }
935- replaceWithStar := func (string ) string { return "*" }
934+ targetMetric := "k8s.pod.phase"
935+ selectedMetrics := internal .SelectMetricSetWithTimeout (t , expectedMetrics , targetMetric , metricsConsumer , false , 3 * time .Minute , 10 * time .Second )
936+ require .NotNil (t , selectedMetrics , "No metrics batch found containing target metric: %s" , targetMetric )
936937
937- var selectedMetrics * pmetric.Metrics
938- for h := len (metricsConsumer .AllMetrics ()) - 1 ; h >= 0 ; h -- {
939- m := metricsConsumer .AllMetrics ()[h ]
940-
941- err = pmetrictest .CompareMetrics (expectedMetrics , m ,
942- pmetrictest .IgnoreTimestamp (),
943- pmetrictest .IgnoreStartTimestamp (),
944- pmetrictest .IgnoreMetricAttributeValue ("container.id" , metricNames ... ),
945- pmetrictest .IgnoreMetricAttributeValue ("k8s.daemonset.uid" , metricNames ... ),
946- pmetrictest .IgnoreMetricAttributeValue ("k8s.deployment.uid" , metricNames ... ),
947- pmetrictest .IgnoreMetricAttributeValue ("k8s.pod.uid" , metricNames ... ),
948- pmetrictest .IgnoreMetricAttributeValue ("k8s.pod.name" , metricNames ... ),
949- pmetrictest .IgnoreMetricAttributeValue ("k8s.node.name" , metricNames ... ),
950- pmetrictest .IgnoreMetricAttributeValue ("k8s.replicaset.uid" , metricNames ... ),
951- pmetrictest .IgnoreMetricAttributeValue ("k8s.replicaset.name" , metricNames ... ),
952- pmetrictest .IgnoreMetricAttributeValue ("k8s.namespace.uid" , metricNames ... ),
953- pmetrictest .IgnoreMetricAttributeValue ("container.image.name" , metricNames ... ),
954- pmetrictest .IgnoreMetricAttributeValue ("container.image.tag" , metricNames ... ),
955- pmetrictest .IgnoreMetricAttributeValue ("k8s.node.uid" , metricNames ... ),
956- pmetrictest .IgnoreMetricAttributeValue ("k8s.kubelet.version" , metricNames ... ),
957- pmetrictest .IgnoreMetricAttributeValue ("k8s.container.status.last_terminated_reason" , metricNames ... ),
958- pmetrictest .IgnoreMetricValues (metricNames ... ),
959- pmetrictest .ChangeResourceAttributeValue ("k8s.deployment.name" , shortenNames ),
960- pmetrictest .ChangeResourceAttributeValue ("k8s.pod.name" , shortenNames ),
961- pmetrictest .ChangeResourceAttributeValue ("k8s.replicaset.name" , shortenNames ),
962- pmetrictest .ChangeResourceAttributeValue ("k8s.deployment.uid" , replaceWithStar ),
963- pmetrictest .ChangeResourceAttributeValue ("k8s.pod.uid" , replaceWithStar ),
964- pmetrictest .ChangeResourceAttributeValue ("k8s.replicaset.uid" , replaceWithStar ),
965- pmetrictest .ChangeResourceAttributeValue ("container.id" , replaceWithStar ),
966- pmetrictest .ChangeResourceAttributeValue ("container.image.tag" , replaceWithStar ),
967- pmetrictest .ChangeResourceAttributeValue ("k8s.node.uid" , replaceWithStar ),
968- pmetrictest .ChangeResourceAttributeValue ("k8s.namespace.uid" , replaceWithStar ),
969- pmetrictest .ChangeResourceAttributeValue ("k8s.daemonset.uid" , replaceWithStar ),
970- pmetrictest .ChangeResourceAttributeValue ("container.image.name" , containerImageShorten ),
971- pmetrictest .ChangeResourceAttributeValue ("container.id" , replaceWithStar ),
972- pmetrictest .ChangeResourceAttributeValue ("host.name" , replaceWithStar ),
973- pmetrictest .ChangeResourceAttributeValue ("k8s.kubelet.version" , replaceWithStar ),
974- pmetrictest .ChangeResourceAttributeValue ("k8s.container.status.last_terminated_reason" , replaceWithStar ),
975- pmetrictest .IgnoreScopeVersion (),
976- pmetrictest .IgnoreResourceMetricsOrder (),
977- pmetrictest .IgnoreMetricsOrder (),
978- pmetrictest .IgnoreScopeMetricsOrder (),
979- pmetrictest .IgnoreMetricDataPointsOrder (),
980- pmetrictest .IgnoreSubsequentDataPoints ("k8s.container.ready" , "k8s.container.restarts" , "k8s.pod.phase" ),
981- )
982- if err == nil {
983- selectedMetrics = & m
984- break
985- }
938+ metricNames := internal .GetMetricNames (& expectedMetrics )
939+ err = pmetrictest .CompareMetrics (expectedMetrics , * selectedMetrics ,
940+ pmetrictest .IgnoreTimestamp (),
941+ pmetrictest .IgnoreStartTimestamp (),
942+ pmetrictest .IgnoreMetricAttributeValue ("container.id" , metricNames ... ),
943+ pmetrictest .IgnoreMetricAttributeValue ("k8s.daemonset.uid" , metricNames ... ),
944+ pmetrictest .IgnoreMetricAttributeValue ("k8s.deployment.uid" , metricNames ... ),
945+ pmetrictest .IgnoreMetricAttributeValue ("k8s.pod.uid" , metricNames ... ),
946+ pmetrictest .IgnoreMetricAttributeValue ("k8s.pod.name" , metricNames ... ),
947+ pmetrictest .IgnoreMetricAttributeValue ("k8s.node.name" , metricNames ... ),
948+ pmetrictest .IgnoreMetricAttributeValue ("k8s.replicaset.uid" , metricNames ... ),
949+ pmetrictest .IgnoreMetricAttributeValue ("k8s.replicaset.name" , metricNames ... ),
950+ pmetrictest .IgnoreMetricAttributeValue ("k8s.namespace.uid" , metricNames ... ),
951+ pmetrictest .IgnoreMetricAttributeValue ("container.image.name" , metricNames ... ),
952+ pmetrictest .IgnoreMetricAttributeValue ("container.image.tag" , metricNames ... ),
953+ pmetrictest .IgnoreMetricAttributeValue ("k8s.node.uid" , metricNames ... ),
954+ pmetrictest .IgnoreMetricAttributeValue ("k8s.kubelet.version" , metricNames ... ),
955+ pmetrictest .IgnoreMetricAttributeValue ("k8s.container.status.last_terminated_reason" , metricNames ... ),
956+ pmetrictest .IgnoreMetricValues (metricNames ... ),
957+ pmetrictest .IgnoreScopeVersion (),
958+ pmetrictest .IgnoreResourceMetricsOrder (),
959+ pmetrictest .IgnoreMetricsOrder (),
960+ pmetrictest .IgnoreScopeMetricsOrder (),
961+ pmetrictest .IgnoreMetricDataPointsOrder (),
962+ pmetrictest .IgnoreSubsequentDataPoints ("k8s.container.ready" , "k8s.container.restarts" , "k8s.pod.phase" ),
963+ )
964+ if err != nil {
965+ internal .MaybeUpdateExpectedMetricsResults (t , expectedMetricsFile , selectedMetrics )
966+ require .NoError (t , err , "K8s cluster receiver metrics comparison failed. Error: %v" , err )
986967 }
987968
988- require .NotNil (t , selectedMetrics )
989- require .NoError (t , err )
990- internal .MaybeUpdateExpectedMetricsResults (t , expectedMetricsFile , selectedMetrics )
969+ t .Logf ("K8s cluster receiver metrics comparison passed for %d metrics" , selectedMetrics .MetricCount ())
991970}
992971
993972func testAgentLogs (t * testing.T ) {
@@ -1232,16 +1211,7 @@ func testAgentMetricsTemplate(t *testing.T, metricsSink *consumertest.MetricsSin
12321211// tryMetricsComparison performs metric comparison using pmetrictest.CompareMetrics and returns error
12331212func tryMetricsComparison (expected pmetric.Metrics , actual pmetric.Metrics ) error {
12341213 replaceWithStar := func (string ) string { return "*" }
1235-
1236- var metricNames []string
1237- for i := 0 ; i < expected .ResourceMetrics ().Len (); i ++ {
1238- for j := 0 ; j < expected .ResourceMetrics ().At (i ).ScopeMetrics ().Len (); j ++ {
1239- for k := 0 ; k < expected .ResourceMetrics ().At (i ).ScopeMetrics ().At (j ).Metrics ().Len (); k ++ {
1240- metric := expected .ResourceMetrics ().At (i ).ScopeMetrics ().At (j ).Metrics ().At (k )
1241- metricNames = append (metricNames , metric .Name ())
1242- }
1243- }
1244- }
1214+ metricNames := internal .GetMetricNames (& expected )
12451215
12461216 return pmetrictest .CompareMetrics (expected , actual ,
12471217 pmetrictest .IgnoreTimestamp (),
0 commit comments