1
1
package main
2
2
3
3
import (
4
+ "fmt"
4
5
"log"
5
6
"net/http"
7
+ "time"
6
8
7
9
"sourcegraph.com/sourcegraph/appdash"
8
- "sourcegraph.com/sourcegraph/appdash/examples/cmd/webapp"
9
10
"sourcegraph.com/sourcegraph/appdash/httptrace"
10
11
"sourcegraph.com/sourcegraph/appdash/traceapp"
11
12
12
13
"github.com/codegangsta/negroni"
13
14
"github.com/gorilla/context"
14
15
"github.com/gorilla/mux"
15
- influxdb "github.com/influxdb/influxdb/cmd/influxd/run"
16
+
17
+ influxDBServer "github.com/influxdb/influxdb/cmd/influxd/run"
16
18
)
17
19
18
20
const CtxSpanID = 0
19
21
20
22
var collector appdash.Collector
21
23
22
24
func main () {
23
- conf , err := influxdb .NewDemoConfig ()
25
+ conf , err := influxDBServer .NewDemoConfig ()
24
26
if err != nil {
25
27
log .Fatalf ("failed to create influxdb config, error: %v" , err )
26
28
}
27
- store , err := appdash .NewInfluxDBStore (conf , & influxdb .BuildInfo {})
29
+ store , err := appdash .NewInfluxDBStore (conf , & influxDBServer .BuildInfo {})
28
30
if err != nil {
29
31
log .Fatalf ("failed to create influxdb store, error: %v" , err )
30
32
}
33
+ defer store .Close ()
31
34
tapp := traceapp .New (nil )
32
35
tapp .Store = store
33
36
tapp .Queryer = store
@@ -43,10 +46,35 @@ func main() {
43
46
},
44
47
})
45
48
router := mux .NewRouter ()
46
- router .HandleFunc ("/" , webapp . Home )
47
- router .HandleFunc ("/endpoint" , webapp . Endpoint )
49
+ router .HandleFunc ("/" , Home )
50
+ router .HandleFunc ("/endpoint" , Endpoint )
48
51
n := negroni .Classic ()
49
- n .Use (negroni .HandlerFunc (tracemw )) // Register appdash's HTTP middleware.
52
+ n .Use (negroni .HandlerFunc (tracemw ))
50
53
n .UseHandler (router )
51
54
n .Run (":8699" )
52
55
}
56
+
57
+ func Home (w http.ResponseWriter , r * http.Request ) {
58
+ span := context .Get (r , CtxSpanID ).(appdash.SpanID )
59
+ httpClient := & http.Client {
60
+ Transport : & httptrace.Transport {
61
+ Recorder : appdash .NewRecorder (span , collector ),
62
+ SetName : true ,
63
+ },
64
+ }
65
+ for i := 0 ; i < 3 ; i ++ {
66
+ resp , err := httpClient .Get ("http://localhost:8699/endpoint" )
67
+ if err != nil {
68
+ log .Println ("/endpoint:" , err )
69
+ continue
70
+ }
71
+ resp .Body .Close ()
72
+ }
73
+ fmt .Fprintf (w , `<p>Three API requests have been made!</p>` )
74
+ fmt .Fprintf (w , `<p><a href="http://localhost:8700/traces/%s" target="_">View the trace (ID:%s)</a></p>` , span .Trace , span .Trace )
75
+ }
76
+
77
+ func Endpoint (w http.ResponseWriter , r * http.Request ) {
78
+ time .Sleep (200 * time .Millisecond )
79
+ fmt .Fprintf (w , "Slept for 200ms!" )
80
+ }
0 commit comments