forked from open-telemetry/opentelemetry-collector-contrib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
exporter_test.go
127 lines (103 loc) · 3.28 KB
/
exporter_test.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
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package instanaexporter
import (
"context"
"encoding/base64"
"io"
"net/http"
"net/http/httptest"
"os"
"testing"
"github.com/stretchr/testify/assert"
"go.opentelemetry.io/collector/component/componenttest"
"go.opentelemetry.io/collector/config/confighttp"
"go.opentelemetry.io/collector/config/configtls"
"go.opentelemetry.io/collector/exporter/exportertest"
"go.opentelemetry.io/collector/pdata/ptrace"
)
func TestPushConvertedTraces(t *testing.T) {
traceServer := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, _ *http.Request) {
rw.WriteHeader(http.StatusAccepted)
}))
defer traceServer.Close()
cfg := Config{
AgentKey: "key11",
ClientConfig: confighttp.ClientConfig{Endpoint: traceServer.URL},
Endpoint: traceServer.URL,
}
instanaExporter := newInstanaExporter(&cfg, exportertest.NewNopCreateSettings())
ctx := context.Background()
err := instanaExporter.start(ctx, componenttest.NewNopHost())
assert.NoError(t, err)
err = instanaExporter.pushConvertedTraces(ctx, newTestTraces())
assert.NoError(t, err)
}
func newTestTraces() ptrace.Traces {
traces := ptrace.NewTraces()
rspans := traces.ResourceSpans().AppendEmpty()
rspans.Resource().Attributes().PutStr("instana.agent", "agent1")
span := rspans.ScopeSpans().AppendEmpty().Spans().AppendEmpty()
span.SetTraceID([16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4})
span.SetSpanID([8]byte{0, 0, 0, 0, 1, 2, 3, 4})
return traces
}
func TestSelfSignedBackend(t *testing.T) {
var err error
caFile := "testdata/ca.crt"
handler := http.NewServeMux()
handler.HandleFunc("/bundle", func(w http.ResponseWriter, _ *http.Request) {
_, err = io.WriteString(w, "Hello from CA self signed server")
if err != nil {
t.Fatal(err)
}
})
server := httptest.NewTLSServer(handler)
defer server.Close()
s := base64.StdEncoding.EncodeToString(server.Certificate().Raw)
wholeCert := "-----BEGIN CERTIFICATE-----\n" + s + "\n-----END CERTIFICATE-----"
err = os.WriteFile(caFile, []byte(wholeCert), os.FileMode(0600))
defer func() {
assert.NoError(t, os.Remove(caFile))
}()
if err != nil {
t.Fatal(err)
}
// Starts the exporter to test the HTTP client request
cfg := Config{
AgentKey: "key11",
ClientConfig: confighttp.ClientConfig{
Endpoint: server.URL,
TLSSetting: configtls.ClientConfig{
TLSSetting: configtls.Config{
CAFile: caFile,
},
},
},
Endpoint: server.URL,
}
ctx := context.Background()
instanaExporter := newInstanaExporter(&cfg, exportertest.NewNopCreateSettings())
err = instanaExporter.start(ctx, componenttest.NewNopHost())
if err != nil {
t.Fatal(err)
}
assert.NoError(t, instanaExporter.export(ctx, server.URL, make(map[string]string), []byte{}))
}
func TestSelfSignedBackendCAFileNotFound(t *testing.T) {
cfg := Config{
AgentKey: "key11",
ClientConfig: confighttp.ClientConfig{
Endpoint: "",
TLSSetting: configtls.ClientConfig{
TLSSetting: configtls.Config{
CAFile: "ca_file_not_found.pem",
},
},
},
Endpoint: "",
}
ctx := context.Background()
instanaExporter := newInstanaExporter(&cfg, exportertest.NewNopCreateSettings())
assert.Error(t, instanaExporter.start(ctx, componenttest.NewNopHost()), "expect not to find the ca file")
}