HTRACE-117. graph.go: sort children array to get deterministic output (cmccabe)
diff --git a/htrace-core/src/go/src/org/apache/htrace/htrace/graph.go b/htrace-core/src/go/src/org/apache/htrace/htrace/graph.go
index fd55592..36951de 100644
--- a/htrace-core/src/go/src/org/apache/htrace/htrace/graph.go
+++ b/htrace-core/src/go/src/org/apache/htrace/htrace/graph.go
@@ -71,7 +71,7 @@
 			idMap[span.Id] = span
 		}
 	}
-	childMap := make(map[common.SpanId][]*common.Span)
+	childMap := make(map[common.SpanId]common.SpanSlice)
 	for i := range spans {
 		child := spans[i]
 		for j := range child.Parents {
@@ -82,7 +82,7 @@
 			} else {
 				children := childMap[parent.Id]
 				if children == nil {
-					children = make([]*common.Span, 0)
+					children = make(common.SpanSlice, 0)
 				}
 				children = append(children, child)
 				childMap[parent.Id] = children
@@ -99,6 +99,7 @@
 	// Write out the edges between nodes... the parent/children relationships
 	for i := range spans {
 		children := childMap[spans[i].Id]
+		sort.Sort(children)
 		if children != nil {
 			for c := range children {
 				w.Printf(fmt.Sprintf(`  "%s" -> "%s";`+"\n",
diff --git a/htrace-core/src/go/src/org/apache/htrace/htrace/graph_test.go b/htrace-core/src/go/src/org/apache/htrace/htrace/graph_test.go
index 6cf0c3a..3003b3f 100644
--- a/htrace-core/src/go/src/org/apache/htrace/htrace/graph_test.go
+++ b/htrace-core/src/go/src/org/apache/htrace/htrace/graph_test.go
@@ -71,9 +71,9 @@
 		t.Fatalf("spansToDot failed: error %s\n", err.Error())
 	}
 	EXPECTED_STR := `digraph spans {
-  "e2c7273efb280a8c" [label="ClientNamenodeProtocol#getBlockLocations"];
   "6af3cc058e5d829d" [label="newDFSInputStream"];
   "75d16cc5b2c07d8a" [label="getBlockLocations"];
+  "e2c7273efb280a8c" [label="ClientNamenodeProtocol#getBlockLocations"];
   "6af3cc058e5d829d" -> "75d16cc5b2c07d8a";
   "75d16cc5b2c07d8a" -> "e2c7273efb280a8c";
 }`