Skip to content

Commit 71566e7

Browse files
chore: Code cleanup
1 parent c50446d commit 71566e7

25 files changed

Lines changed: 327 additions & 265 deletions

File tree

buttplug4j.connectors.javax.websocket.client/src/test/java/io/github/blackspherefollower/buttplug4j/connectors/javax/websocket/client/ButtplugWSClientMockTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import io.github.blackspherefollower.buttplug4j.client.ButtplugDeviceFeatureException;
66
import io.github.blackspherefollower.buttplug4j.protocol.ButtplugMessage;
77
import io.github.blackspherefollower.buttplug4j.protocol.messages.InputReading;
8-
import io.github.blackspherefollower.buttplug4j.utils.test.WSDMClient;
98
import io.github.blackspherefollower.buttplug4j.utils.test.IntifaceEngineWrapper;
9+
import io.github.blackspherefollower.buttplug4j.utils.test.WSDMClient;
1010
import org.junit.jupiter.api.Disabled;
1111
import org.junit.jupiter.api.Test;
1212

@@ -18,7 +18,7 @@ public class ButtplugWSClientMockTest {
1818

1919
@Test
2020
public void TestConnect() throws Exception {
21-
try(IntifaceEngineWrapper wrapper = new IntifaceEngineWrapper() ) {
21+
try (IntifaceEngineWrapper wrapper = new IntifaceEngineWrapper()) {
2222
Thread.sleep(500);
2323
WSDMClient wsdev = new WSDMClient(new URI("ws://localhost:" + wrapper.dport), "LVS-Fake", "A9816725B");
2424
Thread.sleep(500);
@@ -51,7 +51,7 @@ public void TestConnect() throws Exception {
5151
@Test
5252
@Disabled("See https://github.com/buttplugio/buttplug/issues/801")
5353
public void TestBattery() throws Exception {
54-
try(IntifaceEngineWrapper wrapper = new IntifaceEngineWrapper() ) {
54+
try (IntifaceEngineWrapper wrapper = new IntifaceEngineWrapper()) {
5555
Thread.sleep(500);
5656
WSDMClient wsdev = new WSDMClient(new URI("ws://localhost:" + wrapper.dport), "LVS-Fake", "A9816725B");
5757
Thread.sleep(500);

buttplug4j.connectors.javax.websocket.server/src/test/java/io/github/blackspherefollower/buttplug4j/connectors/javax/websocket/server/ButtplugClientWSServerMockTest.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,13 @@
1111
import org.eclipse.jetty.server.ServerConnector;
1212
import org.eclipse.jetty.servlet.ServletContextHandler;
1313
import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer;
14-
import org.junit.jupiter.api.Disabled;
1514
import org.junit.jupiter.api.Test;
1615

1716
import javax.websocket.Session;
1817
import javax.websocket.server.ServerEndpointConfig;
19-
import java.io.IOException;
2018
import java.net.URI;
21-
import java.util.concurrent.*;
19+
import java.util.concurrent.CompletableFuture;
20+
import java.util.concurrent.TimeUnit;
2221

2322
import static org.junit.jupiter.api.Assertions.assertEquals;
2423
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -32,7 +31,7 @@ public void TestConnect() throws Exception {
3231
ButtplugClientWSServerExample server = new ButtplugClientWSServerExample(lport, testDone);
3332
Thread.sleep(500);
3433

35-
try (IntifaceEngineWrapper wrapper = new IntifaceEngineWrapper(lport) ) {
34+
try (IntifaceEngineWrapper wrapper = new IntifaceEngineWrapper(lport)) {
3635
Thread.sleep(500);
3736
WSDMClient wsdev = new WSDMClient(new URI("ws://localhost:" + wrapper.dport), "LVS-Fake", "A9816725B");
3837
testDone.get(10, TimeUnit.SECONDS);
@@ -90,8 +89,8 @@ public void onConnected(ButtplugClient client) {
9089

9190
firstDevice.get(5, TimeUnit.SECONDS);
9291
for (ButtplugClientDevice dev : client.getDevices()) {
93-
for(ButtplugClientDeviceFeature feat : dev.getDeviceFeatures().values()) {
94-
if( feat.HasVibrate() ) {
92+
for (ButtplugClientDeviceFeature feat : dev.getDeviceFeatures().values()) {
93+
if (feat.HasVibrate()) {
9594
feat.VibrateFloat(0.5F).get();
9695
}
9796
}

buttplug4j.connectors.jetty.websocket.client/src/test/java/io/github/blackspherefollower/buttplug4j/connectors/jetty/websocket/client/ButtplugClientWSJettyClientTest.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@
33
import io.github.blackspherefollower.buttplug4j.client.ButtplugClientDevice;
44
import io.github.blackspherefollower.buttplug4j.client.ButtplugClientDeviceFeature;
55
import io.github.blackspherefollower.buttplug4j.client.ButtplugDeviceFeatureException;
6-
import io.github.blackspherefollower.buttplug4j.utils.test.WSDMClient;
7-
import io.github.blackspherefollower.buttplug4j.utils.test.IntifaceEngineWrapper;
86
import io.github.blackspherefollower.buttplug4j.protocol.ButtplugMessage;
97
import io.github.blackspherefollower.buttplug4j.protocol.messages.InputReading;
10-
8+
import io.github.blackspherefollower.buttplug4j.utils.test.IntifaceEngineWrapper;
9+
import io.github.blackspherefollower.buttplug4j.utils.test.WSDMClient;
1110
import org.junit.jupiter.api.Disabled;
1211
import org.junit.jupiter.api.Test;
1312

14-
import java.io.File;
15-
import java.io.IOException;
1613
import java.net.URI;
1714

1815
import static org.junit.jupiter.api.Assertions.*;
@@ -22,7 +19,7 @@ public class ButtplugClientWSJettyClientTest {
2219

2320
@Test
2421
public void TestConnect() throws Exception {
25-
try(IntifaceEngineWrapper wrapper = new IntifaceEngineWrapper() ) {
22+
try (IntifaceEngineWrapper wrapper = new IntifaceEngineWrapper()) {
2623
Thread.sleep(500);
2724
WSDMClient wsdev = new WSDMClient(new URI("ws://localhost:" + wrapper.dport), "LVS-Fake", "A9816725B");
2825
Thread.sleep(500);
@@ -57,7 +54,7 @@ public void TestConnect() throws Exception {
5754
@Test
5855
@Disabled("See https://github.com/buttplugio/buttplug/issues/801")
5956
public void TestBattery() throws Exception {
60-
try(IntifaceEngineWrapper wrapper = new IntifaceEngineWrapper() ) {
57+
try (IntifaceEngineWrapper wrapper = new IntifaceEngineWrapper()) {
6158
Thread.sleep(500);
6259
WSDMClient wsdev = new WSDMClient(new URI("ws://localhost:" + wrapper.dport), "LVS-Fake", "A9816725B");
6360
Thread.sleep(500);

buttplug4j.utils.mdns/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ dependencies {
1414
api 'org.jmdns:jmdns:3.6.1'
1515
api 'org.slf4j:slf4j-simple:2.0.17'
1616
testImplementation 'org.junit.jupiter:junit-jupiter:5.13.4'
17+
testImplementation project(':buttplug4j.utils.test')
1718
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.13.4'
1819
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.13.4'
1920
}

buttplug4j.utils.mdns/src/main/java/io/github/blackspherefollower/buttplug4j/utils/mdns/ButtplugDiscover.java

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,51 @@
33
import javax.jmdns.JmmDNS;
44
import javax.jmdns.ServiceEvent;
55
import javax.jmdns.ServiceListener;
6+
import javax.jmdns.ServiceTypeListener;
7+
import java.io.Closeable;
8+
import java.io.IOException;
69
import java.net.Inet4Address;
710
import java.net.URI;
811
import java.net.URISyntaxException;
912
import java.util.Set;
1013
import java.util.concurrent.ConcurrentHashMap;
1114
import java.util.concurrent.ConcurrentSkipListSet;
1215

13-
public final class ButtplugDiscover implements ServiceListener {
16+
public final class ButtplugDiscover implements ServiceListener, Closeable {
1417
private final ConcurrentHashMap<String, ConcurrentSkipListSet<URI>> servers = new ConcurrentHashMap<>();
18+
private final JmmDNS jmmdns;
1519
private DiscovereyEventHandler discovereyEventHandler = null;
1620

1721
public ButtplugDiscover(DiscovereyEventHandler discovereyEventHandler) {
1822
this.discovereyEventHandler = discovereyEventHandler;
19-
JmmDNS jmmdns = JmmDNS.Factory.getInstance();
23+
jmmdns = JmmDNS.Factory.getInstance();
2024
jmmdns.addServiceListener("_intiface_engine._tcp.local.", this);
21-
}
25+
try {
26+
jmmdns.addServiceTypeListener(new ServiceTypeListener() {
27+
@Override
28+
public void serviceTypeAdded(ServiceEvent serviceEvent) {
29+
System.err.println("Added service type " + serviceEvent.getType());
30+
}
2231

23-
public ButtplugDiscover() {
24-
JmmDNS jmmdns = JmmDNS.Factory.getInstance();
25-
jmmdns.addServiceListener("_intiface_engine._tcp.local.", this);
26-
}
32+
@Override
33+
public void subTypeForServiceTypeAdded(ServiceEvent serviceEvent) {
34+
System.err.println("Added sub type " + serviceEvent.getType());
2735

28-
public void setDiscovereyEventHandler(DiscovereyEventHandler discovereyEventHandler) {
29-
this.discovereyEventHandler = discovereyEventHandler;
36+
}
37+
});
38+
} catch (IOException e) {
39+
e.printStackTrace();
40+
}
3041
}
3142

3243
@Override
3344
public void serviceAdded(ServiceEvent event) {
45+
System.err.println("Added " + event.getName() + " " + event.getInfo().toString() + " " + event.getType());
3446
}
3547

3648
@Override
3749
public void serviceRemoved(ServiceEvent event) {
50+
System.err.println("Removed " + event.getName() + " " + event.getInfo().toString() + " " + event.getType());
3851
servers.remove(event.getInfo().getName());
3952
if (discovereyEventHandler != null) {
4053
discovereyEventHandler.LostButtplug(event.getInfo().getName());
@@ -43,6 +56,7 @@ public void serviceRemoved(ServiceEvent event) {
4356

4457
@Override
4558
public void serviceResolved(ServiceEvent event) {
59+
System.err.println("Resolved " + event.getName() + " " + event.getInfo().toString() + " " + event.getType());
4660

4761
ConcurrentSkipListSet<URI> set = new ConcurrentSkipListSet<>();
4862
for (Inet4Address addr : event.getInfo().getInet4Addresses()) {
@@ -68,6 +82,11 @@ public ConcurrentHashMap<String, ConcurrentSkipListSet<URI>> GetServers() {
6882
return servers;
6983
}
7084

85+
@Override
86+
public void close() throws IOException {
87+
jmmdns.close();
88+
}
89+
7190
public interface DiscovereyEventHandler {
7291
void FoundButtplug(String name, Set<URI> addresses);
7392

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,57 @@
11
package io.github.blackspherefollower.buttplug4j.utils.mdns;
22

3+
import io.github.blackspherefollower.buttplug4j.utils.test.IntifaceEngineWrapper;
34
import org.junit.jupiter.api.Disabled;
45
import org.junit.jupiter.api.Test;
56

67
import java.net.URI;
8+
import java.util.ArrayList;
9+
import java.util.Arrays;
710
import java.util.Set;
11+
import java.util.concurrent.CompletableFuture;
12+
import java.util.concurrent.TimeUnit;
813
import java.util.stream.Collectors;
914

15+
import static org.junit.jupiter.api.Assertions.assertFalse;
16+
import static org.junit.jupiter.api.Assertions.assertTrue;
17+
1018
public class ButtplugDiscoverTest {
1119

12-
@Disabled
20+
@Disabled("Not able to get mDNS this working right now")
1321
@Test
1422
public void TestConnect() throws Exception {
1523

16-
ButtplugDiscover discover = new ButtplugDiscover(new ButtplugDiscover.DiscovereyEventHandler() {
17-
@Override
18-
public void FoundButtplug(String name, Set<URI> addresses) {
19-
System.out.println("WOO, a buttplug appeared : " + name + " : " + String.join(", ", addresses.stream().map(uri -> uri.toString()).collect(Collectors.toList())));
20-
}
24+
CompletableFuture<Boolean> seen1 = new CompletableFuture<>();
25+
CompletableFuture<Boolean> seen2 = new CompletableFuture<>();
26+
CompletableFuture<Boolean> gone1 = new CompletableFuture<>();
27+
CompletableFuture<Boolean> gone2 = new CompletableFuture<>();
28+
try (
29+
IntifaceEngineWrapper wrapper1 = new IntifaceEngineWrapper(new ArrayList<>(Arrays.asList("--broadcast-server-mdns")));
30+
IntifaceEngineWrapper wrapper2 = new IntifaceEngineWrapper(new ArrayList<>(Arrays.asList("--broadcast-server-mdns", "--mdns-suffix", "test-intiface-2")));
31+
32+
ButtplugDiscover discover = new ButtplugDiscover(new ButtplugDiscover.DiscovereyEventHandler() {
33+
@Override
34+
public void FoundButtplug(String name, Set<URI> addresses) {
35+
System.out.println("WOO, a buttplug appeared : " + name + " : " + String.join(", ", addresses.stream().map(uri -> uri.toString()).collect(Collectors.toList())));
36+
}
37+
38+
@Override
39+
public void LostButtplug(String name) {
40+
System.out.println("Oh... a buttplug disappeared : " + name);
41+
}
42+
});
43+
) {
44+
45+
assertTrue(seen1.get(2, TimeUnit.MINUTES));
46+
assertTrue(seen2.get(15, TimeUnit.SECONDS));
2147

22-
@Override
23-
public void LostButtplug(String name) {
24-
System.out.println("Oh... a buttplug disappeared : " + name);
25-
}
26-
});
48+
assertFalse(gone1.isDone());
49+
wrapper1.close();
50+
assertTrue(gone1.get(15, TimeUnit.SECONDS));
2751

28-
Thread.sleep(60000);
52+
assertFalse(gone2.isDone());
53+
wrapper2.close();
54+
assertTrue(gone2.get(15, TimeUnit.SECONDS));
55+
}
2956
}
3057
}

buttplug4j.utils.test/src/main/java/io/github/blackspherefollower/buttplug4j/utils/test/IntifaceEngineWrapper.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import java.io.*;
44
import java.nio.file.Files;
55
import java.nio.file.Path;
6+
import java.util.ArrayList;
7+
import java.util.Arrays;
68

79
public class IntifaceEngineWrapper implements Closeable {
810

@@ -15,20 +17,28 @@ public IntifaceEngineWrapper() throws Exception {
1517
cport = (int) (Math.random() * 63000) + 1025;
1618
dport = (int) (Math.random() * 63000) + 1025;
1719

18-
setup(true);
20+
setup(true, new ArrayList<String>());
1921
}
22+
2023
public IntifaceEngineWrapper(int lport) throws Exception {
2124
cport = lport;
2225
dport = (int) (Math.random() * 63000) + 1025;
2326

24-
setup(false);
27+
setup(false, new ArrayList<String>());
28+
}
29+
30+
public IntifaceEngineWrapper(ArrayList<String> extraArgs) throws Exception {
31+
cport = (int) (Math.random() * 63000) + 1025;
32+
dport = (int) (Math.random() * 63000) + 1025;
33+
34+
setup(true, extraArgs);
2535
}
2636

27-
public void setup(boolean listen) throws Exception {
28-
try{
37+
public void setup(boolean listen, ArrayList<String> extraArgs) throws Exception {
38+
try {
2939
Runtime.getRuntime().exec("intiface-engine --version").waitFor();
3040
} catch (IOException e) {
31-
org.junit.jupiter.api.Assumptions.abort( "intiface-engine not found, skipping tests");
41+
org.junit.jupiter.api.Assumptions.abort("intiface-engine not found, skipping tests");
3242
}
3343

3444
Path userConfig = Files.createTempFile("user-config_", ".json");
@@ -46,27 +56,28 @@ public void setup(boolean listen) throws Exception {
4656
}
4757
}
4858

49-
ProcessBuilder pb =
50-
new ProcessBuilder("intiface-engine", listen ? "--websocket-port" : "--websocket-client-address", listen ? String.valueOf(cport) : ("ws://127.0.0.1:" + String.valueOf(cport) + "/bob"), "--use-device-websocket-server", "--user-device-config-file", userConfig.toAbsolutePath().toString(), "--device-websocket-server-port", String.valueOf(dport), "--log", "TRACE");
59+
ArrayList<String> args = new ArrayList<>(Arrays.asList("intiface-engine", listen ? "--websocket-port" : "--websocket-client-address", listen ? String.valueOf(cport) : ("ws://127.0.0.1:" + String.valueOf(cport) + "/bob"), "--use-device-websocket-server", "--user-device-config-file", userConfig.toAbsolutePath().toString(), "--device-websocket-server-port", String.valueOf(dport), "--log", "TRACE"));
60+
args.addAll(extraArgs);
61+
ProcessBuilder pb = new ProcessBuilder(args);
5162

5263
Path log = Files.createTempFile("intiface_", ".log");
5364
pb.redirectErrorStream(true);
5465
pb.redirectOutput(ProcessBuilder.Redirect.appendTo(log.toFile()));
5566
proc = pb.start();
5667

5768
Thread.sleep(500);
58-
if( !proc.isAlive()) {
69+
if (!proc.isAlive()) {
5970
close();
60-
org.junit.jupiter.api.Assumptions.abort( "intiface-engine not started, skipping tests");
71+
org.junit.jupiter.api.Assumptions.abort("intiface-engine not started, skipping tests");
6172
}
6273
}
6374

6475
@Override
6576
public void close() {
66-
if(proc != null) {
77+
if (proc != null) {
6778
proc.destroyForcibly();
6879
}
69-
if(userConfig != null) {
80+
if (userConfig != null) {
7081
try {
7182
Files.deleteIfExists(userConfig);
7283
} catch (IOException ignore) {

0 commit comments

Comments
 (0)