Skip to content

Commit 0ceb488

Browse files
committed
Java/Packets: Fix some IO issues.
And add more tests.
1 parent 297755c commit 0ceb488

5 files changed

Lines changed: 80 additions & 15 deletions

File tree

java/packets/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<dependency>
2424
<groupId>co.casterlabs.commons</groupId>
2525
<artifactId>io</artifactId>
26-
<version>082a719</version>
26+
<version>3f8687d</version>
2727
<scope>compile</scope>
2828
</dependency>
2929

java/packets/src/main/java/co/casterlabs/flux/packets/protocols/bytes/_Marshall.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,30 @@
66
import co.casterlabs.commons.io.bytes.writing.ByteWriter;
77
import co.casterlabs.flux.packets.Packet;
88

9-
interface _Marshall<T extends Packet> {
9+
public interface _Marshall<T extends Packet> {
1010

1111
public T read(ByteReader reader) throws IOException;
1212

1313
public void write(T packet, ByteWriter writer) throws IOException;
1414

1515
public long sizeOf(T packet);
1616

17-
static void varstr16(ByteWriter writer, byte[] bytes) throws IOException {
17+
public static void varstr16(ByteWriter writer, byte[] bytes) throws IOException {
1818
writer.be.u16(bytes.length);
1919
writer.write(bytes);
2020
}
2121

22-
static void varstr31(ByteWriter writer, byte[] bytes) throws IOException {
23-
writer.be.s32(bytes.length);
24-
writer.write(bytes);
22+
public static byte[] varstr16(ByteReader reader) throws IOException {
23+
int length = reader.be.u16() & 0xFFFF;
24+
return reader.read(length);
2525
}
2626

27-
static byte[] varstr16(ByteReader reader) throws IOException {
28-
int length = reader.be.u16();
29-
return reader.read(length);
27+
public static void varstr31(ByteWriter writer, byte[] bytes) throws IOException {
28+
writer.be.s32(bytes.length);
29+
writer.write(bytes);
3030
}
3131

32-
static byte[] varstr31(ByteReader reader) throws IOException {
32+
public static byte[] varstr31(ByteReader reader) throws IOException {
3333
int length = reader.be.s32();
3434
return reader.read(length);
3535
}

java/packets/src/test/java/co/casterlabs/flux/test/packets/TestBinaryWire.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
44
import static org.junit.jupiter.api.Assertions.assertEquals;
55

6+
import java.util.concurrent.ThreadLocalRandom;
7+
68
import org.junit.jupiter.api.Test;
79

810
import co.casterlabs.commons.io.bytes.reading.ArrayByteReader;
@@ -88,7 +90,11 @@ public void message_string() throws WireProtocolException {
8890
public void message_binary() throws WireProtocolException {
8991
UserID from = UserID.random();
9092
TubeID tube = new TubeID("example");
91-
Message<byte[]> message = new Message<>("abcdefghijklmnopqrstuvwxyz".getBytes());
93+
94+
byte[] bytes = new byte[128];
95+
ThreadLocalRandom.current().nextBytes(bytes);
96+
97+
Message<byte[]> message = new Message<>(bytes);
9298

9399
test(new PacketMessage(tube, from, message));
94100
}
@@ -104,7 +110,11 @@ public void publish_string() throws WireProtocolException {
104110
@Test
105111
public void publish_binary() throws WireProtocolException {
106112
TubeID tube = new TubeID("example");
107-
Message<byte[]> message = new Message<>("abcdefghijklmnopqrstuvwxyz".getBytes());
113+
114+
byte[] bytes = new byte[128];
115+
ThreadLocalRandom.current().nextBytes(bytes);
116+
117+
Message<byte[]> message = new Message<>(bytes);
108118

109119
test(new PacketPublish(tube, message));
110120
}
@@ -134,7 +144,7 @@ private static void test(Packet source) throws WireProtocolException {
134144
PROTOCOL.serialize(copy, writer2);
135145

136146
assertEquals(writer.buffer().length, writer2.buffer().length, "byte len");
137-
assertEquals(writer.buffer().length, PROTOCOL.sizeOf(source), "sizeof");
147+
assertEquals(PROTOCOL.sizeOf(source), writer.buffer().length, "sizeof");
138148
assertArrayEquals(writer.buffer(), writer2.buffer(), "sane");
139149
assertEquals(source, copy, "equals");
140150
}

java/packets/src/test/java/co/casterlabs/flux/test/packets/TestJsonWire.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44

5+
import java.util.concurrent.ThreadLocalRandom;
6+
57
import org.junit.jupiter.api.Test;
68

79
import co.casterlabs.flux.packets.Packet;
@@ -85,7 +87,11 @@ public void message_string() throws WireProtocolException {
8587
public void message_binary() throws WireProtocolException {
8688
UserID from = UserID.random();
8789
TubeID tube = new TubeID("example");
88-
Message<byte[]> message = new Message<>("abcdefghijklmnopqrstuvwxyz".getBytes());
90+
91+
byte[] bytes = new byte[128];
92+
ThreadLocalRandom.current().nextBytes(bytes);
93+
94+
Message<byte[]> message = new Message<>(bytes);
8995

9096
test(new PacketMessage(tube, from, message));
9197
}
@@ -101,7 +107,11 @@ public void publish_string() throws WireProtocolException {
101107
@Test
102108
public void publish_binary() throws WireProtocolException {
103109
TubeID tube = new TubeID("example");
104-
Message<byte[]> message = new Message<>("abcdefghijklmnopqrstuvwxyz".getBytes());
110+
111+
byte[] bytes = new byte[128];
112+
ThreadLocalRandom.current().nextBytes(bytes);
113+
114+
Message<byte[]> message = new Message<>(bytes);
105115

106116
test(new PacketPublish(tube, message));
107117
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package co.casterlabs.flux.test.packets;
2+
3+
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
4+
5+
import java.io.IOException;
6+
import java.util.concurrent.ThreadLocalRandom;
7+
8+
import org.junit.jupiter.api.Test;
9+
10+
import co.casterlabs.commons.io.bytes.reading.ArrayByteReader;
11+
import co.casterlabs.commons.io.bytes.reading.ByteReader;
12+
import co.casterlabs.commons.io.bytes.writing.ArrayByteWriter;
13+
import co.casterlabs.flux.packets.protocols.bytes._Marshall;
14+
15+
public class TestMarshall {
16+
17+
@Test
18+
public void varstr16() throws IOException {
19+
byte[] bytes = new byte[128];
20+
ThreadLocalRandom.current().nextBytes(bytes);
21+
22+
ArrayByteWriter writer = new ArrayByteWriter(0);
23+
_Marshall.varstr16(writer, bytes);
24+
25+
ByteReader reader = new ArrayByteReader(writer.buffer());
26+
byte[] copy = _Marshall.varstr16(reader);
27+
28+
assertArrayEquals(bytes, copy, "sane");
29+
}
30+
31+
@Test
32+
public void varstr31() throws IOException {
33+
byte[] bytes = new byte[128];
34+
ThreadLocalRandom.current().nextBytes(bytes);
35+
36+
ArrayByteWriter writer = new ArrayByteWriter(0);
37+
_Marshall.varstr31(writer, bytes);
38+
39+
ByteReader reader = new ArrayByteReader(writer.buffer());
40+
byte[] copy = _Marshall.varstr31(reader);
41+
42+
assertArrayEquals(bytes, copy, "sane");
43+
}
44+
45+
}

0 commit comments

Comments
 (0)