66package nri
77
88import (
9+ "strings"
910 "testing"
1011
1112 "github.com/newrelic/infra-integrations-sdk/v4/integration"
@@ -17,7 +18,7 @@ import (
1718)
1819
1920const (
20- serviceName = "rpcss "
21+ serviceName = "RpcSs "
2122 serviceStartMode = "auto"
2223 serviceDisplayName = "Remote Procedure Call (RPC)"
2324 servicePid = "668"
@@ -89,6 +90,28 @@ var metricFamlilyService = dto.MetricFamily{
8990 },
9091}
9192
93+ var metricFamlilyServiceProcess = dto.MetricFamily {
94+ Name : strPtr ("windows_service_process" ),
95+ Type : & gauge ,
96+ Metric : []* dto.Metric {
97+ {
98+ Label : []* dto.LabelPair {
99+ {
100+ Name : strPtr ("name" ),
101+ Value : strPtr (serviceName ),
102+ },
103+ {
104+ Name : strPtr ("process_id" ),
105+ Value : strPtr (servicePid ),
106+ },
107+ },
108+ Gauge : & dto.Gauge {
109+ Value : float64Ptr (1 ),
110+ },
111+ },
112+ },
113+ }
114+
92115func TestCreateEntities (t * testing.T ) {
93116 i , _ := integration .New ("integrationName" , "integrationVersion" )
94117 rules := loadRules ()
@@ -103,7 +126,7 @@ func TestCreateEntities(t *testing.T) {
103126 _ , ok := entityMap [serviceName ]
104127 require .True (t , ok )
105128 require .Len (t , i .Entities , 1 )
106- require .Equal (t , i .Entities [0 ].Name (), entityNamePrefix + ":" + hostName + ":" + serviceName )
129+ require .Equal (t , i .Entities [0 ].Name (), entityNamePrefix + ":" + hostName + ":" + strings . ToLower ( serviceName ) )
107130 require .False (t , i .Entities [0 ].IgnoreEntity )
108131}
109132
@@ -119,8 +142,8 @@ func TestNoServiceNameAllowed(t *testing.T) {
119142 entityMap , err := createEntities (i , mfbn , rules , matcher )
120143 require .NoError (t , err , "No error is expected even if no service is allowed" )
121144 require .Len (t , entityMap , 0 , "No entity is expected since no service is allowed" )
122- err = processMetricGauge (metricFamlilyService , rules , entityMap , hostname )
123- err = processMetricGauge (metricFamlilyService , rules , entityMap , hostname )
145+ err = processMetricGauge (metricFamlilyService , rules , entityMap , mfbn , hostname )
146+ err = processMetricGauge (metricFamlilyService , rules , entityMap , mfbn , hostname )
124147 require .NoError (t , err )
125148 require .NoError (t , err , "No error is expected even if entityMap is empty" )
126149}
@@ -131,22 +154,31 @@ func TestProccessMetricGauge(t *testing.T) {
131154 mfbn := scraper.MetricFamiliesByName {
132155 "windows_service_info" : metricFamlilyServiceInfo ,
133156 "windows_service_start_mode" : metricFamlilyService ,
157+ "windows_service_process" : metricFamlilyServiceProcess ,
134158 }
135159
136160 matcher := matcher .New (filter )
137161 entityMap , err := createEntities (i , mfbn , rules , matcher )
138162 require .NoError (t , err )
139163 // process info metrics
140- err = processMetricGauge (metricFamlilyServiceInfo , rules , entityMap , hostname )
164+ err = processMetricGauge (metricFamlilyServiceInfo , rules , entityMap , mfbn , hostname )
141165 require .NoError (t , err )
142166 metadata := entityMap [serviceName ].GetMetadata ()
143167 assert .Equal (t , serviceDisplayName , metadata ["display_name" ])
144- assert .Equal (t , servicePid , metadata ["process_id" ])
168+
169+ // Service name in lowercase check
170+ assert .Equal (t , strings .ToLower (serviceName ), metadata ["service_name" ])
171+
145172 // process startmode metrics
146- err = processMetricGauge (metricFamlilyService , rules , entityMap , hostname )
173+ err = processMetricGauge (metricFamlilyService , rules , entityMap , mfbn , hostname )
147174 assert .NoError (t , err )
148175 assert .Equal (t , serviceStartMode , metadata ["start_mode" ])
149176
177+ // process start process metrics
178+ err = processMetricGauge (metricFamlilyServiceProcess , rules , entityMap , mfbn , hostname )
179+ assert .NoError (t , err )
180+ assert .Equal (t , servicePid , metadata ["process_id" ])
181+
150182}
151183
152184func strPtr (s string ) * string {
0 commit comments