You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.4 KiB
68 lines
1.4 KiB
package autopilot |
|
|
|
import ( |
|
"testing" |
|
|
|
"github.com/btcsuite/btcd/btcec" |
|
"github.com/btcsuite/btcutil" |
|
"github.com/stretchr/testify/require" |
|
) |
|
|
|
// testGraphDesc is a helper type to describe a test graph. |
|
type testGraphDesc struct { |
|
nodes int |
|
edges map[int][]int |
|
} |
|
|
|
var centralityTestGraph = testGraphDesc{ |
|
nodes: 9, |
|
edges: map[int][]int{ |
|
0: {1, 2, 3}, |
|
1: {2}, |
|
2: {3}, |
|
3: {4, 5}, |
|
4: {5, 6, 7}, |
|
5: {6, 7}, |
|
6: {7, 8}, |
|
}, |
|
} |
|
|
|
var testGraphCentrality = []float64{ |
|
3.0, 0.0, 3.0, 15.0, 6.0, 6.0, 7.0, 0.0, 0.0, |
|
} |
|
|
|
var normalizedTestGraphCentrality = []float64{ |
|
0.2, 0.0, 0.2, 1.0, 0.4, 0.4, 7.0 / 15.0, 0.0, 0.0, |
|
} |
|
|
|
// buildTestGraph builds a test graph from a passed graph desriptor. |
|
func buildTestGraph(t *testing.T, |
|
graph testGraph, desc testGraphDesc) map[int]*btcec.PublicKey { |
|
|
|
nodes := make(map[int]*btcec.PublicKey) |
|
|
|
for i := 0; i < desc.nodes; i++ { |
|
key, err := graph.addRandNode() |
|
require.NoError(t, err, "cannot create random node") |
|
|
|
nodes[i] = key |
|
} |
|
|
|
const chanCapacity = btcutil.SatoshiPerBitcoin |
|
for u, neighbors := range desc.edges { |
|
for _, v := range neighbors { |
|
_, _, err := graph.addRandChannel( |
|
nodes[u], nodes[v], chanCapacity, |
|
) |
|
require.NoError(t, err, |
|
"unexpected error adding random channel", |
|
) |
|
if err != nil { |
|
t.Fatalf("unexpected error adding"+ |
|
"random channel: %v", err) |
|
} |
|
} |
|
} |
|
|
|
return nodes |
|
}
|
|
|