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