-
Notifications
You must be signed in to change notification settings - Fork 0
/
selenium.coffee
47 lines (38 loc) · 1.25 KB
/
selenium.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
net = require 'net'
util = require 'util'
config = require './servers'
availableServers = config.servers
busyServers = []
offlineServers = []
exports.createSession = () ->
server = getAvailableServer()
seleniumServer = net.connect server.port, server.host, () ->
busyServers.push server
.on "close", () ->
releaseServer server
.on "error", () ->
server.bad = true
console.log "ERROR: Server #{server.name} will be taken offline. Does not respond to connection requests."
seleniumServer.close
exports.getServers = () ->
availableServers: availableServers,
busyServers: busyServers,
offlineServers: offlineServers
exports.takeOffline = (index) ->
offlineServers.push availableServers.pull(index)
exports.putOnline = (index) ->
srv = offlineServers.pull index
srv.bad = false
availableServers.push srv
exports.dropServer = (index) ->
offlineServers.pull(index)
exports.addServer = (server) ->
availableServers.push server
getAvailableServer = () ->
availableServers.shift()
releaseServer = (server) ->
if server.bad
offlineServers.push server
else
availableServers.push server
busyServers.splice busyServers.indexOf(server), 1