github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/requester/ranking/engines_test.go (about) 1 package ranking 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/filecoin-project/bacalhau/pkg/model" 8 "github.com/libp2p/go-libp2p/core/peer" 9 "github.com/stretchr/testify/suite" 10 ) 11 12 type EnginesNodeRankerSuite struct { 13 suite.Suite 14 EnginesNodeRanker *EnginesNodeRanker 15 dockerPeer model.NodeInfo 16 wasmPeer model.NodeInfo 17 comboPeer model.NodeInfo 18 unknownPeer model.NodeInfo 19 } 20 21 func (s *EnginesNodeRankerSuite) SetupSuite() { 22 s.dockerPeer = model.NodeInfo{ 23 PeerInfo: peer.AddrInfo{ID: peer.ID("docker")}, 24 ComputeNodeInfo: model.ComputeNodeInfo{ExecutionEngines: []model.Engine{model.EngineDocker}}, 25 } 26 s.wasmPeer = model.NodeInfo{ 27 PeerInfo: peer.AddrInfo{ID: peer.ID("wasm")}, 28 ComputeNodeInfo: model.ComputeNodeInfo{ExecutionEngines: []model.Engine{model.EngineWasm}}, 29 } 30 s.comboPeer = model.NodeInfo{ 31 PeerInfo: peer.AddrInfo{ID: peer.ID("combo")}, 32 ComputeNodeInfo: model.ComputeNodeInfo{ExecutionEngines: []model.Engine{model.EngineDocker, model.EngineWasm}}, 33 } 34 s.unknownPeer = model.NodeInfo{ 35 PeerInfo: peer.AddrInfo{ID: peer.ID("unknown")}, 36 } 37 } 38 39 func (s *EnginesNodeRankerSuite) SetupTest() { 40 s.EnginesNodeRanker = NewEnginesNodeRanker() 41 } 42 43 func TestEnginesNodeRankerSuite(t *testing.T) { 44 suite.Run(t, new(EnginesNodeRankerSuite)) 45 } 46 47 func (s *EnginesNodeRankerSuite) TestRankNodes_Docker() { 48 job := model.Job{Spec: model.Spec{Engine: model.EngineDocker}} 49 nodes := []model.NodeInfo{s.dockerPeer, s.wasmPeer, s.comboPeer, s.unknownPeer} 50 ranks, err := s.EnginesNodeRanker.RankNodes(context.Background(), job, nodes) 51 s.NoError(err) 52 s.Equal(len(nodes), len(ranks)) 53 assertEquals(s.T(), ranks, "docker", 10) 54 assertEquals(s.T(), ranks, "wasm", -1) 55 assertEquals(s.T(), ranks, "combo", 10) 56 assertEquals(s.T(), ranks, "unknown", 0) 57 } 58 func (s *EnginesNodeRankerSuite) TestRankNodes_Wasm() { 59 job := model.Job{Spec: model.Spec{Engine: model.EngineWasm}} 60 nodes := []model.NodeInfo{s.dockerPeer, s.wasmPeer, s.comboPeer, s.unknownPeer} 61 ranks, err := s.EnginesNodeRanker.RankNodes(context.Background(), job, nodes) 62 s.NoError(err) 63 s.Equal(len(nodes), len(ranks)) 64 assertEquals(s.T(), ranks, "docker", -1) 65 assertEquals(s.T(), ranks, "wasm", 10) 66 assertEquals(s.T(), ranks, "combo", 10) 67 assertEquals(s.T(), ranks, "unknown", 0) 68 } 69 70 func (s *EnginesNodeRankerSuite) TestRankNodes_Noop() { 71 job := model.Job{Spec: model.Spec{Engine: model.EngineNoop}} 72 nodes := []model.NodeInfo{s.dockerPeer, s.wasmPeer, s.comboPeer, s.unknownPeer} 73 ranks, err := s.EnginesNodeRanker.RankNodes(context.Background(), job, nodes) 74 s.NoError(err) 75 s.Equal(len(nodes), len(ranks)) 76 assertEquals(s.T(), ranks, "docker", -1) 77 assertEquals(s.T(), ranks, "wasm", -1) 78 assertEquals(s.T(), ranks, "combo", -1) 79 assertEquals(s.T(), ranks, "unknown", 0) 80 }