-
Notifications
You must be signed in to change notification settings - Fork 21
Open
Milestone
Description
v0 Goal
Ensure the net/http and grpc injection functions correctly.
Roadmap
-
Initial
- Setup Phase
- isSetup - Check if setup phase is already done(because we can either
otel setup + otel go buildor justotel go build) #161 - feat: find project's dependencies #34 - Find all dependencies of the project being build
- feat: match hook rules with found dependencies #35 - Match the hook code with these dependencies
- feat: introduce hook dependencies via otel.runtime.go #38 - Introduce additional hook code by generating otel.instrumentation.go
- feat: sync new dependencies to go.mod #39 - Run
go mod tidyto refresh dependencies - feat: instrument.load matched rules from setup phase #43 - Write the matched hook rules to match.txt
- isSetup - Check if setup phase is already done(because we can either
- Instrument Phase
- feat: instrument.load matched rules from setup phase #43 - Load matched hook rules from match.txt
- feat: match the rules with compile command in instrument phase #46 - Check if the current package should be instrumented
- feat: instrument the package #50 - Instrument the target function
- Misc
- Setup Phase
-
Test
- basic test framework and enable it in CI/CD
- test: Add unit test for tool/{util,ex,cmd} and tool/internal/{ast,setup} #47 - unit test
- Enable CI test actions #51 - unit test
- Add e2e integration test framework #97 - Add an integration framework
- Link the instrumented binary and run it and further check output content in
instrument_test.go#104
-
Demo
- Highest priority Refactor the demo applications to use
net/httpandgrpc. - This will serve as our primary testbed- Support trace context propagation in demo application
- feat: Adding gRPC demo app #121 - add grpc demo
- chore(demo): Add HTTP demo #124 - add http demo
- chore: add http integration test #132
- chore(test): add grcp integration test #135
- feat(instrumentation): Add HTTP instrumentation #156 - Add
net/httpinstrumentation rule - feat(instrumentation): Add gRPC instrumentation #160 - Add basic
grpcinstrumentation rule
- Highest priority Refactor the demo applications to use
-
Tool
- feat: instrument struct #83 - inject new field for arbitrary struct
- feat(tool): automatically generate go:linkname directives for hook fu… #120 - Auto-generate
go:linknamefor hook code -
Split largetrampoline.gointo smaller files - refactor: limit visibility to necessary fields and constants #92 - Unexport HookContextImpl fields
- Only embedding the
*.yamland*.gzinstead of wildcard intool/data/export.go#163 - More detailed documents for new contributors
- Auto-sync template_api.go and pkg/inst/context.go #54 - auto-sync two files
- Consolidate all embeded files into
tool/datadir #162 - feat: instrument func with receiver type #105 - Inject func with receiver
- feat: propagate otel trace context from caller goroutine #98
- feat: add version to instrumentation rules #107 - Aware of module version
-
Hook
Please feel free to claim the implementation tasks.
kakkoyun and pdelewski
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
In progress