Skip to content

Instantly share code, notes, and snippets.

@swankjesse
Last active August 29, 2015 13:57
Show Gist options
  • Save swankjesse/9567930 to your computer and use it in GitHub Desktop.
Save swankjesse/9567930 to your computer and use it in GitHub Desktop.
/*
* Copyright (C) 2014 Square, Inc.
*
* 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 com.squareup.okhttp.internal.spdy;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import okio.ByteString;
import okio.OkBuffer;
import org.junit.Before;
import org.junit.Test;
import static com.squareup.okhttp.internal.Util.headerEntries;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class TwitterHpackTest {
@Test public void hpackHeaders() throws IOException {
OkBuffer source = new OkBuffer();
List<ByteString> headers = Arrays.asList(
ByteString.decodeHex("8818aebaf8ea7d5c61105d7c79677e30882dd32ce3c61cdfcacadf9c220c31847571855f9d8310617e59c7571855f9d83f1b04677a69701e832198952292ce1d33d7c73b797beae2fc72867b34cf7c6b2592a5f9c404a0a1f8818924090d51b49213d0ef2992769088104143f10262c8054d1168884f43bf3292a5f9c404a0a1f8818924090d51b49213d0ef00026d7301410085c317f0b5ff86baf8ea7d5c613f00037466653f02fff601fbe7e96679c31fbe50cb2d9d5b78cdd74f7ff3fe5bd38d47c7c3fafddf77f5e7e22ff3669fd1b34afe1e1cf74fd3955f8be5f9dbd38d47c25f2fcff997dbfbf1bfd86a1db4cfddfb7fc32dbd5f8bff9febe1f5fdff9e7f39b6f65ff07f9ff567879ff45f67777e7cbce8478feff23fe767f45f6fc7559e3f8ef47d9dcb97b0d43b7c4fec54767e4ffcfc755be5c3a7e2a4785bfd9f2fcf7d9f5b3edf8e5cbc7b3bca8f3ef47dbcfe76f8fe3b7d7fcfc7d7f3e3f8e03f6fdf02f61a876f8f67572f2771fcf8fe2ff97d91e1cbedfdfcf97f9dcce35cfe98f5f5dbebb57fe76edfebd86a4767b0d48ec8e35b0d055bc5105ca91de846e1832654cf4caadf04a208621f5bdfef0f93f3e3b35fbc3b2fb5f65db24cfd2ccf38632557dbef0a615698c3de1f073be5e5772f5ffffde70d21967f7b2bd9ccbd88da486256c25212b5ca85ca82f78765f6becbb6499fa599e70c64aafb7de1f27e7c766bf7876f4c2cc6196ca2fba2024c743f18cc4a50243546d2487d1dd70085cb37e7a65f853110f2fe7f3f058cb5fd237f086c9504485a899f0091e91d57dd9c2ece3cfd708477e19d97dd9786bafcaeb37eff008ce91efc5f6c23bf0cecbeecbf0a53414d454f524947494e008ae91e78beec9f56765f778b956a5c056b54d324eb517f008ce91e8f8eabedc1f9d9bb943f8defedd90af8422ab8e37db0d85f008de91f4cb28f0c6fce156765f77f8b2f785b7d70d9bb95f57e7f"),
ByteString.decodeHex("108321988f0f92a5f9c404a0a1f8818924090d51b49413d0ef0e92a5f9c404a0a1f8818924090d51b49413d0ef0bffef01fbe7e96679c31fbe50cb2d9d5b78cdd6ebfe0ff3feacf0778f1f19fec8f2ecfcf4fb7e3ebcbecea11f6771e3fe7e3f3ebf67768f89f7fa7d8e8f4fb3be85dfc30b7d86a1dbba7eefdbfb797679595f57d91f3c371abb371a86ab5996e9febebe5f8c27dd3f77edfd97cbf3b7a71a8f8f7fdbfbf1be1e9b67f61a876f970c36d7fdf8f2ff3e196df2e0cfc556fd78d73fd7f3fd9f70eeebcbbe8f8d1d9d3f3fd757970e9f8a91e16ff67cbf3df67d0e83a3d3d86a1dbfe3a85793bec9a2df0fc78dbf3e5e53fd6dff27f0e543a8e9e3d9da7f677d1547f5ec3523b3d86a476471bd9556f9655ef555b8a5991be1052e564b34a8456adefdc8dd556f4c3de1f27e7c766bf78765f6becbb6499fa599e70c64aafb7de14c2ad3187bc3e0e77cbcaee5ebffffbce1a432cfef657b3997b11b490c4ad84a4289433256b9bde1d97dafb2ed9267e96679c3192abedf787c9f9f1d9afde1dbd30b31865b28bee880931d0fc6331294090d51b4941f4775ff078baeb9773d12bc913210c62f888d919395"),
ByteString.decodeHex("058321989103fff701fbe7e96679c31fbe50cb2d9d5b78cdd74f7ff3fe5bd38d47c7c3fafddf77f5e7e22ff3669fd1b34afe1e1cf74fd3955f8be5f9dbd38d47c25f2fcff997dbfbf1bfd86a1db4cfddfb7fc32dbd5f8bff9febe1f5fdff9e7f39b6f65f47d91e3ebfe72661fe75f7f2fb3b87a7f8efca7c5dfd27c5dde8fb1f6f4a3f1f42f61a876f8fe3edd3fcf3f1fc7dbce8e9f6f3ed5516ff52f51f2fcf7d9f5e5fe767872f2f3ef57f9d95d9e3d9f9f5fb1fcf8d1e7474f13ef5794ffe59ec350eda3f7b7f7fe3b97e28fc5ff2fb23c397dbfbf9f2ff3b99c6b9fd31ebfe7cbf7b57fe76edfebd86a4767b0d48ec8e34d4f4b115d7011af74a73419bab54b5ef5a16ade5be542c58a3951ef0f93f3e3b35fbc3b2fb5f65db24cfd2ccf38632557dbef0a615698c3de1f073be5e5772f5ffffde70d21967f7b2bd9ccbd88da486256c2521472ca69394fde1d97dafb2ed9267e96679c3192abedf787c9f9f1d9afde1dbd30b31865b28bee880931d0fc6331294090d51b4941f4775ff038b5ee641ea83ceb41ee4d72f848588"),
ByteString.decodeHex("8802fff201fbe7e96679c31fbe50cb2d9d5b78cdd6ebfe0ff3feacf076d4fdbf7fd151f8fe87c7cfe9d3c7f7e16f8feffce345bda3e3fbabf744fe36d16f772fb7e3f27dfc30b7d86a1dbba7eefdbfb797679595f57d91f3c371abb371a86ab5996e9febebe5f8c27dd3f77edfd97cbf3b7a71a8f8f7fdbfbf1be1e9b67f61a876f970c36d7fdf8f2ff3e196df2e0cfc556fd78d73fd7f3fd9f70eeebcbbfb66febb3a7e7faeaf2e1d3f1523c2dfecf97e7becfa17d9dddc7d86a1dbf6fc7d7f1f6fc7dbd7fceceefc50747efc7b3f2aa1d423fcecedfdff9e7da5fe79f6a7cb6fb0d48ecf61a91d91c6c96adf5ad686555156a37c376e82eaae1043088ea96a52ab214cbef0f93f3e3b35fbc3b2fb5f65db24cfd2ccf38632557dbef0a615698c3de1f073be5e5772f5ffffde70d21967f7b2bd9ccbd88da486256c2521489a6594cb47bc3b2fb5f65db24cfd2ccf38632557dbef0f93f3e3b35fbc3b7a616630cb6517dd101263a1f8c662528121aa369283e8eebf028b62eb99531555aa5dea5aa6838485"),
ByteString.decodeHex("9a02fffa01fbe7e96679c31fbe50cb2d9d5b78cdd74f7ff3fe5bd38d47c7c3fafddf77f5e7e22ff3669fd1b34afe1e1cf74fd3955f8be5f9dbd38d47c25f2fcff997dbfbf1bfd86a1db4cfddfb7fc32dbd5f8bff9febe1f5fdff9e7f39b6f65f47d91e3ebfe72661fe75f7f2a3b38dbf6fdf6f4a3f1de343bfce5fe3bbcfedfbf9d9ec350edf19fb55f6fdfd7f3f6fdff5fbf1777fad1fbfea5ea3e5f9efb3e9d3c7f1fe72a27a3f7e5d9d5c7eceff3f3e36f6fa7f9f8a87fc9febca8fdff9c7d86a1dbe5d9c6dff3f1e3f8f2ecbfe5f647872fb7f7f3e5fe77338d73fa63d7e3e63b57fe76edfebd86a4767b0d48ec8e366e494d0793376f4a371ee50aabaf7ee25c2152e59776eae6aa5359fbc3e4fcf8ecd7ef0ecbed7d976c933f4b33ce18c955f6fbc29855a630f787c1cef9795dcbd7ffff79c348659fdecaf6732f6236921895b09485294b956284fbc3b2fb5f65db24cfd2ccf38632557dbef0f93f3e3b35fbc3b7a616630cb6517dd101263a1f8c662528121aa369283e8eebf028c99eb56edf0a99326a4ee60ff83848c"),
ByteString.decodeHex("078321988ba0a09f9f9e9e9c9c9a9a03fff201fbe7e96679c31fbe50cb2d9d5b78cdd74f7ff3fe5bd38d47c7c3fafddf77f5e7e22ff3669fd1b34afe1e1cf74fd3955f8be5f9dbd38d47c25f2fcff997dbfbf1bfd86a1db4cfddfb7fc32dbd5f8bff9febe1f5fdff9e7f39b6f65ff07f9ff567879f75b47efbd1e4eeafcfdbf7c6da1dd56d1fbfa150efe8bc67f0fc7b0d43b7c6dedf4a1df9f4a3f7e16f97067e2ab7ebc6b9febf9fecfb87775e5dffd63f4ece9f9febabcb874fc548f0b7fb3e5f9efb3e85fe7e36fa7b0d43b7c7f1b7a7d8fbd1e4eaba789ff49f2755ebe27de5fe79f75be3f8e3f9fb1fd0fedfd7b0d48ecf61a91d91c751b1887bf7bd622333e1062c54adfba6799d6a95e4bdeaad8b67bc3e4fcf8ecd7ef0ecbed7d976c933f4b33ce18c955f6fbc29855a630f787c1cef9795dcbd7ffff79c348659fdecaf6732f6236921895b094854b33152b2557bc3b2fb5f65db24cfd2ccf38632557dbef0f93f3e3b35fbc3b7a616630cb6517dd101263a1f8c662528121aa369283e8eeb038a59ca47037a257ab78a6b8485")
);
HpackDraft05.Reader reader = new HpackDraft05.Reader(true, 4096, source);
for (ByteString headerData : headers) {
source.write(headerData);
reader.readHeaders();
reader.emitReferenceSet();
System.out.println(reader.getAndReset());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment