xref: /aosp_15_r20/external/aws-crt-java/src/test/java/software/amazon/awssdk/crt/test/EventStreamHeaderTest.java (revision 3c7ae9de214676c52d19f01067dc1a404272dc11)
1 package software.amazon.awssdk.crt.test;
2 
3 import org.junit.Test;
4 import software.amazon.awssdk.crt.CrtRuntimeException;
5 import software.amazon.awssdk.crt.eventstream.Header;
6 import software.amazon.awssdk.crt.eventstream.HeaderType;
7 
8 import java.io.ByteArrayOutputStream;
9 import java.nio.ByteBuffer;
10 import java.util.Date;
11 import java.util.UUID;
12 
13 import static org.junit.Assert.*;
14 
15 public class EventStreamHeaderTest extends CrtTestFixture {
EventStreamHeaderTest()16     public EventStreamHeaderTest() {}
17 
18     @Test
testStringHeader()19     public void testStringHeader() {
20         Header strHeader = Header.createHeader("testHeader", "testValue");
21         assertEquals("testValue", strHeader.getValueAsString());
22         assertEquals("testHeader", strHeader.getName());
23         assertEquals(HeaderType.String, strHeader.getHeaderType());
24     }
25 
26     @Test
testStringHeaderSerialization()27     public void testStringHeaderSerialization() {
28         Header header = Header.createHeader("testHeader", "testValue");
29         ByteBuffer serializedBuffer = ByteBuffer.allocate(1024);
30         header.writeToByteBuffer(serializedBuffer);
31         serializedBuffer.position(0);
32         Header deserializedHeader = Header.fromByteBuffer(serializedBuffer);
33         assertEquals(header, deserializedHeader);
34     }
35 
36     @Test(expected = CrtRuntimeException.class)
testStringHeaderValueTooLong()37     public void testStringHeaderValueTooLong() {
38         StringBuilder testValue = new StringBuilder();
39 
40         while(testValue.length() < Short.MAX_VALUE + 1) {
41             testValue.append("a");
42         }
43 
44         Header.createHeader("testHeader", testValue.toString());
45     }
46 
47     @Test
testBinaryHeader()48     public void testBinaryHeader() {
49         byte[] testValue = new byte[] {0,1,2,3,4,5,6,7,8,9,10};
50         Header binHeader = Header.createHeader("testHeader", testValue);
51         assertArrayEquals(testValue, binHeader.getValueAsBytes());
52         assertEquals("testHeader", binHeader.getName());
53         assertEquals(HeaderType.ByteBuf, binHeader.getHeaderType());
54     }
55 
56     @Test
testBinaryHeaderSerialization()57     public void testBinaryHeaderSerialization() {
58         byte[] testValue = new byte[] {0,1,2,3,4,5,6,7,8,9,10};
59         Header header = Header.createHeader("testHeader", testValue);
60         ByteBuffer serializedBuffer = ByteBuffer.allocate(1024);
61         header.writeToByteBuffer(serializedBuffer);
62         serializedBuffer.position(0);
63         Header deserializedHeader = Header.fromByteBuffer(serializedBuffer);
64         assertEquals(header, deserializedHeader);
65     }
66 
67     @Test(expected = CrtRuntimeException.class)
testBinaryHeaderValueTooLong()68     public void testBinaryHeaderValueTooLong() {
69         ByteArrayOutputStream testValue = new ByteArrayOutputStream();
70 
71         int written = 0;
72         while(written < Short.MAX_VALUE + 1) {
73             testValue.write(8);
74             written++;
75         }
76 
77         Header strHeader = Header.createHeader("testHeader", testValue.toByteArray());
78     }
79 
80     @Test
testBooleanHeader()81     public void testBooleanHeader() {
82         Header boolHeader = Header.createHeader("testHeader", false);
83         assertFalse(boolHeader.getValueAsBoolean());
84         assertEquals("testHeader", boolHeader.getName());
85         assertEquals(HeaderType.BooleanFalse, boolHeader.getHeaderType());
86 
87         boolHeader = Header.createHeader("testHeader", true);
88         assertTrue(boolHeader.getValueAsBoolean());
89         assertEquals("testHeader", boolHeader.getName());
90         assertEquals(HeaderType.BooleanTrue, boolHeader.getHeaderType());
91     }
92 
93     @Test
testBooleanHeaderSerialization()94     public void testBooleanHeaderSerialization() {
95         Header header = Header.createHeader("testHeader", false);
96         ByteBuffer serializedBuffer = ByteBuffer.allocate(1024);
97         header.writeToByteBuffer(serializedBuffer);
98         serializedBuffer.position(0);
99         Header deserializedHeader = Header.fromByteBuffer(serializedBuffer);
100         assertEquals(header, deserializedHeader);
101 
102         header = Header.createHeader("testHeader", true);
103         serializedBuffer = ByteBuffer.allocate(1024);
104         header.writeToByteBuffer(serializedBuffer);
105         serializedBuffer.position(0);
106         deserializedHeader = Header.fromByteBuffer(serializedBuffer);
107         assertEquals(header, deserializedHeader);
108     }
109 
110     @Test
testByteHeader()111     public void testByteHeader() {
112         Header byteHeader = Header.createHeader("testHeader", (byte)127);
113         assertEquals(127, byteHeader.getValueAsByte());
114         assertEquals("testHeader", byteHeader.getName());
115         assertEquals(HeaderType.Byte, byteHeader.getHeaderType());
116     }
117 
118     @Test
testByteHeaderSerialization()119     public void testByteHeaderSerialization() {
120         Header header = Header.createHeader("testHeader", (byte)127);
121         ByteBuffer serializedBuffer = ByteBuffer.allocate(1024);
122         header.writeToByteBuffer(serializedBuffer);
123         serializedBuffer.position(0);
124         Header deserializedHeader = Header.fromByteBuffer(serializedBuffer);
125         assertEquals(header, deserializedHeader);
126     }
127 
128     @Test
testShortHeader()129     public void testShortHeader() {
130         Header shortHeader = Header.createHeader("testHeader", (short)8001);
131         assertEquals(8001, shortHeader.getValueAsShort());
132         assertEquals("testHeader", shortHeader.getName());
133         assertEquals(HeaderType.Int16, shortHeader.getHeaderType());
134     }
135 
136     @Test
testShortHeaderSerialization()137     public void testShortHeaderSerialization() {
138         Header header = Header.createHeader("testHeader", (short)8001);
139         ByteBuffer serializedBuffer = ByteBuffer.allocate(1024);
140         header.writeToByteBuffer(serializedBuffer);
141         serializedBuffer.position(0);
142         Header deserializedHeader = Header.fromByteBuffer(serializedBuffer);
143         assertEquals(header, deserializedHeader);
144     }
145 
146     @Test
testIntHeader()147     public void testIntHeader() {
148         Header intHeader = Header.createHeader("testHeader", 123456789);
149         assertEquals(123456789, intHeader.getValueAsInt());
150         assertEquals("testHeader", intHeader.getName());
151         assertEquals(HeaderType.Int32, intHeader.getHeaderType());
152     }
153 
154     @Test
testIntHeaderSerialization()155     public void testIntHeaderSerialization() {
156         Header header = Header.createHeader("testHeader", 123456789);
157         ByteBuffer serializedBuffer = ByteBuffer.allocate(1024);
158         header.writeToByteBuffer(serializedBuffer);
159         serializedBuffer.position(0);
160         Header deserializedHeader = Header.fromByteBuffer(serializedBuffer);
161         assertEquals(header, deserializedHeader);
162     }
163 
164     @Test
testLongHeader()165     public void testLongHeader() {
166         Header longHeader = Header.createHeader("testHeader", (long)Integer.MAX_VALUE + 1);
167         assertEquals((long)Integer.MAX_VALUE + 1, longHeader.getValueAsLong());
168         assertEquals("testHeader", longHeader.getName());
169         assertEquals(HeaderType.Int64, longHeader.getHeaderType());
170     }
171 
172     @Test
testLongHeaderSerialization()173     public void testLongHeaderSerialization() {
174         Header header = Header.createHeader("testHeader", (long)Integer.MAX_VALUE + 1);
175         ByteBuffer serializedBuffer = ByteBuffer.allocate(1024);
176         header.writeToByteBuffer(serializedBuffer);
177         serializedBuffer.position(0);
178         Header deserializedHeader = Header.fromByteBuffer(serializedBuffer);
179         assertEquals(header, deserializedHeader);
180     }
181 
182     @Test
testDateHeader()183     public void testDateHeader() {
184         Date headerValue = new Date();
185         Header dateHeader = Header.createHeader("testHeader", headerValue);
186         assertEquals(headerValue, dateHeader.getValueAsTimestamp());
187         assertEquals("testHeader", dateHeader.getName());
188         assertEquals(HeaderType.TimeStamp, dateHeader.getHeaderType());
189     }
190 
191     @Test
testDateHeaderSerialization()192     public void testDateHeaderSerialization() {
193         Date headerValue = new Date();
194         Header header = Header.createHeader("testHeader", headerValue);
195         ByteBuffer serializedBuffer = ByteBuffer.allocate(1024);
196         header.writeToByteBuffer(serializedBuffer);
197         serializedBuffer.position(0);
198         Header deserializedHeader = Header.fromByteBuffer(serializedBuffer);
199         assertEquals(header, deserializedHeader);
200     }
201 
202     @Test
testUUIDHeader()203     public void testUUIDHeader() {
204         UUID headerValue = UUID.randomUUID();
205         Header uuidHeader = Header.createHeader("testHeader", headerValue);
206         assertEquals(headerValue, uuidHeader.getValueAsUUID());
207         assertEquals("testHeader", uuidHeader.getName());
208         assertEquals(HeaderType.UUID, uuidHeader.getHeaderType());
209     }
210 
211     @Test
testUUIDHeaderSerialization()212     public void testUUIDHeaderSerialization() {
213         UUID headerValue = UUID.randomUUID();
214         Header header = Header.createHeader("testHeader", headerValue);
215         ByteBuffer serializedBuffer = ByteBuffer.allocate(1024);
216         header.writeToByteBuffer(serializedBuffer);
217         serializedBuffer.position(0);
218         Header deserializedHeader = Header.fromByteBuffer(serializedBuffer);
219         assertEquals(header, deserializedHeader);
220     }
221 
222     @Test(expected = CrtRuntimeException.class)
testHeaderNameTooLong()223     public void testHeaderNameTooLong() {
224         StringBuilder headerName = new StringBuilder();
225 
226         while(headerName.length() < Byte.MAX_VALUE + 1) {
227             headerName.append("a");
228         }
229 
230         Header.createHeader(headerName.toString(), "this should fail");
231     }
232 }
233