SettingsTest.java revision c6bd683320121544811f481709b3fdbcbe9b3866
1/* 2 * Copyright (C) 2012 Square, Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16package com.squareup.okhttp.internal.spdy; 17 18import org.junit.Test; 19 20import static com.squareup.okhttp.internal.spdy.Settings.DEFAULT_INITIAL_WINDOW_SIZE; 21import static com.squareup.okhttp.internal.spdy.Settings.DOWNLOAD_BANDWIDTH; 22import static com.squareup.okhttp.internal.spdy.Settings.DOWNLOAD_RETRANS_RATE; 23import static com.squareup.okhttp.internal.spdy.Settings.MAX_CONCURRENT_STREAMS; 24import static com.squareup.okhttp.internal.spdy.Settings.PERSISTED; 25import static com.squareup.okhttp.internal.spdy.Settings.PERSIST_VALUE; 26import static com.squareup.okhttp.internal.spdy.Settings.UPLOAD_BANDWIDTH; 27import static org.junit.Assert.assertEquals; 28import static org.junit.Assert.assertFalse; 29import static org.junit.Assert.assertTrue; 30 31public final class SettingsTest { 32 @Test public void unsetField() { 33 Settings settings = new Settings(); 34 assertEquals(-3, settings.getUploadBandwidth(-3)); 35 } 36 37 @Test public void setFields() { 38 Settings settings = new Settings(); 39 40 // WARNING: clash on flags between spdy/3 and http/2! 41 assertEquals(-3, settings.getUploadBandwidth(-3)); 42 assertEquals(-1, settings.getHeaderTableSize()); 43 settings.set(UPLOAD_BANDWIDTH, 0, 42); 44 assertEquals(42, settings.getUploadBandwidth(-3)); 45 settings.set(Settings.HEADER_TABLE_SIZE, 0, 8096); 46 assertEquals(8096, settings.getHeaderTableSize()); 47 48 // WARNING: clash on flags between spdy/3 and http/2! 49 assertEquals(-3, settings.getDownloadBandwidth(-3)); 50 assertEquals(true, settings.getEnablePush(true)); 51 settings.set(DOWNLOAD_BANDWIDTH, 0, 53); 52 assertEquals(53, settings.getDownloadBandwidth(-3)); 53 settings.set(Settings.ENABLE_PUSH, 0, 0); 54 assertEquals(false, settings.getEnablePush(true)); 55 56 assertEquals(-3, settings.getRoundTripTime(-3)); 57 settings.set(Settings.ROUND_TRIP_TIME, 0, 64); 58 assertEquals(64, settings.getRoundTripTime(-3)); 59 60 assertEquals(-3, settings.getMaxConcurrentStreams(-3)); 61 settings.set(MAX_CONCURRENT_STREAMS, 0, 75); 62 assertEquals(75, settings.getMaxConcurrentStreams(-3)); 63 64 assertEquals(-3, settings.getCurrentCwnd(-3)); 65 settings.set(Settings.CURRENT_CWND, 0, 86); 66 assertEquals(86, settings.getCurrentCwnd(-3)); 67 68 assertEquals(-3, settings.getDownloadRetransRate(-3)); 69 settings.set(DOWNLOAD_RETRANS_RATE, 0, 97); 70 assertEquals(97, settings.getDownloadRetransRate(-3)); 71 72 assertEquals(DEFAULT_INITIAL_WINDOW_SIZE, 73 settings.getInitialWindowSize(DEFAULT_INITIAL_WINDOW_SIZE)); 74 settings.set(Settings.INITIAL_WINDOW_SIZE, 0, 108); 75 assertEquals(108, settings.getInitialWindowSize(DEFAULT_INITIAL_WINDOW_SIZE)); 76 77 assertEquals(-3, settings.getClientCertificateVectorSize(-3)); 78 settings.set(Settings.CLIENT_CERTIFICATE_VECTOR_SIZE, 0, 117); 79 assertEquals(117, settings.getClientCertificateVectorSize(-3)); 80 } 81 82 @Test public void isPersisted() { 83 Settings settings = new Settings(); 84 85 // Initially false. 86 assertFalse(settings.isPersisted(Settings.ROUND_TRIP_TIME)); 87 88 // Set no flags. 89 settings.set(Settings.ROUND_TRIP_TIME, 0, 0); 90 assertFalse(settings.isPersisted(Settings.ROUND_TRIP_TIME)); 91 92 // Set the wrong flag. 93 settings.set(Settings.ROUND_TRIP_TIME, PERSIST_VALUE, 0); 94 assertFalse(settings.isPersisted(Settings.ROUND_TRIP_TIME)); 95 96 // Set the right flag. 97 settings.set(Settings.ROUND_TRIP_TIME, PERSISTED, 0); 98 assertTrue(settings.isPersisted(Settings.ROUND_TRIP_TIME)); 99 100 // Set multiple flags. 101 settings.set(Settings.ROUND_TRIP_TIME, PERSIST_VALUE | PERSISTED, 0); 102 assertTrue(settings.isPersisted(Settings.ROUND_TRIP_TIME)); 103 104 // Clear the flag. 105 settings.set(Settings.ROUND_TRIP_TIME, PERSIST_VALUE, 0); 106 assertFalse(settings.isPersisted(Settings.ROUND_TRIP_TIME)); 107 108 // Clear all flags. 109 settings.set(Settings.ROUND_TRIP_TIME, 0, 0); 110 assertFalse(settings.isPersisted(Settings.ROUND_TRIP_TIME)); 111 } 112 113 @Test public void persistValue() { 114 Settings settings = new Settings(); 115 116 // Initially false. 117 assertFalse(settings.persistValue(Settings.ROUND_TRIP_TIME)); 118 119 // Set no flags. 120 settings.set(Settings.ROUND_TRIP_TIME, 0, 0); 121 assertFalse(settings.persistValue(Settings.ROUND_TRIP_TIME)); 122 123 // Set the wrong flag. 124 settings.set(Settings.ROUND_TRIP_TIME, PERSISTED, 0); 125 assertFalse(settings.persistValue(Settings.ROUND_TRIP_TIME)); 126 127 // Set the right flag. 128 settings.set(Settings.ROUND_TRIP_TIME, PERSIST_VALUE, 0); 129 assertTrue(settings.persistValue(Settings.ROUND_TRIP_TIME)); 130 131 // Set multiple flags. 132 settings.set(Settings.ROUND_TRIP_TIME, PERSIST_VALUE | PERSISTED, 0); 133 assertTrue(settings.persistValue(Settings.ROUND_TRIP_TIME)); 134 135 // Clear the flag. 136 settings.set(Settings.ROUND_TRIP_TIME, PERSISTED, 0); 137 assertFalse(settings.persistValue(Settings.ROUND_TRIP_TIME)); 138 139 // Clear all flags. 140 settings.set(Settings.ROUND_TRIP_TIME, 0, 0); 141 assertFalse(settings.persistValue(Settings.ROUND_TRIP_TIME)); 142 } 143 144 @Test public void merge() { 145 Settings a = new Settings(); 146 a.set(UPLOAD_BANDWIDTH, PERSIST_VALUE, 100); 147 a.set(DOWNLOAD_BANDWIDTH, PERSIST_VALUE, 200); 148 a.set(DOWNLOAD_RETRANS_RATE, 0, 300); 149 150 Settings b = new Settings(); 151 b.set(DOWNLOAD_BANDWIDTH, 0, 400); 152 b.set(DOWNLOAD_RETRANS_RATE, PERSIST_VALUE, 500); 153 b.set(MAX_CONCURRENT_STREAMS, PERSIST_VALUE, 600); 154 155 a.merge(b); 156 assertEquals(100, a.getUploadBandwidth(-1)); 157 assertEquals(PERSIST_VALUE, a.flags(UPLOAD_BANDWIDTH)); 158 assertEquals(400, a.getDownloadBandwidth(-1)); 159 assertEquals(0, a.flags(DOWNLOAD_BANDWIDTH)); 160 assertEquals(500, a.getDownloadRetransRate(-1)); 161 assertEquals(PERSIST_VALUE, a.flags(DOWNLOAD_RETRANS_RATE)); 162 assertEquals(600, a.getMaxConcurrentStreams(-1)); 163 assertEquals(PERSIST_VALUE, a.flags(MAX_CONCURRENT_STREAMS)); 164 } 165} 166