8000 GitHub - garsue/otwgen: OpenCensus/OpenTelemetory embedded Wrapper Generator
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ otwgen Public

OpenCensus/OpenTelemetory embedded Wrapper Generator

License

Notifications You must be signed in to change notification settings

garsue/otwgen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Software License CircleCI Codecov

otwgen

OpenCensus embedded wrapper generator.

Feature

  • Detect traceable functions/methods.
  • Generate wrapper functions/methods. Wrapper set a span for tracing and just call original functions/methods.

Usage

Write go generate to the file which you want to generate wrapper.

//go:generate otwgen generate -d ./wrapper github.com/xxx/foo
package foo

import (
	"context"
	"net/http"
)

func NewService() *Service {
	return &Service{}
}

type Service struct {
	client http.Client
}

func (s *Service) GetContent(ctx context.Context) (header http.Header, err error) {
	req, err := http.NewRequest(http.MethodHead, "http://example.com", nil)
    if err != nil {
        return nil, err
    }
    req = req.WithContext(ctx)
    resp, err := s.client.Do(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()
    return resp.Header, nil
}

Then, the wrapper is generated.

package foo

import (
	"context"
	"github.com/xxx/foo"
	"go.opencensus.io/trace"
	"net/http"
)

type Service struct {
	*foo.Service
}

func NewService(orig *foo.Service) *Service {
	return &Service{orig}
}
func (r *Service) GetContent(ctx context.Context) (header http.Header, err error) {
	ctx, span := trace.StartSpan(ctx, "auto generated span")
	defer span.End()
	return r.Service.GetContent(ctx)
}

About

OpenCensus/OpenTelemetory embedded Wrapper Generator

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0