package com.webpieces.http2parser; import javax.xml.bind.DatatypeConverter; import org.junit.Assert; import org.webpieces.data.api.BufferCreationPool; import org.webpieces.data.api.DataWrapper; import org.webpieces.data.api.DataWrapperGenerator; import org.webpieces.data.api.DataWrapperGeneratorFactory; import com.webpieces.http2parser.api.Http2Memento; import com.webpieces.http2parser.api.Http2Parser; import com.webpieces.http2parser.api.Http2ParserFactory; import com.webpieces.http2parser.api.dto.lib.Http2Frame; public class UtilsForTest2 { //private static Base64.Encoder encoder = Base64.getEncoder(); //private static Base64.Decoder decoder = Base64.getDecoder(); private static DataWrapperGenerator dataGen = DataWrapperGeneratorFactory.createDataWrapperGenerator(); static Http2Parser parser = Http2ParserFactory.createParser(new BufferCreationPool()); // private static String dataWrapperToBase64(DataWrapper data) { // return encoder.encodeToString(data.createByteArray()); // } // // private static DataWrapper base64ToDataWrapper(String base64) { // return dataGen.wrapByteArray(decoder.decode(base64)); // } public static String toHexString(byte[] array) { return DatatypeConverter.printHexBinary(array); } public static byte[] toByteArray(String s) { return DatatypeConverter.parseHexBinary(s.replaceAll("\\s+","")); } public static DataWrapper dataWrapperFromHex(String hex) { return dataGen.wrapByteArray(toByteArray(hex)); } public static Http2Frame frameFromHex(String frameHex) { DataWrapper data = dataWrapperFromHex(frameHex); Http2Memento state = parser.prepareToParse(Integer.MAX_VALUE); state = parser.parse(state, data); return state.getParsedFrames().get(0); } public static DataWrapper frameToDataWrapper(Http2Frame frame) { return parser.marshal(frame); } public static byte[] frameToBytes(Http2Frame frame) { return frameToDataWrapper(frame).createByteArray(); } public static String frameToHex(Http2Frame frame) { return toHexString(frameToBytes(frame)); } public static boolean isReservedBitZero(DataWrapper frame) { byte b = frame.readByteAt(6); return (b & 0x80) == 0x00; } public static void testBidiFromBytes(String hexFrame) { Http2Frame frame = frameFromHex(hexFrame); //String hex = frameToHex(frame); byte[] bytes = frameToBytes(frame); Assert.assertArrayEquals(bytes, toByteArray(hexFrame)); } }