@@ -87,6 +87,43 @@ void numberOfSupportedBrowsersByNodeIsCorrect() {
87
87
assertThat (supportedBrowsersByNode ).isEqualTo (1 );
88
88
}
89
89
90
+ @ Test
91
+ void nodesAreOrderedNodesByBrowserVersion () {
92
+ Capabilities caps = new ImmutableCapabilities ("browserName" , "chrome" );
93
+
94
+ NodeStatus node1 =
95
+ createNodeWithStereotypes (
96
+ Arrays .asList (
97
+ ImmutableMap .of ("browserName" , "chrome" , "browserVersion" , "131.0" ),
98
+ ImmutableMap .of ("browserName" , "chrome" , "browserVersion" , "132.0" )));
99
+ NodeStatus node2 =
100
+ createNodeWithStereotypes (
101
+ Arrays .asList (ImmutableMap .of ("browserName" , "chrome" , "browserVersion" , "131.0" )));
102
+ NodeStatus node3 =
103
+ createNodeWithStereotypes (
104
+ Arrays .asList (ImmutableMap .of ("browserName" , "chrome" , "browserVersion" , "" )));
105
+ NodeStatus node4 =
106
+ createNodeWithStereotypes (
107
+ Arrays .asList (ImmutableMap .of ("browserName" , "chrome" , "browserVersion" , "131.1" )));
108
+ NodeStatus node5 =
109
+ createNodeWithStereotypes (
110
+ Arrays .asList (ImmutableMap .of ("browserName" , "chrome" , "browserVersion" , "beta" )));
111
+ Set <NodeStatus > nodes = ImmutableSet .of (node1 , node2 , node3 , node4 , node5 );
112
+
113
+ Set <SlotId > slots = selector .selectSlot (caps , nodes , new DefaultSlotMatcher ());
114
+
115
+ ImmutableSet <NodeId > nodeIds =
116
+ slots .stream ().map (SlotId ::getOwningNodeId ).distinct ().collect (toImmutableSet ());
117
+
118
+ assertThat (nodeIds )
119
+ .containsSequence (
120
+ node3 .getNodeId (),
121
+ node1 .getNodeId (),
122
+ node4 .getNodeId (),
123
+ node2 .getNodeId (),
124
+ node5 .getNodeId ());
125
+ }
126
+
90
127
@ Test
91
128
void nodesAreOrderedNodesByNumberOfSupportedBrowsers () {
92
129
Set <NodeStatus > nodes = new HashSet <>();
@@ -254,6 +291,20 @@ private NodeStatus createNode(String... browsers) {
254
291
return myNode .getStatus ();
255
292
}
256
293
294
+ private NodeStatus createNodeWithStereotypes (List <ImmutableMap > stereotypes ) {
295
+ URI uri = createUri ();
296
+ LocalNode .Builder nodeBuilder =
297
+ LocalNode .builder (tracer , bus , uri , uri , new Secret ("cornish yarg" ));
298
+ nodeBuilder .maximumConcurrentSessions (stereotypes .size ());
299
+ stereotypes .forEach (
300
+ stereotype -> {
301
+ Capabilities caps = new ImmutableCapabilities (stereotype );
302
+ nodeBuilder .add (caps , new TestSessionFactory ((id , c ) -> new Handler (c )));
303
+ });
304
+ Node myNode = nodeBuilder .build ();
305
+ return myNode .getStatus ();
306
+ }
307
+
257
308
private URI createUri () {
258
309
try {
259
310
return new URI ("http://localhost:" + random .nextInt ());
0 commit comments