1 package com.atlassian.selenium;
2
3 import org.apache.log4j.Logger;
4 import org.openqa.selenium.server.SeleniumServer;
5 import org.openqa.selenium.server.RemoteControlConfiguration;
6
7
8
9
10 public class SeleniumStarter
11 {
12 private static final Logger log = Logger.getLogger(SeleniumStarter.class);
13
14 private static SeleniumStarter instance = new SeleniumStarter();
15 private SeleniumClient client;
16 private SeleniumServer server;
17 private String userAgent;
18 private boolean manual = true;
19
20 private SeleniumStarter()
21 {
22 }
23
24 public static SeleniumStarter getInstance()
25 {
26 return instance;
27 }
28
29 public synchronized SeleniumClient getSeleniumClient(SeleniumConfiguration config)
30 {
31 if (client == null)
32 {
33 client = new SeleniumClient(config);
34 }
35 return client;
36 }
37
38 public synchronized SeleniumServer getSeleniumServer(SeleniumConfiguration config)
39 {
40 if (server == null)
41 {
42 try
43 {
44 RemoteControlConfiguration rcConfig = new RemoteControlConfiguration();
45 rcConfig.setPort(config.getServerPort());
46 rcConfig.setDebugMode(true);
47 server = new SeleniumServer(rcConfig);
48 } catch (Exception e)
49 {
50 log.error("Error creating SeleniumServer!", e);
51 }
52 }
53 return server;
54 }
55
56
57 public void start(SeleniumConfiguration config)
58 {
59 log.info("Starting Selenium");
60
61 try
62 {
63 if(config.getStartSeleniumServer())
64 {
65 log.info("Starting Selenium Server");
66 getSeleniumServer(config).start();
67 log.info("Selenium Server Started");
68 }
69 else
70 {
71 log.info("Not starting Selenium Server");
72 }
73
74 log.info("Starting Selenium Client");
75 getSeleniumClient(config).start();
76 log.info("Selenium Client Started");
77
78 } catch (Exception e)
79 {
80 log.error("Error starting SeleniumServer!", e);
81 }
82
83 log.info("Selenium startup complete");
84 }
85
86 public void stop()
87 {
88 client.stop();
89 if(server != null)
90 {
91 server.stop();
92
93
94 server = null;
95 }
96 }
97
98 public boolean isManual()
99 {
100 return manual;
101 }
102
103 public void setManual(boolean manual)
104 {
105 this.manual = manual;
106 }
107
108
109
110
111
112
113
114
115
116
117
118
119
120 public String getUserAgent()
121 {
122 return userAgent;
123 }
124
125 public void setUserAgent(String userAgent)
126 {
127 this.userAgent = userAgent;
128 }
129 }