-
Notifications
You must be signed in to change notification settings - Fork 203
Fix proxy download test #11911
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Fix proxy download test #11911
Conversation
|
Pinging @elastic/elastic-agent-control-plane (Team:Elastic-Agent-Control-Plane) |
|
This pull request does not have a backport label. Could you fix it @michel-laterman? 🙏
|
| // ExecStatusRaw executes `elastic-agent status --output=json`. | ||
| // | ||
| // Returns the output parsed as map[string]any and the error from the execution. Keep in mind the agent exits with status 1 if it's |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The agent control server uses a non-standard format when serializing timestamps breaking the ExecStatus command. I've added this method in order to avoid this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is weird, how is something formatted with time.Format not a valid time.Time?
Do you have an example of the error this causes?
I don't like just duplicating the function like this, it would be better to fix things in place, but I can't suggest alternatives unless I know what specific error we are working around.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
agent status returned an error: could not unmarshal agent status output: parsing time "2025-12-18 19:02:32 +0000 UTC" as "2006-01-02T15:04:05Z07:00": cannot parse " 19:02:32 +0000 UTC" as "T".
By default Go will try to to parse strings using the RFC3339 nano format (docs), the control server does not use this when serializing times to send to the client
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a drawback to changing to RFC3339? It seems like this would always unconditionally fail without a custom unmarshal implementation. Is this just the first time anyone has ever tried to unmarshal this as JSON in Go?
This is clearly just an artifact of the control server, the upgrade watcher is using gRPC instead so doesn't hit this I suspect because it never unmarshals as JSON.
Why do we have this non-standard format?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can't think of a drawback from a technical standpoint; i've made a draft to change it here:#11923.
I don't know why the non-standard format was chosen, perhaps @blakerouse or @michalpristas would know?
What does this PR do?
Fixes flaky TestFleetDownloadProxyURL test by changing how agent status is gathered.
Related issues