Skip to content

Commit

Permalink
Merge pull request #1204 from weaveworks/removing-renderablenode
Browse files Browse the repository at this point in the history
Removing render.RenderableNode
  • Loading branch information
paulbellamy committed Mar 29, 2016
2 parents 3744f47 + fe6203f commit 0a9af6f
Show file tree
Hide file tree
Showing 62 changed files with 1,982 additions and 2,517 deletions.
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

0 comments on commit 0a9af6f

Please sign in to comment.