diff options
| author | Paul Bütow <pbuetow@mimecast.com> | 2020-01-20 18:41:05 +0000 |
|---|---|---|
| committer | Paul Bütow <pbuetow@mimecast.com> | 2020-01-21 14:35:23 +0000 |
| commit | c128865c4c7411c29a59fca9a3a2f95537686d7b (patch) | |
| tree | 193bccc70d942c8b70cc93fae2670263701e43aa /mapr/logformat | |
| parent | 3755a9911ecb05886577095f2b8cc8b9e4066a3a (diff) | |
Move commands to cmd/ and move internal dependencies to internal/
Diffstat (limited to 'mapr/logformat')
| -rw-r--r-- | mapr/logformat/default.go | 23 | ||||
| -rw-r--r-- | mapr/logformat/default_test.go | 35 | ||||
| -rw-r--r-- | mapr/logformat/parser.go | 75 |
3 files changed, 0 insertions, 133 deletions
diff --git a/mapr/logformat/default.go b/mapr/logformat/default.go deleted file mode 100644 index f0df5bc..0000000 --- a/mapr/logformat/default.go +++ /dev/null @@ -1,23 +0,0 @@ -package logformat - -import ( - "errors" - "strings" -) - -// MakeFieldsDEFAULT is the default log file mapreduce parser. -func (p *Parser) MakeFieldsDEFAULT(maprLine string) (map[string]string, error) { - fields := make(map[string]string, 20) - splitted := strings.Split(maprLine, "|") - - fields["$hostname"] = p.hostname - - for _, kv := range splitted { - keyAndValue := strings.SplitN(kv, "=", 2) - if len(keyAndValue) != 2 { - return fields, errors.New("Error parsing mapr token: " + kv) - } - fields[strings.ToLower(keyAndValue[0])] = keyAndValue[1] - } - return fields, nil -} diff --git a/mapr/logformat/default_test.go b/mapr/logformat/default_test.go deleted file mode 100644 index a3c47fb..0000000 --- a/mapr/logformat/default_test.go +++ /dev/null @@ -1,35 +0,0 @@ -package logformat - -import ( - "testing" -) - -func TestDefaultLogFormat(t *testing.T) { - parser, err := NewParser("default") - if err != nil { - t.Errorf("Unable to create parser: %s", err.Error()) - } - - fields, err := parser.MakeFields("foo=bar|baz=bay") - - if err != nil { - t.Errorf("Unable to parse: %s", err.Error()) - } - - if bar, ok := fields["foo"]; !ok { - t.Errorf("Expected field 'foo', but no such field there\n") - } else if bar != "bar" { - t.Errorf("Expected 'bar' stored in field 'foo', but got '%s'\n", bar) - } - - if bay, ok := fields["baz"]; !ok { - t.Errorf("Expected field 'baz', but no such field there\n") - } else if bay != "bay" { - t.Errorf("Expected 'bay' stored in field 'baz', but got '%s'\n", bay) - } - - fields, err = parser.MakeFields("foo=bar|bazbay") - if err == nil { - t.Errorf("Expected error but didn't: %s", err.Error()) - } -} diff --git a/mapr/logformat/parser.go b/mapr/logformat/parser.go deleted file mode 100644 index b7c8c5c..0000000 --- a/mapr/logformat/parser.go +++ /dev/null @@ -1,75 +0,0 @@ -package logformat - -import ( - "dtail/logger" - "errors" - "fmt" - "os" - "reflect" - "strings" -) - -// Parser is used to parse the mapreduce information from the server log files. -type Parser struct { - hostname string - logFormatName string - makeFieldsFunc reflect.Value - makeFieldsReceiver reflect.Value -} - -// NewParser returns a new log parser. -func NewParser(logFormatName string) (*Parser, error) { - hostname, err := os.Hostname() - - if err != nil { - return nil, err - } - - p := Parser{ - hostname: hostname, - } - - err = p.reflectLogFormat(logFormatName) - if err != nil { - return nil, err - } - - return &p, nil -} - -// The aim of this is that everyone can plug in their own mapr log format -// parsing method to DTail. Just add a method MakeFieldsMODULENAME to type -// Parser. Whereas MODULENAME must be a upeprcase string. -func (p *Parser) reflectLogFormat(logFormatName string) error { - methodName := fmt.Sprintf("MakeFields%s", strings.ToUpper(logFormatName)) - - rt := reflect.TypeOf(p) - method, ok := rt.MethodByName(methodName) - if !ok { - return errors.New("No such mapr log format module: " + methodName) - } - - p.makeFieldsFunc = method.Func - p.makeFieldsReceiver = reflect.ValueOf(p) - - return nil -} - -// MakeFields is for returning the fields from a given log line. -func (p *Parser) MakeFields(maprLine string) (fields map[string]string, err error) { - inputValues := []reflect.Value{p.makeFieldsReceiver, reflect.ValueOf(maprLine)} - returnValues := p.makeFieldsFunc.Call(inputValues) - - errInterface := returnValues[1].Interface() - - if errInterface == nil { - fields, err = returnValues[0].Interface().(map[string]string), nil - logger.Trace("parser.MakeFields", fields, err) - return - } - - fields, err = returnValues[0].Interface().(map[string]string), errInterface.(error) - logger.Trace("parser.MakeFields", fields, err) - - return -} |
