github.com/honeycombio/honeytail@v1.9.0/parsers/mongodb/logparser/log_line_test.go (about)

     1  package logparser_test
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/honeycombio/honeytail/parsers/mongodb/logparser"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestParseLogLine(t *testing.T) {
    12  	testCases := []struct {
    13  		line   string
    14  		output string
    15  	}{
    16  		{
    17  			line:   "Mon Feb 23 03:20:19.670 [TTLMonitor] query local.system.indexes query: { expireAfterSeconds: { $exists: true } } ntoreturn:0 ntoskip:0 nscanned:0 keyUpdates:0 locks(micros) r:86 nreturned:0 reslen:20 0ms",
    18  			output: `{"context":"TTLMonitor","duration_ms":0,"keyUpdates":0,"locks(micros)":{"r":86},"namespace":"local.system.indexes","nreturned":0,"nscanned":0,"ntoreturn":0,"ntoskip":0,"operation":"query","query":{"expireAfterSeconds":{"$exists":true}},"reslen":20,"timestamp":"Mon Feb 23 03:20:19.670"}`,
    19  		},
    20  		{
    21  			line:   "2017-08-14T00:09:17.028-0400 I COMMAND  [conn555555] query foo.bar query: { $query: { fieldA: /^123456789.?\\/test.?$/ } } planSummary: IXSCAN { fieldA: 1, fieldB: 1 } ntoreturn:0 ntoskip:0 nscanned:2 nscannedObjects:1 keyUpdates:0 writeConflicts:0 numYields:1 nreturned:1 reslen:1337 locks:{ Global: { acquireCount: { r: 4 } }, Database: { acquireCount: { r: 2 } }, Collection: { acquireCount: { r: 2 } } } 134ms",
    22  			output: `{"component":"COMMAND","context":"conn555555","duration_ms":134,"keyUpdates":0,"locks":{"Collection":{"acquireCount":{"r":2}},"Database":{"acquireCount":{"r":2}},"Global":{"acquireCount":{"r":4}}},"namespace":"foo.bar","nreturned":1,"nscanned":2,"nscannedObjects":1,"ntoreturn":0,"ntoskip":0,"numYields":1,"operation":"query","planSummary":[{"IXSCAN":{"fieldA":1,"fieldB":1}}],"query":{"$query":{"fieldA":"/^123456789.?\\/test.?$/"}},"reslen":1337,"severity":"informational","timestamp":"2017-08-14T00:09:17.028-0400","writeConflicts":0}`,
    23  		},
    24  		{
    25  			line:   "2020-10-22T01:55:27.585+0000 I COMMAND [conn111918] command cm.auditLog command: find { find: \"auditLog\", filter: { resourceLevelInfos.resourceId: { $in: [ \"5f90e685c8352e00014abb3f\" ] } }, projection: {}, $db: \"crisismanagement\", $clusterTime: { clusterTime: Timestamp(1603331719, 18), signature: { hash: BinData(0, 164ACBB1F99D1E544AAC2497483A20E6FEAF126A), keyId: 6860053861185355777 } }, lsid: { id: UUID(\"bac26ad1-3d76-4da1-94cc-d541942f6889\") } } planSummary: COLLSCAN keysExamined:0 docsExamined:4765871 cursorExhausted:1 numYields:37237 nreturned:2 reslen:3038 locks:{ Global: { acquireCount: { r: 37238 } }, Database: { acquireCount: { r: 37238 } }, Collection: { acquireCount: { r: 37238 } } } storage:{ data: { bytesRead: 485564359, timeReadingMicros: 366237 } } protocol:op_msg 7616ms",
    26  			output: `{"command":{"$clusterTime":{"clusterTime":"Timestamp(1603331719, 18)","signature":{"hash":"BinData(0, 164ACBB1F99D1E544AAC2497483A20E6FEAF126A)","keyId":6860053861185356000}},"$db":"crisismanagement","filter":{"resourceLevelInfos.resourceId":{"$in":["5f90e685c8352e00014abb3f"]}},"find":"auditLog","lsid":{"id":"UUID(\"bac26ad1-3d76-4da1-94cc-d541942f6889\")"},"projection":{}},"command_type":"find","component":"COMMAND","context":"conn111918","cursorExhausted":1,"docsExamined":4765871,"duration_ms":7616,"keysExamined":0,"locks":{"Collection":{"acquireCount":{"r":37238}},"Database":{"acquireCount":{"r":37238}},"Global":{"acquireCount":{"r":37238}}},"namespace":"cm.auditLog","nreturned":2,"numYields":37237,"operation":"command","planSummary":[{"COLLSCAN":true}],"protocol":"op_msg","reslen":3038,"severity":"informational","storage":{"data":{"bytesRead":485564359,"timeReadingMicros":366237}},"timestamp":"2020-10-22T01:55:27.585+0000"}`,
    27  		},
    28  	}
    29  	for _, tc := range testCases {
    30  		doc, err := logparser.ParseLogLine(tc.line)
    31  		assert.NoError(t, err)
    32  		buf, _ := json.Marshal(doc)
    33  		assert.Equal(t, string(buf), tc.output)
    34  	}
    35  }