Atlas › Test
TestCapturePanic
Exact test identity: go.temporal.io/server/common/log/TestCapturePanic
- Package
go.temporal.io/server/common/log
- Suite / test hierarchy
TestCapturePanic
- Test
TestCapturePanic
- Introduced at
- TestCapturePanic Frontier kind: Test frontier
- Covered ranges
- 39
- Covered lines
- 261
- Covered files
- 14
Covered source
Expand a file to inspect source; the > gutter marks covered lines.
go.temporal.io/server/common/log/tag/tags.go 36 covered LOC · 11 ranges
Open complete file
35
36
// Error returns tag for Error
37
>
func Error(err error) ZapTag {
tags.go
38
>
return ZapTag{
39
>
// NOTE: zap already chosen "error" as key
40
>
field: zap.Error(err),
41
>
}
42
>
}
43
44
// ServiceErrorType returns tag for ServiceErrorType
70
71
// WorkflowAction returns tag for WorkflowAction
72
>
func workflowAction(action string) ZapTag {
tags.go
73
>
return NewStringTag("wf-action", action)
74
>
}
75
76
// WorkflowListFilterType returns tag for WorkflowListFilterType
77
>
func workflowListFilterType(listFilterType string) ZapTag {
tags.go
78
>
return NewStringTag("wf-list-filter-type", listFilterType)
79
>
}
80
81
// general
376
377
// Component returns tag for Component
378
>
func component(component string) ZapTag {
tags.go
379
>
return NewStringTag("component", component)
380
>
}
381
382
// Lifecycle returns tag for Lifecycle
383
>
func lifecycle(lifecycle string) ZapTag {
tags.go
384
>
return NewStringTag("lifecycle", lifecycle)
385
>
}
386
387
// StoreOperation returns tag for StoreOperation
388
>
func storeOperation(storeOperation string) ZapTag {
tags.go
389
>
return NewStringTag("store-operation", storeOperation)
390
>
}
391
392
// OperationResult returns tag for OperationResult
393
>
func operationResult(operationResult string) ZapTag {
tags.go
394
>
return NewStringTag("operation-result", operationResult)
395
>
}
396
397
// ErrorType returns tag for ErrorType
401
402
// errorType returns tag for ErrorType given a string
403
>
func errorType(errorType string) ZapTag {
tags.go
404
>
return NewStringTag("error-type", errorType)
405
>
}
406
407
// Shardupdate returns tag for Shardupdate
408
>
func shardupdate(shardupdate string) ZapTag {
tags.go
409
>
return NewStringTag("shard-update", shardupdate)
410
>
}
411
412
// scope returns a tag for scope
413
// Pre-defined scope tags are in values.go.
414
>
func scope(scope string) ZapTag {
tags.go
415
>
return NewStringTag("scope", scope)
416
>
}
417
418
// general
763
764
// SysStackTrace returns tag for SysStackTrace
765
>
func SysStackTrace(stackTrace string) ZapTag {
tags.go
766
>
return NewStringTag("sys-stack-trace", stackTrace)
767
>
}
768
769
// TokenLastEventID returns tag for TokenLastEventID
go.temporal.io/server/api/enums/v1/cluster.pb.go 20 covered LOC · 2 ranges
Open complete file
209
}
210
211
>
func init() { file_temporal_server_api_enums_v1_cluster_proto_init() }
cluster.pb.go
212
>
func file_temporal_server_api_enums_v1_cluster_proto_init() {
213
>
if File_temporal_server_api_enums_v1_cluster_proto != nil {
214
return
215
}
217
>
out := protoimpl.TypeBuilder{
218
>
File: protoimpl.DescBuilder{
219
>
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
220
>
RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_cluster_proto_rawDesc), len(file_temporal_server_api_enums_v1_cluster_proto_rawDesc)),
221
>
NumEnums: 2,
222
>
NumMessages: 0,
223
>
NumExtensions: 0,
224
>
NumServices: 0,
225
>
},
226
>
GoTypes: file_temporal_server_api_enums_v1_cluster_proto_goTypes,
227
>
DependencyIndexes: file_temporal_server_api_enums_v1_cluster_proto_depIdxs,
228
>
EnumInfos: file_temporal_server_api_enums_v1_cluster_proto_enumTypes,
229
>
}.Build()
230
>
File_temporal_server_api_enums_v1_cluster_proto = out.File
231
>
file_temporal_server_api_enums_v1_cluster_proto_goTypes = nil
232
>
file_temporal_server_api_enums_v1_cluster_proto_depIdxs = nil
233
}
go.temporal.io/server/api/enums/v1/common.pb.go 20 covered LOC · 2 ranges
Open complete file
264
}
265
266
>
func init() { file_temporal_server_api_enums_v1_common_proto_init() }
common.pb.go
267
>
func file_temporal_server_api_enums_v1_common_proto_init() {
268
>
if File_temporal_server_api_enums_v1_common_proto != nil {
269
return
270
}
272
>
out := protoimpl.TypeBuilder{
273
>
File: protoimpl.DescBuilder{
274
>
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
275
>
RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_common_proto_rawDesc), len(file_temporal_server_api_enums_v1_common_proto_rawDesc)),
276
>
NumEnums: 3,
277
>
NumMessages: 0,
278
>
NumExtensions: 0,
279
>
NumServices: 0,
280
>
},
281
>
GoTypes: file_temporal_server_api_enums_v1_common_proto_goTypes,
282
>
DependencyIndexes: file_temporal_server_api_enums_v1_common_proto_depIdxs,
283
>
EnumInfos: file_temporal_server_api_enums_v1_common_proto_enumTypes,
284
>
}.Build()
285
>
File_temporal_server_api_enums_v1_common_proto = out.File
286
>
file_temporal_server_api_enums_v1_common_proto_goTypes = nil
287
>
file_temporal_server_api_enums_v1_common_proto_depIdxs = nil
288
}
go.temporal.io/server/api/enums/v1/dlq.pb.go 20 covered LOC · 2 ranges
Open complete file
187
}
188
189
>
func init() { file_temporal_server_api_enums_v1_dlq_proto_init() }
dlq.pb.go
190
>
func file_temporal_server_api_enums_v1_dlq_proto_init() {
191
>
if File_temporal_server_api_enums_v1_dlq_proto != nil {
192
return
193
}
195
>
out := protoimpl.TypeBuilder{
196
>
File: protoimpl.DescBuilder{
197
>
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
198
>
RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_dlq_proto_rawDesc), len(file_temporal_server_api_enums_v1_dlq_proto_rawDesc)),
199
>
NumEnums: 2,
200
>
NumMessages: 0,
201
>
NumExtensions: 0,
202
>
NumServices: 0,
203
>
},
204
>
GoTypes: file_temporal_server_api_enums_v1_dlq_proto_goTypes,
205
>
DependencyIndexes: file_temporal_server_api_enums_v1_dlq_proto_depIdxs,
206
>
EnumInfos: file_temporal_server_api_enums_v1_dlq_proto_enumTypes,
207
>
}.Build()
208
>
File_temporal_server_api_enums_v1_dlq_proto = out.File
209
>
file_temporal_server_api_enums_v1_dlq_proto_goTypes = nil
210
>
file_temporal_server_api_enums_v1_dlq_proto_depIdxs = nil
211
}
go.temporal.io/server/api/enums/v1/fairness_state.pb.go 20 covered LOC · 2 ranges
Open complete file
123
}
124
125
>
func init() { file_temporal_server_api_enums_v1_fairness_state_proto_init() }
fairness_state.pb.go
126
>
func file_temporal_server_api_enums_v1_fairness_state_proto_init() {
127
>
if File_temporal_server_api_enums_v1_fairness_state_proto != nil {
128
return
129
}
131
>
out := protoimpl.TypeBuilder{
132
>
File: protoimpl.DescBuilder{
133
>
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
134
>
RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_fairness_state_proto_rawDesc), len(file_temporal_server_api_enums_v1_fairness_state_proto_rawDesc)),
135
>
NumEnums: 1,
136
>
NumMessages: 0,
137
>
NumExtensions: 0,
138
>
NumServices: 0,
139
>
},
140
>
GoTypes: file_temporal_server_api_enums_v1_fairness_state_proto_goTypes,
141
>
DependencyIndexes: file_temporal_server_api_enums_v1_fairness_state_proto_depIdxs,
142
>
EnumInfos: file_temporal_server_api_enums_v1_fairness_state_proto_enumTypes,
143
>
}.Build()
144
>
File_temporal_server_api_enums_v1_fairness_state_proto = out.File
145
>
file_temporal_server_api_enums_v1_fairness_state_proto_goTypes = nil
146
>
file_temporal_server_api_enums_v1_fairness_state_proto_depIdxs = nil
147
}
go.temporal.io/server/api/enums/v1/nexus.pb.go 20 covered LOC · 2 ranges
Open complete file
158
}
159
160
>
func init() { file_temporal_server_api_enums_v1_nexus_proto_init() }
nexus.pb.go
161
>
func file_temporal_server_api_enums_v1_nexus_proto_init() {
162
>
if File_temporal_server_api_enums_v1_nexus_proto != nil {
163
return
164
}
166
>
out := protoimpl.TypeBuilder{
167
>
File: protoimpl.DescBuilder{
168
>
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
169
>
RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_nexus_proto_rawDesc), len(file_temporal_server_api_enums_v1_nexus_proto_rawDesc)),
170
>
NumEnums: 1,
171
>
NumMessages: 0,
172
>
NumExtensions: 0,
173
>
NumServices: 0,
174
>
},
175
>
GoTypes: file_temporal_server_api_enums_v1_nexus_proto_goTypes,
176
>
DependencyIndexes: file_temporal_server_api_enums_v1_nexus_proto_depIdxs,
177
>
EnumInfos: file_temporal_server_api_enums_v1_nexus_proto_enumTypes,
178
>
}.Build()
179
>
File_temporal_server_api_enums_v1_nexus_proto = out.File
180
>
file_temporal_server_api_enums_v1_nexus_proto_goTypes = nil
181
>
file_temporal_server_api_enums_v1_nexus_proto_depIdxs = nil
182
}
go.temporal.io/server/api/enums/v1/predicate.pb.go 20 covered LOC · 2 ranges
Open complete file
170
}
171
172
>
func init() { file_temporal_server_api_enums_v1_predicate_proto_init() }
predicate.pb.go
173
>
func file_temporal_server_api_enums_v1_predicate_proto_init() {
174
>
if File_temporal_server_api_enums_v1_predicate_proto != nil {
175
return
176
}
178
>
out := protoimpl.TypeBuilder{
179
>
File: protoimpl.DescBuilder{
180
>
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
181
>
RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_predicate_proto_rawDesc), len(file_temporal_server_api_enums_v1_predicate_proto_rawDesc)),
182
>
NumEnums: 1,
183
>
NumMessages: 0,
184
>
NumExtensions: 0,
185
>
NumServices: 0,
186
>
},
187
>
GoTypes: file_temporal_server_api_enums_v1_predicate_proto_goTypes,
188
>
DependencyIndexes: file_temporal_server_api_enums_v1_predicate_proto_depIdxs,
189
>
EnumInfos: file_temporal_server_api_enums_v1_predicate_proto_enumTypes,
190
>
}.Build()
191
>
File_temporal_server_api_enums_v1_predicate_proto = out.File
192
>
file_temporal_server_api_enums_v1_predicate_proto_goTypes = nil
193
>
file_temporal_server_api_enums_v1_predicate_proto_depIdxs = nil
194
}
go.temporal.io/server/api/enums/v1/replication.pb.go 20 covered LOC · 2 ranges
Open complete file
314
}
315
316
>
func init() { file_temporal_server_api_enums_v1_replication_proto_init() }
replication.pb.go
317
>
func file_temporal_server_api_enums_v1_replication_proto_init() {
318
>
if File_temporal_server_api_enums_v1_replication_proto != nil {
319
return
320
}
322
>
out := protoimpl.TypeBuilder{
323
>
File: protoimpl.DescBuilder{
324
>
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
325
>
RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_replication_proto_rawDesc), len(file_temporal_server_api_enums_v1_replication_proto_rawDesc)),
326
>
NumEnums: 3,
327
>
NumMessages: 0,
328
>
NumExtensions: 0,
329
>
NumServices: 0,
330
>
},
331
>
GoTypes: file_temporal_server_api_enums_v1_replication_proto_goTypes,
332
>
DependencyIndexes: file_temporal_server_api_enums_v1_replication_proto_depIdxs,
333
>
EnumInfos: file_temporal_server_api_enums_v1_replication_proto_enumTypes,
334
>
}.Build()
335
>
File_temporal_server_api_enums_v1_replication_proto = out.File
336
>
file_temporal_server_api_enums_v1_replication_proto_goTypes = nil
337
>
file_temporal_server_api_enums_v1_replication_proto_depIdxs = nil
338
}
go.temporal.io/server/api/enums/v1/task.pb.go 20 covered LOC · 2 ranges
Open complete file
456
}
457
458
>
func init() { file_temporal_server_api_enums_v1_task_proto_init() }
task.pb.go
459
>
func file_temporal_server_api_enums_v1_task_proto_init() {
460
>
if File_temporal_server_api_enums_v1_task_proto != nil {
461
return
462
}
464
>
out := protoimpl.TypeBuilder{
465
>
File: protoimpl.DescBuilder{
466
>
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
467
>
RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_task_proto_rawDesc), len(file_temporal_server_api_enums_v1_task_proto_rawDesc)),
468
>
NumEnums: 3,
469
>
NumMessages: 0,
470
>
NumExtensions: 0,
471
>
NumServices: 0,
472
>
},
473
>
GoTypes: file_temporal_server_api_enums_v1_task_proto_goTypes,
474
>
DependencyIndexes: file_temporal_server_api_enums_v1_task_proto_depIdxs,
475
>
EnumInfos: file_temporal_server_api_enums_v1_task_proto_enumTypes,
476
>
}.Build()
477
>
File_temporal_server_api_enums_v1_task_proto = out.File
478
>
file_temporal_server_api_enums_v1_task_proto_goTypes = nil
479
>
file_temporal_server_api_enums_v1_task_proto_depIdxs = nil
480
}
go.temporal.io/server/api/enums/v1/workflow.pb.go 20 covered LOC · 2 ranges
Open complete file
275
}
276
277
>
func init() { file_temporal_server_api_enums_v1_workflow_proto_init() }
workflow.pb.go
278
>
func file_temporal_server_api_enums_v1_workflow_proto_init() {
279
>
if File_temporal_server_api_enums_v1_workflow_proto != nil {
280
return
281
}
283
>
out := protoimpl.TypeBuilder{
284
>
File: protoimpl.DescBuilder{
285
>
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
286
>
RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_workflow_proto_rawDesc), len(file_temporal_server_api_enums_v1_workflow_proto_rawDesc)),
287
>
NumEnums: 3,
288
>
NumMessages: 0,
289
>
NumExtensions: 0,
290
>
NumServices: 0,
291
>
},
292
>
GoTypes: file_temporal_server_api_enums_v1_workflow_proto_goTypes,
293
>
DependencyIndexes: file_temporal_server_api_enums_v1_workflow_proto_depIdxs,
294
>
EnumInfos: file_temporal_server_api_enums_v1_workflow_proto_enumTypes,
295
>
}.Build()
296
>
File_temporal_server_api_enums_v1_workflow_proto = out.File
297
>
file_temporal_server_api_enums_v1_workflow_proto_goTypes = nil
298
>
file_temporal_server_api_enums_v1_workflow_proto_depIdxs = nil
299
}
go.temporal.io/server/api/enums/v1/workflow_task_type.pb.go 20 covered LOC · 2 ranges
Open complete file
124
}
125
127
>
func file_temporal_server_api_enums_v1_workflow_task_type_proto_init() {
128
>
if File_temporal_server_api_enums_v1_workflow_task_type_proto != nil {
129
return
130
}
132
>
out := protoimpl.TypeBuilder{
133
>
File: protoimpl.DescBuilder{
134
>
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
135
>
RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_workflow_task_type_proto_rawDesc), len(file_temporal_server_api_enums_v1_workflow_task_type_proto_rawDesc)),
136
>
NumEnums: 1,
137
>
NumMessages: 0,
138
>
NumExtensions: 0,
139
>
NumServices: 0,
140
>
},
141
>
GoTypes: file_temporal_server_api_enums_v1_workflow_task_type_proto_goTypes,
142
>
DependencyIndexes: file_temporal_server_api_enums_v1_workflow_task_type_proto_depIdxs,
143
>
EnumInfos: file_temporal_server_api_enums_v1_workflow_task_type_proto_enumTypes,
144
>
}.Build()
145
>
File_temporal_server_api_enums_v1_workflow_task_type_proto = out.File
146
>
file_temporal_server_api_enums_v1_workflow_task_type_proto_goTypes = nil
147
>
file_temporal_server_api_enums_v1_workflow_task_type_proto_depIdxs = nil
148
}
go.temporal.io/server/common/log/panic.go 11 covered LOC · 4 ranges
Open complete file
13
// We have to use pointer is because in golang: "recover return nil if was not called directly by a deferred function."
14
// And we have to set the returned error otherwise our handler will return nil as error which is incorrect
15
>
func CapturePanic(logger Logger, retError *error) {
panic.go
16
>
if panicObj := recover(); panicObj != nil {
17
>
err, ok := panicObj.(error)
panic.go
18
>
if !ok {
19
>
err = fmt.Errorf("panic: %v", panicObj)
panic.go
20
>
}
21
22
>
st := string(debug.Stack())
panic.go
23
>
24
>
logger.Error("Panic is captured", tag.SysStackTrace(st), tag.Error(err))
25
>
26
>
*retError = serviceerror.NewInternal(err.Error())
27
}
28
}
go.temporal.io/server/common/log/tag/zap_tag.go 10 covered LOC · 2 ranges
Open complete file
44
}
45
46
>
func NewStringTag(key string, value string) ZapTag {
zap_tag.go
47
>
return ZapTag{
48
>
field: zap.String(key, value),
49
>
}
50
>
}
51
52
func NewStringsTag(key string, value []string) ZapTag {
118
}
119
120
>
func NewBoolTag(key string, value bool) ZapTag {
zap_tag.go
121
>
return ZapTag{
122
>
field: zap.Bool(key, value),
123
>
}
124
>
}
125
126
func NewErrorTag(key string, value error) ZapTag {
go.temporal.io/server/common/log/noop_logger.go 4 covered LOC · 2 ranges
Open complete file
10
11
// NewNoopLogger return a noopLogger
13
>
return &noopLogger{}
14
>
}
15
16
func (n *noopLogger) Debug(string, ...tag.Tag) {}
17
func (n *noopLogger) Info(string, ...tag.Tag) {}
18
func (n *noopLogger) Warn(string, ...tag.Tag) {}
20
func (n *noopLogger) DPanic(string, ...tag.Tag) {}
21
func (n *noopLogger) Panic(string, ...tag.Tag) {}