Skip to content

Commit

Permalink
Merge branch 'master' of github.com:smancke/guble into feature/add-mo…
Browse files Browse the repository at this point in the history
…re-logging-for-handle-message
  • Loading branch information
bogh committed Feb 3, 2017
2 parents a73c182 + c1783ad commit 0fc0d85
Show file tree
Hide file tree
Showing 30 changed files with 471 additions and 342 deletions.
4 changes: 2 additions & 2 deletions client/mocks_client_gen_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
package client

import (
gomock "github.com/golang/mock/gomock"
"github.com/golang/mock/gomock"

protocol "github.com/smancke/guble/protocol"
"github.com/smancke/guble/protocol"
)

// Mock of WSConnection interface
Expand Down
68 changes: 41 additions & 27 deletions logformatter/logstash_formatter.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ import (
"time"
)

const (
defaultServiceName = "guble"
defaultLogType = "application"
defaultApplicationType = "service"
)

// LogstashFormatter generates json in logstash format.
// Logstash site: http://logstash.net/
type LogstashFormatter struct {
Expand All @@ -22,21 +28,34 @@ type LogstashFormatter struct {
//ServiceName will be by default guble
ServiceName string

//ApplicationType will be by default "service".Other values could be "service", "system", "appserver", "webserver"
//ApplicationType will be by default "service". Other values could be "service", "system", "appserver", "webserver"
ApplicationType string

//LogType will be by default application.Other possible values "access", "error", "application", "system"
//LogType will be by default application. Other possible values "access", "error", "application", "system"
LogType string

// TimestampFormat sets the format used for timestamps.
//TimestampFormat sets the format used for timestamps.
TimestampFormat string
}

// Format the logrus entry to a byte slice, or return an error.
func (f *LogstashFormatter) Format(entry *logrus.Entry) ([]byte, error) {
fields := make(logrus.Fields)

for k, v := range entry.Data {
fields[k] = v
switch v := v.(type) {
case error:
// Otherwise errors are ignored by `encoding/json`
// https://github.com/Sirupsen/logrus/issues/137
// https://github.com/sirupsen/logrus/issues/377
fields[k] = v.Error()
default:
fields[k] = v
}
}

if f.Env != "" {
fields["environment"] = f.Env
}

timeStampFormat := f.TimestampFormat
Expand All @@ -49,54 +68,49 @@ func (f *LogstashFormatter) Format(entry *logrus.Entry) ([]byte, error) {
if f.ServiceName != "" {
fields["service"] = f.ServiceName
} else {
fields["service"] = "guble"
fields["service"] = defaultServiceName
}

if f.ApplicationType != "" {
fields["application_type"] = f.ServiceName
} else {
fields["application_type"] = "service"
fields["application_type"] = defaultApplicationType
}

if f.LogType != "" {
fields["log_type"] = f.LogType
} else {
fields["log_type"] = "application"
fields["log_type"] = defaultLogType
}

fields["environment"] = f.Env

// set message field
v, ok := entry.Data["message"]
if ok {
fields["fields.message"] = v
}
fields["message"] = entry.Message

// set level field
v, ok = entry.Data["level"]
if ok {
fields["fields.level"] = v
// set level field, prefixing fields clashes
if v, ok := entry.Data["loglevel"]; ok {
fields["fields.loglevel"] = v
}
fields["loglevel"] = entry.Level.String()

//set host field
hostname, err := os.Hostname()
if err == nil {
//set host field, prefixing fields clashes
if v, ok := entry.Data["host"]; ok {
fields["fields.host"] = v
}
if hostname, err := os.Hostname(); err == nil {
fields["host"] = hostname
} else {
fields["host"] = ""
}

// set type field
if f.Type != "" {
v, ok = entry.Data["type"]
if ok {
if v, ok := entry.Data["type"]; ok {
fields["fields.type"] = v
}
fields["type"] = f.Type
}

// set message field, prefixing fields clashes
if v, ok := entry.Data["msg"]; ok {
fields["fields.msg"] = v
}
fields["msg"] = entry.Message

serialized, err := json.Marshal(fields)
if err != nil {
return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err)
Expand Down
16 changes: 8 additions & 8 deletions logformatter/logstash_formatter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ func TestLogstashFormatter_Format(t *testing.T) {
lf := LogstashFormatter{Type: "abc", ServiceName: "guble", Env: "prod"}

fields := logrus.Fields{
"message": "def",
"level": "ijk",
"type": "lmn",
"one": 1,
"pi": 3.14,
"bool": true,
"msg": "def",
"level": "ijk",
"type": "lmn",
"one": 1,
"pi": 3.14,
"bool": true,
}

entry := logrus.WithFields(fields)
Expand All @@ -43,11 +43,11 @@ func TestLogstashFormatter_Format(t *testing.T) {
a.NotEmpty(data["@timestamp"])
a.NotEmpty(data["host"])
a.Equal("abc", data["type"])
a.Equal("msg", data["message"])
a.Equal("msg", data["msg"])
a.Equal("info", data["loglevel"])

// substituted fields
a.Equal("def", data["fields.message"])
a.Equal("def", data["fields.msg"])
a.Equal("lmn", data["fields.type"])

// formats
Expand Down
1 change: 1 addition & 0 deletions protocol/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ type Message struct {
// The message payload
Body []byte

// Used in cluster mode to identify a guble node
NodeID uint8
}

Expand Down
82 changes: 35 additions & 47 deletions scripts/generate_mocks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ if [ -z "$GOPATH" ]; then
exit 1
fi


# replace in file if last operation was successful
function replace {
FILE=$1; shift;
Expand All @@ -25,15 +24,15 @@ MOCKGEN=$GOPATH/bin/mockgen
$MOCKGEN -self_package service -package service \
-destination server/service/mocks_router_gen_test.go \
github.com/smancke/guble/server/router \
Router
Router &

$MOCKGEN -self_package service -package service \
-destination server/service/mocks_checker_gen_test.go \
github.com/docker/distribution/health \
Checker
Checker &

# server/router mocks
$MOCKGEN -self_package router -package router \
$MOCKGEN -self_package router -package router \
-destination server/router/mocks_router_gen_test.go \
github.com/smancke/guble/server/router \
Router
Expand All @@ -42,22 +41,22 @@ replace "server/router/mocks_router_gen_test.go" "router \"github.com\/smancke\/
$MOCKGEN -self_package router -package router \
-destination server/router/mocks_store_gen_test.go \
github.com/smancke/guble/server/store \
MessageStore
MessageStore &

$MOCKGEN -self_package router -package router \
-destination server/router/mocks_kvstore_gen_test.go \
github.com/smancke/guble/server/kvstore \
KVStore
KVStore &

$MOCKGEN -self_package router -package router \
-destination server/router/mocks_auth_gen_test.go \
github.com/smancke/guble/server/auth \
AccessManager
AccessManager &

$MOCKGEN -self_package router -package router \
-destination server/router/mocks_checker_gen_test.go \
github.com/docker/distribution/health \
Checker
Checker &

# client mocks
$MOCKGEN -self_package client -package client \
Expand All @@ -66,82 +65,68 @@ $MOCKGEN -self_package client -package client \
WSConnection,Client
replace "client/mocks_client_gen_test.go" "client \"github.com\/smancke\/guble\/client\"" "client\."


# server/apns mocks
$MOCKGEN -package apns \
-destination server/apns/mocks_router_gen_test.go \
github.com/smancke/guble/server/router \
Router
Router &

$MOCKGEN -package apns \
-destination server/apns/mocks_kvstore_gen_test.go \
github.com/smancke/guble/server/kvstore \
KVStore
$MOCKGEN -package apns \
-destination server/apns/mocks_sender_gen_test.go \
github.com/smancke/guble/server/connector \
Sender
$MOCKGEN -package apns \
-destination server/apns/mocks_request_gen_test.go \
github.com/smancke/guble/server/connector \
Request
$MOCKGEN -package apns \
-destination server/apns/mocks_subscriber_gen_test.go \
github.com/smancke/guble/server/connector \
Subscriber
$MOCKGEN -package apns \
-destination server/apns/mocks_sender_gen_test.go \
github.com/smancke/guble/server/connector \
Sender
KVStore &

$MOCKGEN -package apns \
-destination server/apns/mocks_subscriber_gen_test.go \
-destination server/apns/mocks_connector_gen_test.go \
github.com/smancke/guble/server/connector \
Subscriber
Sender,Request,Subscriber &

$MOCKGEN -package apns \
-destination server/apns/mocks_pusher_gen_test.go \
github.com/smancke/guble/server/apns \
Pusher
Pusher &

# server/fcm mocks
$MOCKGEN -package fcm \
-destination server/fcm/mocks_router_gen_test.go \
github.com/smancke/guble/server/router \
Router
Router &

$MOCKGEN -self_package fcm -package fcm \
-destination server/fcm/mocks_kvstore_gen_test.go \
github.com/smancke/guble/server/kvstore \
KVStore
KVStore &

$MOCKGEN -self_package fcm -package fcm \
-destination server/fcm/mocks_store_gen_test.go \
github.com/smancke/guble/server/store \
MessageStore
MessageStore &

$MOCKGEN -self_package fcm -package fcm \
-destination server/fcm/mocks_gcm_gen_test.go \
github.com/Bogh/gcm \
Sender
Sender &

# server mocks
$MOCKGEN -package server \
-destination server/mocks_router_gen_test.go \
github.com/smancke/guble/server/router \
Router
Router &

$MOCKGEN -self_package server -package server \
-destination server/mocks_auth_gen_test.go \
github.com/smancke/guble/server/auth \
AccessManager
AccessManager &

$MOCKGEN -self_package server -package server \
-destination server/mocks_store_gen_test.go \
github.com/smancke/guble/server/store \
MessageStore
MessageStore &

$MOCKGEN -package server \
-destination server/mocks_apns_pusher_gen_test.go \
github.com/smancke/guble/server/apns \
Pusher
Pusher &

# server/auth mocks
$MOCKGEN -self_package auth -package auth \
Expand All @@ -164,12 +149,12 @@ replace "server/connector/mocks_connector_gen_test.go" \
$MOCKGEN -self_package connector -package connector \
-destination server/connector/mocks_router_gen_test.go \
github.com/smancke/guble/server/router \
Router
Router &

$MOCKGEN -self_package connector -package connector \
-destination server/connector/mocks_kvstore_gen_test.go \
github.com/smancke/guble/server/kvstore \
KVStore
KVStore &

# server/websocket mocks
$MOCKGEN -self_package websocket -package websocket \
Expand All @@ -183,35 +168,38 @@ replace "server/websocket/mocks_websocket_gen_test.go" \
$MOCKGEN -self_package websocket -package websocket \
-destination server/websocket/mocks_router_gen_test.go \
github.com/smancke/guble/server/router \
Router
Router &

$MOCKGEN -self_package websocket -package websocket \
-destination server/websocket/mocks_store_gen_test.go \
github.com/smancke/guble/server/store \
MessageStore
MessageStore &

$MOCKGEN -self_package websocket -package websocket \
-destination server/websocket/mocks_auth_gen_test.go \
github.com/smancke/guble/server/auth \
AccessManager
AccessManager &

# server/rest Mocks
$MOCKGEN -package rest \
-destination server/rest/mocks_router_gen_test.go \
github.com/smancke/guble/server/router \
Router
Router &

# server/sms Mocks
$MOCKGEN -package sms \
-destination server/sms/mocks_sender_gen_test.go \
github.com/smancke/guble/server/sms \
Sender
Sender &

$MOCKGEN -package sms \
-destination server/sms/mocks_router_gen_test.go \
github.com/smancke/guble/server/router \
Router
Router &

$MOCKGEN -self_package router -package sms \
-destination server/sms/mocks_store_gen_test.go \
github.com/smancke/guble/server/store \
MessageStore
MessageStore &

wait
Loading

0 comments on commit 0fc0d85

Please sign in to comment.