forked from cloudfoundry/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
logmessage_testhelper.go
156 lines (118 loc) · 5.4 KB
/
logmessage_testhelper.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package testhelpers
import (
"code.google.com/p/gogoprotobuf/proto"
"github.com/cloudfoundry/loggregatorlib/logmessage"
"github.com/stretchr/testify/assert"
"testing"
"time"
)
func MarshalledErrorLogMessage(t *testing.T, messageString string, appId, sourceId string) []byte {
messageType := logmessage.LogMessage_ERR
sourceName := "DEA"
protoMessage := generateLogMessage(messageString, appId, messageType, sourceName, sourceId)
return marshalProtoBuf(t, protoMessage)
}
func MarshalledLogMessage(t *testing.T, messageString string, appId string) []byte {
messageType := logmessage.LogMessage_OUT
sourceName := "DEA"
protoMessage := generateLogMessage(messageString, appId, messageType, sourceName, "")
return marshalProtoBuf(t, protoMessage)
}
func MarshalledDrainedLogMessage(t *testing.T, messageString string, appId string, drainUrls ...string) []byte {
messageType := logmessage.LogMessage_OUT
sourceName := "App"
protoMessage := generateLogMessage(messageString, appId, messageType, sourceName, "")
protoMessage.DrainUrls = drainUrls
return marshalProtoBuf(t, protoMessage)
}
func MarshalledDrainedNonWardenLogMessage(t *testing.T, messageString string, appId string, drainUrls ...string) []byte {
messageType := logmessage.LogMessage_OUT
sourceName := "DEA"
protoMessage := generateLogMessage(messageString, appId, messageType, sourceName, "")
protoMessage.DrainUrls = drainUrls
return marshalProtoBuf(t, protoMessage)
}
func NewLogMessage(messageString, appId string) *logmessage.LogMessage {
messageType := logmessage.LogMessage_OUT
sourceName := "App"
return generateLogMessage(messageString, appId, messageType, sourceName, "")
}
func NewMessageWithError(messageString, appId string) (*logmessage.Message, error) {
logMessage := generateLogMessage(messageString, appId, logmessage.LogMessage_OUT, "App", "")
marshalledLogMessage, err := proto.Marshal(logMessage)
return logmessage.NewMessage(logMessage, marshalledLogMessage), err
}
func NewMessage(t *testing.T, messageString, appId string) *logmessage.Message {
logMessage := generateLogMessage(messageString, appId, logmessage.LogMessage_OUT, "App", "")
marshalledLogMessage, err := proto.Marshal(logMessage)
assert.NoError(t, err)
return logmessage.NewMessage(logMessage, marshalledLogMessage)
}
func NewMessageFromLogMessage(t *testing.T, logMessage *logmessage.LogMessage) *logmessage.Message {
marshalledLogMessage, err := proto.Marshal(logMessage)
assert.NoError(t, err)
return logmessage.NewMessage(logMessage, marshalledLogMessage)
}
func NewMessageWithSyslogDrain(t *testing.T, messageString, appId string, syslogDrains ...string) *logmessage.Message {
logMessage := generateLogMessage(messageString, appId, logmessage.LogMessage_OUT, "App", "")
logMessage.DrainUrls = syslogDrains
marshalledLogMessage, err := proto.Marshal(logMessage)
assert.NoError(t, err)
return logmessage.NewMessage(logMessage, marshalledLogMessage)
}
func NewMessageWithSourceId(t *testing.T, messageString, appId, sourceId string) *logmessage.Message {
logMessage := generateLogMessage(messageString, appId, logmessage.LogMessage_OUT, "App", sourceId)
marshalledLogMessage, err := proto.Marshal(logMessage)
assert.NoError(t, err)
return logmessage.NewMessage(logMessage, marshalledLogMessage)
}
func NewErrMessageWithSourceId(t *testing.T, messageString, appId, sourceId string) *logmessage.Message {
logMessage := generateLogMessage(messageString, appId, logmessage.LogMessage_ERR, "App", sourceId)
marshalledLogMessage, err := proto.Marshal(logMessage)
assert.NoError(t, err)
return logmessage.NewMessage(logMessage, marshalledLogMessage)
}
func MarshalledLogEnvelopeForMessage(t *testing.T, msg, appName, secret string, drainUrls ...string) []byte {
logMessage := NewLogMessage(msg, appName)
logMessage.DrainUrls = drainUrls
return MarshalledLogEnvelope(t, logMessage, secret)
}
func MarshalledLogEnvelope(t *testing.T, unmarshalledMessage *logmessage.LogMessage, secret string) []byte {
envelope := &logmessage.LogEnvelope{
LogMessage: unmarshalledMessage,
RoutingKey: proto.String(*unmarshalledMessage.AppId),
}
envelope.SignEnvelope(secret)
return marshalProtoBuf(t, envelope)
}
func AssertProtoBufferMessageEquals(t *testing.T, expectedMessage string, actual []byte) {
receivedMessage := assertProtoBufferMessageNoError(t, actual)
assert.Equal(t, receivedMessage, expectedMessage)
}
func AssertProtoBufferMessageContains(t *testing.T, expectedMessage string, actual []byte) {
receivedMessage := assertProtoBufferMessageNoError(t, actual)
assert.Contains(t, receivedMessage, expectedMessage)
}
func assertProtoBufferMessageNoError(t *testing.T, actual []byte) string {
receivedMessage := &logmessage.LogMessage{}
err := proto.Unmarshal(actual, receivedMessage)
assert.NoError(t, err)
return string(receivedMessage.GetMessage())
}
func generateLogMessage(messageString, appId string, messageType logmessage.LogMessage_MessageType, sourceName, sourceId string) *logmessage.LogMessage {
currentTime := time.Now()
logMessage := &logmessage.LogMessage{
Message: []byte(messageString),
AppId: proto.String(appId),
MessageType: &messageType,
SourceName: proto.String(sourceName),
SourceId: proto.String(sourceId),
Timestamp: proto.Int64(currentTime.UnixNano()),
}
return logMessage
}
func marshalProtoBuf(t *testing.T, pb proto.Message) []byte {
marshalledProtoBuf, err := proto.Marshal(pb)
assert.NoError(t, err)
return marshalledProtoBuf
}