github.com/epsagon/epsagon-go@v1.39.0/example/concurrent_generic_go_functions/main.go (about)

     1  package main
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"log"
     7  	"net/http"
     8  	"sync"
     9  	"time"
    10  
    11  	"github.com/epsagon/epsagon-go/epsagon"
    12  	epsagonhttp "github.com/epsagon/epsagon-go/wrappers/net/http"
    13  )
    14  
    15  func doTask(ctx context.Context, a int, b string, wg *sync.WaitGroup) (int, error) {
    16  	defer wg.Done()
    17  	log.Printf("inside doTask: b = %s", b)
    18  	client := http.Client{Transport: epsagonhttp.NewTracingTransport(ctx)}
    19  	client.Get("https://epsagon.com/")
    20  	return a + 1, fmt.Errorf("boom")
    21  }
    22  
    23  func main() {
    24  	config := epsagon.NewTracerConfig("generic-go-wrapper", "")
    25  	config.Debug = true
    26  	var wg sync.WaitGroup
    27  	for i := 0; i < 5; i++ {
    28  		go epsagon.ConcurrentGoWrapper(config, doTask)(i, "hello", &wg)
    29  	}
    30  	wg.Wait()
    31  	time.Sleep(2 * time.Second)
    32  }