Skip to content

Commit 75403ca

Browse files
committed
debug integration test
1 parent 3d37a45 commit 75403ca

File tree

1 file changed

+36
-24
lines changed

1 file changed

+36
-24
lines changed

testing/integration/log_level_test.go

+36-24
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"fmt"
1414
"io"
1515
"net/http"
16+
"net/http/httputil"
1617
"strings"
1718
"testing"
1819
"text/template"
@@ -106,7 +107,7 @@ func testLogLevelSetViaFleet(ctx context.Context, f *atesting.Fixture, agentID s
106107
// make sure we are changing something
107108
require.NotEqualf(t, logger.DefaultLogLevel, policyLogLevel, "Policy log level %s should be different than agent default log level", policyLogLevel)
108109
// set policy log level and verify that eventually the agent sets it
109-
err = updatePolicyLogLevel(ctx, info.KibanaClient, policyResp.AgentPolicy, policyLogLevel.String())
110+
err = updatePolicyLogLevel(ctx, t, info.KibanaClient, policyResp.AgentPolicy, policyLogLevel.String())
110111
require.NoError(t, err, "error updating policy log level")
111112

112113
// assert `elastic-agent inspect` eventually reports the new log level
@@ -123,7 +124,7 @@ func testLogLevelSetViaFleet(ctx context.Context, f *atesting.Fixture, agentID s
123124

124125
// assert Fleet eventually receives the new log level from agent through checkin
125126
assert.Eventuallyf(t, func() bool {
126-
fleetMetadataLogLevel, err := getLogLevelFromFleetMetadata(ctx, info.KibanaClient, agentID)
127+
fleetMetadataLogLevel, err := getLogLevelFromFleetMetadata(ctx, t, info.KibanaClient, agentID)
127128
if err != nil {
128129
t.Logf("error getting log level for agent %q from Fleet metadata: %v", agentID, err)
129130
return false
@@ -138,7 +139,7 @@ func testLogLevelSetViaFleet(ctx context.Context, f *atesting.Fixture, agentID s
138139

139140
t.Logf("Setting agent log level to %q", agentLogLevel)
140141

141-
err = updateAgentLogLevel(ctx, info.KibanaClient, agentID, agentLogLevel)
142+
err = updateAgentLogLevel(ctx, t, info.KibanaClient, agentID, agentLogLevel)
142143
require.NoError(t, err, "error updating agent log level")
143144

144145
// TODO re-enable inspect assertion after https://github.com/elastic/elastic-agent/issues/4870 is solved
@@ -154,7 +155,7 @@ func testLogLevelSetViaFleet(ctx context.Context, f *atesting.Fixture, agentID s
154155

155156
// assert Fleet eventually receives the new log level from agent through checkin
156157
assert.Eventuallyf(t, func() bool {
157-
fleetMetadataLogLevel, err := getLogLevelFromFleetMetadata(ctx, info.KibanaClient, agentID)
158+
fleetMetadataLogLevel, err := getLogLevelFromFleetMetadata(ctx, t, info.KibanaClient, agentID)
158159
if err != nil {
159160
t.Logf("error getting log level for agent %q from Fleet metadata: %v", agentID, err)
160161
return false
@@ -165,7 +166,7 @@ func testLogLevelSetViaFleet(ctx context.Context, f *atesting.Fixture, agentID s
165166

166167
// Step 3: Clear the agent-specific log level override, verify that we revert to policy log level
167168
t.Logf("Clearing agent log level, expecting log level to revert back to %q", policyLogLevel)
168-
err = updateAgentLogLevel(ctx, info.KibanaClient, agentID, "")
169+
err = updateAgentLogLevel(ctx, t, info.KibanaClient, agentID, "")
169170
require.NoError(t, err, "error clearing agent log level")
170171

171172
// assert `elastic-agent inspect` eventually reports the new log level
@@ -182,7 +183,7 @@ func testLogLevelSetViaFleet(ctx context.Context, f *atesting.Fixture, agentID s
182183

183184
// assert Fleet eventually receives the new log level from agent through checkin
184185
assert.Eventuallyf(t, func() bool {
185-
fleetMetadataLogLevel, err := getLogLevelFromFleetMetadata(ctx, info.KibanaClient, agentID)
186+
fleetMetadataLogLevel, err := getLogLevelFromFleetMetadata(ctx, t, info.KibanaClient, agentID)
186187
if err != nil {
187188
t.Logf("error getting log level for agent %q from Fleet metadata: %v", agentID, err)
188189
return false
@@ -193,7 +194,7 @@ func testLogLevelSetViaFleet(ctx context.Context, f *atesting.Fixture, agentID s
193194

194195
// Step 4: Clear the log level in policy and verify that agent reverts to the initial log level
195196
t.Logf("Clearing policy log level, expecting log level to revert back to %q", initialLogLevel)
196-
err = updatePolicyLogLevel(ctx, info.KibanaClient, policyResp.AgentPolicy, "")
197+
err = updatePolicyLogLevel(ctx, t, info.KibanaClient, policyResp.AgentPolicy, "")
197198
require.NoError(t, err, "error clearing policy log level")
198199

199200
// assert `elastic-agent inspect` eventually reports the initial log level
@@ -210,7 +211,7 @@ func testLogLevelSetViaFleet(ctx context.Context, f *atesting.Fixture, agentID s
210211

211212
// assert Fleet eventually receives the new log level from agent through checkin
212213
assert.Eventuallyf(t, func() bool {
213-
fleetMetadataLogLevel, err := getLogLevelFromFleetMetadata(ctx, info.KibanaClient, agentID)
214+
fleetMetadataLogLevel, err := getLogLevelFromFleetMetadata(ctx, t, info.KibanaClient, agentID)
214215
if err != nil {
215216
t.Logf("error getting log level for agent %q from Fleet metadata: %v", agentID, err)
216217
return false
@@ -238,7 +239,7 @@ func waitForAgentAndFleetHealthy(ctx context.Context, t *testing.T, f *atesting.
238239
return status.State == int(cproto.State_HEALTHY) && status.FleetState == int(cproto.State_HEALTHY)
239240
}
240241

241-
func updateAgentLogLevel(ctx context.Context, kibanaClient *kibana.Client, agentID string, logLevel string) error {
242+
func updateAgentLogLevel(ctx context.Context, t *testing.T, kibanaClient *kibana.Client, agentID string, logLevel string) error {
242243
updateLogLevelTemplateString := `{
243244
"action": {
244245
"type": "SETTINGS",
@@ -261,16 +262,22 @@ func updateAgentLogLevel(ctx context.Context, kibanaClient *kibana.Client, agent
261262
}
262263

263264
err = updateLogLevelTemplate.Execute(buf, templateData)
264-
265-
_, err = kibanaClient.SendWithContext(ctx, http.MethodPost, "/api/fleet/agents/"+agentID+"/actions", nil, nil, buf)
265+
t.Logf("Updating agent-specific log level to %q", logLevel)
266+
fleetResp, err := kibanaClient.SendWithContext(ctx, http.MethodPost, "/api/fleet/agents/"+agentID+"/actions", nil, nil, buf)
266267
if err != nil {
267268
return fmt.Errorf("error executing fleet request: %w", err)
268269
}
270+
respDump, err := httputil.DumpResponse(fleetResp, true)
271+
if err != nil {
272+
t.Logf("Error dumping Fleet response to updating agent-specific log level: %v", err)
273+
} else {
274+
t.Logf("Fleet response to updating agent-specific log level:\n----- BEGIN RESPONSE DUMP -----\n%s\n----- END RESPONSE DUMP -----\n", string(respDump))
275+
}
269276

270277
return nil
271278
}
272279

273-
func updatePolicyLogLevel(ctx context.Context, kibanaClient *kibana.Client, policy kibana.AgentPolicy, newPolicyLogLevel string) error {
280+
func updatePolicyLogLevel(ctx context.Context, t *testing.T, kibanaClient *kibana.Client, policy kibana.AgentPolicy, newPolicyLogLevel string) error {
274281
// The request we would need is the one below, but at the time of writing there is no way to set overrides with fleet api definition in elastic-agent-libs, need to update
275282
// info.KibanaClient.UpdatePolicy(ctx, policyResp.ID, kibana.AgentPolicyUpdateRequest{})
276283
// Let's do a generic HTTP request
@@ -301,12 +308,19 @@ func updatePolicyLogLevel(ctx context.Context, kibanaClient *kibana.Client, poli
301308
return fmt.Errorf("error rendering policy update template: %w", err)
302309
}
303310

304-
_, err = kibanaClient.SendWithContext(ctx, http.MethodPut, "/api/fleet/agent_policies/"+policy.ID, nil, nil, buf)
311+
fleetResp, err := kibanaClient.SendWithContext(ctx, http.MethodPut, "/api/fleet/agent_policies/"+policy.ID, nil, nil, buf)
305312

306313
if err != nil {
307314
return fmt.Errorf("error executing fleet request: %w", err)
308315
}
309316

317+
respDump, err := httputil.DumpResponse(fleetResp, true)
318+
if err != nil {
319+
t.Logf("Error dumping Fleet response to updating policy log level: %v", err)
320+
} else {
321+
t.Logf("Fleet response to updating policy log level:\n----- BEGIN RESPONSE DUMP -----\n%s\n----- END RESPONSE DUMP -----\n", string(respDump))
322+
}
323+
310324
return nil
311325
}
312326

@@ -328,7 +342,7 @@ func getLogLevelFromInspectOutput(ctx context.Context, f *atesting.Fixture) (str
328342
return agentInspectOutput.Agent.Logging.Level, nil
329343
}
330344

331-
func getLogLevelFromFleetMetadata(ctx context.Context, kibanaClient *kibana.Client, agentID string) (string, error) {
345+
func getLogLevelFromFleetMetadata(ctx context.Context, t *testing.T, kibanaClient *kibana.Client, agentID string) (string, error) {
332346
// The request we would need is kibanaClient.GetAgent(), but at the time of writing there is no way to get loglevel with fleet api definition in elastic-agent-libs, need to update
333347
// kibana.AgentCommon struct to pick up log level from `local_metadata`
334348
// Let's do a generic HTTP request
@@ -339,6 +353,14 @@ func getLogLevelFromFleetMetadata(ctx context.Context, kibanaClient *kibana.Clie
339353
}
340354
defer response.Body.Close()
341355

356+
// The log below is a bit spammy but it can be useful for debugging
357+
//dumpResponse, err := httputil.DumpResponse(response, true)
358+
//if err != nil {
359+
// t.Logf(" error dumping agent metadata fleet response: %v", err)
360+
//} else {
361+
// t.Logf("agent metadata fleet response:\n----- BEGIN RESPONSE DUMP -----\n%s\n----- END RESPONSE DUMP -----", dumpResponse)
362+
//}
363+
342364
responseBodyBytes, err := io.ReadAll(response.Body)
343365
if err != nil {
344366
return "", fmt.Errorf("reading response body from Fleet: %w", err)
@@ -360,16 +382,6 @@ func getLogLevelFromFleetMetadata(ctx context.Context, kibanaClient *kibana.Clie
360382
return "", fmt.Errorf("loglevel from Fleet output is not a string: %T", rawLogLevel)
361383
}
362384

363-
func unenrollAgentFunction(ctx context.Context, t *testing.T, client *kibana.Client, id string) func() {
364-
return func() {
365-
_, err := client.UnEnrollAgent(ctx, kibana.UnEnrollAgentRequest{
366-
ID: id,
367-
Revoke: false,
368-
})
369-
assert.NoError(t, err, "error unenrolling agent")
370-
}
371-
}
372-
373385
func createPolicyAndEnrollmentToken(ctx context.Context, t *testing.T, kibClient *kibana.Client, policy kibana.AgentPolicy) (kibana.PolicyResponse, kibana.CreateEnrollmentAPIKeyResponse) {
374386
t.Log("Creating Agent policy...")
375387
policyResp, err := kibClient.CreatePolicy(ctx, policy)

0 commit comments

Comments
 (0)