2 * Copyright 2017 Huawei Technologies Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient;
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertFalse;
21 import static org.junit.Assert.assertTrue;
23 import java.io.ByteArrayInputStream;
24 import java.io.IOException;
25 import java.io.InputStream;
26 import java.io.InputStreamReader;
27 import java.lang.reflect.Field;
28 import java.util.ArrayList;
29 import java.util.List;
30 import java.util.concurrent.atomic.AtomicInteger;
31 import java.util.zip.GZIPInputStream;
33 import org.apache.logging.log4j.Level;
34 import org.apache.logging.log4j.LogManager;
35 //import org.eclipse.jetty.client.HttpRequestListeners;
36 //import org.eclipse.jetty.client.CachedExchange;
37 import org.eclipse.jetty.client.HttpDestination;
38 //import org.eclipse.jetty.client.HttpExchange;
39 //import org.eclipse.jetty.http.HttpFields;
40 //import org.eclipse.jetty.http.HttpHeaders;
41 //import org.eclipse.jetty.io.Buffer;
42 //import org.eclipse.jetty.io.ByteArrayBuffer;
43 import org.eclipse.jetty.util.StringUtil;
44 import org.junit.After;
45 import org.junit.AfterClass;
46 import org.junit.Before;
47 import org.junit.BeforeClass;
48 import org.junit.Ignore;
49 import org.junit.Rule;
50 import org.junit.Test;
51 import org.junit.rules.ExpectedException;
52 import org.junit.runner.RunWith;
57 import mockit.integration.junit4.JMockit;
67 @RunWith(JMockit.class)
68 public class TestRestHttpContentExchange {
71 HttpDestination mockedDest;
74 public ExpectedException thrown = ExpectedException.none();
79 * @throws java.lang.Exception
83 public static void setUpBeforeClass() throws Exception {
89 * @throws java.lang.Exception
93 public static void tearDownAfterClass() throws Exception {
99 * @throws java.lang.Exception
103 public void setUp() throws Exception {
109 * @throws java.lang.Exception
113 public void tearDown() throws Exception {
114 LogManager.getLogger(RestHttpContentExchange.class).atLevel(Level.ERROR);
120 * @throws IOException
124 public void testGetResponse() throws IOException {
125 RestHttpContentExchange exchange = new RestHttpContentExchange();
126 int statusCode= exchange.getResponse().getStatus();
127 assertEquals(0,statusCode);
131 // public void testOnRequestCommitted() throws IOException {
132 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
133 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
134 // exchange.setAddress(address);
135 // exchange.setRequestURI("/the/request/uri");
136 // exchange.onRequestCommitted();
138 // LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG);
139 // exchange.onRequestCommitted();
145 // * @throws IOException
149 // public void testOnRequestComplete() throws IOException {
150 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
151 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
152 // exchange.setAddress(address);
153 // exchange.setRequestURI("/the/request/uri");
154 // exchange.onRequestComplete();
156 // LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG);
157 // exchange.onRequestComplete();
163 // * @throws Exception
167 // public void testOnResponseComplete() throws Exception {
168 // RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
169 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
170 // exchange.setAddress(address);
171 // exchange.setRequestURI("/the/request/uri");
172 // exchange.onResponseComplete();
174 // LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG);
175 // exchange.onResponseComplete();
177 // final AtomicInteger isCallback = new AtomicInteger(0);
178 // final AtomicInteger isException = new AtomicInteger(0);
179 // final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
182 // public void callback(final RestfulResponse response) {
183 // isCallback.set(1);
187 // public void handleExcepion(final Throwable e) {
188 // isException.set(1);
193 // final Field statusField = HttpExchange.class.getDeclaredField("_status");
194 // statusField.setAccessible(true);
195 // exchange = new RestHttpContentExchange(false, callback);
196 // statusField.set(exchange, new AtomicInteger(200));
197 // exchange.setAddress(new HttpRequestListeners("localhost", 9999));
198 // exchange.setRequestURI("/the/request/uri");
199 // exchange.onResponseComplete();
200 // assertEquals(1, isCallback.get());
201 // assertEquals(0, isException.get());
207 // * @throws Exception
212 // public void testDecompressGzipToStr() throws Exception {
213 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
214 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
215 // exchange.setAddress(address);
216 // exchange.setRequestURI("/the/request/uri");
218 // final InputStream stream = ClassLoader.getSystemResourceAsStream("sample.txt.gz");
219 // final byte[] binaryData = new byte[1024];
220 // stream.read(binaryData);
221 // final String expected = "sample data.";
223 // final String actual = exchange.decompressGzipToStr(binaryData);
225 // assertEquals(actual, expected);
227 // new MockUp<ByteArrayInputStream>() {
230 // public int read() throws Exception {
231 // throw new IOException();
235 // public int read(final byte abyte0[], final int i, final int j) {
242 // thrown.expect(IOException.class);
243 // exchange.decompressGzipToStr(binaryData);
249 // * @throws Exception
254 // public void testDecompressGzipToStrException() throws Exception {
255 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
256 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
257 // exchange.setAddress(address);
258 // exchange.setRequestURI("/the/request/uri");
260 // final InputStream stream = ClassLoader.getSystemResourceAsStream("sample.txt.gz");
261 // final byte[] binaryData = new byte[1024];
262 // stream.read(binaryData);
263 // final String expected = "sample data.";
265 // new MockUp<GZIPInputStream>() {
268 // public void close() throws IOException {
269 // throw new IOException();
274 // new MockUp<InputStreamReader>() {
277 // public void close() throws IOException {
278 // throw new IOException();
283 // new MockUp<ByteArrayInputStream>() {
286 // public void close() throws IOException {
287 // throw new IOException();
292 // final String actual = exchange.decompressGzipToStr(binaryData);
293 // assertEquals(actual, expected);
299 // * @throws Exception
303 // public void testDecompressGzipToStrNull() throws Exception {
304 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
305 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
306 // exchange.setAddress(address);
307 // exchange.setRequestURI("/the/request/uri");
308 // final String expected = "";
309 // final String actual = exchange.decompressGzipToStr(null);
311 // assertEquals(actual, expected);
317 // * @throws Exception
321 // public void testOnResponseHeaderBufferBuffer() throws Exception {
322 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
323 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
324 // exchange.setAddress(address);
325 // exchange.setRequestURI("/the/request/uri");
327 // final Buffer name = new ByteArrayBuffer("key");
328 // final Buffer value = new ByteArrayBuffer("value");
329 // exchange.onResponseHeader(name, value);
331 // new MockUp<HttpHeaders>() {
334 // public int getOrdinal(final Buffer buffer) {
335 // return HttpHeaders.CONTENT_ENCODING_ORDINAL;
339 // exchange.onResponseHeader(name, value);
341 // new MockUp<StringUtil>() {
344 // public String asciiToLowerCase(final String s) {
349 // exchange.onResponseHeader(name, value);
359 // public void testOnExceptionThrowable() {
360 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
361 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
362 // exchange.setAddress(address);
363 // exchange.setRequestURI("/the/request/uri");
364 // exchange.onException(new Exception());
373 // public void testOnExceptionThrowableWithCallback() {
374 // final AtomicInteger isCallback = new AtomicInteger(0);
375 // final AtomicInteger isException = new AtomicInteger(0);
376 // final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
379 // public void callback(final RestfulResponse response) {
380 // isCallback.set(1);
384 // public void handleExcepion(final Throwable e) {
385 // isException.set(1);
389 // final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback);
390 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
391 // exchange.setAddress(address);
392 // exchange.setRequestURI("/the/request/uri");
393 // exchange.onException(new Exception());
394 // assertEquals(0, isCallback.get());
395 // assertEquals(1, isException.get());
404 // public void testOnConnectionFailedThrowable() {
405 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
406 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
407 // exchange.setAddress(address);
408 // exchange.setRequestURI("/the/request/uri");
409 // exchange.onConnectionFailed(new Exception());
418 // public void testOnConnectionFailedThrowableException() {
419 // final AtomicInteger isCallback = new AtomicInteger(0);
420 // final AtomicInteger isException = new AtomicInteger(0);
421 // final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
424 // public void callback(final RestfulResponse response) {
425 // isCallback.set(1);
429 // public void handleExcepion(final Throwable e) {
430 // isException.set(1);
434 // final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback);
435 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
436 // exchange.setAddress(address);
437 // exchange.setRequestURI("/the/request/uri");
438 // exchange.onConnectionFailed(new Exception());
439 // assertEquals(0, isCallback.get());
440 // assertEquals(1, isException.get());
449 // public void testExpireHttpDestination() {
450 // final RestHttpContentExchange exchange = new RestHttpContentExchange(true, null);
451 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
452 // exchange.setAddress(address);
453 // exchange.setRequestURI("/the/request/uri");
454 // exchange.expire(mockedDest);
460 // * @throws Exception
464 // public void testExpireHttpDestinationException() throws Exception {
465 // final AtomicInteger isCallback = new AtomicInteger(0);
466 // final AtomicInteger isException = new AtomicInteger(0);
467 // final List<Throwable> thrSet = new ArrayList<Throwable>();
468 // final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
471 // public void callback(final RestfulResponse response) {
472 // isCallback.set(1);
476 // public void handleExcepion(final Throwable e) {
477 // isException.set(1);
482 // final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback);
483 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
484 // exchange.setAddress(address);
485 // exchange.setRequestURI("/the/request/uri");
486 // exchange.expire(mockedDest);
487 // assertEquals(0, isCallback.get());
488 // assertEquals(1, isException.get());
489 // assertEquals(1, thrSet.size());
490 // final Throwable t = thrSet.get(0);
491 // assertEquals(ServiceException.class, t.getClass());
497 // * @throws Exception
501 // public void testIsGzip() throws Exception {
502 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
503 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
504 // exchange.setAddress(address);
505 // exchange.setRequestURI("/the/request/uri");
507 // final Buffer name = new ByteArrayBuffer("key");
508 // final Buffer value = new ByteArrayBuffer("value");
510 // new MockUp<HttpHeaders>() {
513 // public int getOrdinal(final Buffer buffer) {
514 // return HttpHeaders.CONTENT_ENCODING_ORDINAL;
518 // exchange.onResponseHeader(name, value);
519 // assertFalse(exchange.isGzip());
521 // new MockUp<StringUtil>() {
524 // public String asciiToLowerCase(final String s) {
529 // exchange.onResponseHeader(name, value);
530 // assertTrue(exchange.isGzip());
536 // * @throws Exception
540 // public void testGetResponse() throws Exception {
541 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
542 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
543 // exchange.setAddress(address);
544 // exchange.setRequestURI("/the/request/uri");
546 // final Field statusField = HttpExchange.class.getDeclaredField("_status");
547 // statusField.setAccessible(true);
548 // statusField.set(exchange, new AtomicInteger(200));
550 // RestfulResponse response = exchange.getResponse();
551 // assertEquals(0, response.getStatus());
553 // final HttpFields fields = new HttpFields();
554 // final Field headerFields = CachedExchange.class.getDeclaredField("_responseFields");
555 // headerFields.setAccessible(true);
556 // headerFields.set(exchange, fields);
557 // response = exchange.getResponse();
558 // assertEquals(0, response.getStatus());
559 // fields.add("Content-Type", "application/json");
560 // fields.add("Content-Encode", "UTF-8");
561 // response = exchange.getResponse();
562 // assertEquals(0, response.getStatus());
568 // * @throws Exception
572 // public void testGetResponseGzip() throws Exception {
573 // final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
574 // final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
575 // exchange.setAddress(address);
576 // exchange.setRequestURI("/the/request/uri");
577 // new MockUp<RestHttpContentExchange>() {
580 // public boolean isGzip() {
584 // final Field statusField = HttpExchange.class.getDeclaredField("_status");
585 // statusField.setAccessible(true);
586 // statusField.set(exchange, new AtomicInteger(200));
588 // final RestfulResponse response = exchange.getResponse();
589 // assertEquals(0, response.getStatus());