4 changed files with 65 additions and 100 deletions
@ -1,87 +0,0 @@ |
|||||
/** |
|
||||
* Copyright © 2016-2022 The Thingsboard Authors |
|
||||
* |
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
* you may not use this file except in compliance with the License. |
|
||||
* You may obtain a copy of the License at |
|
||||
* |
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||
* |
|
||||
* Unless required by applicable law or agreed to in writing, software |
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
* See the License for the specific language governing permissions and |
|
||||
* limitations under the License. |
|
||||
*/ |
|
||||
package org.thingsboard.server.controller; |
|
||||
|
|
||||
import lombok.extern.slf4j.Slf4j; |
|
||||
import org.junit.After; |
|
||||
import org.junit.Before; |
|
||||
import org.junit.runner.RunWith; |
|
||||
import org.springframework.boot.test.context.SpringBootContextLoader; |
|
||||
import org.springframework.boot.test.context.SpringBootTest; |
|
||||
import org.springframework.boot.web.server.LocalServerPort; |
|
||||
import org.springframework.context.annotation.ComponentScan; |
|
||||
import org.springframework.context.annotation.Configuration; |
|
||||
import org.springframework.test.annotation.DirtiesContext; |
|
||||
import org.springframework.test.context.ActiveProfiles; |
|
||||
import org.springframework.test.context.ContextConfiguration; |
|
||||
import org.springframework.test.context.junit4.SpringRunner; |
|
||||
|
|
||||
import java.net.URI; |
|
||||
import java.net.URISyntaxException; |
|
||||
import java.util.concurrent.TimeUnit; |
|
||||
|
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
|
||||
|
|
||||
@ActiveProfiles("test") |
|
||||
@RunWith(SpringRunner.class) |
|
||||
@ContextConfiguration(classes = AbstractControllerTest.class, loader = SpringBootContextLoader.class) |
|
||||
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) |
|
||||
@Configuration |
|
||||
@ComponentScan({"org.thingsboard.server"}) |
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) |
|
||||
@Slf4j |
|
||||
public abstract class AbstractWebsocketTest extends AbstractWebTest { |
|
||||
public static final String WS_URL = "ws://localhost:"; |
|
||||
|
|
||||
@LocalServerPort |
|
||||
protected int wsPort; |
|
||||
|
|
||||
private TbTestWebSocketClient wsClient; // lazy
|
|
||||
|
|
||||
public TbTestWebSocketClient getWsClient() { |
|
||||
if (wsClient == null) { |
|
||||
synchronized (this) { |
|
||||
try { |
|
||||
if (wsClient == null) { |
|
||||
wsClient = buildAndConnectWebSocketClient(); |
|
||||
} |
|
||||
} catch (Exception e) { |
|
||||
throw new RuntimeException(e); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
return wsClient; |
|
||||
} |
|
||||
|
|
||||
@Before |
|
||||
public void beforeWsTest() throws Exception { |
|
||||
// placeholder
|
|
||||
} |
|
||||
|
|
||||
@After |
|
||||
public void afterWsTest() throws Exception { |
|
||||
if (wsClient != null) { |
|
||||
wsClient.close(); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
private TbTestWebSocketClient buildAndConnectWebSocketClient() throws URISyntaxException, InterruptedException { |
|
||||
TbTestWebSocketClient wsClient = new TbTestWebSocketClient(new URI(WS_URL + wsPort + "/api/ws/plugins/telemetry?token=" + token)); |
|
||||
assertThat(wsClient.connectBlocking(TIMEOUT, TimeUnit.SECONDS)).isTrue(); |
|
||||
return wsClient; |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
Loading…
Reference in new issue