|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright 2018 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
-
- package testutil
-
- import (
- "log"
- "time"
-
- "go.opencensus.io/plugin/ocgrpc"
- "go.opencensus.io/stats/view"
- "go.opencensus.io/trace"
- )
-
- // TestExporter is a test utility exporter. It should be created with NewtestExporter.
- type TestExporter struct {
- Spans []*trace.SpanData
- Stats chan *view.Data
- }
-
- // NewTestExporter creates a TestExporter and registers it with OpenCensus.
- func NewTestExporter() *TestExporter {
- te := &TestExporter{Stats: make(chan *view.Data)}
-
- view.RegisterExporter(te)
- view.SetReportingPeriod(time.Millisecond)
- if err := view.Register(ocgrpc.DefaultClientViews...); err != nil {
- log.Fatal(err)
- }
-
- trace.RegisterExporter(te)
- trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()})
-
- return te
- }
-
- // ExportSpan exports a span.
- func (te *TestExporter) ExportSpan(s *trace.SpanData) {
- te.Spans = append(te.Spans, s)
- }
-
- // ExportView exports a view.
- func (te *TestExporter) ExportView(vd *view.Data) {
- if len(vd.Rows) > 0 {
- select {
- case te.Stats <- vd:
- default:
- }
- }
- }
-
- // Unregister unregisters the exporter from OpenCensus.
- func (te *TestExporter) Unregister() {
- view.UnregisterExporter(te)
- trace.UnregisterExporter(te)
- view.SetReportingPeriod(0) // reset to default value
- }
|