fleetdm / fleet

Open-source platform for IT, security, and infrastructure teams. (Linux, macOS, Chrome, Windows, cloud, data center)
https://fleetdm.com
Other
3.16k stars 432 forks source link

Split Go tests to increase concurrency and reduce wait time #21774

Open lucasmrod opened 2 months ago

lucasmrod commented 2 months ago

This is a time-boxed (~2 points) effort to do bullet number 2 of https://github.com/fleetdm/fleet/issues/21233.

Go tests we can split to a separate job (I'm all ears):

getvictor commented 2 months ago

Some data from go test JSON report regarding runtime of longest packages:

{"Time":"2024-08-26T19:23:00.437382305Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/ee/fleetctl","Elapsed":4.069}
{"Time":"2024-08-26T19:23:00.784272108Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/ee/server/service","Elapsed":2.377}
{"Time":"2024-08-26T19:23:03.394702859Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/orbit/pkg/packaging","Elapsed":1.834}
{"Time":"2024-08-26T19:23:04.896194385Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/orbit/pkg/table/tablehelpers","Elapsed":1.224}
{"Time":"2024-08-26T19:23:17.686950293Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/config","Elapsed":1.059}
{"Time":"2024-08-26T19:23:29.884641407Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/orbit/pkg/update","Elapsed":25.858}
{"Time":"2024-08-26T19:23:32.969753115Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/datastore/cached_mysql","Elapsed":2.237}
{"Time":"2024-08-26T19:24:01.156121681Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/cron","Elapsed":38.112}
{"Time":"2024-08-26T19:24:03.839491296Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/cmd/fleet","Elapsed":69.067}
{"Time":"2024-08-26T19:24:19.917012335Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/datastore/redis","Elapsed":12.35}
{"Time":"2024-08-26T19:24:36.481178267Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/fleet","Elapsed":2.471}
{"Time":"2024-08-26T19:24:42.788630407Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/live_query","Elapsed":1.6}
{"Time":"2024-08-26T19:24:49.232709293Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/logging","Elapsed":4.063}
{"Time":"2024-08-26T19:24:51.79128563Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/mail","Elapsed":1.529}
{"Time":"2024-08-26T19:25:46.524755745Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/mdm/apple","Elapsed":44.581}
{"Time":"2024-08-26T19:25:52.063420503Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/mdm/apple/gdmf","Elapsed":3.376}
{"Time":"2024-08-26T19:25:56.62615408Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/mdm/apple/vpp","Elapsed":2.336}
{"Time":"2024-08-26T19:25:58.623458839Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/mdm/assets","Elapsed":1.217}
{"Time":"2024-08-26T19:26:09.302941413Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/mdm/nanodep/storage/file","Elapsed":3.89}
{"Time":"2024-08-26T19:26:11.392559567Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/cmd/fleetctl","Elapsed":195.038}
{"Time":"2024-08-26T19:26:13.260662349Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/mdm/nanomdm/http","Elapsed":1.461}
{"Time":"2024-08-26T19:26:14.349096874Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/mdm/nanomdm/service/certauth","Elapsed":1.289}
{"Time":"2024-08-26T19:26:19.036471998Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/mdm/scep/scep","Elapsed":2.312}
{"Time":"2024-08-26T19:26:24.602785641Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/pubsub","Elapsed":1.351}
{"Time":"2024-08-26T19:26:25.893746442Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/mock/mockimpl","Elapsed":6.321}
{"Time":"2024-08-26T19:27:39.246189335Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/datastore/mysql/migrations/tables","Elapsed":213.94}
{"Time":"2024-08-26T19:27:41.70301261Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/service/async","Elapsed":54.269}
{"Time":"2024-08-26T19:27:45.86184455Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/service/externalsvc","Elapsed":6.06}
{"Time":"2024-08-26T19:27:56.554381268Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/service/redis_policy_set","Elapsed":6.939}
{"Time":"2024-08-26T19:28:00.718292363Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/sso","Elapsed":2.606}
{"Time":"2024-08-26T19:28:29.605362957Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/service","Elapsed":102.172}
{"Time":"2024-08-26T19:28:54.63266553Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/vulnerabilities/nvd/sync","Elapsed":23.768}
{"Time":"2024-08-26T19:28:55.477169654Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/service/schedule","Elapsed":61.51}
{"Time":"2024-08-26T19:29:05.456511313Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/webhooks","Elapsed":1.054}
{"Time":"2024-08-26T19:30:25.424433971Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/vulnerabilities/oval","Elapsed":85.656}
{"Time":"2024-08-26T19:30:29.697786849Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/tools/mdm/migration/mdmproxy","Elapsed":2.092}
{"Time":"2024-08-26T19:30:47.432208459Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/vulnerabilities/nvd","Elapsed":153.413}
{"Time":"2024-08-26T19:31:05.131144222Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/worker","Elapsed":115.478}
{"Time":"2024-08-26T19:32:14.563922771Z","Action":"pass","Package":"github.com/fleetdm/fleet/v4/server/datastore/mysql","Elapsed":508.811}
lukeheath commented 2 months ago

@lucasmrod Thanks for filing! I'm prioritizing to the drafting board for consideration with next sprint. Given the long wait times, this seems like an obvious win that will pay for itself quickly in faster CI run times.

noahtalerman commented 2 months ago

Hey @lukeheath we didn't have space to this issue and the following eng initiated requests in the current engineering sprint:

I pulled them off the drafting board. Please feel free to add them back if you want to weigh them for next sprint:

lukeheath commented 3 weeks ago

@sharon-fdm Moving this to the release board for tracking.