Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Removing render.RenderableNode #1204

Merged
merged 6 commits into from
Mar 29, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,9 @@ clean:
$(SCOPE_EXE) $(RUNSVINIT) prog/static.go client/build/*.js docker/weave .pkg \
$(CODECGEN_TARGETS) $(CODECGEN_DIR)/bin

clean-codecgen:
rm -rf $(CODECGEN_TARGETS) $(CODECGEN_DIR)/bin

deps:
$(GO) get -u -f -tags $(GO_BUILD_TAGS) \
github.com/FiloSottile/gvt \
Expand Down
2 changes: 1 addition & 1 deletion app/api_topologies.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ func decorateWithStats(rpt report.Report, renderer render.Renderer) topologyStat
)
for _, n := range renderer.Render(rpt) {
nodes++
if !n.Pseudo {
if n.Topology != render.Pseudo {
realNodes++
}
edges += len(n.Adjacency)
Expand Down
10 changes: 5 additions & 5 deletions app/api_topology.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const (

// APITopology is returned by the /api/topology/{name} handler.
type APITopology struct {
Nodes render.RenderableNodes `json:"nodes"`
Nodes detailed.NodeSummaries `json:"nodes"`
}

// APINode is returned by the /api/topology/{name}/{id} handler.
Expand All @@ -34,7 +34,7 @@ func handleTopology(ctx context.Context, rep Reporter, renderer render.Renderer,
return
}
respondWith(w, http.StatusOK, APITopology{
Nodes: renderer.Render(report).Prune(),
Nodes: detailed.Summaries(renderer.Render(report)),
})
}

Expand Down Expand Up @@ -104,7 +104,7 @@ func handleWebsocket(
}(conn)

var (
previousTopo render.RenderableNodes
previousTopo detailed.NodeSummaries
tick = time.Tick(loop)
wait = make(chan struct{}, 1)
)
Expand All @@ -117,8 +117,8 @@ func handleWebsocket(
log.Errorf("Error generating report: %v", err)
return
}
newTopo := renderer.Render(report).Prune()
diff := render.TopoDiff(previousTopo, newTopo)
newTopo := detailed.Summaries(renderer.Render(report))
diff := detailed.TopoDiff(previousTopo, newTopo)
previousTopo = newTopo

if err := conn.WriteJSON(diff); err != nil {
Expand Down
21 changes: 11 additions & 10 deletions app/api_topology_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@ package app_test
import (
"fmt"
"net/url"
"reflect"
"testing"

"github.com/gorilla/websocket"
"github.com/ugorji/go/codec"

"github.com/weaveworks/scope/app"
"github.com/weaveworks/scope/render"
"github.com/weaveworks/scope/render/detailed"
"github.com/weaveworks/scope/render/expected"
"github.com/weaveworks/scope/test"
"github.com/weaveworks/scope/test/fixture"
)

Expand Down Expand Up @@ -59,13 +57,13 @@ func TestAPITopologyProcesses(t *testing.T) {
defer ts.Close()
is404(t, ts, "/api/topology/processes/foobar")
{
body := getRawJSON(t, ts, "/api/topology/processes/"+expected.ServerProcessID)
body := getRawJSON(t, ts, "/api/topology/processes/"+fixture.ServerProcessNodeID)
var node app.APINode
decoder := codec.NewDecoderBytes(body, &codec.JsonHandle{})
if err := decoder.Decode(&node); err != nil {
t.Fatal(err)
}
equals(t, expected.ServerProcessID, node.Node.ID)
equals(t, fixture.ServerProcessNodeID, node.Node.ID)
equals(t, "apache", node.Node.Label)
equals(t, false, node.Node.Pseudo)
// Let's not unit-test the specific content of the detail tables
Expand Down Expand Up @@ -98,18 +96,21 @@ func TestAPITopologyHosts(t *testing.T) {
t.Fatal(err)
}

if want, have := expected.RenderedHosts, topo.Nodes.Prune(); !reflect.DeepEqual(want, have) {
t.Error(test.Diff(want, have))
// Should have the rendered host nodes
for id := range expected.RenderedHosts {
if _, ok := topo.Nodes[id]; !ok {
t.Errorf("Expected output to include node: %s, but wasn't found", id)
}
}
}
{
body := getRawJSON(t, ts, "/api/topology/hosts/"+expected.ServerHostID)
body := getRawJSON(t, ts, "/api/topology/hosts/"+fixture.ServerHostNodeID)
var node app.APINode
decoder := codec.NewDecoderBytes(body, &codec.JsonHandle{})
if err := decoder.Decode(&node); err != nil {
t.Fatal(err)
}
equals(t, expected.ServerHostID, node.Node.ID)
equals(t, fixture.ServerHostNodeID, node.Node.ID)
equals(t, "server", node.Node.Label)
equals(t, false, node.Node.Pseudo)
// Let's not unit-test the specific content of the detail tables
Expand Down Expand Up @@ -141,7 +142,7 @@ func TestAPITopologyWebsocket(t *testing.T) {

_, p, err := ws.ReadMessage()
ok(t, err)
var d render.Diff
var d detailed.Diff
decoder := codec.NewDecoderBytes(p, &codec.JsonHandle{})
if err := decoder.Decode(&d); err != nil {
t.Fatalf("JSON parse error: %s", err)
Expand Down
2 changes: 1 addition & 1 deletion client/app/scripts/charts/nodes-chart.js
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ export default class NodesChart extends React.Component {
// copy relevant fields to state nodes
return topology.map((node, id) => makeMap({
id,
label: node.get('label_major'),
label: node.get('label'),
pseudo: node.get('pseudo'),
subLabel: node.get('label_minor'),
nodeCount: node.get('node_count'),
Expand Down
2 changes: 1 addition & 1 deletion client/app/scripts/components/debug-toolbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const deltaAdd = (name, adjacency = [], shape = 'circle', stack = false, nodeCou
stack,
node_count: nodeCount,
id: name,
label_major: name,
label: name,
label_minor: 'weave-1',
latest: {},
metadata: {},
Expand Down
6 changes: 3 additions & 3 deletions client/app/scripts/components/embedded-terminal.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import { DETAILS_PANEL_WIDTH, DETAILS_PANEL_MARGINS,
export default function EmeddedTerminal({pipe, nodeId, details}) {
const node = details.get(nodeId);
const d = node && node.details;
const titleBarColor = d && getNodeColorDark(d.rank, d.label_major);
const statusBarColor = d && getNodeColor(d.rank, d.label_major);
const title = d && d.label_major;
const titleBarColor = d && getNodeColorDark(d.rank, d.label);
const statusBarColor = d && getNodeColor(d.rank, d.label);
const title = d && d.label;

const style = {
right: DETAILS_PANEL_MARGINS.right + DETAILS_PANEL_WIDTH + 10 +
Expand Down
2 changes: 1 addition & 1 deletion client/app/scripts/components/node-details.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export default class NodeDetails extends React.Component {

renderLoading() {
const node = this.props.nodes.get(this.props.nodeId);
const label = node ? node.get('label_major') : this.props.label;
const label = node ? node.get('label') : this.props.label;
const nodeColor = (node ?
getNodeColorDark(node.get('rank'), label, node.get('pseudo')) :
getNeutralColor());
Expand Down
2 changes: 1 addition & 1 deletion client/app/scripts/components/sparkline.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export default class Sparkline extends React.Component {
let data = this.props.data;

// Do nothing if no data or data w/o date are passed in.
if (data.length === 0 || data[0].date === undefined) {
if (data === undefined || data.length === 0 || data[0].date === undefined) {
return <div />;
}

Expand Down
4 changes: 2 additions & 2 deletions client/app/scripts/stores/__tests__/app-store-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ describe('AppStore', () => {
rank: undefined,
adjacency: ['n1', 'n2'],
pseudo: undefined,
label_major: undefined,
label: undefined,
label_minor: undefined
},
n2: {
id: 'n2',
rank: undefined,
adjacency: undefined,
pseudo: undefined,
label_major: undefined,
label: undefined,
label_minor: undefined
}
};
Expand Down
2 changes: 1 addition & 1 deletion client/app/scripts/stores/app-store.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const error = debug('scope:error');
function makeNode(node) {
return {
id: node.id,
label_major: node.label_major,
label: node.label,
label_minor: node.label_minor,
node_count: node.node_count,
rank: node.rank,
Expand Down
6 changes: 3 additions & 3 deletions experimental/_integration/easy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ func TestMultipleProbes(t *testing.T) {
})
}

func parseTopology(t *testing.T, p []byte) map[string]report.RenderableNode {
func parseTopology(t *testing.T, p []byte) map[string]report.Node {
var r struct {
Nodes map[string]report.RenderableNode `json:"nodes"`
Nodes map[string]report.Node `json:"nodes"`
}

if err := json.Unmarshal(p, &r); err != nil {
Expand All @@ -85,7 +85,7 @@ func parseEdge(t *testing.T, p []byte) map[string]interface{} {
return edge.Metadata
}

func assertAdjacent(t *testing.T, n report.RenderableNode, ids ...string) {
func assertAdjacent(t *testing.T, n report.Node, ids ...string) {
want := report.MakeIDList(ids...)

if have := n.Adjacency; !reflect.DeepEqual(want, have) {
Expand Down
6 changes: 3 additions & 3 deletions experimental/graphviz/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ import (
"os"
"os/exec"

"github.com/weaveworks/scope/render"
"github.com/weaveworks/scope/render/detailed"
"github.com/weaveworks/scope/report"
)

func dot(w io.Writer, t render.RenderableNodes) {
func dot(w io.Writer, t detailed.NodeSummaries) {
fmt.Fprintf(w, "digraph G {\n")
fmt.Fprintf(w, "\toutputorder=edgesfirst;\n")
fmt.Fprintf(w, "\toverlap=scale;\n")
fmt.Fprintf(w, "\tnode [style=filled];\n")
fmt.Fprintf(w, "\t\n")
for id, rn := range t {
label := rn.LabelMajor
label := rn.Label
if len(label) > 20 {
label = label[:20] + "..."
}
Expand Down
7 changes: 4 additions & 3 deletions experimental/graphviz/render.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ import (
"fmt"

"github.com/weaveworks/scope/render"
"github.com/weaveworks/scope/render/detailed"
"github.com/weaveworks/scope/report"
)

func renderTo(rpt report.Report, topology string) (render.RenderableNodes, error) {
func renderTo(rpt report.Report, topology string) (detailed.NodeSummaries, error) {
renderer, ok := map[string]render.Renderer{
"processes": render.FilterUnconnected(render.ProcessWithContainerNameRenderer),
"processes-by-name": render.FilterUnconnected(render.ProcessNameRenderer),
Expand All @@ -16,7 +17,7 @@ func renderTo(rpt report.Report, topology string) (render.RenderableNodes, error
"hosts": render.HostRenderer,
}[topology]
if !ok {
return render.RenderableNodes{}, fmt.Errorf("unknown topology %v", topology)
return detailed.NodeSummaries{}, fmt.Errorf("unknown topology %v", topology)
}
return renderer.Render(rpt), nil
return detailed.Summaries(renderer.Render(rpt)), nil
}
6 changes: 3 additions & 3 deletions integration/config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ has() {
local host=$2
local name=$3
local count=${4:-1}
assert "curl -s http://${host}:4040/api/topology/${view}?system=show | jq -r '[.nodes[] | select(.label_major == \"${name}\")] | length'" $count
assert "curl -s http://${host}:4040/api/topology/${view}?system=show | jq -r '[.nodes[] | select(.label == \"${name}\")] | length'" $count
}

# this checks we have a named container
Expand All @@ -51,7 +51,7 @@ node_id() {
local view="$1"
local host="$2"
local name="$3"
echo $(curl -s http://${host}:4040/api/topology/${view}?system=show | jq -r ".nodes[] | select(.label_major == \"${name}\") | .id")
echo $(curl -s http://${host}:4040/api/topology/${view}?system=show | jq -r ".nodes[] | select(.label == \"${name}\") | .id")
}

container_id() {
Expand Down Expand Up @@ -103,7 +103,7 @@ wait_for() {
local nodes="$(curl -s http://$host:4040/api/topology/${view}?system=show)"
local found=0
for name in "$@"; do
local count=$(echo "${nodes}" | jq -r "[.nodes[] | select(.label_major == \"${name}\")] | length")
local count=$(echo "${nodes}" | jq -r "[.nodes[] | select(.label == \"${name}\")] | length")
if [ -n "${count}" ] && [ "${count}" -ge 1 ]; then
found=$(( found + 1 ))
fi
Expand Down
2 changes: 1 addition & 1 deletion render/benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

var (
benchReportFile = flag.String("bench-report-file", "", "json report file to use for benchmarking (relative to this package)")
benchmarkRenderResult map[string]render.RenderableNode
benchmarkRenderResult map[string]report.Node
benchmarkStatsResult render.Stats
)

Expand Down
Loading