package logstorage import ( "testing" ) func BenchmarkLogRowsMustAdd(b *testing.B) { rows := newBenchRows(map[string]string{ "input.type": "filestream", "ecs.version": "8.0.0", "host.hostname": "foobar-baz-abc", "host.architecture": "x86_64", "host.name": "foobar-baz-abc", "host.os.codename": "bionic", "host.os.type": "linux", "host.os.platform": "ubuntu", "host.os.version": "18.04.6 LTS (Bionic Beaver)", "host.os.family": "debian", "host.os.name": "Ubuntu", "host.os.kernel": "4.15.0-211-generic", "host.id": "a634d50249af449dbcb3ce724822568a", "host.containerized": "false", "host.ip": `["10.0.0.42","10.224.112.1","172.20.0.1","172.18.0.1","172.19.0.1","fc00:f853:ccd:e793::1","fe80::1","172.21.0.1","172.17.0.1"]`, "host.mac": `["02-42-42-90-52-D9","02-42-C6-48-A6-84","02-42-FD-91-7E-17","52-54-00-F5-13-E7","54-E1-AD-89-1A-4C","F8-34-41-3C-C0-85"]`, "agent.ephemeral_id": "6c251f67-7210-4cef-8f72-a9546cbb48cc", "agent.id": "e97243c5-5ef3-4dc1-8828-504f68731e87", "agent.name": "foobar-baz-abc", "agent.type": "filebeat", "agent.version": "8.8.0", "log.file.path": "/var/log/auth.log", "log.offset": "37908", }, []string{ "Jun 4 20:34:07 foobar-baz-abc sudo: pam_unix(sudo:session): session opened for user root by (uid=0)", "Jun 4 20:34:07 foobar-baz-abc sudo: pam_unix(sudo:session): session opened for user root by (uid=1)", "Jun 4 20:34:07 foobar-baz-abc sudo: pam_unix(sudo:session): session opened for user root by (uid=2)", "Jun 4 20:34:07 foobar-baz-abc sudo: pam_unix(sudo:session): session opened for user root by (uid=3)", "Jun 4 20:34:07 foobar-baz-abc sudo: pam_unix(sudo:session): session opened for user root by (uid=4)", }) streamFields := []string{ "host.hostname", "agent.name", "log.file.path", } b.ReportAllocs() b.SetBytes(int64(len(rows))) b.RunParallel(func(pb *testing.PB) { for pb.Next() { benchmarkLogRowsMustAdd(rows, streamFields) } }) } func benchmarkLogRowsMustAdd(rows [][]Field, streamFields []string) { lr := GetLogRows(streamFields, nil) var tid TenantID for i, fields := range rows { tid.AccountID = uint32(i) tid.ProjectID = uint32(2 * i) timestamp := int64(i) * 1000 lr.MustAdd(tid, timestamp, fields) } PutLogRows(lr) } func newBenchRows(constFields map[string]string, messages []string) [][]Field { rows := make([][]Field, 0, len(messages)) for _, msg := range messages { row := make([]Field, 0, len(constFields)+1) for k, v := range constFields { row = append(row, Field{ Name: k, Value: v, }) } row = append(row, Field{ Name: "_msg", Value: msg, }) rows = append(rows, row) } return rows }