]> git.basschouten.com Git - openhab-addons.git/blob
1e7bf9f048e4637410c724bae702db252d34ebb6
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.nest.internal.wwn.test;
14
15 import org.eclipse.jetty.server.Server;
16 import org.eclipse.jetty.server.ServerConnector;
17 import org.eclipse.jetty.servlet.ServletHandler;
18 import org.eclipse.jetty.servlet.ServletHolder;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
21
22 /**
23  * Embedded jetty server used in the tests.
24  *
25  * Based on {@code TestServer} of the FS Internet Radio Binding.
26  *
27  * @author Velin Yordanov - Initial contribution
28  * @author Wouter Born - Increase test coverage
29  */
30 public class WWNTestServer {
31     private final Logger logger = LoggerFactory.getLogger(WWNTestServer.class);
32
33     private Server server;
34     private String host;
35     private int port;
36     private int timeout;
37     private ServletHolder servletHolder;
38
39     public WWNTestServer(String host, int port, int timeout, ServletHolder servletHolder) {
40         this.host = host;
41         this.port = port;
42         this.timeout = timeout;
43         this.servletHolder = servletHolder;
44     }
45
46     public void startServer() {
47         Thread thread = new Thread(new Runnable() {
48             @Override
49             @SuppressWarnings("resource")
50             public void run() {
51                 server = new Server();
52                 ServletHandler handler = new ServletHandler();
53                 handler.addServletWithMapping(servletHolder, "/*");
54                 server.setHandler(handler);
55
56                 // HTTP connector
57                 ServerConnector http = new ServerConnector(server);
58                 http.setHost(host);
59                 http.setPort(port);
60                 http.setIdleTimeout(timeout);
61
62                 server.addConnector(http);
63
64                 try {
65                     server.start();
66                     server.join();
67                 } catch (InterruptedException ex) {
68                     logger.error("Server got interrupted", ex);
69                     return;
70                 } catch (Exception e) {
71                     logger.error("Error in starting the server", e);
72                     return;
73                 }
74             }
75         });
76
77         thread.start();
78     }
79
80     public void stopServer() {
81         try {
82             server.stop();
83         } catch (Exception e) {
84             logger.error("Error in stopping the server", e);
85             return;
86         }
87     }
88 }