a06f331eb8
CI / benchmark (push) Has been skipped
install-script / posix-syntax (push) Successful in 6m1s
CI / build-onnx (push) Failing after 6m43s
init-smoke / dry-run (push) Failing after 15m57s
security / govulncheck (push) Has been cancelled
security / trivy-fs (push) Has been cancelled
CI / test (1.26, ubuntu-latest) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
CI / test (1.26, macos-latest) (push) Has been cancelled
CI / build-windows (push) Has been cancelled
CI / lint (push) Has been cancelled
install-script / powershell-syntax (push) Has been cancelled
install-script / install (macos-14) (push) Has been cancelled
install-script / install (ubuntu-latest) (push) Has been cancelled
119 lines
3.7 KiB
Go
119 lines
3.7 KiB
Go
package indexer
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/zzet/gortex/internal/graph"
|
|
"github.com/zzet/gortex/internal/parser"
|
|
)
|
|
|
|
func pubsubStripFixture() *parser.ExtractionResult {
|
|
return &parser.ExtractionResult{
|
|
Nodes: []*graph.Node{
|
|
{ID: "f.go", Kind: graph.KindFile},
|
|
{ID: "f.go::Pub", Kind: graph.KindFunction},
|
|
{ID: "event::log::user.login", Kind: graph.KindEvent, Meta: map[string]any{"event_kind": "log"}},
|
|
{ID: "event::pubsub::nats::orders", Kind: graph.KindEvent, Meta: map[string]any{"event_kind": "pubsub"}},
|
|
},
|
|
Edges: []*graph.Edge{
|
|
{From: "f.go", To: "f.go::Pub", Kind: graph.EdgeDefines},
|
|
{From: "f.go::Pub", To: "event::log::user.login", Kind: graph.EdgeEmits},
|
|
{From: "f.go::Pub", To: "event::pubsub::nats::orders", Kind: graph.EdgeEmits},
|
|
{From: "f.go::Pub", To: "event::pubsub::nats::orders", Kind: graph.EdgeListensOn},
|
|
},
|
|
}
|
|
}
|
|
|
|
func countNodeKind(nodes []*graph.Node, k graph.NodeKind) int {
|
|
n := 0
|
|
for _, node := range nodes {
|
|
if node.Kind == k {
|
|
n++
|
|
}
|
|
}
|
|
return n
|
|
}
|
|
|
|
func countEdgeKind(edges []*graph.Edge, k graph.EdgeKind) int {
|
|
n := 0
|
|
for _, e := range edges {
|
|
if e.Kind == k {
|
|
n++
|
|
}
|
|
}
|
|
return n
|
|
}
|
|
|
|
func TestStripObservabilityArtifacts_KeepsPubsub(t *testing.T) {
|
|
r := pubsubStripFixture()
|
|
stripObservabilityArtifacts(r)
|
|
|
|
// The log event is gone; the pub/sub topic node survives.
|
|
if got := countNodeKind(r.Nodes, graph.KindEvent); got != 1 {
|
|
t.Fatalf("expected 1 KindEvent left (pubsub), got %d", got)
|
|
}
|
|
for _, n := range r.Nodes {
|
|
if n.Kind == graph.KindEvent && !isPubsubEventNode(n) {
|
|
t.Errorf("non-pubsub event %q survived observability strip", n.ID)
|
|
}
|
|
}
|
|
// The EdgeEmits into the log event is gone; the EdgeEmits and
|
|
// EdgeListensOn into the pub/sub topic are untouched.
|
|
if got := countEdgeKind(r.Edges, graph.EdgeEmits); got != 1 {
|
|
t.Errorf("expected 1 EdgeEmits left (pubsub publish), got %d", got)
|
|
}
|
|
if got := countEdgeKind(r.Edges, graph.EdgeListensOn); got != 1 {
|
|
t.Errorf("expected EdgeListensOn untouched, got %d", got)
|
|
}
|
|
if got := countEdgeKind(r.Edges, graph.EdgeDefines); got != 1 {
|
|
t.Errorf("expected EdgeDefines untouched, got %d", got)
|
|
}
|
|
}
|
|
|
|
func TestStripPubsubArtifacts_KeepsObservability(t *testing.T) {
|
|
r := pubsubStripFixture()
|
|
stripPubsubArtifacts(r)
|
|
|
|
// The pub/sub topic node is gone; the log event survives.
|
|
if got := countNodeKind(r.Nodes, graph.KindEvent); got != 1 {
|
|
t.Fatalf("expected 1 KindEvent left (log), got %d", got)
|
|
}
|
|
for _, n := range r.Nodes {
|
|
if isPubsubEventNode(n) {
|
|
t.Errorf("pubsub event %q survived pubsub strip", n.ID)
|
|
}
|
|
}
|
|
// EdgeListensOn is pubsub-only — fully stripped. The EdgeEmits into
|
|
// the pub/sub topic is stripped; the EdgeEmits into the log event
|
|
// stays.
|
|
if got := countEdgeKind(r.Edges, graph.EdgeListensOn); got != 0 {
|
|
t.Errorf("expected 0 EdgeListensOn, got %d", got)
|
|
}
|
|
if got := countEdgeKind(r.Edges, graph.EdgeEmits); got != 1 {
|
|
t.Errorf("expected 1 EdgeEmits left (log emit), got %d", got)
|
|
}
|
|
}
|
|
|
|
func TestStripBothDomains(t *testing.T) {
|
|
r := pubsubStripFixture()
|
|
stripObservabilityArtifacts(r)
|
|
stripPubsubArtifacts(r)
|
|
|
|
if got := countNodeKind(r.Nodes, graph.KindEvent); got != 0 {
|
|
t.Errorf("expected no KindEvent nodes after both strips, got %d", got)
|
|
}
|
|
if got := countEdgeKind(r.Edges, graph.EdgeEmits); got != 0 {
|
|
t.Errorf("expected no EdgeEmits after both strips, got %d", got)
|
|
}
|
|
if got := countEdgeKind(r.Edges, graph.EdgeListensOn); got != 0 {
|
|
t.Errorf("expected no EdgeListensOn after both strips, got %d", got)
|
|
}
|
|
// Non-event structure is untouched.
|
|
if got := countEdgeKind(r.Edges, graph.EdgeDefines); got != 1 {
|
|
t.Errorf("expected EdgeDefines preserved, got %d", got)
|
|
}
|
|
if len(r.Nodes) != 2 {
|
|
t.Errorf("expected file + function nodes preserved, got %d", len(r.Nodes))
|
|
}
|
|
}
|