promql: remove DotGraph methods from nodes.
This commit is contained in:
parent
c716d8a47b
commit
e7659f908c
|
@ -40,8 +40,6 @@ type Node interface {
|
||||||
// String representation of the node that returns the given node when parsed
|
// String representation of the node that returns the given node when parsed
|
||||||
// as part of a valid query.
|
// as part of a valid query.
|
||||||
String() string
|
String() string
|
||||||
// DotGraph returns a dot graph representation of the node.
|
|
||||||
DotGraph() string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Statement is a generic interface for all statements.
|
// Statement is a generic interface for all statements.
|
||||||
|
|
|
@ -15,7 +15,6 @@ package promql
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -246,158 +245,3 @@ func (node *VectorSelector) String() string {
|
||||||
sort.Strings(labelStrings)
|
sort.Strings(labelStrings)
|
||||||
return fmt.Sprintf("%s{%s}", node.Name, strings.Join(labelStrings, ","))
|
return fmt.Sprintf("%s{%s}", node.Name, strings.Join(labelStrings, ","))
|
||||||
}
|
}
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of a statement list.
|
|
||||||
func (ss Statements) DotGraph() string {
|
|
||||||
graph := ""
|
|
||||||
for _, stmt := range ss {
|
|
||||||
graph += stmt.DotGraph()
|
|
||||||
}
|
|
||||||
return graph
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the alert statement.
|
|
||||||
func (node *AlertStmt) DotGraph() string {
|
|
||||||
graph := fmt.Sprintf(
|
|
||||||
`digraph "Alert Statement" {
|
|
||||||
%#p[shape="box",label="ALERT %s IF FOR %s"];
|
|
||||||
%#p -> %x;
|
|
||||||
%s
|
|
||||||
}`,
|
|
||||||
node, node.Name, strutil.DurationToString(node.Duration),
|
|
||||||
node, reflect.ValueOf(node.Expr).Pointer(),
|
|
||||||
node.Expr.DotGraph(),
|
|
||||||
)
|
|
||||||
return graph
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the eval statement.
|
|
||||||
func (node *EvalStmt) DotGraph() string {
|
|
||||||
graph := fmt.Sprintf(
|
|
||||||
`%#p[shape="box",label="[%d:%s:%d]";
|
|
||||||
%#p -> %x;
|
|
||||||
%s
|
|
||||||
}`,
|
|
||||||
node, node.Start, node.End, node.Interval,
|
|
||||||
node, reflect.ValueOf(node.Expr).Pointer(),
|
|
||||||
node.Expr.DotGraph(),
|
|
||||||
)
|
|
||||||
return graph
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the record statement.
|
|
||||||
func (node *RecordStmt) DotGraph() string {
|
|
||||||
graph := fmt.Sprintf(
|
|
||||||
`%#p[shape="box",label="%s = "];
|
|
||||||
%#p -> %x;
|
|
||||||
%s
|
|
||||||
}`,
|
|
||||||
node, node.Name,
|
|
||||||
node, reflect.ValueOf(node.Expr).Pointer(),
|
|
||||||
node.Expr.DotGraph(),
|
|
||||||
)
|
|
||||||
return graph
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of // DotGraph returns a DOT representation of the record statement.
|
|
||||||
// DotGraph returns a DOT representation of a statement list.
|
|
||||||
func (es Expressions) DotGraph() string {
|
|
||||||
graph := ""
|
|
||||||
for _, expr := range es {
|
|
||||||
graph += expr.DotGraph()
|
|
||||||
}
|
|
||||||
return graph
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the vector aggregation.
|
|
||||||
func (node *AggregateExpr) DotGraph() string {
|
|
||||||
groupByStrings := make([]string, 0, len(node.Grouping))
|
|
||||||
for _, label := range node.Grouping {
|
|
||||||
groupByStrings = append(groupByStrings, string(label))
|
|
||||||
}
|
|
||||||
|
|
||||||
graph := fmt.Sprintf("%#p[label=\"%s BY (%s)\"]\n",
|
|
||||||
node,
|
|
||||||
node.Op,
|
|
||||||
strings.Join(groupByStrings, ", "))
|
|
||||||
graph += fmt.Sprintf("%#p -> %x;\n", node, reflect.ValueOf(node.Expr).Pointer())
|
|
||||||
graph += node.Expr.DotGraph()
|
|
||||||
return graph
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the expression.
|
|
||||||
func (node *BinaryExpr) DotGraph() string {
|
|
||||||
nodeAddr := reflect.ValueOf(node).Pointer()
|
|
||||||
graph := fmt.Sprintf(
|
|
||||||
`
|
|
||||||
%x[label="%s"];
|
|
||||||
%x -> %x;
|
|
||||||
%x -> %x;
|
|
||||||
%s
|
|
||||||
%s
|
|
||||||
}`,
|
|
||||||
nodeAddr, node.Op,
|
|
||||||
nodeAddr, reflect.ValueOf(node.LHS).Pointer(),
|
|
||||||
nodeAddr, reflect.ValueOf(node.RHS).Pointer(),
|
|
||||||
node.LHS.DotGraph(),
|
|
||||||
node.RHS.DotGraph(),
|
|
||||||
)
|
|
||||||
return graph
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the function call.
|
|
||||||
func (node *Call) DotGraph() string {
|
|
||||||
graph := fmt.Sprintf("%#p[label=\"%s\"];\n", node, node.Func.Name)
|
|
||||||
graph += functionArgsToDotGraph(node, node.Args)
|
|
||||||
return graph
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the number literal.
|
|
||||||
func (node *NumberLiteral) DotGraph() string {
|
|
||||||
return fmt.Sprintf("%#p[label=\"%v\"];\n", node, node.Val)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the encapsulated expression.
|
|
||||||
func (node *ParenExpr) DotGraph() string {
|
|
||||||
return node.Expr.DotGraph()
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the matrix selector.
|
|
||||||
func (node *MatrixSelector) DotGraph() string {
|
|
||||||
return fmt.Sprintf("%#p[label=\"%s\"];\n", node, node)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the string literal.
|
|
||||||
func (node *StringLiteral) DotGraph() string {
|
|
||||||
return fmt.Sprintf("%#p[label=\"'%q'\"];\n", node, node.Val)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the unary expression.
|
|
||||||
func (node *UnaryExpr) DotGraph() string {
|
|
||||||
nodeAddr := reflect.ValueOf(node).Pointer()
|
|
||||||
graph := fmt.Sprintf(
|
|
||||||
`
|
|
||||||
%x[label="%s"];
|
|
||||||
%x -> %x;
|
|
||||||
%s
|
|
||||||
%s
|
|
||||||
}`,
|
|
||||||
nodeAddr, node.Op,
|
|
||||||
nodeAddr, reflect.ValueOf(node.Expr).Pointer(),
|
|
||||||
node.Expr.DotGraph(),
|
|
||||||
)
|
|
||||||
return graph
|
|
||||||
}
|
|
||||||
|
|
||||||
// DotGraph returns a DOT representation of the vector selector.
|
|
||||||
func (node *VectorSelector) DotGraph() string {
|
|
||||||
return fmt.Sprintf("%#p[label=\"%s\"];\n", node, node)
|
|
||||||
}
|
|
||||||
|
|
||||||
func functionArgsToDotGraph(node Node, args Expressions) string {
|
|
||||||
graph := args.DotGraph()
|
|
||||||
for _, arg := range args {
|
|
||||||
graph += fmt.Sprintf("%x -> %x;\n", reflect.ValueOf(node).Pointer(), reflect.ValueOf(arg).Pointer())
|
|
||||||
}
|
|
||||||
return graph
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue